У меня есть изображение, содержащее результаты сегментации, как этот.
Мне нужно построить график окрестностей патчей, раскрашенных в разные цвета.
В результате я хотел бы структуру, представляющую следующее
Здесь числа представляют отдельные участки, а линии представляют окрестности участков.
В настоящее время я не могу понять, с чего начать, какие ключевые слова для Google.
Кто-нибудь может предложить что-нибудь полезное?
Изображение хранится в классе OpenCV cv :: Mat, а для графика я планирую использовать библиотеку Boost.Graph.
Поэтому, пожалуйста, дайте мне несколько ссылок на примеры кода и алгоритмы или ключевые слова.
Благодарю.
Обновить.
После перерыва на кофе и некоторых дискуссий мне пришло в голову следующее.
Другая моя проблема в том, что я не знаком с BGL (но книга уже в пути :)).
Итак, что вы думаете об этом решении?
Update2
Возможно, это ссылка на сайт может помочь.
Однако решение до сих пор не найдено.
Вы можете решить это так:
Определите регионы (ваши цифры на графике)
.
Сделать ссылки между регионами
Хотя я должен признать, что ничего не знаю об этой теме … просто моя простая идея ..
Вы могли бы использовать BFS отмечать регионы.
Чтобы выставить cv :: Mat в BGL, вы должны написать много кода. Я думаю, что написание ваших собственных bfs намного проще.
Чем ты за каждых двух негров пишешь свои оценки std::set<std::pair<mark_t, mark_t>>
,
И чем построить график из этого.
Я думаю, что если ваши цветовые пятна случайны, вам, вероятно, понадобится алгоритм грубой силы, чтобы делать то, что вы хотите. Идея может быть:
2^N
например 1, 2, 4, 8, …Это работает, потому что каждая разница между количеством патчей уникальна. Например, если в B вы получите цифры 3, 6, 7, это будет означать, что между патчами (4,1), (8,2) и (8,1) есть контакты. Значение 0, разумеется, означает, что в одном патче есть два пикселя рядом друг с другом, поэтому вы просто игнорируете их.