1

这个问答网站的一些人建议我使用 findContour 来模仿 Matlab 中的 bwlabel。但我不确定,因为我认为轮廓是检测到的边缘的闭合形状,而 bwlabel 中的元素是连接形状。我猜他们可能在逻辑上是一样的。他们在实践中呢?他们真的一样吗?

4

3 回答 3

1

bwlabel将为您提供图像连接组件,即背景中不同连接对象的不同标签。

可能您的意思是im2bwimcontours提供的组合,即二值化图像和在输出上轻松找到每个保留对象的单个轮廓(边界)的组合。

考虑以下示例:

I = imread('coins.png'); % grayscale
level = graythresh(I); % find thershold
BW = im2bw(I, level); % threshold image
imcontour(BW, 1); % plot single contour 

在此处输入图像描述

对于灰度图像,您可以增加请求轮廓的数量,尽管findContours 对二进制图像进行操作。

于 2012-09-21T23:50:32.480 回答
1

使用这两个库中的任何一个.... cvBlobslibcvblob ...您将获得有关连接组件的许多功能,例如大小和轮廓以及椭圆度和边界框...您可以过滤 blob 并添加 2 个或更多 blob。 ..尝试一下..在 bwlabel 的底层算法是一个两次扫描连接的组件,其中 cvblob 或 cvBlobslib 是一个一次扫描算法...

于 2012-09-22T02:13:53.527 回答
0

我找到了一篇关于这个的确切文章。快速回答是“是的,它们的最终输出将是相同的。” 所以我可能会选择 findContour,毕竟 cvBlob 仍然使用旧的 C 风格的 API 并且有自己的寻找轮廓的实现。

于 2012-09-22T15:56:40.960 回答