连通分量标记

Connected Component Labeling

在 OpenCV 3.0 中有一个名为 connectedComponent 的函数。

我知道它以二值图像和returns标签以及连通分量的数量作为输入,但内部使用的是什么算法?

您可以在众多来源中阅读有关连通分量标记算法的信息

OpenCV 实现是 here 并且包含这条线索:

 //Based on "Two Strategies to Speed up Connected Components Algorithms", 
 //the SAUF (Scan array union find) variant
 //using decision trees
 //Kesheng Wu, et al

Article

OpenCV 是开源的。你可以看看documentation and the source code.

您可以选择2 algorithms to perform connected component lablelling:

OpenCV >= 3.2 (CCL_DEFAULT) 中的默认值使用 Wu 算法进行 4 连接,使用 Grana 算法进行 8 连接。

在 OpenCV 3.0.0 中,您使用 Wu 的算法进行 4 和 8 连接, 而在 OpenCV >= 3.2 中,您可以根据字段选择 3 个选项之一connectivityccltype:

       \  connectivity   4    |   8
        \                     |
type     \                    |
                              |
CCL_DEFAULT              Wu   |  Grana
CCL_WU                   Wu   |  Wu
CCL_GRANA                Wu   |  Grana