大津阈值法
你们那个 FIGURE3 做的很好,做的比我好,你们可以用那幅图继续修改!加油!
以下是我做的,仅供参考哦!
1.首先你们的图我觉得有些暗,所以先调亮一些,可以用 imadjust 语句,如:
im2=imadjust(i,[.3 .3 0;.7 .7 1],[]);
可以参考一下地址,自己进行修改。
http://baike.baidu.com/view/5769825.htm
2.然后进行灰度图转化,可以看出区别。(左边是直接转化,右边是调亮后转化)
3.之后转化为灰度图
im1=rgb2gray(im2);
level=graythresh(im1);
BW=im2bw(im1,level);
4.可以看出很多细胞没有闭合,所以可以使用膨胀和腐蚀,为的是尽可能使细胞
闭合,方便进一步计数。
se=strel('line',1,90);
se1=strel('line',1,0);
BW1=imdilate(BW,se);
BW2=imerode(BW1,se1);
关于se=strel()的含义,一定要上网好好查查,老师也许会问到为什么选这个算
子。
http://blog.sina.com.cn/s/blog_877232310100tdv3.html
自己再去查查更多的资料。
5.去掉一些小的面积
BW3=bwareaopen(BW2,90);
BW3=~BW3;
BW4=bwareaopen(BW3,50);
BW4=~BW4;
相当于从黑白两色一起去掉小面积单位,效果还是不错的。
http://baike.baidu.com/view/9216142.htm
简单来说就是自己定一个面积大小,然后小于这个面积全部忽略掉。
最后效果还不错。
6.然后计算数量。
k=bwlabel(~BW4);
a=max(max(k));
ans
=243
如果我没记错,边缘检测是监测白色的对象,所以是对“~BW4”检测而不是对“BW4”
检测。
7.可以与原图相乘,清楚的展示你们分割出来了:
BW5=i;
for i=1:3; BW5(:,:,i)=BW5(:,:,i).*uint8(~BW4);
end
imshow(BW5);