APP下载

基于分段垂直投影的水田秧苗列中心线提取

2022-05-17陈俞松耿长兴朱国锋

关键词:中心线秧苗投影

陈俞松,耿长兴,王 永,朱国锋

(苏州大学 机器人与微系统研究中心,江苏 苏州 215021)

随着中国农业的大型化、集中化的发展趋势,面向室外大田环境的农机自动导航技术成为重要研究内容.农机自动导航方法主要有卫星定位和机器视觉两种,其中机器视觉具有信号探测范围广,信息完整、非接触测量以及成本较低等优点[1],因此适合用于农机导航.由于田间作物大多按照互相平行的直线种植,基于机器视觉的导航方法需要快速准确地提取代表作物行中心的直线,以达到实时性和准确性的要求.水稻是水田中最常见的作物之一,其存在作物列间相互干扰、缺株、局部不规则、杂草以及反光等问题[2],这些问题为视觉导航线的准确提取带来很大困难.

快速准确检测出作物的列中心线,是农机视觉导航的重点和难点,国内外的很多学者都曾做过研究.文献[3]基于水稻秧苗的叶片向中央茎区收敛这一特征,将秧苗边缘直线延伸提取交点,通过交点拟合中心线,该方法使导航误差小于1°,但处理一幅图片耗时较长.文献[4]提出了一种集成了作物或非作物田间识别方法的沟线检测方法,采用两种类型的矩形滤波器,在17种类型的试验田中精确地检测到目标垄沟中心线.文献[5]通过训练YOLOv3目标检测网络识别水田图像中的秧苗列,在大风、浮萍、蓝藻等情形下均能准确提取秧苗中列中心线,但该方法有较高的硬件要求,否则检测速度较慢,实时性难以保障.文献[6]采用分区域统计秧苗像素点分布提取特征点,以及基于近邻关系的聚类法进行特征点聚类,但该聚类方法易受缺株影响,且分区域的特征点提取法会提取到作物行的边缘部分特征,影响提取精度.文献[7]基于颜色特征分割出绿色像素,在检测出起始点的条件下,采用回归算法提取了玉米作物行直线或曲线.文献[8]针对玉米田中作物和杂草光谱特征接近,难以分割的问题,提出了一种基于几何约束的作物行定位方法,降低了杂草对视觉导航线提取精度的干

扰.此外,针对传统Hough变换提取中心线实时性差,峰值检测难等问题,文献[9-11]提出了多种改进的Hough变换方法,一定程度上降低了算法复杂度,提高了效率,但实时性仍然较差.

针对上述问题,文中提出一种基于分段垂直投影的水稻秧苗列中心线检测方法.将预处理后的二值图沿纵向分为上、中、下3段,从下段开始采用垂直投影法[12]确定各秧苗列左右边缘,在左右边缘之间提取特征点并拟合临时直线,用直线和该段图像顶部的交点位置来确定下一段中属于同一秧苗列的特征点,将其归入到同一个点集中.最后将每个点集中的点使用最小二乘法进行直线拟合,从而得到秧苗列中心线.

1 秧苗列中心线的提取

1.1 图像的采集

文中采集的水田图像样本的种植地址为苏州市相城区太平街道,在一天的不同时刻设置不同的曝光时间分别采集不同亮度的水稻秧苗的图片共400幅,图像分别在5个时刻进行采集,如表1所示.使用的相机为海康威视MV-CA013-20GC工业相机,采集图像时相机的安装高度为1 700 mm,相机光轴与水平面之间的夹角为60°,采集图片尺寸为1 280×1 024像素.

表1 图像采集时间分布

1.2 图像预处理

图像预处理的目的是得到只含有作物和背景两部分的二值图,以便后续进行秧苗列中心线的提取,包括彩色图像灰度化、二值化以及噪声点的滤除3个步骤,如图1所示.

图1 图像预处理

由于在本试验采集的水田图像中,水稻秧苗为绿色,在RGB空间中秧苗与背景的G分量差别较大,因此文中采用基于RGB颜色空间的2G-R-B算子[12]将原始图像灰度化.得到灰度图像后,采用最大类间方差(Otsu)算法[13]对灰度化后的图像进行二值化处理.记二值化后代表秧苗的像素点的像素值为1,代表背景的像素点的值为0.分割得到的二值图如图1c所示.对于分割结果中的噪声点,文中采用形态学处理[14]的方法滤除,具体的做法是先后进行一次结构元素为5×5正方形的开运算和闭运算.经形态学去噪后的二值图如图1d所示,可见大多数噪点都被滤除.

1.3 秧苗图像分析

在水田视觉导航中,虽然出现在相机视场中的秧苗列数较多,但实际影响视觉导航精度的仅为中间3个秧苗列,其余均为冗余信息.本研究假定相机安装在作业机械前端的横向中心位置,如图2所示,采集的图像横向中点对应作业机械横向的中点.因此,文中的算法提取离图像的横向中心最近的3个秧苗列中心线作为视觉导航线.

图2 相机安装位置示意图

1.4 特征点的提取

将感兴趣区域在纵向方向从下到上分成高分别为H1、H2、H3的下、中、上3段,每一段的宽度均为W.由于透视投影造成的“近大远小”效果,因此取H1>H2>H3,如图3所示.

对下段W×H1的二值图作垂直投影,文中对于所有图像像素点分析中均取左上角为原点,水平向右为X轴,竖直向下为Y轴.记I(i,j)为该段中坐标为(i,j)的点的灰度值,L(i)为第i列所有像素点的灰度值之和,即该列垂直投影的值.L(i)表达式为

(1)

图3 图像分段示意图

将垂直投影的结果用如图4a的一维直方图表示,从图中可以看出,由于水稻叶片散乱等因素造成的垂直投影直方图参差不齐,会产生一些伪边缘定位点.文中采用一维均值滤波的方法对直方图进行平滑处理.处理方法如下:

(2)

式中:f(x)为原直方图第x列的值;g(x)为均值滤波处理后该列的值;step为中值滤波的步长.其中平滑处理后的直方图左右边缘step/2个数的值设为0.

图4 平滑处理前后的垂直投影直方图

在平滑处理后的直方图中,采用寻找升降点的方法[15]来寻找每个秧苗列左右边缘的定位点.对于每一段图像,设定阈值ξ,如果g[i]<ξ≤g[i+1],则记g[i+1]为上升点,即秧苗列的左定位点,记为A[i].如果g[i]>ξ≥g[i+1],则记g[i+1]为下降点,即秧苗列的右定位点,记为B[i].文中取每一段二值图像的判断升降点的阈值ξ为该段二值图每一列白色像素点数量的最大类间方差阈值.由于在上一步直方图平滑处理中左右边缘step/2个数据均设为0,因此提取到的第一个定位点必定为左定位点,最后一个定位点必定为右定位点,且左右定位点个数相等,A[i]和B[i]分别为同一列秧苗的左右定位点.

在上述定位点集中,虽然均值滤波可以除去大多数伪定位点,但不能彻底滤除.文中通过以下方法进行二次滤除:① 每对左右定位点之间的距离应该达到一定的长度,如果一对左右定位点A[i]和B[i]之间的距离小于t1个像素,则这对边缘点为伪边缘点,将其剔除;② 如果一个右定位点和其右边的左定位点的距离小于t2个像素,则将这两对定位点合并为一对定位点.

在中、上两段图像中,也采用相同的方法提取每列秧苗的左右边缘点.提取左右边缘点后,基于边缘点进行秧苗列特征点的提取.具体的特征点提取步骤如下:

1) 定义3个点集P1、P2、P3,分别用来存放提取的3个秧苗列的特征点.

2) 将下段图像用上述方法提取秧苗列边缘点后,计算每一对边缘点A[i]和B[i]的平均值,记为C[i].计算C中每一个元素与Mid之差的绝对值,取值最小的3个数对应的边缘点对为待提取秧苗列的左右边缘点,其中Mid值为W/2.

(3)

式中:Nk为该段图像第k行中从第A[m]列到第B[m]列之间像素值为1的点的数量;Xp为第k行从第A[m]列到第B[m]列之间像素值为1的点的横坐标值.当Nk=0时,代表该行无特征点,不进行公式(3)的提取.将提取到的点存入到P1中.对于该段图像中另外两对边缘点,采用同样的方法提取特征点,分别存入到P2和P3中.

4) 在下段图像中,用最小二乘法将点集P1、P2和P3中的点分别拟合成3条临时直线,取3条直线和该段图像的顶端的交点,作为中段图像中寻找同一列秧苗的辅助定位点,如图5所示,蓝线为临时直线,红色圈内为辅助定位点.

图5 临时直线和辅助定位点

5) 在中段图像用相同的方法提取秧苗列左右边缘点,取每一对边缘点的中点,将第i对边缘点中点的横坐标记为D[i],分别计算步骤4)中得到的每一个辅助定位点的横坐标与D[i]中所有值的差的绝对值的最小值,取到最小值的D[i]对应的边缘点对在中段图像中,与该辅助定位点在下段图像中对应的是同一列秧苗.分别在提取到的3对边缘点范围内采用与第3)步相同的方法提取特征点,分别将每对边缘点之间提取的特征点存入到所在的秧苗列对应的点集P1、P2和P3中,同时再使用最小二乘法将中段图像中的提取的3个特征点集拟合成3条临时直线,取其与中段图像顶端的交点的横坐标作为上段图像中同一列秧苗左右边缘的辅助定位点.

6) 在上段图像中重复上述提取方法,因此具体步骤不再赘述.由于上段为最后一段图像,因此在该段中无需拟合临时直线,只需将提取的特征点分别存放到对应的点集P1、P2和P3中.

经过上述步骤最终得到3个特征点点集,如图6所示,分别代表提取的3个秧苗列,对上述每个点集进行直线拟合即可提取到秧苗列的中心线.

图6 提取到的特征点集

1.5 特征点的拟合

在特征点拟合中常用的直线拟合方法包括最小二乘法和Hough变换法等,最小二乘法具有计算简单、速度快的优点,但是如果有偏离较远的噪声点的话,就会对整条直线的精度产生较大的影响.由于文中基于秧苗列左右边缘提取特征点,在左右边缘的约束下,几乎不会产生偏离较远的噪声点,因此文中采用最小二乘法拟合中心线.

1.6 提取中心线的评估

为了检测提取中心线的可靠性,及时发现特殊原因造成的漏检、误检等情况,文中对提取到的秧苗列中心线,采用基于文献[3]提出的评价方法的判别法来判断是否有误.分别记提取的3条中心线与原图感兴趣区域的上下边缘的交点为Xa1、Xa2、Xa3、Xb1、Xb2、Xb3,交点间的横向距离分别为La1、La2、Lb1和Lb2,如图7所示.若上述的值之间满足:Xa1

图7 对提取中心线的评估

2 试验和分析

为了判断本方法提取秧苗列中心线的准确性,采用将提取到的中心线与人工拟合直线对比的方法[16]作为准确性的判断依据.手工绘制中间3列秧苗的中心线,计算其与本算法提取中心线的角度偏差,若角度偏差大于5°,则判定该条中心线不准确.

文中试验中所使用的计算机的处理器为Intel Core i7 8550U,主频率2.0 GHz,内存16 GB,操作系统为Windows10 64位系统.图像处理所使用的软件开发工具是Visual Studio 2017和Opencv3.4.1.

将上述采集的图片分别用文中算法、基于整幅图的垂直投影法(后面简称全局垂直投影)和标准Hough变换方法进行中心线拟合,分别对比3种方法的拟合效率和精度.文中选取3种典型自然光环境下的秧苗图片作为拟合试验示例,分别为阴暗环境、正常光照环境和强光环境.

标准Hough变换、全局垂直投影和文中算法在3种典型光照环境中的提取结果如图8所示,从左到右分别为正常光照、阴暗环境和强光环境,其中蓝线为手工绘制的中心线,红线为提取到的中心线.

图8 3种环境下不同算法的检测结果对比

3种方法的对比结果如表2所示.由表2中对比结果可看出,标准Hough变换虽然精度较高,但是不满足实时性要求,全局垂直投影精度较低.文中的算法从检测精度和效率上相比其他2种算法都有着较大的优越性,检测准确率为94.50%,处理一幅1 280×1 024像素的bmp格式图像耗时208 ms,满足农机视觉导航实时性要求,且在阴暗、反光、缺株、杂草等情形下算法仍然有效.

表2 不同算法角度误差、准确率和耗时比较

上述试验结果显示,文中提出的算法秧苗列中心线提取的准确率为94.50%.对一些提取不准确的图片分析其失败原因,典型提取失败的图片如图9所示,图9a中右侧秧苗列的中心线出现了较大的误差,分析原因是由于采集图片时为了兼顾各种亮度而设置了过长的曝光时间,导致反光最强烈的部分作物的绿色特征无法提取,但这是一种极端的情况,这幅图片在采集时设置的曝光时间为300 ms,而在实际视觉导航中不会出现这么长的曝光时间.图9b是由于大面积的缺株导致的漏检现象,这属于偶发现象.文中的算法在遇到1~2株秧苗的缺株时依然有效,但在如此大面积的缺株情况下会失效.而视觉导航的局限性导致了在这种情况下,几乎所有静态提取算法都难以避免会不准确.因此,结合对检测准确的图片以及不准确的图片的分析,提出的基于分段垂直投影的秧苗列中心线提取算法在水田环境中具有较高的鲁棒性,且实时性较高.

图9 提取失败的典型图片

3 结 论

1) 采用2G-R-B超绿算子和OTSU算法进行灰度化和分割,形态学开、闭运算去除噪声点,可以在不同亮度不同光照环境下将秧苗从背景中分割出来.

2) 采用分段垂直投影的方法,将二值图纵向分为3段,在每段中分别进行垂直投影寻找秧苗列边缘点,拟合临时直线,取其和下一段图像底端的交点作为下一段图像中确定同一列秧苗的辅助点,最终得到3个特征点集,并依此拟合出离图像横向中心最近的3列秧苗的中心线.

3) 采用最小二乘法对提取到的3个点集进行直线拟合,拟合后将直线进行评估.检测结果表明,检测准确率为94.50%,处理一幅1 280×1 024像素的bmp格式图像耗时208 ms,满足农机导航的要求,为水田自动驾驶作业农机的导航提供了一种参考方法.

猜你喜欢

中心线秧苗投影
全息? 全息投影? 傻傻分不清楚
投影向量问题
树叶竞技场
找投影
农民
停机后汽缸温差大原因分析及处理
《投影与视图》单元测试题
插秧
舍不得