@SergeySerge11

Как найти ВСЕ контуры на изображении?

Именно Все! Знаю, как заштриховать 1 контур, и получить массив вершин. Но не знаю оптимально, как все такие области пройти.
В openCV есть функция findContours() которая находит все контуры(список массивов вершин), хотелось бы знать алгоритм или базовые принципы ее релизации.
Научился и разобрался в в несколько алгоритмах. К примеру выделения границ, вычисление значения градиента яркости Операторы Собеля. Закрашивания области. А так же Выделение Контура. НО! Только Одного, первую точку которого нашел. А как другие там чуть ли не O(n*n*n) сложность что придумать смог.
В любом обработанном изображении много контуров, плюс каждый контур, делятся на внешний и внутренний( линия границы градиента как правило толщиной в 2-3 пикселя).Отсюда появл. лишний внутренний контур. А как их всех пройти .
image-visualizing-simple-example-of-contour-detection-768x2811-1.jpg
Вот к примеру 3 контура. Допустим 1. Я нашел, а как к другим перейти, кажется что должно легко, но придумать не могу.
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Сначала какие-то алгоритмы машинного зрения (что-то связанное с контрастом и градиентами цветов, тут я не специалист) находят точки, которые являются границами. Дальше по ним можно построить граф (соседние точки соеденены ребром). Потом в графе надо выделить все области и внешние будут контурами объектов. Алгоритм выделения областей хорошо описан тут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы