连通分量标记
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
OpenCV 是开源的。你可以看看documentation and the source code.
您可以选择2 algorithms to perform connected component lablelling:
CCL_WU:基于
CCL_GRANA:基于
"Optimized Block-based Connected Components Labeling with Decision Trees", Costantino Grana et al
这仅适用于 8 个连接的组件。
OpenCV >= 3.2 (CCL_DEFAULT
) 中的默认值使用 Wu 算法进行 4 连接,使用 Grana 算法进行 8 连接。
在 OpenCV 3.0.0 中,您使用 Wu 的算法进行 4 和 8 连接, 而在 OpenCV >= 3.2 中,您可以根据字段选择 3 个选项之一connectivity
和 ccltype
:
\ connectivity 4 | 8
\ |
type \ |
|
CCL_DEFAULT Wu | Grana
CCL_WU Wu | Wu
CCL_GRANA Wu | Grana
在 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
OpenCV 是开源的。你可以看看documentation and the source code.
您可以选择2 algorithms to perform connected component lablelling:
CCL_WU:基于
CCL_GRANA:基于
"Optimized Block-based Connected Components Labeling with Decision Trees", Costantino Grana et al
这仅适用于 8 个连接的组件。
OpenCV >= 3.2 (CCL_DEFAULT
) 中的默认值使用 Wu 算法进行 4 连接,使用 Grana 算法进行 8 连接。
在 OpenCV 3.0.0 中,您使用 Wu 的算法进行 4 和 8 连接, 而在 OpenCV >= 3.2 中,您可以根据字段选择 3 个选项之一connectivity
和 ccltype
:
\ connectivity 4 | 8
\ |
type \ |
|
CCL_DEFAULT Wu | Grana
CCL_WU Wu | Wu
CCL_GRANA Wu | Grana