APP下载

Matlab图像处理在水稻谷粒计数中的应用

2018-05-14焦雁翔唐玉琴黄成志黄仁军

南方农业·上旬 2018年2期

焦雁翔 唐玉琴 黄成志 黄仁军

摘 要 为探索水稻谷粒图像快速计数方法,修正或减少因谷粒粘连引起的误差,采用黑色平面结合机械振动分散谷粒并采集图像,利用Matlab软件对图像进行灰度处理、二值化处理、两步开运算及腐蚀运算等消除粘连,并对计数点标记和计算。在灰度图上作开运算能有效修整谷粒边缘,腐蚀运算后谷粒中心与边缘亮暗对比更加鲜明,二值化后的图像初步分离效果好,在进一步开运算和腐蚀运算后,颗粒缩小,边界距离增大,解决了绝大部分粘连。对计数点标记后,非计数点更容易观察,可进行人工校正。该方法不仅可有效地分割谷粒粘连,还便于校正以提高精度,可快速实现800粒以内的水稻颗粒计数。

关键词 谷粒计数;Matlab图像处理;开运算;腐蚀运算;标记;粘连;人工校正

中图分类号:S126 文献标志码:A DOI:10.19415/j.cnki.1673-890x.2018.4.023

考种是水稻品种选育的关键环节,是新品种审定及推广的重要依据。由于传统的人工或电子计数仪计数速率低、误差较大,提高计数效率和精度成为了水稻科研工作者普遍关注的问题[1]。目前,计算机视觉技术与图像处理技术日趋成熟,图像识别、形态参数测量、颗粒计数等已经在农作物育种、测产、品质鉴定等方面得到了广泛应用[2-4]。现有的运算软件MATLAB(Matrix Laboratory,矩阵实验室)由于功能的不断更新和完善,不仅能实现各种数学运算,还提供了很多图像处理函数,如图像显示、图像算术运算、几何变换、图像增强、图像变换、形态学运算、色彩空间变换、图像类型与类型转换等[5]。在谷物颗粒计数方面,贾鹏等利用Matlab灰度处理、去除噪声和二值化处理实现了考种过程中的计数,试验结果表明,在谷物没有叠压的状态下准确率可以达到100%[6]。为了克服颗粒大片粘连,赵欣等利用原有最终腐蚀算法,先计算出没有重叠区域的颗粒数,然后选用面积 Ai作为区域特征参数,对最终腐蚀之后面积依然大于 Ai+4 的部分进行区域分割,并对分割以后的区域进行计数,两次计数结果相加得到图像整体区域内的颗粒数[7]。虽然利用图像处理实现颗粒快速计数已多有报道,分割算法也不断改进,但由于计算大量颗粒时分割还不够彻底,计算结果仍有误差无法校正,适用范围还比较局限。本试验利用MATLAB 平台通过一系列的图像处理算法,提出新的图像分割、计数、校正方法,以期为水稻考种及优质育种提供捷径与支持。

1 材料与方法

1.1 试验材料

计算机1台(系统环境Windows10 64 bit,应用软件MATLAB R2014b);图像捕捉工具1台(智能手机小米MAX2,像素3 840*2 160px);谷粒计数平面40 cm×80 cm黑色铁板桌面1张(表面无反光或反光性差,可容纳800粒的分散谷粒);水稻谷粒若干。

1.2 试验方法

1.2.1 图像采集

随机称取15~17 g水稻谷粒置于谷粒计数平面中央,采用人工敲打振动的方式,使颗粒分散于板面上。在室内自然光条件下(以桌面背景无反光为宜),利用手机照相功能获取颗粒图像(拍照范围及手持高度以覆盖所有颗粒且图像边框不超出板面边界为宜)。存储图片格式为JPG,按品种编号作为文件名导入计算机。

1.2.2 灰度处理

灰度处理可以去一些无用的信息,大幅度减少图像的数据量,减轻后期处理的工作量。对真彩色图像进行灰度化处理,实质上是将RGB图像1个像素的3个分量,按一定算法,求出灰度图像的1个像素灰度值。

1.2.3 开运算

开运算属于形态学图像处理,可以使边界平滑,消除细小的尖刺,断开窄小的连接,保持面积大小不变等。

1.2.4 腐蚀运算

腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。算法:先结构元素,扫描图像的每一个像素用结构元素与其覆盖的图像做“与”操作如果都为1,结果图像的该像素为1,否则为0,使图像减小一圈。

1.2.5 二值化

谷物颗粒计数实现二值化后的图像像素只有0和1两个值,分别表示背景和目标。由于一个谷物颗粒的图像像素是连续的,在二值图像中表现为连通性,因此可以利用bwlabel函数计算连通图的数量来求出谷物颗粒数量。

1.2.6 代码设计

close all;% 关闭所有的图像窗口

clc;% 清除当前command区域的命令

RGB=imread(‘D:\RICE\CT\9.14am\HS05.JPG);% 载入图片,文件名为HS05.jpg

igure,imshow(RGB);% 显示图像RGB

P=rgb2gray(RGB);% 灰度处理

P1=imadjust(P);% 调节灰度对比度

figure,imshow(P1);% 显示图像P1

SE1=strel(‘square,2);% 构造半径为2圆形元素

P2=imopen(P1,SE1);% 以SE为单位对P1进行开运算

SE2=strel(‘disk,1);% 构造半径为1圆形元素

P3=imerode(P2,SE2);% 形态学腐蚀运算,部分目標物有粘连现象,去除粘连

figure,imshow(P3);% 显示图像P3

level=graythresh(P3);% 寻找灰度图像的最佳阈值

P4=im2bw(P3,level);% 灰度图像二值化,全局阈值分割最大化类间方差

SE3=strel(‘square,1);% 构造边长为1正方形元素

P5=imopen(P4,SE3);% 以SE3作开运算

SE4=strel(‘disk,3);% 构造边长为3圆形元素

P6=imerode(P5,SE4); 形态学腐蚀运算,进一步去除粘连

figure,imshow(P6);% 显示图像P6

SE5=strel(‘disk,2);% 构造边长为2圆形元素

P7=imopen(P6,SE5);% 形态学开运算,去除影响计数的干扰颗粒

figure,imshow(P7);% 显示图像P7

[L,N]=bwlabel(P7);% 计算连通数,N即为目标个数

figure,imshow(RGB);% 显示原图像RGB

hold on

for k=1:N

[r,c] = find(L == k);

rbar = mean(r);

cbar = mean(c);

plot(cbar,rbar,marker,*,markeredgecolor,b,markersize,4);

end % 对话框显示目标物个数,通过坐标定点,标记点为“*”(蓝色,4号)

h=dialog(‘Name,目标个数,position,[500 500 200 70]);% 创建一个对话框窗口

uicontrol(‘Style,text,units,pixels,position,[45 40 120 20],……

‘fontsize,15,parent,h,string,num2str(N));% 创建文本,字体15号

uicontrol(‘units,pixels,position,[80 10 50 20],fontsize,10,……

‘parent,h,string,确定,callback,delete(gcf));% 创建【确定】按钮字体10号

2 结果与分析

2.1 程序代码执行情况

在执行上述代码后,共显示出6种图像,即原图(RGB图)、灰度图(见图1)、灰度图的开运算及腐蚀运算、二值化图、二值化图的开运算及腐蚀运算、计数点标记图(在RGB图上标记),同时弹出了目标个数的对话框,显示出计算结果为537(见图2),整个运算过程用了十几秒时间(运算速度与CPU、内存性能有关)。

2.2 谷粒粘连分离情况

据文献报道,图像直接二值化处理后作腐蚀运算会引进图像较大的变形[8],故本文采用两步开运算及腐蚀运算,即先在灰度图状态下进行一次开运算和腐蚀运算,再转换成二值化图像做一次开运算及腐蚀运算。由于灰度图包含的图像信息比二值图多,在运算处理后颗粒边缘处得到了更多的修整,中心与边缘处黑白对比更加鲜明,基本形态得以保留。二值化处理简化了图像信息,便于计数运算,它使图中较亮的区域转为纯白色,暗色区域变为纯黑色。由于前一步的开运算、腐蚀,使暗色面积增大,得到的二值化图像中颗粒变短。再进行第二次开运算和腐蚀后,颗粒更加“萎缩”,分离更加明显,适当的开运算又清除了细小的杂质,图像背景更加单一,利于计数。

2.3 图像标记与校正

bwlabel函数是以计算连通数来运算的,对图中粘连较大无法分割的点会识别成单个连通数,因此出现漏算的现象。通过运用FOR循环和坐标定位对计数点逐一进行标记“*”号,使未标注的颗粒点更容易被查找,此时可通过人工计数漏标点加以校正(图2圈中漏标1点,即真实值应为538)。

3 结论与讨论

3.1 结论

利用Matlab图像灰度处理、开运算、腐蚀、二值化处理、图像标记等可轻松实现水稻考种过程中的计数,此法不仅可消除绝大部分谷粒粘连,提高计数准确度,还可进行人工校正,使计数结果真实可靠。经多次考种验证,在800粒以内的计数(结合人工校正)可使准确率达99.5%~100.0%,极大地减轻了人的劳动强度,弥补了人视觉的不足。此算法也可应用于大豆、小麦等纯色种子颗粒的识别计数。

3.2 讨论

在谷粒粘连分离方法的探索上,学者们提出了不同的分割方法,主要包括基于数学形态学的分割算法,利用凹点进行分割和分水岭算法及其改进算法等,各种算法必须根据谷粒的形态设置适当的参数[9-10]。然而,在实际考种遇到的不同水稻品种粒型差异很大(短粒型粘连部分较少,易划清界线,而长粒型会出现粘连较多的情况,难以划清界线),针对不同大小的颗粒修整的程度也不尽相同,现有的分割算法还存在一定的局限性,无法完全消除粘连,运算值普遍小于谷粒数的真实值。

本试验采用黑色无反光(或反光性差)的薄铁板作为背景获取图像具有以下优点:1)薄铁板易于敲打形成振动,可使谷粒快速分散于板面之上;2)图像背景为黑色,无需再进行反色处理,保留了原来各颗粒点的亮度(以往的研究多在白色背景或LED灯平台上进行);3)在图像处理方面,由于是以自然光的反射光成像,每个颗粒的中间部位反光较亮,边缘处较暗,这样更利于开运算、腐蚀,划清谷粒的边界,并且不会对谷粒图像造成严重变形,所获得的二值化处理图像才比较理想。

对于个别粘连部分较大的谷粒,笔者认为无法通过现有报道图像处理技术来分离,加大分离的参数处理只会影响其他正常计数谷粒的形态。遇到在图像分割运算上难以突破的情形,粘连造成的误差可采用计数点标记结合人工校正处理。

参考文献:

[1] 宋忠华,张艳贵,宁金花.基于考种时间的水稻结实性状差异研究[J].种子,2014,33(7):30-33,39.

[2] 梁文东,蒋益敏.基于MATLAB的玉米果穗颗粒统计方法[J].江苏农业科学,2015,43(2):406-408.

[3] 周南,郭光靖,唐先亮,等.基于MATLAB的水稻种子几何特征提取的程序实现[J].安徽农学通报(上半月刊),2012,18(7):187-189.

[4] 王传宇,郭新宇,吴升.采用全景技术的机器视觉测量玉米果穗考种指标[J].农业工程学报,2013,29(24):155-162.

[5] 艾冬梅,李艳晴,张丽静,等.MATLAB与数学实验(第2版) [M].北京:机械工业出版社,2014.

[6] 贾鹏,李永奎,赵萍.基于Matlab图像处理的谷物颗粒计数方法研究[J].农机化研究,2009,31(1):152-153,156.

[7] 赵欣,贾晓剑.一种基于Matlab的谷物颗粒计数方法[J].河南科技学院学报(自然科学版),2017,(5):65-69

[8] 吳叔珍,姚青.基于凹点寻找标记的分水岭算法分割粘连谷粒[J].浙江农业科学,2017,58(8):1401-1405.

[9] 田孟祥,张时龙,何友勋,等.1种快速高效的水稻谷粒自动计数方法[J].江苏农业科学,2014,42(2):64-66.

[10] 段丽英,闫友平,赵英豪,等.颗粒图像识别及计数在粮种品质测定中的应用[J].石家庄学院学报,2011,13(3):51-55.

(责任编辑:丁志祥)