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

Построение профиля объекта по изображениям с разных ракурсов

Recommended Posts

Здравствуйте

Стоит задача построения профиля объекта (металлические валы и балки)для последующего измерения геометрических размеров.

Для реализации системы планируется использование четырех лазеров, обеспечивающих подсветку области интереса и четырех

видеокамер, регистрирующих форму профиля. Камеры и лазеры устанавливаются так чтобы охватить все стороны области интереса.

В результате получаем четыре изображения с четко обозначенным контуром профиля. Далее данные четыре изображения должны быть

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

профиля области интереса. Данная система представлена на вложенном рисунке.

Таким образом, задача разбивается на несколько этапов:

1. Захват изображения с 4 камер

2. Фильтрация

3. Выделение контура профиля на каждом двухмерном изображении

4. Совмещение полученных контуров на одном двухмерном изображении

5. Вычисления размеров

Как осуществить пункты 1,2,3 и 5 при помощи инструментария OpenCV известно.

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

Есть ли в OpenCV функции, которые помогут реализовать такую задачу?

post-1271-0-76056700-1358329274_thumb.jp

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


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

можно использовать алгоритмы типа ICP.

вы уже прикинули какие искажения,шум и какое перекрытие?

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


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

можно использовать алгоритмы типа ICP.

вы уже прикинули какие искажения,шум и какое перекрытие?

Посмотрел тему ICP. Достаточно интересное направление. А нет ли похожих решений или решений, дающих похожий результат в библиотеке OpenCV?

Искажение и шумы это решаемые вопросы. Перекрытие может отличаться для объектов разных размеров.

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


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

вообще я думаю что если это будут дуги, то будет плохо совмещаться или надо делать ограничение на перекрытие.

по большому счёту если у вас лазеры с камерами зафиксированны неподвижно относительно центра системы, то помоему не проблема 1 раз совместить, т.е. откалибровать.

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


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

вообще я думаю что если это будут дуги, то будет плохо совмещаться или надо делать ограничение на перекрытие.

по большому счёту если у вас лазеры с камерами зафиксированны неподвижно относительно центра системы, то помоему не проблема 1 раз совместить, т.е. откалибровать.

Да все будет стоять неподвижно и естественно откалибровано. Вопрос не в механике и т.п. Вопрос как совместить картинки с 4 камер?

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


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

устанавливаете камеры, снимаете, руками совмещаете картинки и записываете сдвиг и поворот, эти настройки сохраняете.

вроде как достаточно 1 камеры и 1 лазера если вы делаете что то типа

794px-LaserPrinciple.png

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


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

David Laser scanner смотрели, думаю полезно будет взглянуть.

Или вообще несколько кинект камер использовать (правда у них вроде есть мертвая зона перед камерой, хотя в этом не уверен). Зная положение камер, совместить точки труда не составит.

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


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

Спасибо откликнувшимся. Вручную развороты совмещать и потом по этому пути программно проводить не получится - изделие не строго фиксировано, а может несколько смещаться. Хорошие ссылки - хорошие мысли. Отдельный респект за ссылку на 3D камеры. Но аппаратная сторона меня не очень беспокоит. Камеры и точки их установки я подберу, выбор есть. Одна видеокамера не даст нужного результата - требуется минимум две, а лучше три или четыре. Это не суть важно. Для меня проблема именно в алгоритме совмещения изображений и наличия в OPENCV таковых функций.

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


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

что то я не понял, одно кольцо- сечение вы получаете с одними и теми же настройками т.к. камеры с лазерами зафиксированы.

а сдвиг образца во времени будет влиять только на общую 3д реконструкцию, т.е. объединение сечений в 1 3д объект, да и то тут сложность только если ось объекта будет иметь разное отклонение от перпендикуляра плоскости сканирования.

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


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

что то я не понял, одно кольцо- сечение вы получаете с одними и теми же настройками т.к. камеры с лазерами зафиксированы.

а сдвиг образца во времени будет влиять только на общую 3д реконструкцию, т.е. объединение сечений в 1 3д объект, да и то тут сложность только если ось объекта будет иметь разное отклонение от перпендикуляра плоскости сканирования.

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

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


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

Если имеется ввиду склейка, что то типа такого:

http://www.emgu.com/wiki/index.php/Image_Stitching_in_CSharp

то есть пример stitching_detailed.cpp

  • Like 1

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


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

Если имеется ввиду склейка, что то типа такого:

http://www.emgu.com/wiki/index.php/Image_Stitching_in_CSharp

то есть пример stitching_detailed.cpp

Большое спасибо. Именно это я и искал. Я так понимаю нужно будет скачать последний OpenCV, т.к. в папке samples версии 2.1 у меня такого примера нет. Еще раз респект!

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


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

отклонение оси образца от перпендикуляра не влияет на захват сечения, но получается вам надо как то измерять отклонение оси чтобы восстанавливать перспективу(и получить 3д изображение).

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

  • Like 1

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


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

Ок. Ну по крайней мере стало ясно что все возможно. Буду работать. Всем спасибо!

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


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

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

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

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

1. В OpenCV есть функция cvTriangulatePoints, но она работает только со стерео картинкой. Нет ли готовой функции или кода, позволяющего реализовать триангуляцию такого типа (и соответственно определять расстояние до точек профиля детали, подсвеченных лазерным излучением) по одному изображению, зная положение камеры и источника лазерного излучения? Не хочется изобретать велосипед так сказать.

2. Калибровка камеры по шахматной доске дает хорошие результаты? В OpenCV это наилучший вариант?

3. Какую систему пространственных координат лучше применить? Я планировал привязать начало координат к одному из источников лазерного излучения. Это наилучшее решение?

 

сканирование0001.jpg

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×