L@MER 6 Жалоба Опубликовано January 16, 2013 Здравствуйте Стоит задача построения профиля объекта (металлические валы и балки)для последующего измерения геометрических размеров. Для реализации системы планируется использование четырех лазеров, обеспечивающих подсветку области интереса и четырех видеокамер, регистрирующих форму профиля. Камеры и лазеры устанавливаются так чтобы охватить все стороны области интереса. В результате получаем четыре изображения с четко обозначенным контуром профиля. Далее данные четыре изображения должны быть совмещены в разрабатываемой программной среде. Полученный контур профиля используется для нахождения геометрических размеров профиля области интереса. Данная система представлена на вложенном рисунке. Таким образом, задача разбивается на несколько этапов: 1. Захват изображения с 4 камер 2. Фильтрация 3. Выделение контура профиля на каждом двухмерном изображении 4. Совмещение полученных контуров на одном двухмерном изображении 5. Вычисления размеров Как осуществить пункты 1,2,3 и 5 при помощи инструментария OpenCV известно. Главный вопрос на который не смог пока найти ответа - как совместить полученные контуры на одном двухмерном изображении. Есть ли в OpenCV функции, которые помогут реализовать такую задачу? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 16, 2013 можно использовать алгоритмы типа ICP. вы уже прикинули какие искажения,шум и какое перекрытие? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 16, 2013 можно использовать алгоритмы типа ICP. вы уже прикинули какие искажения,шум и какое перекрытие? Посмотрел тему ICP. Достаточно интересное направление. А нет ли похожих решений или решений, дающих похожий результат в библиотеке OpenCV? Искажение и шумы это решаемые вопросы. Перекрытие может отличаться для объектов разных размеров. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 16, 2013 вообще я думаю что если это будут дуги, то будет плохо совмещаться или надо делать ограничение на перекрытие. по большому счёту если у вас лазеры с камерами зафиксированны неподвижно относительно центра системы, то помоему не проблема 1 раз совместить, т.е. откалибровать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 16, 2013 вообще я думаю что если это будут дуги, то будет плохо совмещаться или надо делать ограничение на перекрытие. по большому счёту если у вас лазеры с камерами зафиксированны неподвижно относительно центра системы, то помоему не проблема 1 раз совместить, т.е. откалибровать. Да все будет стоять неподвижно и естественно откалибровано. Вопрос не в механике и т.п. Вопрос как совместить картинки с 4 камер? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 16, 2013 устанавливаете камеры, снимаете, руками совмещаете картинки и записываете сдвиг и поворот, эти настройки сохраняете. вроде как достаточно 1 камеры и 1 лазера если вы делаете что то типа Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 16, 2013 David Laser scanner смотрели, думаю полезно будет взглянуть. Или вообще несколько кинект камер использовать (правда у них вроде есть мертвая зона перед камерой, хотя в этом не уверен). Зная положение камер, совместить точки труда не составит. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 16, 2013 Спасибо откликнувшимся. Вручную развороты совмещать и потом по этому пути программно проводить не получится - изделие не строго фиксировано, а может несколько смещаться. Хорошие ссылки - хорошие мысли. Отдельный респект за ссылку на 3D камеры. Но аппаратная сторона меня не очень беспокоит. Камеры и точки их установки я подберу, выбор есть. Одна видеокамера не даст нужного результата - требуется минимум две, а лучше три или четыре. Это не суть важно. Для меня проблема именно в алгоритме совмещения изображений и наличия в OPENCV таковых функций. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 17, 2013 Вручную развороты совмещать и потом по этому пути программно проводить не получится - изделие не строго фиксировано, а может несколько смещаться. что то я не понял, одно кольцо- сечение вы получаете с одними и теми же настройками т.к. камеры с лазерами зафиксированы. а сдвиг образца во времени будет влиять только на общую 3д реконструкцию, т.е. объединение сечений в 1 3д объект, да и то тут сложность только если ось объекта будет иметь разное отклонение от перпендикуляра плоскости сканирования. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 17, 2013 что то я не понял, одно кольцо- сечение вы получаете с одними и теми же настройками т.к. камеры с лазерами зафиксированы. а сдвиг образца во времени будет влиять только на общую 3д реконструкцию, т.е. объединение сечений в 1 3д объект, да и то тут сложность только если ось объекта будет иметь разное отклонение от перпендикуляра плоскости сканирования. Именно так - ось обьекта может отклоняться...Но эту проблему я решу. Как я говорил ранее у меня основной затык не в железе или том как снять четыре изображения. Допустим я из получил и функциями OpenCV развернул и убрал влияние перспективы. Как, какими функциями OpenCV можно корректно склеить их в единую картинку, сформировав единый профиль? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано January 17, 2013 Если имеется ввиду склейка, что то типа такого: http://www.emgu.com/wiki/index.php/Image_Stitching_in_CSharp то есть пример stitching_detailed.cpp 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 17, 2013 Если имеется ввиду склейка, что то типа такого: http://www.emgu.com/wiki/index.php/Image_Stitching_in_CSharp то есть пример stitching_detailed.cpp Большое спасибо. Именно это я и искал. Я так понимаю нужно будет скачать последний OpenCV, т.к. в папке samples версии 2.1 у меня такого примера нет. Еще раз респект! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано January 18, 2013 отклонение оси образца от перпендикуляра не влияет на захват сечения, но получается вам надо как то измерять отклонение оси чтобы восстанавливать перспективу(и получить 3д изображение). а совмещение можно делать обычным переносом, т.к. мы имеем координаты пикселей с датчика. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано January 18, 2013 Ок. Ну по крайней мере стало ясно что все возможно. Буду работать. Всем спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано July 21, 2015 Доброго времени суток. Жизнь заставила вернуться к теме двухлетней давности. На данный момент реализован лабораторный стенд, условный чертеж которого показан на вложенном рисунке.Установка представляет собой два генератора лазерных линий, подсвечивающих с двух сторон профиль детали. Так-же с двух сторон расположены видеокамеры. Положение генераторов лазерных линий и камер, относительно дуг друга фиксировано и известно. Реализован алгоритм фильтрации и выделения лазерного луча. Также реализован алгоритм получения двумерных координат точек оси лазерного луча.Сейчас стоит задача определить пространственные координаты точек лазерной линии, определяющей профиль на детали. Для этого предполагаю использовать метод оптической лазерной триангуляции, предварительно осуществив калибровку камер. Прочел много литературы, но все равно остался ряд вопросов:1. В OpenCV есть функция cvTriangulatePoints, но она работает только со стерео картинкой. Нет ли готовой функции или кода, позволяющего реализовать триангуляцию такого типа (и соответственно определять расстояние до точек профиля детали, подсвеченных лазерным излучением) по одному изображению, зная положение камеры и источника лазерного излучения? Не хочется изобретать велосипед так сказать.2. Калибровка камеры по шахматной доске дает хорошие результаты? В OpenCV это наилучший вариант?3. Какую систему пространственных координат лучше применить? Я планировал привязать начало координат к одному из источников лазерного излучения. Это наилучшее решение? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах