Как закрыть большие пробелы в реальных изображениях? - PullRequest
0 голосов
/ 06 февраля 2019

Предположим, у меня есть изображение реального объекта, например, это:

enter image description here

Использование двусторонней фильтрации и обнаружения канни-края дает:

/home/camilotalero/Desktop/CounterTopExperiment/image_screenshot_05.02.2019.png

Существует высокая вероятность неправильного определения определенных участков кромки

enter image description here

Даже без двусторонней фильтрации:

enter image description here

Мне нужно увеличить вероятность обнаружения этих видов ребер.Время не проблема.

Я пробовал определенные эффекты повышения резкости изображения, но ни один из них, по-видимому, не оказывал влияния на повышение вероятности обнаружения этого края.

Редактировать:

Я пытаюсь это сделатьтолько для внутренних изображений и только для больших плоских поверхностей.Я также не пытаюсь получить что-то идеальное, я просто хочу сверх предсказание, которое содержит границу с некоторой высокой вероятностью успеха (80% +)

В указанном примере и в других случаях, которые я пробовал, проблемапроисходит в основном из-за отсутствия резкости на переходах между пограничными областями.

Редактировать 2:

Извлечение каждого канала и добавление результата canny для каждого из красного, синего, зеленого приводит к закрытомуформа.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

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

Параметры позволят вам настроить то, что вы хотите определить как линию, а что нет.В вашем случае обнаружить стол будет довольно легко.Некоторое морфологическое открытие могло бы помочь, если у него есть проблемы из-за мраморного образца, но я сомневаюсь в этом.

Вот учебник / некоторая информация от OpenCV

РЕДАКТИРОВАТЬ:

Если вы хотите получить закрытый прямоугольник, вы можете сделать этопреобразование самостоятельно.В труднодоступном месте будет четыре очень плотных региона.Два из них будут иметь одинаковую ось r или тета.Вот так можно обнаружить не только линии, но и прямоугольники в пространстве.Преобразование этих четырех точек назад приведет к четырем линиям, образующим прямоугольник (на этом рисунке наиболее вероятно таблица).Может быть, уже есть детектор прямоугольника OpenCv.Не проверено.

0 голосов
/ 29 марта 2019

Очень эффективный способ улучшить обнаружение края - запустить canny на каждом отдельном канале (RGB), а затем сложить изображения, используя addWeighted (), вместо того, чтобы запускать обнаружение для серого масштабированного изображения.Преобразование изображения в разные цветовые пространства и повторение этого процесса также улучшают его.

0 голосов
/ 06 февраля 2019

В этом примере край исчезает близко к верхнему левому углу, потому что контраст становится очень низким из-за более светлого фона.Это практически невозможно восстановить без предварительной информации о форме.На самом деле, возможно, что истинные края следуют за белой вертикальной областью, а не за мраморным столом, как это происходит на нефильтрованном изображении.Мы, люди, можем различать благодаря цвету / текстуре по обе стороны от края, но Кэнни далек от такой производительности.

Возможно, вы попробуете сегментацию изображения и сегментацию текстуры, хотя последнее нелегкодоступно в OpenCV.Помните, что вы решаете трудную проблему.

...