关于matlab程序的一个比较简单的问题
比较简单的一个问题,老师让我们自动识别图像里面石子的数量,然后我就上网查资料,有一个算法是先取背景,之后再将背景统一,然后二值化,但是由于图像不同,我的背景统一后成这样了...
比较简单的一个问题,老师让我们自动识别图像里面石子的数量,然后我就上网查资料,有一个算法是先取背景,之后再将背景统一,然后二值化,但是由于图像不同,我的背景统一后成这样了
于是我就想可以通过统计这个三维曲面峰的数量来统计石子的数量,但是不会啊。。。请问我该怎么做?
原图片和代码
I=imread(*1.png*);figure(1),imshow(I);background=imopen(I,strel(*disk*,15));imshow(background)figure,surf(double(background(1:8:end,1:8:end))),zlim([0,255])set(gca,*ydir*,*reverse*) 展开
于是我就想可以通过统计这个三维曲面峰的数量来统计石子的数量,但是不会啊。。。请问我该怎么做?
原图片和代码
I=imread(*1.png*);figure(1),imshow(I);background=imopen(I,strel(*disk*,15));imshow(background)figure,surf(double(background(1:8:end,1:8:end))),zlim([0,255])set(gca,*ydir*,*reverse*) 展开
2个回答
推荐于2016-01-31
展开全部
f=imread('e:\test\stone.png');
subplot(221),imshow(f),title('原始图像')
bw1=im2bw(f,graythresh(f));%二值化
subplot(222),imshow(bw1),title('二值图像')
h1=bwareaopen(bw1,20);%删除小面积杂点
subplot(223),imshow(h1),title('去除杂点后图像')
se=strel('disk',7);
h2=imerode(h1,se);%腐蚀
subplot(224),imshow(h2),title('腐蚀图像')
[L,n]=bwlabel(h2);%标记
fprintf('石头的数量为: %d\n',n); %检测到目标的数量,即为石头的数量
石头的数量为: 20
追问
这样解决了真的是谢谢大神,杂点好像直接就腐蚀掉了呢。。。
还有不知道大神能不能统计上面那张图的峰的个数呢,毕竟我也是自己思考了一番呢。。。如果可以的我会再加分的(不知道大神稀不稀罕。。。)如果不行的话就算了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询