张伟伟,张卫正,刘岩,梁婷婷,殷君茹,陈启强,金保华
(郑州轻工业学院,河南 郑州 450002)
水稻剑叶是光合作用产物的主要来源之一,也是水稻相关性状的直接决定因素[1]。水稻主茎与剑叶之间的夹角称为剑叶角,是决定水稻产量的重要因素之一。测量剑叶角是理想植株育种过程中非常重要的一部分[2-3]。目前,常用的测量水稻剑叶角的方法是人工使用量角器测量,该方法自动化程度低,且容易产生较大误差,亟须研发能够快速、准确测量水稻剑叶角的方法。
智能手机、便携式平板电脑等设备具备拍照、存储与数据处理等功能,并且具有体积小、重量轻和易携带等优点,结合图像处理和识别技术,能够从复杂场景中提取出所需要的关键信息,在农业工程等领域得到日益广泛的应用[4-6]。龚爱平等[7]提出了基于Android系统手机的叶面积测量方法,利用Java编写软件,以Android手机为工作平台,通过图像获取、图像分割、图像二值化、滤波去噪等实现叶片面积计算,测量结果与LI-3100型叶面仪测得的结果偏差在±1%以内。路文超等[8]设计了基于Android智能手机的水稻剑叶角测量系统,采用智能手机获取水稻剑叶图像,经过图像预处理、直线检测、K-means聚类和向量方法得到水稻剑叶角,实现了在Android平台下利用JNI和Android NDK调用基于OpenCV库的剑叶角计算,功能良好,但开发和计算过程略显复杂。王建武[9]采用平板电脑对外业数据进行采集,替代了传统外业调查利用纸质地形图勾绘的繁重复杂调查方式,实现了林业外业调查无纸化,有利于数据、图形、实地三统一,完成了数据存储、定位和面积测算,数据更加精准,可随时随地进行数据查询与调阅。Gajanan等[10]利用Android平台,通过检测叶片的斑点的颜色、面积和数量进行病害早期检测及病害程度的确定。
本文针对水稻剑叶角的实际测量需求,采用图像处理及相关数学计算方法自动获取剑叶角。同时,考虑到田间使用对便携性、实时性和准确性等的要求,依托便携式平板电脑平台,运用Matlab设计并开发了剑叶角测量应用程序,实现了剑叶角的快速、非接触测量。
提出的水稻剑叶角测量系统的主要功能模块包括:水稻剑叶角图像的采集,背景去除,剑叶和主茎的骨架细化,采用坐标法计算剑叶角。剑叶角测量的流程如图1所示。
图1 剑叶角测量的流程
采用微软(Microsoft)公司开发的便携式平板电脑Surface Pro 4获取剑叶基部图像。该设备采用Windows操作系统,触控显示屏尺寸为12.3 inch(1 inch≈2.54 cm),分辨率为2 736 pixel×1 824 pixel,采用第6代Intel酷睿TM处理器,系统内存为16 GB,具有800万像素后置自动对焦摄像头,配备1 024级压感触控笔,电池续航时间长达9 h,机身厚度8.45 mm,质量为786 g,携带方便,便于移动操作,可满足本文图像采集与处理的要求。
将黑色背景板平行紧贴于主茎与剑叶的基部,采用基于Matlab软件所设计的应用程序调用Surface Pro 4平板电脑的后置摄像头拍摄剑叶基部图像,如图2所示。
图2 剑叶基部图像
由于测量系统在采集原始图像的过程中已经将黑色背景板放置在水稻剑叶和主茎的后方,因而降低了图像分割提取的难度。本文提取RGB空间的B、G两个通道,并用作差取阈值的方法实现分割提取[11],如图3所示。该分割方法的优点是能较好地保留水稻剑叶及主茎的形状及纹理,同时又能较好地去除光照因素的干扰。
图3 背景去除与二值化
采用Matlab内部的DIP(数字图像处理)工具箱函数rgb2gray()将彩色图像转换为灰度图像,然后用graythresh()函数输出二值化所需的阈值,最后通过函数im2bw()及阈值将灰度图像转换成二值图像。
二值图像的剑叶和主茎的边缘部分较为粗糙,且可能有零散的白色斑点,剑叶和主茎的内部可能出现黑色孔洞,需要分别采用开运算和孔洞填充算法进行处理。
先腐蚀再膨胀的整个操作过程称为开运算,其主要作用是消除小物体、平滑较大物体的边界、在纤细点处分离物体,同时在整个过程中并不明显改变其面积。采用函数bwmorph(image,‘open’)对图像进行开运算,消除剑叶和主茎的粗糙边缘及零散的白色斑点。
采用Matlab的二值图像孔洞填充函数imfill()对剑叶和主茎中的黑色孔洞进行填充。经过开运算、孔洞填充操作之后,二值图像的噪声已经去除,如图4所示。
图4 去除噪声的二值图像
图像中的目标细化就是指获得目标骨架的整个过程,骨架细化算法的目的就是为了方便描述、抽取目标的线性特征[12-13]。一般细化算法须满足以下几点要求:1)保证原来图像边缘的连通性;2)原来图像边缘的中心线为骨架图像;3)尽可能多地将一个像素宽度的线条图像作为细化结果;4)细化速度要快[14]。本文采用的骨架细化函数为bwmorph(image,‘thin’,Inf),其中,image表示被处理的目标图像,‘thin’表示细化操作,Inf表示进行多次操作,直到图像不能再细化。细化图像如图5所示。
图5 剑叶和主茎的骨架细化
水稻植株的剑叶角有可能出现锐角、直角和钝角3种情况,对应的剑叶和主茎共有8种位置关系,如图6所示。其中,出现图6中d和图6中h所示的情况时不能直接以剑叶和主茎的夹角作为剑叶角。本文根据坐标点计算剑叶角。
图6 剑叶和主茎的8种位置关系
2.2.1 缩短细化线
从图5可看出,水稻剑叶和主茎经过骨架细化操作后,两者的细化线在顶部出现一定程度的偏离主体走势,需要进一步缩短细化线,最大限度地通过剑叶和主茎的细化线准确还原剑叶角。为了缩短细化线,采用以下步骤。
Step 1:通过函数bwmorph(image,‘endpoints’)查找并标记骨架细化线的3个端点;
Step 2:删除前述3个端点;
Step 3:将Step1和Step2重复执行30次。
实现骨架细化线缩短的结果如图7所示,以减小端部细化线的偏移对测量剑叶角精度的影响。
图7 缩短细化线
2.2.2 根据坐标点计算剑叶角
通过函数bwmorph(image,‘endpoints’)查找并标记骨架细化线的3个端点,如图8中的圆点所示。通过函数bwmorph(image,‘branchpoints’) 查找并标记主茎和剑叶骨架细化线的1个交叉点,如图8中“×”所示。
图8 端点和交叉点检测
在实际检测中,如果出现如图8中a和图8中e所示的这2种情况,表明剑叶和主茎重合,显示为一条线段,只有2个端点,没有交叉点,结合剑叶的生长情况,此时判定剑叶角为0°,因为剑叶不可能向下生长。
如果3个端点中的某一个端点的行坐标与交叉点的行坐标相等,即出现如图8-c或图8-g所示的2种情况,判定剑叶角为90°。
如果3个端点中的2个端点的行坐标小于交叉点的行坐标,即出现如图8-b或图8-f所示的情况,根据这2个端点与交叉点的行坐标和列坐标计算其所组成的夹角,即为剑叶角。
如果3个端点中的2个端点的行坐标大于交叉点的行坐标,即出现如图8-d和图8-h所示的情况,根据这2个端点与交叉点的行坐标和列坐标计算其所组成的夹角,并用180°减去该夹角得到剑叶角(此时的剑叶角为钝角)。
以上各种情况下剑叶和主茎骨架细化线的端点和交叉点的检测及剑叶角计算,均通过编写的程序自动运行。
在平板电脑上采用Matlab软件设计图形用户界面,如图9所示,并开发应用程序,编写各个操作按钮所对应的程序代码,通过简单便捷的人机交互界面,调用图像处理算法实现剑叶角的测量。
图9 剑叶角测量的图形用户界面
界面左侧的按钮包括“打开相机”“拍照”和“关闭相机”,通过这些步骤可以实现剑叶图像的采集。通过“打开图像”“背景去除”“二值化”“噪声去除”“细化”“角度测量”等按钮,实现剑叶角测量的功能。为了实现快速计算剑叶角,在打开图像之后,也可以直接点击“测量”按钮,实现剑叶角的计算和存储。
为了验证测量系统的精度,采用本测量系统对田间多株水稻的剑叶角进行测量。针对此次试验,在田间随机选定多株水稻植株进行剑叶角测量。在使用本系统测量水稻植株的剑叶角后,再用量角器对同一植株的同一片剑叶进行人工测量并记录。
对本文方法取得的测量值和人工测量值进行分析,如图10所示。其中,横轴为采用本文方法对多个水稻植株剑叶角的测量值,纵轴为对相应植株进行人工测量的角度值,拟合得到直线方程y=0.996x+0.2。本文方法测得的平均绝对误差为0.51°,相对误差为1.22%,本文方法测量值和人工测量值的相关系数为0.998。
图10 本文测量值和人工测量值的分析
整体来看,本文方法测量值和人工测量值较为吻合,但仍存在较小的误差。产生这种误差的原因可能是,经过图像细化,主茎和剑叶的骨架细化线的位置可能产生偏移,加之端点及交叉点的定位也可能存在误差。
提出一种测量水稻剑叶角的图像处理算法,通过图像预处理、噪声去除、骨架细化、坐标点计算等步骤实现了水稻剑叶角的测量。在便携式平板电脑上采用Matlab设计图形用户界面,开发剑叶角测量的应用程序,实现了图像采集、剑叶和主茎的提取、骨架细化,以及多种位置关系的剑叶角计算。利用本文开发的测量系统在田间对多株水稻进行了剑叶角测量,试验结果表明,本文所提出的方法精度高、误差小,与人工测量值的相关系数为0.998,表明本系统能够高精度地测量水稻剑叶角,具有一定的应用价值。