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