Какой самый надежный способ обнаружения отражения света от объекта - PullRequest
1 голос
/ 04 мая 2019

Задача, над которой я работаю, требует анализа отражения линейной лампы от объекта.В некоторых случаях присутствует другой источник света (непреднамеренно), и я хотел бы замаскировать только отражение лампы.

Я пытался замаскировать линии следующим образом:

cimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blurred = cv2.medianBlur(cimg, 5)
thresh = cv2.threshold(blurred, 210, 255, cv2.THRESH_BINARY)[1]

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

Пример желаемого результата:

enter image description here enter image description here

Примерплохого результата:

enter image description here enter image description here

Кто-нибудь знает, как можно замаскировать такие отражения света?

Спасибо!

1 Ответ

1 голос
/ 05 мая 2019

Преобразование top-hat является наиболее подходящим инструментом для выделения таких линий из градиента фона.

Цилиндр - это фильтр из математической морфологии. Он определяется как разница между изображением и его открытием.

Например, из вашего второго изображения я получаю:

isolated line

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

Обратите внимание, что входное изображение имело некоторые существенные артефакты сжатия JPEG, которые влияют на результат, который вы видите здесь. Вывод будет намного лучше с лучшим входным качеством изображения.

...