Перейти к содержимому
Compvision.ru
fedor_malashin

Поиск стекла на фотографии

Recommended Posts

Добрый день!

Я - практически новичок в OpenCV, хотя в математике разбираюсь неплохо. Столкнулся с задачей: нужно найти на фотографии стекло (фотография прилагается) и определить координаты четырех его углов. Фотография сделана при, скорее всего, неправильном освещении. Пробовал сделать это через поиск линий HoughLines, а так же через углы методом Харриса. Ни в первом, ни во втором случаях не удалось подобрать правильные параметры для поиска (пороговые значения, углы). Существуют ли типичные методы для подобных задач, или же для каждой задачи требуется свой подход? Не хотелось бы изобретать велосипед :)

 

Спасибо.

image.thumb.png.a972f0511e94183666bcbbb46f4539b2.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Стенд всегда такой, освещение? Короче, среда управляемая нами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Фото выглядит так, будто искать надо прямоугольник, а не стекло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Smorodov сказал:

Стенд всегда такой, освещение? Короче, среда управляемая нами?

Среда полностью управляемая, сейчас заказываются светильники, но как их расположить, пока непонятно. Стенд тестовый, в реальности стёкла подаются из ящика. 

9 часов назад, erly сказал:

Фото выглядит так, будто искать надо прямоугольник, а не стекло.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока что лучшее, что я нашел, выглядит так. Сначала я применил маску размером с некий прямоугольник (область, в которой точно будет стоять ящик). Затем с помощью функции

threshold 

отсеял множество маленьких линий, оставив большие.

image.thumb.png.09ffe7a1f13654c1a7c4f06e10f4f5b1.png

Ну а потом с помощью 

HoughLinesP

, играя с параметрами, нарисовал наиболее подходящие линии. 

image.thumb.png.bb20348ddcf47b3227166784b8183bcc.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за ответ. Думал насчет наложения. Дело в том, что в этом цеху большие окна, соответственно, сильно меняется освещение в зависимости от времени суток. Это сильно скажется на результате? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если провести бинаризацию, может и не сильно, надо пробовать. 

У меня этот метод давал неплохой результат: https://stackoverflow.com/questions/22122309/opencv-adaptive-threshold-ocr/22127181#22127181

Еще думается если найти фазовый сдвиг, то он тоже даст границу стекла.

Можно после бинаризации наложить изображения по И темные линии станут толще, затем инверсия, эрозия, и найти convex hull.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я бы больше внимания уделил именно освещению, что бы отделить стекло от фона. Как вариант можно поставить сверху/снизу длинный узкий прожектор которые светит строго вертикально и цвет его должен быть отличным от фона (зеленый). Заносите стекло вертикально под прожектор и горизонтальные грани стекла должны засветится цветом прожектора. В итоге имеем границы стекла + так как прожектор узкий имеем и примерную область в которой стекло расположено, что поможет в расчете размеров.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем большое спасибо за ответы, буду пробовать, как только нормальное освещение будет готово.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нейросетью можно найти даже на таких картинках. Только для обучения нужна хотя бы сотня картинок.
Помню как-то нужно было искать углы стелажей при разном свете на чб и цветных картинках (на форуме ниже есть описание, если поискать). 97% точности давала сеточка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×