clear; clc;
% 读取图片rice.png
I=imread(‘rice.png’);
% 获取图片的背景
BG=imopen(I,strel(‘disk’,15));
%得到背景均匀的图片
I2=imsubtract(I,BG);
%得到二值化的图片
level=graythresh(I2);
BW=im2bw(I2,level);
% labeled是处理后的矩阵,numObjects是米粒的个数;
[labeled,numObjects]=bwlabel(BW,8);
% 取一个空矩阵A,用来存放每个米粒占用的像素点数目;
[m,n]=size(labeled);
A=zeros(numObjects,1);
% 该循环用来统计每个米粒的大小,例如,第 i 个米粒的大小,储存在A(i)中;
for x=1:numObjects
for i=1:m
for j=1:n
if labeled(i,j)==x
A(x)=A(x)+1;
end
end
end
end