matlab实现blob代码_通过MatLab计算Blob的数量

在尝试使用MatLab进行图像处理实验时,遇到计算和边界检测Blob(图像中的对象)的问题。代码中通过bwboundaries和bwconncomp函数尝试计数,但效果不稳定。主要问题在于对二值图像进行了反转,导致实际上是计算背景而非前景的连通组件。解决方案是不反转图像,使用bwconncomp直接计数,并通过regionprops或形态学操作过滤掉小的噪声Blob。
摘要由CSDN通过智能技术生成

I am trying to experiment how MatLab image processing methods work when I came across this problem. Please refer to the 2 images below The images are actually the sides of books:

The image on the right shows a failed effort to bound and count the number of object. The code is as follows:

BW2=~BW2;

imshow(BW2)

B = bwboundaries(BW2);

imshow(BW2)

text(10,10,strcat('\color{green}Objects Found:',num2str(length(B))))

hold on

for k = 1:length(B)

boundary = B{k};

plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2)

end

But as you can see, it doesn't work all the time. Only approximately half the time then it will work. Do anybody know how I can improve the counting? or is there another method to count blobs from an image like that?

I did this successfully using OpenCV cvBlob library before. But when it comes to MatLab, I am a greenhorn, hence hope somebody can assist me on this. Thanks.

解决方案

First of all, if you only need to know the number of blobs, and you do not need their boundary pixels, then bwboundaries is an overkill. Instead, you can use bwconncomp, which will just find and label the blobs.

Second, it seems that the biggest problem here is that you are inverting the mask. So you are actually trying to find connected components in the background, instead of in the foreground. You are counting empty spaces between the books, instead of the books themselves. So don't do BW2=~BW2;

Finally, there are may be blobs in the image that are caused by noise, and not books. So you need to either reject blobs that are too small, or do some preprocessing on the mask before hand. For example, you can try morphological opening to get rid of small isolated clumps of foreground pixels.

P.S. Also please take a look at the regionprops function. You may find it useful.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值