C ++中的连通组件标签

时间:2010-01-28 23:51:34

标签: c++ boost opencv graph-theory computer-vision

我需要在C ++应用程序中的图像上使用connected component labeling算法。我可以自己实现,但我试图使用Boost的union-find/disjoint sets实现,因为它在union-find wiki文章中提到过。

我无法弄清楚如何创建disjoint_sets对象,以便它可以处理我拥有的图像数据(unsigned shorts)。我错过了什么? Boost文档中的示例对我没有任何意义。当我有图像时,我是否需要在这些示例中使用所有额外的图形mumbo-jumbo?或者,是否已经有一个OpenCV连接组件标签实现。目前我们正在使用OpenCV 1.1pre1和Boost 1.37。

4 个答案:

答案 0 :(得分:3)

令人惊讶的是,OpenCV中没有CCL。但是,参考手册中描述了一种解决方法。见the example for cvDrawContours。当我尝试使用它时,我在图像的第一行和最后一行和列上有一些奇怪的行为,但我可能做错了。

另一种方法是使用cvBlobs库。

答案 1 :(得分:1)

我们最终使用维基百科和其他地方的描述编写了CCL和Union的算法。为此目的,为我们的应用程序添加另一个库似乎更容易,更快。

答案 2 :(得分:1)

另一种可能性是使用Ali Rahimi提供的源代码,您可以查看this

答案 3 :(得分:0)

我能够使用boost库的 disjoint_sets 进行连接组件标记。 但是为了测试,我试图创建一个像素强度的图像,其值与其标签相同。 这导致problem,我还没有能够处理。看看thread