图像处理

chenhongjiang 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
.gitignore c097535bd8 v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55 2 tahun lalu
ReadMe.txt 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
chessboard_calibration.cpp 60ea4d3535 v0.7.11 增加棋盘格识别,用于标定辅助 1 tahun lalu
chessboard_calibration.h 60ea4d3535 v0.7.11 增加棋盘格识别,用于标定辅助 1 tahun lalu
config.cpp 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
config.h c097535bd8 v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55 2 tahun lalu
data_def.h aff9b53f98 v0.6.12 增加茄科抓取目标大小判断,太小的目标跳出;增加自动ply数据保存功能;茄科切后重识别图片保存功能 1 tahun lalu
data_def_api.h 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
gcv_conf.yml 891efd576f v0.8.9 输出多个茎节高度(最多3个);穗苗抓取逻辑修改 1 tahun lalu
grab_occlusion.cpp 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
grab_occlusion.h 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
grab_point_rs.cpp 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
grab_point_rs.h 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
graft_cv_api.cpp 7b4038f4cd v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑 1 tahun lalu
graft_cv_api.h 891efd576f v0.8.9 输出多个茎节高度(最多3个);穗苗抓取逻辑修改 1 tahun lalu
imstorage_manager.cpp 4e46aed4b0 v0.7.2 增加结果图片输出功能;日志增加image_id信息 1 tahun lalu
imstorage_manager.h 4e46aed4b0 v0.7.2 增加结果图片输出功能;日志增加image_id信息 1 tahun lalu
logger.cpp eb978a1d74 v0.7.0 支持多线程调用业务接口 1 tahun lalu
logger.h eb978a1d74 v0.7.0 支持多线程调用业务接口 1 tahun lalu
opencv.props 9226193b3e 第一版最后状态 2 tahun lalu
peak_finder.cpp a1973de562 v0.7.18 优化茎节位置识别,评估方法改为顶点高度和中值高度差,增加阈值控制是否有效 1 tahun lalu
peak_finder.h ed200705e6 v0.7.17 优化茎节位置识别,不存在显著茎节的用平均茎节高度替代,否则用识别到的茎节位置 1 tahun lalu
stdafx.cpp c097535bd8 v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55 2 tahun lalu
stdafx.h c097535bd8 v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55 2 tahun lalu
targetver.h c097535bd8 v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55 2 tahun lalu
utils.cpp 583837af88 v0.8.17 修改内存报错的bug 1 tahun lalu
utils.h 583837af88 v0.8.17 修改内存报错的bug 1 tahun lalu

ReadMe.txt

v0.5.9.2 增加了图片保存,自动定期删除功能;增加了histogram生成时,增加权重。
v0.5.9.3 压叶切割点识别结果,不能用于切割,将切割点改成分叉点间,靠近右侧三分之一位置
v0.5.9.4 去掉切后重识别相关的代码;增加识别结果的图片;修改stem_x0,stem_x1的识别方法;分叉中点作为切割点;适用于不压叶的情况
v0.5.9.5 砧木切割点识别中,有的叶子较大且下垂,识别中将叶子识别成茎,造成错误,修改茎识别方法get_stem_x_range()
v0.5.9.6 1)修改旋转叶展识别方法,改用最大叶宽的图像分叉y值;
2)配置文件中
增加
rs_min_hist_value: 5
修改
oa_min_hist_value: 5
oa_stem_x_padding: 40

3)大叶下垂识别茎位置,增加中心点定位,在中心点的优选,然后计算var选择var大的
4)返回结果中增加 double rs_cut_lpoint_x;//砧木下切割点x位置,毫米
double rs_cut_lpoint_y;//砧木下切割点y位置,毫米
double sc_cut_lpoint_x;//穗苗切割下点x位置,毫米
double sc_cut_lpoint_y;//穗苗切割下点y位置,毫米
去除曲线长度
v0.5.9.7 修改保存图片的位置,翻转,填充后的图片保存
v0.5.9.8
1)修改最优角度识别中单调情况的算法,采用最大点的角度(原来3点二次差值会出现较大误差)
2)去掉最优角度识别,人工上料保证叶展方向,拍照一次识别分叉点y高度(目前代码没有改动)
3)最优角度识别infer函数增加输出日志:分叉点和根点y的像素值和毫米值

v0.5.9.9 最优角度识别,append方法,返回当时的分叉点y坐标,最低点y坐标
实现一次图像识别返回结果(适用于人工上料,不自动旋转的情况),调用流程不变,只是调用次数为1
增加返回参数 double rs_oa_stem_y_fork;//茎分叉点y,毫米
double rs_oa_clamp_y_end;//茎可视下端y,毫米
v0.5.9.10 增加砧木切割点间连线
v0.5.9.11 增加接口调用进入、离开的日志信息; 改rs_stem_dia_mp: 9.6e-001
v0.5.9.12 穗苗上切割点识别修改,改用中值法取茎粗,达到茎粗(或95百分位)位置为上切割点
v0.5.9.13 1)穗苗切割点有识别不到的情况(因为苗倾斜角度过大),修改(扩大)识别范围
2)砧木分叉点检测方法(通过滑动平均),不稳定,可能出现不能检测到分叉点的情况
砧木准确的上切割点识别方法
v0.5.9.14 修改测试中穗苗切割点检测出现bug,vector越界问题
修改 sc_stem_ymax_padding: 200
v0.5.9.15 针对砧木旋转工位分叉点识别,修改util.cpp中的get_stem_x_range()
修改参数 rs_morph_radius: 2
rs_morph_iteration: 5
修改砧木图像分割方法为直接二值化,然后close方法,用上述新参数,实现去毛刺
砧木col方向的histogram,通过中值滤波再次去毛刺
砧木下切割点位置换算bug修改
v0.5.9.16 砧木切割工位切割点检测分2步
0)砧木分叉点检测方法,旋转工位和切割工位函数分开
1)原来的方法检测分叉点y坐标get_stem_y_fork_rs(),通过直径变化系数和直径(已知直径)偏差系数确定分叉点,
并限定在茎根部和茎最宽位置(通过x0和x1限定)找出最大指定的方法确定分叉y值
2)在1)的基础上增加get_stem_y_fork_rs_update()函数,基于1)中的结果,
实现茎中心线检测;
带角度的x方向padding图像区域剪裁;
找出外边缘,计算中心线到边缘的最小距离;
找出中线上点最大距离的点作为分叉参考点

3)修改参数 rs_row_th_ratio: 1.1999999999999999e+000
4) 用到flann,增加opencv_flann2410d.lib
v0.5.9.17 增加砧木切割工位切割点偏移参数
rs_cut_point_offset_ratio: 5.0000000000000000e-001
v0.5.9.18 怀疑内存泄露,检测优化
1)高速连续加载砧木图片测试出现中途退出,1秒内图片id重复造成存储异常退出
修改图片id,增加序列值(00-99)
2)imginfo2mat()中构建mat矩阵,自己申请的内存(new),指针赋值给mat对象,mat对象
析构是不负责释放,造成内存泄露,已修改
v0.5.9.19 增加配置参数写入日志功能:启动-初始化,或认为设置参数后将最新配置参数写入日志文件
增加版本号日志
增加宽大真叶的情况的处理
v0.5.9.20 增加砧木分叉点检测优化,增加fork_rs.h,cpp(还没有全面测试)
修改砧木roi最大点识别,将比例参数1.5调整至2.0(utils.cpp)
修改砧木茎中心最大内接园半径的方法,不采用flann查找(出现误差较大),改用pointPolygonTest()
去掉opencv_flann2410d.lib
按测试,修改rs_cut_point_offset_ratio: 9.0000000000000000e-001
修改穗苗识别方法(用于标定位置的夹子被遮挡)
v0.6.0 修改旋转角度识别算法,采用顶部拍照,一次识别旋转角度
v0.6.1 移植到vs2015平台(vc14),选用OpenCV v4.55
v0.6.2 增加上苗点云识别夹取位置接口及功能
v0.6.3 增加茄科切后识别接口及功能(同一个接口支持砧木和穗苗)
v0.6.4 增加算法参数读取文件进行更新的接口
v0.6.5 修改代码,得到最左侧一株
v0.6.6 增加剪裁后没有点的异常处理
v0.6.7 修改点云显示代码,显示抓取点xy方向,及z平面上的xoy坐标系
v0.6.8 增加穗苗的inbox定义,增加最优茎高的定义;修改vector随机读取[]为at方法;增加接口参数用于定义抓取苗是砧木还是穗苗;修改了接口函数名称
v0.6.9 修改抓取砧木、穗苗的定义0--穗苗,1--砧木;穗苗和砧木抓取顺序相反
v0.6.10 重写砧木、穗苗切后重识别算法,现在用切后侧面图,输出夹爪基面y值、切后3点y与基面y值的距离
v0.6.11 增加茄科切后重识别异常退出判断
v0.6.12 增加茄科抓取目标大小判断,太小的目标跳出;增加自动ply数据保存功能;茄科切后重识别图片保存功能
v0.6.13 增加聚类结果中点数小于20的类别剔除功能;修改降采样后整个点云数量小于50退出(原来是200)
v0.6.14 修改茎识别方法,通过2d高密度点找到茎的位置,然后提取株的最大空间内点云,用直线分割的方法得到茎的位置,避免识别位置错误
v0.6.15 修改抓取点识别方法,通过比较直线点云和原始点云相同位置邻域内xz的范围,确定此点是否是无干扰点的茎
v0.6.16 加强苗的识别,增加倾斜苗的检测,修改排序错乱问题
v0.7.0 支持多线程调用业务接口
v0.7.1 增加voxelsize参数;修改茎密度最大值的1/3为最小茎密度的下限(原来为1/2,有些小苗识别不出来)
v0.7.2 增加结果图片输出功能;日志增加image_id信息
v0.7.3 修改抓取位置,提供茎节分叉的位置(以前提供可抓取的位置,避开茎节的点)
v0.7.4 增加叶片剔除功能(在boxcrop和降采样后实现,直接采用欧式距离聚类)
v0.7.5 优化叶片剔除功能(欧式距离聚类没能分割叶片和茎造成误剔除,本次采用ror方法剔除叶片,但有些耗时)
v0.7.6 优化叶片剔除功能,修改ror,nb_point的数量系数,通过配置文件sc_grab_ror_ratio参数传入
v0.7.7 优化茎判别问题:上下2片叶子,利用有效高度剔除;偏离z中心剔除,采用历史z均值
v0.7.8 修改接穗抓点靠上一点
v0.7.9 修改接穗抓点靠上一点,增加了grab_offset,用来在找到茎节后的上下偏移得到抓取点,+值向上偏,-值向下偏
v0.7.10 增加茎节点位置绘制输出;茎节判别仅按dx方向大小判断(dz误差较大)
v0.7.11 增加棋盘格识别,用于标定辅助
v0.7.12 增加茎节peakfind功能
v0.7.13 修改sc_grab_offset不起作用的bug
v0.7.14 增加指定抓取位置的功能,抓取位置在ymax向下指定距离为抓取位置
v0.7.15 优化茎节位置识别
v0.7.16 优化茎节位置识别,增加平均茎节高度约束,10mm范围
v0.7.17 优化茎节位置识别,不存在显著茎节的用平均茎节高度替代,否则用识别到的茎节位置
v0.7.18 优化茎节位置识别,评估方法改为顶点高度和中值高度差,增加阈值控制是否有效
v0.7.19 优化茎节位置识别,投影到2为平面寻找分叉点,rs_grab_fork_th和sc_grab_fork_th不在起作用,放弃历史均值位置
v0.7.20 优化茎节位置识别,在v0.7.19基础上加上历史均值位置约束,rs_grab_fork_th和sc_grab_fork_th是茎节粗和茎粗的比值系数
v0.7.21 优化茎节位置识别,增加偏离平均茎节高度的距离参数rs_grab_to_meanfork_max_dist和sc_grab_to_meanfork_max_dist
v0.7.22 优化茎节位置识别,废弃基于历史平均茎节高度的约束,人工指定范围(高度上限,下限),不在范围内时,按下限位置
v0.7.23 识别接口返回图片,返回茎的弯曲度,当前苗的数量
v0.8.0 叶子遮挡识别;去除原来图片识别的内容;修改配置参数仅保留3d相关参数
v0.8.1 叶子遮挡识别优化:通过x截取范围和穴位个数直接确定茎根中心位置
v0.8.2 叶子遮挡识别优化:用叶子点云数量判断是否有遮挡,加上识别的茎的位置,统计植株的个数
v0.8.3 叶子遮挡识别优化:解决叶子遮挡不计数问题;修改点云密度计算方法
v0.8.4 叶子遮挡识别优化:小叶遮挡,茎没有识别出来,植株误判问题
v0.8.5 叶子遮挡识别优化:修改叶子遮挡识别位置偏离问题,增加历史抓取信息约束
v0.8.6 抓取位置调整
v0.8.7 抓取顺序调整:先抓取有明确茎的位置,然后再去抓取遮挡位置的
v0.8.8 砧木固定抓取位置,输出茎节高度;
v0.8.9 输出多个茎节高度(最多3个);穗苗抓取逻辑修改;
v0.8.10 优化茎节识别,实现邻域对比过滤,最近距离过滤,增加xx_grab_fork_ratio控制茎节检出;增加扩展茎粗检测茎节功能
v0.8.11 优化增加扩展茎粗检测茎节功能,减小ex范围从单侧1.5到1.05
v0.8.12 优化茎粗检测功能,采用xy面投影茎粗统计结果
v0.8.13 优化茎粗检测功能,采用茎两侧边缘点构建直线,计算直线间距离,再用点云平均距离进行补偿
v0.8.14 优化茎粗检测功能,增加xx_grab_offset_cut, 在ybt、yup中间点进行偏移,在这个位置计算茎粗;茎edge直线拟合,剔除茎节的影响
v0.8.15 优化茎节检测功能,增加xx_grab_fork_height,控制识别较长的茎节
v0.8.16 修改茎节检测中while循环死循环的bug
v0.8.17 修改内存报错的bug
v0.8.18 优化茎识别(叶子误判成茎);优化遮挡识别(位置误判)
v0.8.19 增加茎高占比阈值、遮挡高度占比阈值,用户指定
v0.8.20 增加zcent参数、整体高度阈值,修改判断逻辑