В OpenCV 3.0 есть функция под названием connectedComponent.
Я знаю, что он принимает в качестве входных данных двоичное изображение и возвращает метки и количество подключенных компонентов, но какой алгоритм используется внутри?
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
Вы можете прочитать об алгоритмах маркировки подключенных компонентов в многочисленных источниках
Реализация 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