Извлеките каждый объект после обнаружения края с помощью фильтра Собеля

Обнаружение Sobel Edge:
Обнаружение Sobel Edge

Исходное изображение:
Исходное изображение

Я использовал метод обнаружения краев Собеля, чтобы определить границы каждого объекта на данном изображении. Как я могу извлечь объекты в исходном изображении, используя эти границы. Мы можем игнорировать объекты с меньшим количеством пикселей.


person vishnu    schedule 17.10.2016    source источник
comment
Это тяжело. Лучше всего попытаться найти прямоугольники, которые подходят к краям, или что-то в этом роде. Кроме того, мне лично больше нравится Canny, вы можете попробовать его   -  person Ander Biguri    schedule 17.10.2016
comment
Возможный дубликат сегментации изображения на основе краевой пиксельной карты   -  person Shai    schedule 17.10.2016
comment
Использование Sobel не будет достаточным для вашей проблемы. См. ответ от Ива Дауста.   -  person FiReTiTi    schedule 18.10.2016


Ответы (2)


То, что вам нужно, называется сегментацией изображения. Ваш случай выглядит особенно сложным из-за низкого контраста между элементами мебели, фактуры и теней.

Вы также поймете, что вам нужно определить то, что вы называете «объектом», и вы поймете, что практически невозможно изолировать предметы мебели в этой сцене.

Еще одна плохая новость: ни Собел, ни Кэнни не смогут решить эту проблему, так как истинные края будут местами прерывистыми, и будет много ложных срабатываний.

На мой взгляд, нынешнее состояние техники не позволяет решить вашу проблему.

person Yves Daoust    schedule 17.10.2016

Что

Вы хотите использовать cv2.findContours() с включенной иерархией. Попробуйте retr_ccomp.

Почему

Это попытается найти области, которые можно заполнить. Или, точнее, отверстия в замкнутых контурах. Так как фильтр Собеля возвратил мягкие края, мы хотим обнаружить замкнутые контуры среди мягких краев, которые будут просто самими краями. Отверстия — это объекты.

Как

Вы получите как contours, список точек, так и hierarchy, список кортежей. Если иерархия[i][3] положительна, то у контуров[i] есть родитель и, следовательно, это дыра, поскольку ccomp допускает только 2 уровня.

Я должен отметить, что мы работаем над проблемой сегментации изображений уже 50 лет, и ни у кого нет отличного решения. Вы обнаружите, что этот подход часто ненадежен для произвольных сцен.

person Jacob Panikulam    schedule 17.10.2016