【20】【图像处理】谷粒计数

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

clc;clear all;close all;set(0,'defaultfigurecolor','w')I=imread('123.png');x=rgb2gray(I);figure(1);subplot(3,2,1);imshow(I);title('原始图像');subplot(3,2,2);imshow(x);title('灰度图像'); thresh=graythresh(x);J1=imnoise(x,'gaussian',0,0.01);hood=3;K1=medfilt2(J1,[hood hood]);subplot(3,2,3);imshow(K1);title('高斯噪声的滤波效果');I2=im2bw(x,thresh);subplot(3,2,4);imshow(I2)title('二值图像');J=edge(I2,'canny');    K=imfill(J,'holes');  subplot(3,2,5);imshow(K);  SE=strel('disk',1);%用于膨胀腐蚀及开闭运算等操作的结构元素对象    L=imopen(K,SE);  %对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。subplot(3,2,6);imshow(L);  M=bwlabel(L,4);%联通域标记  [m,n]=size(M);  %矩阵M的大小 num=0;%谷物颗粒的个数   for i=1:m      for j=1:n          if M(i,j)>num%最大的label值即联通域的个数              num=M(i,j);          end      end  end  disp('谷物颗粒个数:');  disp(num);

 【20】【图像处理】谷粒计数

 

 

 

注:完整代码或者代写添加QQ1575304183

上一篇:MATLAB学习笔记(三)——绘图之二维曲线


下一篇:Python用matplotlib和subplot在同一窗口绘制多个动态刷新的子图