Маркировка подключенного компонента

В OpenCV 3.0 есть функция под названием connectedComponent.

Я знаю, что он принимает в качестве входных данных двоичное изображение и возвращает метки и количество подключенных компонентов, но какой алгоритм используется внутри?

1

Решение

OpenCV является открытым исходным кодом. Вы можете посмотреть на документация и исходный код.

Ты можешь выбрать 2 алгоритма выполнять соединительный компонент:

По умолчанию в OpenCV> = 3.2 (CCL_DEFAULT) использует алгоритм Ву для 4-связности и алгоритм Граны для 8-связности.

В OpenCV 3.0.0 вы используете алгоритм Ву для подключения 4 и 8, в то время как в OpenCV> = 3.2 вы можете выбрать один из 3 вариантов, в зависимости от полей connectivity а также ccltype:

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

Другие решения

Вы можете прочитать об алгоритмах маркировки подключенных компонентов в многочисленных источниках

Реализация OpenCV Вот и содержит эту подсказку:

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

Статья

1