王 侨 孟志军 付卫强 刘 卉 张振国
(1.国家农业智能装备工程技术研究中心, 北京 100097; 2.首都师范大学信息工程学院, 北京 100048;3.新疆农业大学机电工程学院, 乌鲁木齐 830052)
大力促进农业机械精准化和智能化,即推动农业生产机器人化,在取代人本身参与农业生产劳动的同时,可有效降低生产成本、提高农田作业效率和精度,对推动精准农业的进一步发展、提高农业生产经济效益和社会价值具有重要意义。
农田作业机器人化是农业生产机器人化的重要组成部分,目前正处于农业机械由自动化向无人化(即机器人化)的过渡阶段。农田作业实现机器人化的关键是实现机器人在田间作业过程中的自主导航行走。目前主要采取两种模式获取自主导航基准线:①以作业前预先规划的直线作业路径作为导航跟踪基准线,该模式主要应用于耕整地、播种、收获等不怕压苗的生产环节,如基于全球导航卫星系统(Global navigation satellite system,GNSS)[1]的相关农田导航产品。②以作业时实时识别的垄行或作物行线[2-11]、已作业与未作业区分界线[12-15]、田块两侧边界线[16-19]等田内天然的线特征作为导航基准线,该模式既可应用于耕整地、播种、收获等不怕压苗的生产环节,同时也适用于中耕、植保等需实时获知田间作物分布位置、以避免压苗的生产环节。在第2种模式下,实时获取的导航基准线既可直接用作田间导航作业的跟踪线,又可用于及时修正在耕播环节基于GNSS规划的导航跟踪直线。如果前期在耕整、播种等作业环节采取预先规划的直线行走路径作为导航基准线,那么在后续中耕、植保等作业环节中,当实时识别的某段作物行走向与前期规划作业的导航基准线朝向之间存在较大偏差时,则根据实际走向调整当前位置处原导航基准线的朝向,以提高当前导航作业的精准性。
本文主要探讨第2种导航基准线获取模式,针对玉米苗期中耕、追肥等田间管理作业环节中的自主导航行走需求,在白地、茬地2种播种模式的玉米苗期农田场景下,基于机器视觉技术研究抗多种干扰因素的多条作物行线视觉检测算法,着重探讨并解决自然光照变化、阴影、降水/积水、缺株/断行、杂草、冠层交叠等干扰因素对检测效果的影响。
选用USB接口的TXY_616_1080P型高清彩色数码摄像机,输出分辨率选取800像素×600像素,于2018年5—7月在北京市昌平区小汤山精准农业示范基地进行了玉米苗期作物行图像样本采集。主要面向白地、茬地2种播种模式下的玉米苗期农田场景,同时考虑到自然光照变化、阴影、降水/积水、缺株/断行、杂草、冠层交叠等不同干扰因素对检测的影响,重点采集了图1所示的10类图像样本。
基于Microsoft Visual Studio 2010软件开发平台进行检测算法的设计,总体检测流程如图2所示。
2.1.1基于绿色分量增强法的彩色图像灰度化
将彩色图像转换为R、G、B3帧灰度图像,基于2G-R-B法,对彩色图像中各像素点进行灰度化处理,获取绿色分量增强后的灰度图像,公式为
f(i,j)=2G(i,j)-R(i,j)-B(i,j)
(1)
式中R(i,j)、G(i,j)、B(i,j)——原彩色图像中第i行、j列像素的R、G、B分量
f(i,j)——绿色分量增强后的第i行、j列像素的灰度
若f(i,j)>255,则令f(i,j)=255;若f(i,j)<0,则令f(i,j)=0。
2.1.2基于分割阈值优化法的灰度图像二值化
考虑到行间杂草较多或冠层交叠时,对作物行区域分割提取的影响较大[20],为此,提出改进的最大类间方差法,即基于绿色区域的面积比例来优化分割阈值,以此削弱行间杂草和冠层交叠的影响,使作物行间的分界间隙清晰可见。具体处理步骤如下:
(1)利用最大类间方差法获取二值化阈值(记为Tth),基于阈值Tth对上述灰度图像进行二值化分割。其中,灰度大于Tth的像素点区域即为绿色区域,计算绿色区域的面积(记为Sg)。
(2)设整幅图像区域的面积为S,则绿色区域的面积比例为W=Sg/S。设置二值化分割阈值T,对灰度图像进行二值化分割,获取作物行目标区域。T计算式为
T=(1+W)Tth
(2)
2.1.3基于形态特征分析法的二值图像去噪处理
基于绿色区域的尺寸特征(主要利用前述的面积比例W)以及二值图像中各连通区域的形态尺寸特征(主要包括面积、周长、圆形度、等价圆直径、水平投影径及其起止点坐标、垂直投影径及其起止点坐标、长径和短径,共计8类特征参数),进行去噪、滤波等处理,具体处理步骤如下:
(1)首先对二值图像进行去噪预处理,为了使之既能适用于稀疏的幼苗期,也能适用于冠层交叠的生长期,基于前述W,设置去噪像素阈值Tdn。若W≤0.3,令Tdn=WBdn,否则令Tdn=(W-0.1)Bdn,其中,Bdn为噪声基数。针对二值图像,进行如下变阈值去噪处理:当W≤0.1时,执行Tdn像素去噪、补洞。当0.1
(2)对二值图像中每个连通区域进行区域标记后,首先建立并测量各标记区域的以下4类特征参数:面积Sp(当前标记区域内像素数)、等价圆直径Dec(与当前标记区域面积相等的圆的直径)、水平投影径Hf(当前标记区域投影至图像水平坐标轴上的长度,记其起点、终点坐标分别为Sx、Ex)、垂直投影径Vf(当前标记区域投影至图像垂直坐标轴上的长度,记其起点、终点坐标分别为Sy、Ey)。然后寻找满足以下不等式中所有条件的标记区域,本研究称之为噪声候选区。
(3)
式中xsize——图像宽度ysize——图像高度
Dth、Hth、Vth——噪声判断阈值
借助以上3个阈值,将大部分分散的杂草小噪声区域囊括在噪声候选区中。另外,通过设置Sx、Ex、Sy、Ey的取值范围来限定噪声候选区的寻找范围,本研究设置为整幅图像范围。
(3)针对各噪声候选区,进一步建立并测量以下4类特征参数:周长L(当前噪声候选区的边缘轮廓上的像素数)、圆形度Dc(4πSp/L2)、长径Lb和短径Sb(当前噪声候选区的最小外接矩形的长边和短边长度)。然后,寻找满足不等式组(4)~(9)中任一组中所有条件的噪声候选区,即为本研究进一步所需清理的噪声区域,随即在二值图像中对其予以清除。
(4)
Lb/Sb (5) 式中,Cth、R1、Tls1为圆形形态判断阈值,用于从噪声候选区中选取形态偏圆形的区域,适用于寻找并清除行间零散分布的圆形叶片类杂草噪声。 (6) 式中,R2、R3、Tls2为群体形态判断阈值。 考虑到田间玉米植株逐株向上延续形成作物行,其主秆部分所构成的区域,通常呈“立挺的瘦高状”,而两侧伸展的叶片通常呈“细长的倒伏状”,故对于在前述二值图像中呈“矮胖的倒伏状”的噪声候选区,极大可能是呈横向生长状或聚集状的杂草噪声区域,为此借助以上3个形态阈值,可完成判断和剔除。 (7) (8) (9) 式中Lth、Dth1——尺寸判断阈值 R4——形态限定阈值 Dth2——位置限定阈值 借助于Lth、Dth1和R1、R4,从呈“倒伏状”的噪声候选区中选取并清除尺寸较小的区域。借助于Dth1和Dth2,清除图像底端位置处的较小尺寸区域。以上小尺寸区域,若为目标区域,通常对最终作物行线检测的贡献较小,但若为杂草小噪声区域,则对后续检测步骤的干扰性较大,故本研究直接将其清除出去。 基于行内、行间目标区域的分布特征,进行作物行间的聚类分割。 2.2.1水平条划分 将上述去噪、滤波后的二值图像沿图像纵坐标方向平均分成20个水平条,第m个水平条纵向区间范围为 [ysm,yem]=[(m-1)ws,mws] (10) 2.2.2水平条内部目标区域的分割处理 基于行内、行间目标区域的水平间距、水平跨度特征,在各水平条内部实现隶属于不同作物行的目标区域的分割处理: (1)针对当前水平条,求取其垂直累计像素值分布曲线。其中,纵坐标(记为y)为垂直累计像素值,横坐标(记为x)为其对应的列数。然后,基于移动平均法进行平滑处理,设置平滑窗口宽度为50像素。 (2)求取上述平滑曲线纵坐标的平均值,记为av。从左往右依次访问平滑曲线上数据点,寻找所有正向和反向穿越基线y=av的数据点,并分别将两组数据点的x按序存储于数组Lp、Rn中,记正向和反向穿越的数据点数分别为nl、nr。其中,若当前数据点的y满足y≤av(或y>av),且与之相邻的后一个数据点的y满足y>av(或y≤av)时,则记当前数据点为正向(或反向)穿越基线的数据点。 (3)定义变量n,取n=max(nl,nr)。基于数组Lp、Rn中数据可确定平滑曲线上的n个较明显的波峰区间。定义数组Pl和Pr,分别用于存储这n个波峰区间的左、右分界值。具体确定方法如下: 若Lp[0] (11) 若Lp[0] (12) (13) 若Lp[0]>Rn[0]且nl (14) (15) 若Lp[0]>Rn[0]且nl=nr,即首尾2个穿越点分别为反向和正向穿越点,则各波峰区间的左、右分界值为 (16) (17) (18) (4)依据Pl和Pr所确定的n个波峰区间,可将当前水平条划分为n个目标区域。但是,这n个目标区域,既可能有多个目标区域来源于同一作物行,也可能有极少数来源于行间未被清理的大块杂草噪声。为此,在设计划分规则时,需警惕以下非正常划分情况的出现: 过度划分:植株叶片左右分叉式生长,分叉处的凹陷易造成隶属于同一作物行的目标区域在前述平滑曲线中呈明显的多峰态势,最终导致隶属于同一作物行的目标区域被划分开来。考虑到该种情况所形成的波峰与波峰之间的间距(后文简称为峰-峰间距)通常较小,小于不同作物行目标区域间的峰-峰间距,故可据此对过度划分的目标区域实施合并。 过度合并:当植株冠层交叠,或行间杂草较多,或行间杂草呈纵向生长状或聚集状时,虽然前期的预处理使作物行间的分界间隙清晰化了,但并不能确保行间杂草噪声都被清理干净,也无法确保该分界间隙的宽窄程度,尤其是图像远端位置处作物行间的分界间隙原本相对较窄,由此极易造成隶属于不同作物行的目标区域在前述平滑曲线中呈峰-峰间距较小的多峰态势,被误判为过度划分的情况,最终导致过度合并的结果。考虑到过度合并形成的行区域其水平跨度通常会较宽,宽于单条作物行区域的水平跨度,故可据此避免过度合并。 建立特征参数Di(1≤i Di=Pl[i]-Pr[i-1] (19) Dit=Pr[i+t-2]-Pl[i-1] (20) (21) 式中Di——第i、i+1个目标区域的水平间距 Dit1——第i至i+t1-1个(共计t1个)目标区域的水平跨度 Dth3、Dth4——水平间距判断阈值和水平跨度判断阈值 从左往右依次访问上述n个目标区域,当相邻的t1个目标区域同时满足不等式组(21)中所有条件时,视当前t1个目标区域隶属于同一作物行,合并为单个目标区域,合并区域的左右分界值分别为Pl[i-1]、Pr[i+t1-2],目标区域总个数调整为n-t1+1。否则,不进行合并,保留原目标区域。 (5)完成上述合并操作后,若以各目标区域所对应的左、右分界值为行坐标,在当前水平条中作平行于图像列方向的垂直线,则这些垂直线便将当前水平条中隶属于不同作物行的目标区域分割开来。 2.2.3跨水平条目标区域的行间聚类 基于行内、行间目标区域的垂直间距、趋势角、覆盖宽度等特征,跨水平条实施不同水平条中隶属于同一行的目标区域的聚类。从上往下依次扫描各水平条,从左往右逐一判断当前水平条中被分割开来的各段目标区域所隶属的作物行号。 (1)定义全局变量。定义二维结构体数组P,用于保存中间结果、辅助后续判断。其中,P[i]存储编号为i的作物行号下的目标区域的特征参数,包括2组共8个特征描述参数。 第1组:P[i].xw、P[i].yw存储当前已归属于作物行号i下的所有目标区域的整体的形心(简称整体形心)坐标,P[i].θ存储这些目标区域所呈现的行向倾角的估计值(简称趋势角,(°)),该值为相对量,表示偏移垂直方向的夹角,向左偏移取正值,向右偏移取负值,P[i].nsec存储当前已归属于作物行号i下的目标区域段数。 第2组:P[i].xsec、P[i].ysec存储最近一次归属于作物行号i下的目标区域(简称最近归属区)的形心(简称最近形心)坐标,P[i].xl、P[i].xr存储该最近归属区的左右分界值。 定义初始访问编号变量为Sn,初始化为0。 定义二维结构体数组Pw,Pw[i][j]存储第j条水平扫描线上隶属于作物行号i下的目标区域的中心点坐标Pw[i][j].xline、Pw[i][j].yline。 定义变量N,存储作物行数。 (2)从上往下逐条扫描并寻找首个非空水平条(假定为第k个水平条),将其中的各目标区域从左往右依次编号为0,1,2,…,nk-1。其中,nk表示第k个水平条中的目标区域个数。首个非空水平条中的目标区域编号视为初始作物行号,故初始作物行数为N=nk。 计算上述nk个目标区域的形心坐标,并将其形心坐标和左右分界值,按编号顺序依次存储于P[i].xsec、P[i].ysec、P[i].xl、P[i].xr中,同时将各编号下的整体形心坐标、趋势角分别初始化为P[i].xw=P[i].xsec,P[i].yw=P[i].ysec,P[i].θ=0°,P[i].nsec=1,0≤i (3)从上往下继续访问后续非空水平条。针对各非空水平条,从左往右逐一判断其内部每个目标区域的隶属行号,并求取和保存各作物行号下的目标区域在逐行水平扫描线上的中心点坐标,具体方法如下: 假设当前访问至第m个水平条中的第q个目标区域,当前水平条中目标区域个数为nm,k 从编号Sn开始,基于数组P中特征参数值,按序逐一访问各作物行号下的最近归属区,求取当前目标区域与这些最近归属区之间的垂直距离Dvi、覆盖宽度Wci,i表示当前所访问的作物行号,Sn≤i Dvi=|P[i].ysec-y0| (22) Wci=Wbi+Wsi (23) 其中 Wbi= (24) (25) 式中Woff1——排除偏移量 Woff2——优选偏移量 当满足P[i].xsec 寻找上述Wci中的最大值,记为Wch,即隶属行号为h的最近归属区与当前目标区域之间的覆盖宽度最大。 定义隶属行号标记变量fi,用以表示当前水平条中第i个目标区域的隶属行号标记值,同时定义隶属行号变量Ni,用以表示当前水平条中第i个目标区域的隶属行号,1≤i≤nm。 若Wch>0,则记当前水平条中第q个目标区域的隶属行号标记值fq=h。否则,认为该目标区域隶属于新行,若同时满足x>P[h].xl,则认为该新行出现在h号作物行的右侧,新行行号标记值记为fq=h+。若x 根据下述条件,确定当前水平条中第q个目标区域的隶属行号Nq,并对P、Pw、N、Sn进行数据更新: ①若q=1且nm=1,即当前水平条中只有单个目标区域时,则依据fq确定第q个目标区域的隶属行号Nq,并进行数据更新。 当fq=h时,Nq=h。定义中间变量β、xw、yw为 (26) xw=(P[h].xwP[h].nsec+x0)/(P[h].nsec+1) (27) yw=(P[h].ywP[h].nsec+y0)/(P[h].nsec+1) (28) 此时,数据更新如下:N、Sn取值不变,P[h].xsec=x0,P[h].ysec=y0,P[h].xl=xl,P[h].xr=xr,P[h].θ=β,P[h].xw=xw,P[h].yw=yw,P[h].nsec增1。 当fq=h+时,Nq=h+1。此时,数据更新如下:Sn取值不变,N=N+1,将数组P以及Pw中隶属行号大于h的元素均往右平移1位行号,然后令P[h+1].xsec=x0,P[h+1].ysec=y0,P[h+1].xl=xl,P[h+1].xr=xr,P[h+1].θ=β,P[h+1].xw=xw,P[h+1].yw=yw,P[h+1].nsec=1。 当fq=h-且h>0时,Nq=h,而当fq=h-且h=0时,Nq=0。此时,数据更新如下:Sn取值不变,N=N+1,将数组P以及Pw中隶属行号大于h-1的元素均往右平移1位行号,然后令P[h].xsec=x0,P[h].ysec=y0,P[h].xl=xl,P[h].xr=xr,P[h].θ=β,P[h].xw=xw,P[h].yw=yw,P[h].nsec=1。 最后,逐行水平扫描,求取当前目标区域在每条水平扫描线上的中心点坐标,按序依次存储于Pw[Nq][j].xline、Pw[Nq][j].yline中,(m-1)ws≤j ②若q=1且nm≠1,或者若q≠1且q≠nm且fq=fq-1,保存当前目标区域的隶属行号标记值fq,此时暂不进行数据更新。 ③若q≠1且q≠nm且fq≠fq-1,则对当前目标区域左侧邻近的具有同一隶属行号标记值的目标区域(假定共有t2个目标区域)进行隶属行号的确定,并进行相应的数据更新。 逐行水平扫描,求取当前目标群域在每条水平扫描线上的中心点坐标,按序依次存储于Pw[NL][j].xline、Pw[NL][j].yline中,(m-1)ws≤j ④若q≠1且q=nm且fq=fq-1,则对当前目标区域以及其左侧邻近的具有同一隶属行号标记值的目标区域进行隶属行号的确定,并进行相应的数据更新。同上述条件③中方法,不同的是,t2个目标区域中包括当前目标区域。 ⑤若q≠1且q=nm且fq≠fq-1,则对当前目标区域及其左侧邻近的具有同一隶属行号标记值的目标区域分别进行隶属行号的确定,并分别进行相应的数据更新。对于当前目标区域,其隶属行号的确定以及相应的数据更新方法同条件①,对于其左侧临近的具有同一隶属行号标记值的目标区域,它们隶属行号的确定以及相应的数据更新方法同条件③。 2.3.1获取各条作物行区域上的特征点 上述二维数组Pw中所保存的数据,即为划分在各作物行号下的目标区域在逐行水平扫描线上的中心点坐标,本研究将其直接视为对应作物行号下的特征点位置坐标。 2.3.2获取作物行中心线 首先进行离群特征点剔除,然后针对各作物行号下的有效特征点,基于最小二乘法线性拟合,最终获取各作物行号下的作物行中心线。其中,对于编号为i的作物行,0≤i (1)根据前述完成数据更新后的数组P可知,对于编号为i的作物行,其趋势角为P[i].θ,其整体形心横坐标为P[i].xw,其目标区域段数为P[i].nsec,0≤i 当P[i].nsec≥5时,将作物行号i下的特征点,向右平移距离Ds,并以(xsize/2,ysize/2)为中心逆时针旋转θr。其中,当Ds为负值时,表示向左平移|Ds|距离。Ds和θr的计算式为 Ds=xsize/2-P[i].xw (29) θr=90°-P[i].θ (30) (2)针对上述平移和旋转处理后的特征点,求取其纵坐标的平均值和标准差,分别记为vav、vsd。基于vav和vsd取值逐一判断当前作物行号下的所有特征点,若当前特征点的纵坐标(记为yf)满足yf>vav+1.5vsd或者yf (3)针对离群特征点去除后的有效特征点,基于最小二乘法[9-10,20]线性拟合,获取拟合直线段。 (4)将上述拟合直线段进行与前述相反的旋转和平移操作。先以(xsize/2,ysize/2)为中心顺时针旋转θr,然后向左平移距离Ds。完成旋转和平移后的拟合直线段,即为当前作物行号下的作物行中心线。 针对图1中10类图像样本进行灰度化,灰度化结果如图3所示。由图3可知,不受自然光照变化、阴影、降水/积水等的影响,原彩色图像中的绿色区域均获得了增强,且与播种模式无关。 基于最大类间方差法,获取上述灰度图像的二值化分割阈值Tth、绿色区域面积Sg、绿色区域的面积比例W、优化后的分割阈值T依次为:43、64 394、0.134 2、49;57、150 140、0.312 8、75;57、158 112、0.329 4、76;34、51 675、0.107 7、38;34、109 342、0.227 8、42;35、22 575、0.047 0、37;46、104 174、0.217 0、56;34、46 179、0.096 2、37;48、166 152、0.346 2、65;48、191 107、0.398 1、67。对比优化前后的分割阈值数据可知,茬地晴天、阴天、杂草(细密状)、冠层交叠这4种条件下,分割阈值的变化较明显。采用分割阈值优化的最大类间方差法获取的二值图像如图4所示,基于最大类间方差法获取的上述4种条件下的二值图像如图5所示。 对比可知,采用阈值优化的方法所获取的二值图像,作物行间的分界间隙更加清晰可见,尤其在细密状杂草干扰或植株冠层交叠条件下,处理结果满足预期要求。 3.3.1变阈值去噪处理结果 经测试和试验验证,当本研究中相机安装高度为1.5 m左右、安装俯角为40°~50°(后续判断阈值的设置均以此为前提)时,设置噪声基数Bdn=2 000。实际应用中,可根据需求对该值适当调整。由此获得不同环境条件下的二值化图像去噪的像素阈值Tdn依次为268、626、659、215、456、94、434、192、692、596。基于以上像素阈值,对图4中的各二值化图像进行去噪预处理,结果如图6所示,由图可知,通过变阈值去噪处理,除了稀疏幼苗时期作物行间的少数零散状杂草未被清理,如图6h所示,其他环境条件下行间的大部分噪声都被清除干净,行间分界间隙更加明晰可见。 3.3.2基于形态尺寸特征的去噪结果 经测试和试验验证,本研究设置尺寸判断阈值依次为Dth=55,Hth=100,Vth=55,Lth=60,Dth1=25,设置形态判断阈值依次为Cth=0.2,R1=0.75,Tls1=1.5,R2=1.5,R3=3,Tls1=2,R4=4,设置位置限定阈值为Dth1=3,去噪效果较好,处理结果如图7所示,图中白色区域为去噪处理后的目标区域。 对比图6h和图7h可知,稀疏幼苗时期作物行间的少数零散状杂草噪声均被清理干净,行间整洁、无干扰。 3.4.1水平条划分及水平条内部目标区域的分割处理结果 将各幅图像均分为20个水平条,如图7所示,图中红色细线为水平条之间的划分边界。图7a中首个水平条的垂直累计像素值平滑曲线如图8a所示,该平滑曲线的纵坐标平均值为av=1 486,其中,正向穿越基线y=1 486的数据点(如图中绿色圆点所示)坐标依次为(169,1 486)、(373,1 486)、(561,1 486)、(749,1 486),反向穿越基线的数据点(如图中棕色圆点所示)坐标依次为(66,1 486)、(235,1 486)、(453,1 486)、(626,1 486)。根据以上穿越点坐标,可从该水平条中分割出5个目标区域,各个目标区域的左、右分界值(即横坐标分界值)依次为:0、66;169、235;373、453;561、626;749、799。而对于图7a中的第19个水平条,同理,根据穿越点坐标(图8b),可从该水平条中分割出3个目标区域,各个目标区域的左、右分界值(即横坐标分界值)依次为:101、189;481、559;595、663。 考虑到目标区域是位于图像底端还是图像顶端,会直接影响目标区域之间的水平间距和水平跨度,为此,经测试和试验验证,本研究依据目标区域所处的水平条位置不同,设置不同的水平间距判断阈值Dth3和水平跨度判断阈值Dth4:若13≤m≤20,取Dth3=90,Dth4=200;若8≤m≤12,取Dth3=45,Dth4=180;若1≤m≤7,取Dth3=20,Dth4=160。 基于以上判断阈值,分析图7a中首个水平条内部的5个目标区域可知,各目标区域的水平跨度及其之间的水平间距均小于判断阈值,即无需进行合并操作。为此,以上述5对左右分界值为横坐标在该水平条中作垂线(如图7a中首个水平条内部的白色垂直线段所示),则这些垂直线段便将该水平条中隶属于不同作物行的目标区域分割开来。 同样,分析图7a中第19个水平条内部的3个目标区域可知,第2、3个目标区域之间的水平间距为D2=36,水平跨度为D22=182,满足D2 同理,完成其他水平条以及其他图像中各水平条内部目标区域的分割,分割结果如图7中白色垂直线段所示。由图可知,除了少数水平条中,隶属于同一作物行乃至同一植株的跨度较大的分叉叶片被过度划分(图7a中第14、18个水平条),分割结果整体上达到预期效果。 3.4.2跨水平条目标区域的行间聚类结果 经测试和试验验证,本研究设置用于排除的偏移量Woff1=-150,设置用于优选的偏移增量Woff2=55。跨水平条实施不同水平条中隶属于同一行的目标区域的聚类,结果如图9所示。图中非白色的彩色散点表示目标区域的逐行中心点,散点颜色相同表示所对应的目标区域隶属于同一作物行。 由图9可知,只有极少数目标区域(由于偏离其原本所隶属的作物行较远)未被正确聚类在其所隶属的作物行下,如图9c、9g、9i中白色圆圈内的散点所对应的目标区域。整体来说,绝大部分的目标区域均有效实现了跨水平条之间的行间聚类。 图9中同一颜色的散点群,即为隶属于同一作物行的目标区域上的特征点群。以图9f中右侧红色特征点群为例,针对其所对应的目标区域,计算获得整体形心横坐标为Pr[3].xw=589,最终的趋势角为Pr[3].θ=-4.53°,据此将所有特征点向左平移189个像素,以(400,300)为中心逆时针旋转94.53°。并计算获得平移和旋转后的特征点的纵坐标平均值和标准差分别为vav=298,vsd=28,由此确定划分离群和有效特征点的两条分界线分别为y=256和y=340。 如图10所示,平移和旋转处理后的特征点如图中黄色和红色散点所示,两条蓝色直线为划分离群和有效特征点的分界线。其中,蓝色直线之外的红色散点为离群特征点,蓝色直线以内的黄色散点为有效特征点。 针对有效特征点,基于最小二乘法线性拟合,拟合结果如图10中粉色直线所示。针对该拟合直线,进行反向旋转和平移操作,最终获得当前作物行中心线的位置,如图9f中最右侧的白色直线所示。 同理,针对各图像,获取目标区域段数不小于5的各作物行的中心线,结果如图9中各白色直线所示,拟合直线标注在原图中的效果如图11中红色直线所示。由图11可知,虽然前述检测步骤中存在少数水平条内部的目标区域被过度划分、少数目标区域未被正确行间聚类的情况,但是对最终线性拟合的结果影响很小,所获取的作物行中心线都较好地拟合了作物行的实际方位。检测过程及结果表明,本算法不受播种模式的影响。 面向前述晴天、阴天、阴影、降水/积水、缺株/断行、杂草、冠层交叠等不同环境条件下的玉米苗期农田场景,采集获取作物行视频图像。视频图像采集时,设置相机离地高度为1.5 m左右,俯角保持在30°~60°之间,移动速度为0.5 m/s,采集帧率为20 f/s。针对每种环境条件,从视频图像中任意截取1 000帧的连续图像帧,基于本研究中算法逐帧检测获取作物行中心线。 当检测获取的作物行线落在当前作物行的中心位置处、有效地展示了其实际走向时,视当前作物行线检测准确,当图像中的各条作物行线(目标区域段数大于4的所有作物行)均检测准确时,才视当前帧图像检测准确,检测结果如表1所示,整体检测准确率不低于91.2%,单帧图像处理时间不超过368 ms,可快速实现不同环境因素干扰下的多条作物行线(如2~6条)的同步检测。 部分图像帧检测出现问题的主要原因及相应的解决方案如下: (1)相机侧向偏斜角过大,或安装高度过高,或安装俯角偏小,造成图像中多条作物行紧密聚拢、间隙模糊,尤其是图像侧边边缘位置处或图像远端(即图像顶端)位置处,行间分割较困难,最终导致作物行线检测失败。 实际应用中,需结合实际作业需求,设置合适的相机安装高度和安装角,尽量保证在图像视野范围内作物行间的分界间隙清晰易辨,尤其是感兴趣作物行间的分界间隙。 (2)图像两侧边缘处的作物行中,部分植株生长较旺盛,其侧向伸展的叶片遮盖住了邻近的行间间隙,造成该位置处的行间分割失败,并进一步影响到后续的行间聚类,导致作物行线检测失败。 从算法改进层面来说,可考虑在行间聚类时,针对水平跨度较大的单个目标区域,先确定其可能隶属的作物行,再依据这些作物行的方位和数量,对该目标区域实施分割,再确定各分割区域的隶属行。 (3)缺株/断行较严重时,尤其是植株幼苗时期,易将靠近图像内侧底端的目标区域聚类在图像侧边边缘处的邻近作物行上,造成行间聚类失败,并最终导致作物行线检测失败。 表1 检测结果Tab.1 Test results 从应用层面来说,建议前期尽量采取精密栽播模式,以减少严重缺株/断行情况的出现,同时建议尽量避开在稀疏幼苗时期开展基于作物行线的田间导航作业。从技术层面来说,可考虑结合连续图像帧中作物行线的方位以及相机载体的方位、转角信息,来估测或纠正当前帧图像中的作物行线方位。 (4)被图像视野边缘所截断的位于图像两侧边缘处的作物行段,其长度较短,当出现局部行线弯曲或植株叶片在图像中显示不完整时,极易导致检测获取的作物行线虽然落在了图像中对应区域的中心位置处,但却不能有效展示当前作物行的实际走向。 实际应用中,建议尽量选取位于图像中心位置处的作物行线作为导航基准线,将其他作物行线用作辅助线,依据它们相互之间的方位关系,来对所选取的导航基准线进行校验。在条件允许的情况下,建议尽量设置相机光轴垂直地面的安装方式。 (5)局部簇生状杂草紧邻作物行生长,草苗难分,导致这部分杂草区域被视为该作物行下的目标区域,当其分布方位与该作物行的生长方位相差很大时,极易导致检测获取的拟合直线与该作物行的实际走向相差很大,造成检测失败。 从算法改进层面来说,可考虑在进行行间聚类时,针对水平跨度较大的单个目标区域,先确定其可能隶属的作物行,再依据当前已隶属于这些作物行下的目标区域的趋势角、水平跨度等特征,确定该目标区域的有效范围,对于有效范围之外的区域实时分割和剔除。在算法改进过程中,可考虑结合原因(2)中的情况,设计综合改进算法。 (6)行间出现呈纵向生长状或分布状的杂草族群,且其目标区域段数大于4,造成该部分杂草区域被视为行间新出现的作物行,导致检测结果中出现“赘余”的假行线。 实际应用中,建议首先结合连续图像帧中各作物行线的方位分布关系,对当前帧中方位异常的假行线实施剔除,然后再选取方位正常的、靠近图像中心位置处的作物行线作为导航基准线。 (1)基于绿色分量增强法进行彩色图像灰度化预处理,其效果不受自然光照变化、阴影、降水/积水、播种模式等影响,原彩色图像中的绿色区域均得到增强。基于绿色区域面积比例优化分割阈值的最大类间方差法进行灰度图像二值化预处理,可有效提高作物行间分界间隙的清晰度,尤其在细密状杂草干扰或植株冠层交叠的情况下。针对上述二值图像,在变阈值去噪的基础上,基于8类形态尺寸特征,进一步完成了较小尺寸噪声、行间零散分布的圆形叶片类杂草噪声以及呈横向生长状或聚集状的杂草噪声的清除。 (2)将二值图像沿纵坐标均分为20个水平条,针对各水平条,求取其垂直累计像素值分布图,采用移动平均法进行平滑处理,基于平滑曲线上正向和反向穿越平均值基线的数据点,确定平滑曲线的波峰区间。根据行内、行间目标区域的水平间距、水平跨度的分布特征及差异性,对隶属于同一作物行的波峰区间实施合并,基于合并后波峰区间的左、右分界值完成当前水平条中隶属于不同作物行的目标区域的定位和分割处理。结果表明,目标区域定位准确、分割效果良好。 (3)从上往下依次扫描各水平条,从左往右逐一判断当前水平条中各目标区域所隶属的作物行号。基于各目标区域的形心、左右分界值,跨水平条建立目标区域的垂直间距、趋势角、覆盖宽度等特征参数,并根据行内目标区域垂直间距小、趋势角一致、覆盖宽度大的特征,跨水平条实施不同水平条中隶属于同一作物行的目标区域的聚类。结果表明,本算法可快速完成多条作物行的同步聚类,聚类效果良好。 (4)针对聚类在各隶属行号下的目标区域,进行逐行水平扫描,求取水平扫描线上目标点的中心,并视为对应作物行号下的特征点。基于当前作物行号下所有目标区域的整体形心及趋势角确定中心线,将距离中心线较远的特征点视为离群点。针对离群点去除后的有效特征点,基于最小二乘法进行线性拟合并获取当前作物行的中心线。结果表明,在不同环境条件的玉米苗期农田场景下,整体检测准确率不低于91.2%,单帧图像处理时间不超过368 ms,本文算法简单、易于实施,可快速实现不同环境因素干扰下的多条作物行线的同步检测。2.2 行间聚类分割
2.3 特征点确定及线性拟合
3 试验与结果分析
3.1 基于绿色分量增强的彩色图像灰度化结果
3.2 基于分割阈值优化的灰度图像二值化结果
3.3 基于形态特征的二值图像去噪结果
3.4 行间聚类分割及特征点获取结果
3.5 离群特征点去除及线性拟合结果
3.6 总体检测结果与分析
4 结论