数字图像处理理工论文谷物计数含自编程序.docx
《数字图像处理理工论文谷物计数含自编程序.docx》由会员分享,可在线阅读,更多相关《数字图像处理理工论文谷物计数含自编程序.docx(7页珍藏版)》请在冰豆网上搜索。
数字图像处理理工论文谷物计数含自编程序
数字图像处理
基于MATLAB的谷物计数的实现
学院:
光电工程学院
姓名:
学号:
0802116-
基于MATLAB的谷物计数的实现
摘要:
针对目前谷物人工计数和光电计数方法存在的不足,提出了一种基于Matlab图像识别和处理技术的谷物计数方法,并用实例验证了其可靠性。
该方法减轻了操作者劳动强度,弥补了人视觉的不足之处,提高了效率及准确率,为今后进一步研究奠定了必要的理论与实践基础,对完善精细农业具有重要意义。
在检测盘上的颗粒往往会出现紧靠或者重叠的谷物,导致检测图像中常出现重叠区域,这给后续谷物检测分析等工作带来了很大的困难,本文利用极限腐蚀和条件膨胀相结合的方法解决此问题,以达到精确计数的目的。
关键词:
图像处理,谷物,计数方法,Matlab。
引言:
谷物作为主要粮食和饲料作物,在农业生产中占有重要地位。
提高谷物产量和质量的主要方法是选育出优质品种,而在选育品种过程中,对种子的计数是不可缺少的内容。
目前,种子的计数方法通常采用人工计数,或半自动的光电计数器,很显然传统的计数方法存在着效率低、准确性不高等缺点。
我们计算机图像识别和处理技术实现考种过程中的计数,为谷物粒群的识别、精选、分级等的进一步研究奠定必要的理论与实践基础,并为育种工作提供一种高效、快捷的谷物计数新技术。
1、谷物(大米)图像的获取
这里我们选用的谷物是大米。
获取图像方式有两个——一是使
用手机,二是使用数码相机。
一开始我们通过手机拍摄来获取图像,如(图一)。
然后对图像进行剪切(图二)。
从图二里可以看出,图片被剪切后其所得效果并不好,图片清晰度很低。
——>使用手机拍摄,所得图像,其清晰度不漂亮。
图一 图二
然后我们又尝试了第二种方法,用数码相机获得图像。
如下图
所示,这是我们用1000万像素数码相机所拍的的谷物(此处以瓜子替代)相片。
通过相片,我们可以看到谷物颗粒很清楚,无明显的模糊现象。
两种途径相对比,我们最终选择用数码相机获得图像这一方式。
其图像如(图三)。
这个图像谷物颗粒有连接情况,这比较符合实际,故该图片仿真度亦比较高。
图三A(实验所用图像)
2、基于Matlab的谷物图像处理
2.1 谷物图像的读入
Matlab软件中,图像的读入命令是imread(‘xx.xxx’),xx是图像的名字,xxx是图像的格式。
本实验中,图像的格式为jpg,故,我们的读入命令为I=imread(‘A.jpg’)。
读入的图像显示(imshow(I))后
2.2 谷物图像的处理
2.2.1 谷物图像的灰度化处理
灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。
当处理单设(灰度)图像时,这两个术语可以互换。
由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:
s=T(r)
其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
灰度处理的命令如下:
g=rgb2gray(I)。
该指令主要作用是将jpg图片转为灰度图像。
效果如下。
2.2.2 灰度图像中值滤波
在获取图像的过程中,由于受到各种因素的影响,所得到的图像总会或多或少的感染一些噪声信息,这些噪声信息会恶化图像的质量,所以要进行去噪处理。
去噪的方法有很多,大致分为两大类:
一类是时域去噪,另一类是频域去噪。
时域去噪的代表方法有加权平滑法、中值滤波、二值形态学法等;频域去噪的代表方法有经典数字滤波器、同态滤波、小波分析等。
本文采用时域去噪中的中值滤波法,其具有抑制干扰脉冲和点状噪声的作用,并且可保持较好的图像边缘,是指把以某点为中心的小窗口内的所有像素的灰度按从小到大的顺序排列,将中间值作为该处的灰度值。
在Matlab中中值滤波的函数是medfilt2。
中值滤波命令如下:
m=medfilt2(g);%%灰度图像中值滤波。
滤波后得到的图像如下图。
2.2.3 灰度图像二值化
二值化图像函数主要有dither和im2bw函数。
dither函数通过颜色抖动来达到转换图像的目的。
语法:
BW=dither(I)。
Image是图像矩阵资料,BW是二值化图像矩阵。
im2bw函数通过对灰度值进行阈值判断的方法达到目的。
语法:
BinaryImage=im2bw(Image,[Level])。
Image是输入图像矩阵资料,Level是二值化程度值,其为介于0到1之间值,BW是二值化图像矩阵。
灰度图像二值化命令如下:
level=graythresh(m); %得到合适阈值
e=im2bw(m,level); %二值化
得到的图像结果如下。
2.2.4 灰度图像取反
为了更好的读取图像、腐蚀,我们选择对灰度图像进行取反。
取反命令如下:
bw=-e+1 %%取反。
得到的图像如下。
2.2.5 去噪声处理+腐蚀处理
由于大米粒之间有连接情况出现,我们为了更好更准确的辨识出大米粒数,采用了去噪+腐蚀的方式。
实践证明,这种途径是相当有效、可行的。
去噪+腐蚀命令如下。
se=strel('disk',4);
LC=imClose(bw,se);
se1=strel('disk',4); %%去噪处理
Lo=imopen(LC,se1);
BW8=bwmorph(Lo,'open'); %%开运算
SE=strel('arbitrary',eye(18)); %%设置腐蚀结构参数
BW=imerode(BW8,SE); %%腐蚀
SE1=strel('arbitrary',eye(46));%%设置腐蚀结构参数
BW0=imerode(BW,SE1); %%腐蚀
[l,n]=bwlabel(BW0,8);
display(n) %%计数
第一次腐蚀结果 第二次腐蚀结果
程序执行后我们获得n=20 ,而原米粒数就是二十——>这说明我们的程序成功了,对其他图片进行腐蚀,结果仍成功(cheers)。
2.2.6 显示所有图片
为了方便观察,我们将处理中各部分得到的图像以流程形式展现出来。
命令如下。
figure;
subplot(1,6,1);imshow(I);title('原图像');
subplot(1,6,2);imshow(g);title('灰度图像');
subplot(1,6,3);imshow(e);title('二值图像');
subplot(1,6,4);imshow(bw);title('图像取反');
subplot(1,6,5);imshow(BW8);title('开运算');
subplot(1,6,6);imshow(BW);title('腐蚀图像');
figure;imshow(BW0);title('腐蚀图像2');
所得图像如下(额、图片有点大啊):
3、结果与讨论
通过以上实验,我们可以发现,使用Matlab处理图片可以得到谷物颗粒的数目,当然了,前提是做出程序。
我们实验的结果显示,此程序辨识谷物颗粒(包括叠压下的情况),其准确度100%。
像其他的程序,可能能够解决谷物计数问题,但在叠压下的情况其却处理不了(我们的能处理)。
故,我们的程序是更棒的。
参考资料:
【1】(美)冈萨雷斯.数字图像处理(第二版).2007
【2】(英)尼克松.阿瓜多.特征提取与图像处理(第二版).2010
【3】张德丰.MATLAB数字图像处理.2009
【4】徐勇.张大鹏.杨建.模式识别中的核方法及其应用.2010
【5】陈超.MATLAB应用实例精讲——图像处理与GUI设计篇.2011
【6】杨高波.杜青松.MATLAB图像/视频处理应用及实例
【7】余成波.数字图像处理及MATLAB实现.2003
【8】张强.王正林.精通MATLAB图像处理.2009