发明内容
针对现有技术中的缺陷,本发明提供了一种基于遗传算法的农机导航线提取方法及装置,提高了导航线的提取速度,减少了杂草的影响,解决了导航线提取实时性差、准确性低等问题。
第一方面,本发明提供一种基于遗传算法的农机导航线提取方法,包括:
对作物行图像进行灰度处理;
将灰度处理后的图像转化为二值图像图像,通过垂直投影法确定作物行的个数和位置信息;
根据作物行中心线的预设约束条件,通过遗传算法在所述作物行的位置信息对应的图像区域确定作物行中心线;
根据相邻两条作物行中心线确定位于所述相邻两条作物行中心线之间的导航线。
可选的,所述根据二值图像,通过垂直投影法确定作物行的个数和位置信息,包括:
将灰度处理后的图像转化为二值图像,通过垂直投影法检测所述二值图像中作物行的个数和位置信息。
根据二值图像中的目标区域中每一列像素灰度值的投影,确定每一列的列像素的灰度值之和,将所述每一列的列像素的灰度值之和作为列像素值,以及根据目标区域中每一像素的灰度值确定所述目标区域所有像素的平均灰度值,其中,所述目标区域为所述灰度处理后的二值图像中下半部分的区域;
在所述目标区域中从左到右依次将所述列像素值与所述平均灰度值进行比较,并在所述列像素值大于等于所述平均灰度值时,将所述平均灰度值作为该列的列像素值,否则将所述列像素值置零;
判断第i列的列像素值与第(i-1)列的列像素值的大小,根据所述第i列的列像素值与第(i-1)列的列像素值的大小关系,确定所述作物行的左边缘信息和右边缘信息;
根据所述作物行的左边缘信息和右边缘信息的差值与预设作物行的宽度值进行比较判断,获取作物行的个数和位置信息;
其中,i为大于等于2的正整数。
可选的,所述根据作物行中心线的预设约束条件,通过遗传算法在所述作物行的位置信息对应的图像区域确定作物行中心线,包括:
根据所述作物行的位置信息,选取目标区域,其中,所述目标区域为所述二值图像中下半部分的区域;
在所述目标区域的顶边和底边上各选取预设数量的点,将底边上的点作为作物行中心线的起点,顶边上的点作为作物行中心线的终点,根据作物行中心线的预设约束条件将多个起点与多个终点连线构成预设数量的直线;
构造适应度函数,并选取所述预设数量的直线中适应度最高的直线作为作物行中心线。
第二方面,本发明还提供了一种基于遗传算法的农机导航线提取装置,包括:
图像处理模块,用于对作物行图像进行灰度处理;
作物行位置确定模块,用于根据二值图像,通过垂直投影法确定作物行的个数和位置信息;
作物行中心线确定模块,用于根据作物行中心线的预设约束条件,通过遗传算法在所述作物行的位置信息对应的图像区域确定作物行中心线;
导航线确定模块,用于根据相邻两条作物行中心线确定位于所述相邻两条作物行中心线之间的导航线。
可选的,所述作物行位置确定模块,用于:
将灰度处理后的图像转化为二值图像,通过垂直投影法检测所述二值图像中作物行的个数和位置信息。
可选的,所述作物行位置确定模块,还用于:
根据二值图像中的目标区域中每一列像素灰度值的投影,确定每一列的列像素的灰度值之和,将所述每一列的列像素的灰度值之和作为列像素值,以及根据目标区域中每一像素的灰度值确定所述目标区域所有像素的平均灰度值,其中,所述目标区域为所述二值图像中下半部分的区域;
在所述目标区域中从左到右依次将所述列像素值与所述平均灰度值进行比较,并在所述列像素值大于等于所述平均灰度值时,将所述平均灰度值作为该列的列像素值,否则将所述列像素值置零;
判断第i列的列像素值与第(i-1)列的列像素值的大小,根据所述第i列的列像素值与第(i-1)列的列像素值的大小关系,确定所述作物行的左边缘信息和右边缘信息;
根据所述作物行的左边缘信息和右边缘信息的差值与预设作物行的宽度值进行比较判断,获取作物行的个数和位置信息;
其中,i为大于等于2的正整数。
可选的,所述作物行中心线确定模块,用于:
根据所述作物行的位置信息,选取目标区域,其中,所述目标区域为二值图像中下半部分的区域;
在所述目标区域的顶边和底边上各选取预设数量的点,将底边上的点作为作物行中心线的起点,顶边上的点作为作物行中心线的终点,根据作物行中心线的预设约束条件将多个起点与多个终点连线构成预设数量的直线;
构造适应度函数,并选取所述预设数量的直线中适应度最高的直线作为作物行中心线。
由上述技术方案可知,本发明提供的一种基于遗传算法的农机导航线提取方法及装置,该方法通过对采集的作物图像进行灰度和二值化处理,通过垂直投影法获取作物行个数和位置信息,然后通过遗传算法提取作物行中心线,进而得到导航线,该方法提高了导航线的提取速度,减少了杂草的影响,解决了导航线提取实时性差、准确性低等问题。
具体实施方式
下面结合附图,对发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
图1示出了本发明实施例提供的一种基于遗传算法的农机导航线提取方法的流程示意图,如图1所示,该方法包括如下步骤:
101、对作物行图像进行灰度处理;
102、将灰度图像转化为二值图像,根据二值图像,通过垂直投影法确定作物行的个数和位置信息;
103、根据作物行中心线的预设约束条件,通过遗传算法在所述作物行的位置信息对应的图像区域确定作物行中心线;
104、根据相邻两条作物行中心线确定位于所述相邻两条作物行中心线之间的导航线。
上述方法通过对采集的作物图像(如图2所示)进行灰度和二值化处理,通过垂直投影法获取作物行个数和位置信息,然后通过遗传算法提取作物行中心线,进而得到导航线,提高了导航线的提取速度,减少了杂草的影响,解决了导航线提取实时性差、准确性低等问题。
在基于机器视觉的农机导航过程中,视觉传感器采集的农田作物图像具有以下特点:(1)作物行走向呈近似直线并且相互平行,但由于相机视角的原因,作物行间距在图像底部距离较大,而在图像顶部距离较小。(2)作物行连续生长,开始于图像底边,终止于图像顶边,通过底边和顶边上2个点可以确定作物行直线。本实施例的方法将这两个特点作为农机导航路径提取约束条件。
基于上述约束条件,本实施上述方法的主要思想是图像中作物行走向呈现近似直线,将图像底边点作为直线起点,顶边点作为直线终点,分别从顶边和底边各选1个数据点进行编码,编码后的染色体代表一条待检测的直线,构造适应度函数判断直线的优劣程度,通过多次进化搜索寻找到适应度最高的个体,将此直线作为作物行中心线直线。
下面通过具体的实施例对上述方法进行详细说明,本实施例主要在自然条件下,实现了农机导航路径的快速、可靠提取。以下各实施例选择中耕期间含有杂草的玉米图像为例进行详细说明。
具体可以包括以下步骤:
201、采集作物图像。调整安装于除草机具上摄像头的高度和角度,使图像中某一行作物与水平方向呈70~85角度。得到的图像如图2所示,对该行作物进行导航线提取,以下称该行作物为特定作物行。
202、利用2G-R-B方法将彩色图像灰度化,如图3所示。
203、将灰度处理后的图像转化为二值图像,如图4所示,通过垂直投影法检测所述二值图像中作物行的个数和位置信息。
通常视觉传感器采集的农田图像包括多行作物,本实施例采用采用基于二值图像的垂直投影法检测作物行个数以及近似位置信息。
上述方法步骤如下:
2031a、根据二值图像中的目标区域中每一列像素灰度值的投影,确定每一列的列像素的灰度值之和,将所述每一列的列像素的灰度值之和作为列像素值,以及根据目标区域中每一像素的灰度值确定所述目标区域所有像素的平均灰度值,其中,所述目标区域为所述二值图像中下半部分的区域;
2032a、在所述目标区域中从左到右依次将所述列像素值与所述平均灰度值进行比较,并在所述列像素值大于等于所述平均灰度值时,将所述平均灰度值作为该列的列像素值,否则将所述列像素值置零;
2033a、判断第i列的列像素值与第(i-1)列的列像素值的大小,根据所述第i列的列像素值与第(i-1)列的列像素值的大小关系,确定所述作物行的左边缘信息和右边缘信息;
2034a、根据所述作物行的左边缘信息和右边缘信息的差值与预设作物行的宽度值进行比较判断,获取作物行的个数和位置信息;
其中,i为大于等于2的正整数。
具体的,设I(i,j)表示图像中(i,j)位置像素点灰度,L(j)为第j列像素灰度之和,T为窗口内像素灰度平均值。设待检测物行的宽度为R,L(j)和T的表达式为:
其中,M代表图像宽度,N代表进行垂直投影图像高度,也就是垂直投影一列像素数。
作物行的个数及位置信息检测算法如下:
(1)计算ROI(Region of interest图像中感兴趣区域,本实施例中感兴趣区域为图像下1/2区域)内列像素和L(j)(j=1,2,‥3,…M)以及平均灰度值T。建立二维数组A并初始化,用来存储作物行个数及位置信息例如用A[m][n](m=1,2,3…,N=0,1)存储作物行个数及位置信息,其中A[m][0]存储第m个作物行左侧边缘信息,A[m][1]存储第m个作物行右侧边缘信息,初始化临时变量m=0。
(2)在ROI中从左向右将L(j)与T值做比较,如果L(j)>T则L(j)=T,否则L(j)=0。
(3)如果L(j)>L(j-1),则A[m][0]=j表示作物行左侧边缘,如果L(j)<L(j-1),则A[m][1]=j表示作物行右侧边缘。
(4)计算作物行左右边缘差值,即Ds=A[m][1]-A[m][0],如果Ds>=R表明作物行位置信息有效,进行保留;如果Ds<=R表明作物行置信息无效,进行删除。
(5)m=m+1,重复步骤(2)~(5)的过程,j=M时停止搜索,程序结束。j=M表示图像从左到右完成对所有列像素的投影,如图5所示,作为物行的个数及位置信息检测算法的结束条件。
204、根据作物行在图像中特点,建立作物行直线约束条件。所谓的约束条件就是基于作物行在图像中近似为一条直线,直线可以由两个端点确定,选择图像顶边和底边上各一个点作为直线候选端点,而这两个端点就通过染色体编码来体现。
上述约束条件的具体内容如下:
(1)由于机械化播种,生长出的作物行表现为小区率曲线或者近似直线并且作物行间相互平行。但受相机投影模型的影响,图像中的作物行呈现出近大远小的特点,即作物行在图像底端较粗且行间距离较大,而在图像顶端较细且距离较小。
(2)作物行起始于图像底边,终止于图像顶边,生长具有连续性,作物行直线方程可以通过底边和顶边上的2个点确定。作物行直线起点在底边选择,终点在顶边选择。
(3)以图像中心线为界,图像被分为左右两部分,中心线两侧的作物行直线在图像顶端延长线与中心线的延长线交于一点。建立直角坐标系,图像中心线左侧作物行直线斜率为负;图像中心线右侧作物行直线斜率为正。
205、作物行中心线提取,包括以下步骤:
2051、根据所述作物行的位置信息,选取目标区域,其中,所述目标区域为所述二值图像中下半部分的区域;
2052、在所述目标区域的顶边和底边上各选取预设数量的点,将底边上的点作为作物行中心线的起点,顶边上的点作为作物行中心线的终点,根据作物行中心线的预设约束条件将多个起点与多个终点连线构成预设数量的直线;
2053、构造适应度函数,并选取所述预设数量的直线中适应度最高的直线作为作物行中心线,如图7所示。
根据以上约束内容,作物行在图像中显示如图8所示,作物行直线表达式为:
x1,x0∈(0,width),y0=0,y1=height
其中,(x0,y0)为作物行直线起点,位于图像底边;(x1,y1)为直线终点,位于图像顶边,width为图像宽度,height为图像高度。
对于图像中心线左侧作物行直线:
y0=0,y1=height
对于图像中心线右侧作物行直线:
y0=0,y1=height
具体算法设计如下:
(1)染色体编码
在约束条件基础上,进行染色体编码。染色体编码过程中,对于编码范围有一个坐标约束,要求底边点和顶边点编码横坐标范围为[0,Width],Width为图像宽度,顶边点纵坐标为height,底边点纵坐标为0,其中height表示图像高度。图像顶边和底边的数据点构成了直线解空间,设图像底边点坐标为(xi,0)代表直线起点,顶边点坐标为(xj,height)代表直线终点,将(xi,0)和(xj,height)进行编码构成染色体。为了减小编码长度,提高算法运算速度,(xi,0)在垂直投影法获取的作物行位置存储矩阵内选择。在待处理图像像素为640*480,图像宽度为480像素的情况下,本申请的一个优选实施例为图像中心线左侧直线,对于图像顶边或底边上的任意一个点横坐标可以用一个9位二进制进行表示(顶边和底边上的点纵坐标为height和0,是常数),例如011100110表示横坐标为230.将(xi,0)和(xj,height)进行编码构成染色体,染色体长度为18位,前9位表示顶边点横坐标,后9位表示底边点横坐标,例如对(128,height),(210,0)两个点编码的结果为010000000011010010。
(2)初始种群设定
群体规模太小,种群个体多样性不高,造成遗传算法搜索空间受限。群体规模太大,种群个体多样性增加,但使算法计算复杂度增加执行效率下降,本发明专利设定初始种群个体数量为30。随机生成一定数量个体(为30的倍数),从中筛选优良个体放入到初始化种群内,直到种群个体数量达到要求。
(3)适应度函数构造
如果目标像素到一条直线的距离小于给定阈值d,则认为目标点在直线上。通常距离一条直线d范围内目标点数量越多,表示该直线距离作物行中心线越近,将适应度值最高的染色体所代表直线作为作物行中心线,本申请适应度函数设计为:
f=N (3)
N表示距离直线d范围内目标点个数。
(4)选择算子
本申请采用概率保留法和最优保存策略相结合的方法作为选择算子。
选择算子通过适应度函数对个体优劣进行评价,根据适应度值的好坏按照一定原则,从父代中选择适应度好的个体遗传给下一代,淘汰适应度低的个体,使种群向最优解的方向靠近。本发明专利采用概率保留法和最优保存策略相结合的方法,既保证种群个体收敛性又保证种群多样性。首先,计算群体的平均适应度值favg以及个体xi适应度值fi,如果
fi>favg (4)
则xi予以保留,否则按照式(5)进行计算。式(5)中M表示适应度小于favg个体数量,生成一个0到1之间的随机数r,如果Pi>r则xi予以保留,否则将xi淘汰。
运用最优保存策略对上面保留下的个体进行运算,具体步骤如下:
A、计算当代保留个体的适应度值,找出k个适应度值最好的个体;
B、将上面k个体适应度值与到目前为止适应度值最好的k个体相比较,适应度值大的个体替代适应度值小的个体;
C、将替代后的k个体放入子代中,进行交叉变异运算。
(5)遗传算子(交叉算子和变异算子)
遗传算子包括交叉算子和变异算子,在遗传算法运行过程中,需要保持种群个体的多样性,以促进遗传算法全局收敛。但随着迭代次数的增加,种群个体向最优方向靠近,种群个体多样性降低,相似性提高,算法出现早熟的可能增加。为避免遗传算法出现“早熟”,本实施例提出了一种衡量种群“早熟”程度的新指标,通过监测种群的“早熟”程度对交叉概率和变异概率进行自适应调整。
种群“早熟”程度评判准则:当代种群中最大个体适应度值与超过平均适应度值的所有个体的均值的比值。
Δ=fmax/favg(max) (6)
交叉概率和变异概率自适应调整公式如下所示:
其中,Pc表示交叉概率,Pm表示变异概率,favg(max)为当代种群超过平均适应值的所有染色体的均值,fmax为种群中个体最大适应度值,k1、k2为比例因子均大于0,当Δ远大于1时,说明种群中个体差异较大,具有良好的多样性,此时增加交差概率,降低变异概率,使算法趋于收敛,增强算法的收敛速度;当Δ接近1时,说明种群个体趋于收敛,此时降低交叉概率,提高变异概率,增加新个体数量,保持种群多样性,为了避免局部收敛和“早熟”。本实施例选择k1=5,k2=8,由此可得0.35≤Pc≤1,0≤Pm≤0.25。
上述遗传算法改进包括上述选择算子改进、交叉算子改进和变异算子改进。
(6)终止条件
当算法进化到规定代数或满足收敛条件时,遗传算法输出参数(xi,0),(xj,height),利用两点式可以计算出直线方程y=kx+b,k=height/(xj-xi),b=height×xi/(xi-xj)
206、导航线提取
导航线方程可以根据相邻两条作物行直线方程计算得到,其反映的是作物行与农机具在图像坐标下的相对位置,要将其用于导航,需要对车辆相对位姿进行求解,计算出导航参数。
(1)根据相邻两条作物行直线求解导航线方程ym=kmx+bm,
k=-2height/(xa1+xb1-xa2-xb2)
b=height×(xa1+xb1)/(xa1+xb1-xa2-xb2),
(xa1,0)和(xa2,height)表示图像左侧作物行直线底边点和顶边点,(xb1,0)和(xb2,height)表示图像右侧作物行直线底边点和顶边点。
(2)位置姿态求解:农业车辆的定位以作物行为参照系,不需要确定它在世界坐标系中的绝对位置。所以选择车辆的车体坐标系为世界坐标系,世界坐标系随着车辆的移动而移动。一般选取摄像机在地面的投影点作为世界坐标系的原点。车辆相对目标路径的位置关系如图9所示。
xw轴的正方向为车辆行驶方向,虚线为目标路径。车辆相对目标路径横向偏差的大小即为坐标系原点Ow到直线ym=kmx+bm的距离,等于直线与xw轴的夹角即为航向偏差,即
θ=arctankmθ∈(-90°,90°)
图10示出了本发明实施例提供的一种基于遗传算法的农机导航线提取装置的结构示意图,如图10所示,该装置包括:
图像处理模块11,用于对作物行图像进行灰度处理;
作物行位置确定模块12,用于根据二值图像,通过垂直投影法确定作物行的个数和位置信息;
作物行中心线确定模块13,用于根据作物行中心线的预设约束条件,通过遗传算法在所述作物行的位置信息对应的图像区域确定作物行中心线;
导航线确定模块14,用于根据相邻两条作物行中心线确定位于所述相邻两条作物行中心线之间的导航线。
上述作物行位置确定模块12,用于:
将灰度处理后的图像转化为二值图像,通过垂直投影法检测所述二值图像中作物行的个数和位置信息。
上述作物行位置确定模块12,还用于:
根据二值图像中的目标区域中每一列像素灰度值的投影,确定每一列的列像素的灰度值之和,将所述每一列的列像素的灰度值之和作为列像素值,以及根据目标区域中每一像素的灰度值确定所述目标区域所有像素的平均灰度值,其中,所述目标区域为所述二值化图像中下半部分的区域;
在所述目标区域中从左到右依次将所述列像素值与所述平均灰度值进行比较,并在所述列像素值大于等于所述平均灰度值时,将所述平均灰度值作为该列的列像素值,否则将所述列像素值置零;
判断第i列的列像素值与第(i-1)列的列像素值的大小,根据所述第i列的列像素值与第(i-1)列的列像素值的大小关系,确定所述作物行的左边缘信息和右边缘信息;
根据所述作物行的左边缘信息和右边缘信息的差值与预设作物行的宽度值进行比较判断,获取作物行的个数和位置信息;
其中,i为大于等于2的正整数。
上述作物行中心线确定模块13,用于:
根据所述作物行的位置信息,选取目标区域,其中,所述目标区域为所述二值图像中下半部分的区域;
在所述目标区域的顶边和底边上各选取预设数量的点,将底边上的点作为作物行中心线的起点,顶边上的点作为作物行中心线的终点,根据作物行中心线的预设约束条件将多个起点与多个终点连线构成预设数量的直线;
构造适应度函数,并选取所述预设数量的直线中适应度最高的直线作为作物行中心线。
上述装置与上述方法是一一对应的关系,本实施例不再对上述装置的实施细节进行详细说明。