严正红
(安徽国防科技职业学院,安徽 六安 237011)
玉米作为我国第1大高产粮食农作物,是发展畜牧业和养殖产业的重要饲料来源,同时也是食品业、轻工业、医疗业等产业中不可缺少的原材料。在我国,玉米种植区域广泛,产量稳定、高效,在农业生产总值中占有重要地位[1]。在玉米育种、考种、播种、新种培育、产量预测等生产和研究中,玉米穗籽粒数都是一项重要指标。目前,玉米穗籽粒数主要依靠人工通过肉眼统计完成的,其工作效率低、劳动强度大,容易使人产生视觉疲劳而影响穗籽粒数统计准确率。因此,如何快速、精准地统计玉米穗籽粒数成为玉米自动化考种的研究热点。
近年来,智能化与信息化技术不断在农业生产中应用,农业生产领域正逐渐向智慧农业领域转变。玉米穗行粒数是玉米考种的重要参数。针对玉米穗籽粒数的计算,运用机器视觉技术和图像处理技术对玉米穗图像的研究一直是自动化玉米考种方面的一大研究热点。
因此,本文利用工业照相机搭建图像采集装置,并运用MATLAB数字图像处理技术对玉米穗图像进行处理。将玉米穗完整图像分割出果穗中的某一行,然后快速统计出玉米穗行籽粒的数量,该方法能够为玉米自动考种技术提供参考。
玉米穗图像数据采集常用的方法有扫描仪对样本进行扫描、摄像机对样本摄像,以及利用照相机对样本拍摄等3种采集方法。其中,在运用扫描仪扫描样本法采集时,玉米整穗体积大,一般扫描仪扫描出来的图像会因为遮盖不严而产生漏光现象,所采集的图像因模糊而影响处理结果。在利用摄像机采集图像的方法中,由于清晰度取决于感光芯片的性能,对于设备要求较高。照相机拍摄取样法操作简单、方便实用,但是在采集中容易受环境、样本自身杂质、光照不均、拍摄角度和距离等因素影响,产生一定的噪声,从而影响处理效果。为尽可能地降低环境、设备等因素影响,研究中采用工业照相机来采集样本图像,统一图像采集方式,对采集系统中的照相机和玉米穗垂直放置,两者间垂直距离保持稳定不变。
以产自安徽“京丰8号”玉米穗完整果穗作为实验样本。将采收、晒干后的整果穗玉米平整放置在实验台上,使用北京维视数字图像技术有限公司生产的MV-VD030型号工业照相机,在玉米穗正上方垂直拍摄,进行实验样本的图像采集工作。工业相机与玉米穗的垂直距离保持在300mm。如图1所示,为玉米穗图像采集装置示意图。工业相机完成图像采集后,将采集到的信息传输给计算机,供后续MATLAB图像处理使用。
图1 图像采集装置示意图
如图2所示,工业相机采集到的玉米穗原始图像以.bmp格式照片形式保存。为检测玉米穗行籽粒数,需要对图像进行预处理。用工业相机采集的图像彩色图像,其图像颜色模式由R、G、B 3个模式所构成。为了消除玉米穗图像自身带有的噪声信息,增强图像轮廓有关信息,必须对原图像进行预处理。预处理理想结果为成功图像分割到目标为玉米籽粒行轮廓图像,图像预处理是基于MATLAB R2014a对图像进行灰度化处理、二值化处理、去除小面积、空洞填充等。
图2 玉米穗原始图像
2.1.1 图像灰度化处理
为降低后续图像处理的计算量,采集到的彩色图像需要进行灰度化处理。灰度范围一般在0~255范围内变化,灰度值为0时为黑色,灰度值为255时为白色,灰度值较大的像素较亮,反之较暗。目前,图像灰度化处理常用方法有3种,即最大值法、平均值法和加权平均值法[2]。本文选用加权平均法进行玉米穗原始图像灰度化处理,加权平均法指按照一定的权值,将R′、G′、B′各分量值的加权平均值作为灰度值,公式:
R′=G′=B′=ωRR+ωGG+ωBB
(1)
式中,ωR、ωG、ωB分别表示R′、G′、B′的权值。
2.1.2 二值化处理
虽然灰度化后的玉米穗图像已经由彩色图像转化成单通道的灰度图像,但图像中每个像素点的像素值还有256个,其数据量依然庞大。为了进一步简化图像需要对其进行二值化处理。二值化的目的就是将图像转化成二值图像,图像的像素点灰度值非1即0,即将目标像素点灰度值置1,背景像素点灰度值置0,这样就可以将原来的玉米穗图像的色彩信息简化到极致,并且保留了原有图像的结构特征。
灰度图像二值化的方法通常采用阈值来实现,阈值有人工阈值和自动阈值2种。人工阈值是一个不断尝试的过程,通过设定不同大小的值来观察图像二值化后的效果,以挑选出最佳的阈值。该方法操作简单,但适用性不强,每幅样本图像都要重新寻找与之对应的阈值,且费时费力。自动阈值是依据图像自身灰度值的分布特征自动生成阈值的方法,一般有经验法、直方图谷底法、最大类间方差法、迭代法等[3]。
在进行阈值法操作中,阈值大小是影响二值化处理效果的最重要因素,其参数值的设定非常关键。在研究中,图像二值化处理运用经验法来设定阈值参数,然后扫描图像中所有像素,对于图像中像素值比阈值参数大的全部置成1,比阈值参数小的全部置成0。由于实验样本采集系统对于玉米穗图像采集是采用统一标准进行采样的,其样本图像背景比较纯净,所以采用自动阈值便可以满足图像识别的要求。如图3所示,为经灰度化及二值化处理后的图像。
图3 灰度化及二值化处理后的图像
在经过二值化处理后的玉米穗图像中,白色玉米为主体,黑色为背景,灰度差别大,经实际图像分割操作效果的比对,利用阈值法分割要比边缘提取方法保留玉米穗的轮廓信息更多,所以对玉米穗图像的处理选用阈值分割。阈值分割的实质是从灰度图像的灰度直方图信息中获取分割阈值。
由于分离出来的玉米穗是个完整的连通域,所以在图像中拥有最大的面积,而其他噪点、杂质的面积均远远小于玉米穗的面积,通过阈值的方式可以去除面积小于该阈值的连通域,即可去除图像中背景物的噪点和其他杂质。为获得更加完整的玉米穗图像,针对空洞问题继续利用去除小面积的方法来实现,其具体步骤:将图像进行反色,利用函数去除空洞连通域,再将图像取反,即可得到去除空洞后的玉米穗图像。重复以上操作,分割结果显示区域去除处理后的图像,如图4所示。MATLAB程序设计代码如下:
图4 去除面积后图像
corn_level=graythresh(corn);%自动设置一个阈值
corn_BW=im2bw(corn,corn_level);%图像二值化
figure(5)
imshow(corn_BW) %显示转化后的图像
corn_BW_point=bwareaopen(corn_BW,50000); %去除面积低于50000的图像
figure(6)
imshow(corn_BW_point) %显示图像
corn_BW_point_not=~corn_BW_point; %将图像反色处理
corn_BW_point_not=uint8(corn_BW_point_not); %转换数据类型为logical到uint8
corn_BW_point_roll(:,:,1)=corn_BW_point_not.*corn(:,:,1);%点乘运算
corn_BW_point_roll(:,:,2)=corn_BW_point_not.*corn(:,:,2);
corn_BW_point_roll(:,:,3)=corn_BW_point_not.*corn(:,:,3);
figure(7)
imshow(corn_BW_point_roll) %显示运算后的图像
corn_level_roll=graythresh(corn_BW_point_roll); %设置一个阈值
corn_BW_roll=im2bw(corn_BW_point_roll,corn_level_roll);%图像二值化
figure(8)
imshow(corn_BW_roll) %显示转化后的图像
corn_BW_point_roll_1=bwareaopen(corn_BW_roll,100); %去除面积低于100的对象
figure(9)
imshow(corn_BW_point_roll_1) %显示图像
图像分割后,图像中还存在一些杂点,目标物体的边界凹凸不平。为了只保留玉米穗的一行,去除图像中的杂点以及使玉米穗轮廓边界变得平滑,需要对分割后的图像进行一系列形态学处理。在MATLAB 2014a中,图像的形态学处理技术主要包括膨胀、腐蚀、开运算和闭运算[4]。膨胀处理是将图像的边缘进行一定的延长和拓宽,增强实际边界的像素点。腐蚀处理是一种消除边界点,使边界点内宿的过程。可运用于消除小且无意义的目标对象,强化边界有效性。由于前期进行过腐蚀操作,图像像素点减弱,存在失真现象,所以需要再进行一次膨胀处理以弥补失真情况。因在图像处理时数据类型的不同,需要首先将数据类型转化成logical到uint8,再进行点乘运算和图像滤波,这样就可以分割出原始玉米穗图像中的某一行。其图像显示结果如图5所示。
图5 分割出一行图像
经过对玉米整穗原始图像的预处理与图像分割处理后,可以得到玉米穗图像中的一行图像。针对分割出玉米穗的一行,需要再进行一次分割,才能进行玉米穗行籽粒数的估算。经二值化处理、点乘运算等操作后,玉米穗行的籽粒处于分开状态,然后在MATLAB中调用函数计算出玉米穗行籽粒的数目。
利用数字图像处理技术对玉米穗行籽粒数估计算法设计,其MATLAB程序设计代码实现:
count_BW=im2bw(I,0.32); %图像二值化
count_BW_double=double(count_BW); %转换数据类型为logical到double
count_BW_roll=double(bw_end).*count_BW_double;%点乘运算
count_BW_point=bwareaopen(count_BW_roll,50); %去除图像中面积低于50的对象[L,num]=bwlabel(count_BW_point,8); %籽粒计数
显示计数后的图像及籽粒数如图6所示。
图6 玉米穗行籽粒数估计
为了验证所建立的玉米穗籽粒计数模型的可应用性和准确性,将实验室中30穗玉米的图像经所计数算法模型的估算,并分别统计出模型计数出的玉米穗行籽粒数和经人工实际数出来的玉米穗行籽粒数。
如图7所示,玉米穗行粒数模型估计与人工实际计数进行比较,行粒数相差不超过2粒,其计算出的相对误差低于5.4%。利用MATLAB数字图像处理技术可以实现玉米穗考种行籽粒的计数功能,其高效、准确的估计性能弥补了人工视觉疲劳的缺陷,大大提高了考种效率,为自动化考种提供便利。
图7 玉米穗行粒数统计图
通过实验与统计结果分析可得出,在使用工业照相机采集玉米穗整果图像信息的基础上,利用数字图像处理技术对玉米穗行籽粒数的估计设计,可以大大提高玉米穗行粒计数准确率。所设计方法操作性强、花费低、效率高,将明显降低人为劳动强度,对玉米自动化考种技术的发展具有重要意义。