⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yyf004.m

📁 对MATLAB7.0中的示例RICE.PNG图象进行米粒自动记数,输出米粒个数.其中包括中值滤波和腐蚀算法.
💻 M
字号:
i=imread('rice.png');
imwrite(i,'c:\rice.bmp');
subplot(231);
imshow(i);
i1=im2bw(i,0.5);
subplot(232);
imshow(i1);
subplot(233);
imhist(i);
i2=im2bw(i,116/256);
subplot(234);
imshow(i2);
s=size(i2);
x=s(1);
y=s(2);
for i=1:x;
    for j=1:y-3
        a1=i2(i,j);
        a2=i2(i,j+1);
        a3=i2(i,j+2);
        if (a1==0&&a2==1&&a3==0)
            i2(i,j+1)=0;
        end  
    end
end
for j=1:y;
    for i=1:x-3
        a1=i2(i,j);
        a2=i2(i+1,j);
        a3=i2(i+2,j);
        if (a1==0&&a2==1&&a3==0)
            i2(i+1,j)=0;
        end  
    end
end
for i=1:x;
    for j=1:y-4
        a1=i2(i,j);
        a2=i2(i,j+1);
        a3=i2(i,j+2);
        a4=i2(i,j+3);
        if (a1==0&&a2==1&&a3==1&&a4==0)
            i2(i,j+1)=0;
            i2(i,j+2)=0;
        end  
    end
end
for j=1:y;
    for i=1:x-4
        a1=i2(i,j);
        a2=i2(i+1,j);
        a3=i2(i+2,j);
        a4=i2(i+3,j);
        if (a1==0&&a2==1&&a3==1&&a4==0)
            i2(i+1,j)=0;
            i2(i+2,j)=0;
        end  
    end
end
%
for i=1:x;
    for j=1:y-5
        a1=i2(i,j);
        a2=i2(i,j+1);
        a3=i2(i,j+2);
        a4=i2(i,j+3);
        a5=i2(i,j+4);
        if (a1==0&&a2==1&&a3==1&&a4==1&&a5==0)
            i2(i,j+1)=0;
            i2(i,j+2)=0;
            i2(i,j+3)=0;
        end  
    end
end
for j=1:y;
    for i=1:x-5
        a1=i2(i,j);
        a2=i2(i+1,j);
        a3=i2(i+2,j);
        a4=i2(i+3,j);
        a5=i2(i+4,j);
        if (a1==0&&a2==1&&a3==1&&a4==1&&a5==0)
            i2(i+1,j)=0;
            i2(i+2,j)=0;
            i2(i+3,j)=0;
        end  
    end
end
%
for i=1:x;
    for j=1:y-3
        a1=i2(i,j);
        a2=i2(i,j+1);
        a3=i2(i,j+2);
        if (a1==0&&a2==1&&a3==0)
            i2(i,j+1)=0;
        end  
    end
end
for j=1:y;
    for i=1:x-3
        a1=i2(i,j);
        a2=i2(i+1,j);
        a3=i2(i+2,j);
        if (a1==0&&a2==1&&a3==0)
            i2(i+1,j)=0;
        end  
    end
end


%i2=medfilt2(i2);
subplot(235);
imshow(i2);


[l,num]=bwlabel(i2);
count=0;
for i=1:x
    for j=1:y
        if(i2(i,j)==1)
            count=count+1;
        end
    end
end
avr=count/num;
num1=num;
for k=1:num
    cnum=0;
for i=1:x
    for j=1:y
        if(l(i,j)==k)
            cnum=cnum+1;
        end
    end
end
    if(cnum>1.8*avr)
        num1=num1+1;
    end
end



        

            
            
    


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -