Маркировка подключенных компонентов в C ++ - PullRequest
4 голосов
/ 29 января 2010

Мне нужно использовать алгоритм маркировки подключенного компонента на изображении в приложении C ++. Я могу реализовать это сам, но я пытался использовать реализацию Boost's union-find / disjoint множеств , поскольку она упоминалась в статье union-find wiki.

Я не могу понять, как создать объект disjoint_sets, чтобы он работал с имеющимися у меня данными изображения (шорты без знака). Что мне не хватает? Примеры в документации Boost не имеют никакого смысла для меня. Нужны ли мне все дополнительные графические помехи в тех примерах, когда у меня есть изображение? ИЛИ, уже есть реализация маркировки компонентов, связанных с OpenCV. В настоящее время мы используем OpenCV 1.1pre1 и Boost 1.37.

Ответы [ 4 ]

3 голосов
/ 29 января 2010

Удивительно, но в OpenCV нет CCL. Тем не менее, есть обходной путь, который описан в справочном руководстве. См. пример для cvDrawContours . Когда я пытался его использовать, у меня было странное поведение в первых и последних строках и столбцах изображения, но я, вероятно, сделал что-то не так.

Альтернативный способ - использовать библиотеку cvBlobs .

1 голос
/ 06 июля 2012

Другой возможностью является использование исходных кодов, предоставленных Али Рахими, и вы можете взглянуть на this .

1 голос
/ 19 марта 2010

В итоге мы написали алгоритмы для CCL и Union-Find, используя описания, найденные в Википедии и других местах. Это казалось проще и быстрее, чем добавление другой библиотеки в наше приложение только для этой цели.

0 голосов
/ 13 марта 2011

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

...