图像处理课程上老师布置的任务,要求求出图片rice.png中米粒的个数及其各米粒的大小。
本来开始的时候我们不是很会做,就去百度或者去博客园上面查找别人的代码,发现都很长。少则三四十行,多则五六十行。一下看懂太过困难,最后老师讲解了一下,这是最终版本,不超过10行就搞定了。PS:我在CSDN上面看到别的版本是69粒,是因为它去掉了边缘部分。
I=imread('rice.png');
BG=imopen(I,strel('disk',15));
%对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。
% imshow(BG);
I2=imsubtract(I,BG);
% imshow(I2);
%????????
level=graythresh(I2);
bw2=im2bw(I2,level);
imshow(bw2);
[labeled,numObjects]=bwlabel(bw2,8);
max(max(labeled))
输出结果为99,故一共有99粒米