基于骨架提取算法的作物茎秆识别与定位方法
2023-01-05吴艳娟王云亮
吴艳娟 王 健 王云亮
(1.天津理工大学电气工程与自动化学院,天津 300384;2.天津理工大学天津市复杂系统控制理论及应用重点实验室,天津 300384)
0 引言
在农作物幼苗时期,杂草会极大地影响其生长,使其得不到充足的光照和养分。全球已发现的杂草中超过60%会影响农作物的产量[1]。所以,除草作业对农业生产有重要意义。化学除草和人工除草是当前农业生产中应用最多的两种除草方式,长期大量使用化学除草剂存在引起环境污染、破坏土壤生态平衡、从源头影响食品安全等问题。而人工除草虽然能有效识别并清除杂草,但由于劳动力短缺和成本上升,会提高农作物种植成本,并且人工除草效率低,难以实现大规模种植。
由此,机械除草成为最理想的除草方式,在减少人工成本的同时,除草效率大幅提高。然而大多数除草机只能铲除垄间杂草,株间杂草只能通过人工除草等方式进行处理,随着计算机、机器视觉和自动化等技术的持续发展,农业机械自动化水平发展迅速,除草机也逐渐向智能化方向发展,研究能真正取代人工作业的智能型除草机是发展趋势。
而智能型除草机具技术关键是杂草和农作物禾苗精确辨识与定位。通过对杂草禾苗颜色、位置、形状和纹理特征展开研究[2-9],可以对田间禾苗和杂草进行有效辨识,若不能保证除草时对幼苗的具体位置进行精准判断,作业时会对幼苗造成伤害。
本文提出基于HSV和Zhang-Suen细化算法的骨架提取方法进行禾苗辨识,并进一步实现对农作物禾苗茎秆中心的识别与定位。首先对采集图像进行处理,将采集到的RGB图像转换到HSV颜色空间,通过对H通道阈值的设定,分割掉土壤背景,而后转回到RGB空间进行二值化处理;再通过腐蚀算法对杂草进行腐蚀操作并得到只包含农作物禾苗信息的图像;然后用Zhang-Suen细化算法进行骨架提取;最后通过对骨架交叉点的计算与筛选完成对农作物禾苗茎秆中心的识别与定位。
1 算法整体结构模型
本文算法采用背景分割、腐蚀和Zhang-Suen细化骨架提取的多级混合方法对摄像头采集的彩色图像进行分级递进式处理,实现农作物禾苗的识别和定位,算法整体结构模型如图1所示,首先把原始彩色图像的RGB图像转换到HSV颜色空间,通过对HSV颜色空间中H通道阈值的设置,清除掉土壤背景,再转换到RGB颜色空间完成图像的背景分割。为了方便后续操作,对背景分割后的图像进行二值化处理,然后用腐蚀算法腐蚀掉大部分杂草,并使杂草与作物分离,选取连通区域面积最大的部分就是作物图像。最后对作物图像进行骨架提取,通过对交叉点的检测和计算,对作物茎秆中心进行识别和定位。
图1 算法整体结构模型
2 算法分级递进式处理方法
2.1 原始图像作物背景分割
第1级处理方法是对摄像头采集的原始彩色图像进行农作物图像信息与背景图像信息分割,即对原始彩色图像采用RGB到HSV色彩空间转换方法,将与农作物色彩相差较大的土壤等背景分割出来[10-11]。
由于杂草与作物颜色相近,而土壤背景颜色与作物颜色相差较大,因此在该级处理中主要是通过对HSV颜色空间[12-14]中H通道阈值的设定分割掉土壤背景。
将图像转换到HSV颜色空间后,对H通道的阈值进行设定,将阈值以外的像素透明度V设置为0,完成对图像的背景分割。
2.2 农作物禾苗图像提取
经过第1级的图像处理后,提取出的是农作物和杂草等颜色相近的图像。第2级图像处理即采用腐蚀算法进行杂草和农作物禾苗的辨识,剔除杂草图像,提取农作物禾苗图像。
经过第1级图像的背景分割之后,可提取出包含作物与杂草的二值图像,由于杂草与作物的形态差异,可把杂草视为作物图像中的噪点,利用膨胀腐蚀算法可以有效减少噪声干扰[15-17],减少杂草同时分离作物与杂草。
本文腐蚀算法和膨胀算法结构元素尺寸为3×3的正方形,结构元素中各点分布如图2所示。
图2 腐蚀膨胀算法结构元素
2.3 农作物禾苗骨架提取
经过前2级的处理完成杂草和禾苗的辨识,但为了获得精准的禾苗位置信息,还需要对禾苗图像进行骨架提取和禾苗定位,即进行第3级处理的农作物禾苗骨架提取和第4级处理的农作物禾苗茎秆中心定位,该2级处理也是苗间除草机能真正实现机器视觉感知的最关键环节之一,也可称为农业机械具有机器视觉感知的软接口。
经过第2级图像处理的膨胀腐蚀操作后,得到的二值图像中仅含有农作物禾苗图像,而要精准获得作物的中心位置,就要先对作物整体进行细化,得到作物的骨架。骨架提取算法能有效对骨架进行提取[18-23]。本文采用Zhang-Suen细化算法进行骨架提取[24-27]。该算法每一次迭代标记符合特定条件的目标像素,在遍历完所有图像之后,再对标记点进行统一删除,直到某一次迭代中没有任何一个像素被标记,则迭代结束,得到的图像则为细化后的骨架图像。为了方便描述,先定义几个基本概念。
算法中黑像素为1,白像素为0,输入图像是由1和0组成的n×m序列。算法对有8个邻域的所有黑色像素P1进行操作。邻域中各像素标号按照图3所示的8邻域像素次序图依次排列。
图3 8邻域像素次序图
对图3中的8邻域像素做出如下定义:
定义1:A(P1)=P2→P3→P4→P5→P6→P7→P8→P9→P2序列中从白到黑的转换次数。
定义2:B(P1)=P1邻域像素为黑色的个数。
骨架提取算法共分为2个步骤:
(1)若同时满足以下4个条件,则标记P1为可删除的点。① 2≤B(P1)≤6。②A(P1)=1。③ P2、P4、P6中至少有1个为白色。④ P4、P6和P8中至少有1个为白色。
(2)若同时满足以下4个条件,则标记P1也为可删除的点。① 2≤B(P1)≤6。②A(P1)=1。③ P2、P4、P8中至少有1个为白色。④ P2、P6、P8中至少有1个为白色。
在上述过程中,2个步骤的条件①和条件②相同。条件①判断P1是否为端点,如果P1的邻域只有1个像素为黑色,则为端点,不能被标记;如果P1的邻域有7个像素为黑色,为保证骨架的连通性,也不能被标记。条件②检测P1的邻域顺时针方向是否有从0到1之间的变化,以保证骨架像素点不被标记。
步骤(1)的条件③和条件④同时成立的条件是P4为白色或P6为白色或P2和P8同时为白色,以此来标记东边或南边或西北边的边界点;步骤(2)的条件③和条件④同时成立的条件是P2为白色或P8为白色或P4和P6同时为白色,以此来标记西边或北边或东南边的边界点。
Zhang-Suen骨架提取算法流程如图4所示。
图4 骨架提取流程图
最初,原始图像存储在矩阵IT中,计数器C设为0。处理后的图像结果覆盖原图像并存储在矩阵IT中。为了节省内存空间,在计算中只使用了矩阵IT和M。其中M为步骤(1)和步骤(2)中所标记的点的集合。
2.4 农作物禾苗茎秆中心定位
为了精准定位农作物禾苗茎秆中心,对第3级图像处理后提取的农作物禾苗骨架图像,继续采用模板匹配的方法搜寻茎秆中心,对农作物禾苗进行精准定位。
模板匹配[28-29]是最基础、最常用的模式识别方法,主要用于寻找某一关键部分位于图像的位置,从而对目标进行特征识别,这就是一个匹配问题。本文中,根据骨架交叉点的特征,共定义12个模板,其结构如图5所示。
图5 交叉点匹配模板
2.5 茎秆中心实际位置转换
得到茎秆的像素坐标之后,计算出行列像素偏差,代表直线距离。通过对空间坐标的转换,由小孔成像原理[30-31]计算出农作物的茎秆位置与实际位置偏差。
3 算例实验
3.1 实验图像采集
于自然光照环境采集图像,图像尺寸为640像素×480像素,算法实现环境为Matlab仿真平台。于2019年4月,在实验玉米田地采集图像,玉米幼苗播种14 d后,叶片为5~6叶,叶片长度约为 8 cm,幼苗间距约为30 cm,相机距离地面40 cm,共选取100幅图像进行实验检测,示例如图6所示。
图6 相机采集的部分作物幼苗图像
3.2 作物提取
由图6可以看出,图中杂草与作物颜色相近,而土壤背景颜色与作物颜色相差较大,因此通过对HSV颜色空间中H通道阈值的设定分割掉土壤背景,阈值设置的范围为0.17~0.5。
将分割掉土壤背景后的图像再转换到RGB空间进行二值化,图7为背景分割后转回RGB空间的图像,图8为二值化后的图像。
图7 背景分割后的RGB图像
图8 背景分割后的二值化图像
在用膨胀腐蚀算法进行处理时,出现由于拍摄时的角度与光照问题,导致部分图像的茎秆中心位置处为黑色,影响禾苗骨架提取的准确度,因此再运用闭运算,把图像中的黑色部分填充为白色,得到的结果如图9所示。
图9 膨胀腐蚀后的二值化图像
由图9可以看出,利用膨胀腐蚀算法可以有效消除大部分杂草噪点,还有一小部分无法去除,但是剩下的杂草噪点已经与作物分离,因此,选取图中连通区域最大的部分进行提取,就可得到只含有作物的二值图像。提取后的作物图如图10所示。
图10 作物提取图像
3.3 茎秆定位
在得到作物图像之后,为了获得作物的茎秆信息,先对作物进行骨架提取,在提取过程中,重复迭代Zhang-Suen骨架提取算法的2个步骤,每次迭代后对作物图像中的非骨架点进行标注。在迭代过程中,每次迭代完检测是否有被标记的点,如果有则删除本次迭代中所有被标记的点,然后进行下一次迭代;如果没有任何点被标记,则迭代结束,剩下的点所构成的区域即为骨架。采用Zhang-Suen细化算法处理后的作物骨架如图11所示。
图11 作物骨架图像
在运用Zhang-Suen细化算法对作物骨架进行提取后,以图5交叉点匹配模板对图11的作物骨架进行模板匹配,所得到的骨架交叉点如图12所示,根据作物的形态特征对其进行最大外接矩形的对角线交点计算,所有交叉点中,距离对角线交点最近的点即判定为作物的中心点,得到作物中心点如图13所示。
图12 骨架交叉点
图13 作物中心点
作物原图茎秆中心和实验茎秆定位结果如表1所示。
表1 茎秆定位结果
依据小孔成像原理,计算原图茎秆中心点坐标与定位结果图的中心点坐标的像素距离偏差,部分实验数据见表1,然后再将像素距离偏差转换为实际距离偏差,结果表明实际位置偏差小于12 mm的准确率为95%,满足除草机对茎秆位置的定位精度要求。并且,在该实验中识别不准确的都是禾苗和杂草距离太近的情况,而距离禾苗太近的杂草也不能用除草机铲除,会误伤作物幼苗,不考虑这些与禾苗太近的情况,定位准确率会更高。
为进一步验证本文方法的优越性,与文献[32]采用的K3M算法进行了实验对比,该文方法对误差10 mm以内准确率为85.9%。而本文所采用的Zhang-Suen骨架提取和模板匹配算法对误差 10 mm 内准确率为88%,并且误差12 mm内准确率达到95%。
4 结束语
提出了一种基于颜色空间转换、腐蚀膨胀算法、Zhang-Suen细化骨架提取算法以及模板匹配等多算法混合分级图像处理的方法,实现杂草和农作物禾苗辨识,并且该方法利用作物骨架的交叉点来筛选出作物中心点,实现通过农作物禾苗骨架茎秆中心精确定位禾苗位置的方法。首先在HSV色彩空间中,通过对H通道阈值的设定完成背景分割,根据作物与杂草的分布特点,对图像进行多次腐蚀操作后,通过对最大连通区域的提取,得到作物图像。然后用Zhang-Suen细化算法提取作物骨架,通过对交叉点的模板匹配得到骨架交叉点。最后利用骨架的外接矩形计算出作物的茎秆中心。通过对100幅图像进行实验测试,完成了对苗期作物茎秆中心的精准识别和定位,定位误差小于12 mm。该方法能对作物进行精准识别并精确定位苗期作物的茎秆中心位置,为进一步使用机械除草奠定了基础。