Оглавление:

Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python: 6 шагов (с изображениями)
Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python: 6 шагов (с изображениями)

Видео: Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python: 6 шагов (с изображениями)

Видео: Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python: 6 шагов (с изображениями)
Видео: Программирование c использованием ROS. Урок №9 «Облака точек в ROS» 2024, Ноябрь
Anonim
Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python
Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python
Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python
Сделай сам 3D-сканер на основе структурированного света и стереозрения на языке Python

Этот 3D-сканер был изготовлен с использованием недорогих обычных предметов, таких как видеопроектор и веб-камеры. Трехмерный сканер со структурированным светом - это устройство трехмерного сканирования для измерения трехмерной формы объекта с использованием проецируемых световых узоров и системы камеры. Программное обеспечение было разработано на основе структурированного света и стереозрения на языке Python.

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

Шаг 1. Введение

Вступление
Вступление
Вступление
Вступление

Устройства для автоматического получения 3D-изображений (часто называемые 3D-сканерами) позволяют создавать высокоточные модели реальных 3D-объектов экономичным и экономичным способом. Мы опробовали эту технологию при сканировании игрушки, чтобы доказать ее работоспособность. Конкретные потребности: точность от среднего до высокого, простота использования, доступная стоимость сканирующего устройства, саморегистрируемый сбор данных о форме и цвете и, наконец, эксплуатационная безопасность как для оператора, так и для отсканированных объектов. В соответствии с этими требованиями мы разработали недорогой 3D-сканер на основе структурированного света, в котором используется универсальный подход с использованием цветных полос. Мы представляем архитектуру сканера, принятые программные технологии и первые результаты его использования в проекте по приобретению игрушки в 3D.

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

Шаг 2: Программное обеспечение

Программное обеспечение
Программное обеспечение

Язык Python использовался для программирования по трем причинам: во-первых, его легко изучить и реализовать, во-вторых, мы можем использовать OPENCV для подпрограмм, связанных с изображениями, и в-третьих, он переносится между различными операционными системами, поэтому вы можете использовать эту программу в Windows, MAC и Linux. Вы также можете настроить программное обеспечение для использования с любым типом камеры (веб-камеры, зеркальные или промышленные камеры) или проектора с собственным разрешением 1024X768. Лучше использовать камеры с разрешением более чем в два раза. Я лично тестировал производительность в трех разных конфигурациях: первая была с двумя параллельными веб-камерами Microsoft, кинотеатром и небольшим портативным проектором, вторая была с двумя веб-камерами lifecam cinema, которые повернуты на 15 градусов друг к другу, и проектором Infocus, последняя конфигурация была с веб-камерами logitech. и проектор Infocus. Чтобы запечатлеть облако точек на поверхности объекта, нужно выполнить пять шагов:

1. Проецирование серых узоров и захват изображений с двух камер "SL3DS1.projcapt.py"

2. Обработка 42 изображений каждой камеры и код точек захвата "SL3DS2.procimages.py"

2. Регулировка порога выбора маскировки для обрабатываемых областей "SL3DS3.adjustthresh.py"

4. Найдите и сохраните похожие точки в каждой камере "SL3DS4.calcpxpy.py"

5 Рассчитайте координаты X, Y и Z облака точек "SL3DS5.calcxyz.py"

На выходе получается файл PLY с информацией о координатах и цвете точек на поверхности объекта. Вы можете открывать файлы PLY с помощью программного обеспечения САПР, такого как продукты Autodesk, или программного обеспечения с открытым исходным кодом, такого как Meshlab.

www.autodesk.com/products/personal-design-a…

Для запуска этих программ Python должны быть установлены Python 2.7, модуль OPENCV и NUMPY. Я также разработал графический интерфейс для этого программного обеспечения в TKINTER, который вы можете найти на шестом шаге с двумя примерами данных. Вы можете найти дополнительную информацию по этому вопросу на следующих веб-сайтах:

docs.opencv.org/modules/calib3d/doc/camera_…

docs.opencv.org/modules/highgui/doc/reading…

www.3dunderworld.org/software/

arxiv.org/pdf/1406.6595v1.pdf

mesh.brown.edu/byo3d/index.html

www.opticsinfobase.org/aop/fulltext.cfm?uri…

hera.inf-cv.uni-jena.de:6680/pdf/Brauer-Bur…

Шаг 3: Настройка оборудования

Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования

Аппаратное обеспечение состоит из:

1. Две веб-камеры (Logitech C920C)

2. Проектор Infocus LP330.

3. Подставка для камеры и проектора (изготовлена из акриловых пластин толщиной 3 мм и древесины HDF толщиной 6 мм, вырезанной с помощью лазерного резака).

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

Проектор представляет собой проектор Infocus LP330 (исходное разрешение 1024X768) со следующими характеристиками: Яркость: 650 люмен Цветовой световой поток: ** Контрастность (полное включение / выключение): 400: 1 Автоматическая диафрагма: нет собственного разрешения: 1024x768 Соотношение сторон: 4: 3 (XGA) Видеорежимы: ** Режимы данных: MAX 1024x768 Максимальная мощность: 200 Вт Напряжение: 100–240 В Размер (см) (ВxШxГ): 6 x 22 x 25 Вес: 2,2 кг Срок службы лампы (при полной мощности): 1000 часов Тип лампы: UHPLamp Мощность: 120 Вт Количество лампы: 1 Тип дисплея: 2 см DLP (1) Стандартный зум-объектив: 1,25: 1 Фокус: Ручное расстояние проецирования (м): 1,5 - 30,5 Размер изображения (см): 76 - 1971

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

Предпочтительно использовать те камеры, которые управляются программно, потому что вам нужно настроить фокус, яркость, разрешение и качество изображения. Можно использовать DSLR-камеры с SDK, предоставляемыми каждой торговой маркой.

Сборка и испытания проводились в Copenhagen Fablab при его поддержке.

Шаг 4: экспериментирование со сканером

Эксперименты со сканером
Эксперименты со сканером
Эксперименты со сканером
Эксперименты со сканером
Эксперименты со сканером
Эксперименты со сканером

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

meshlab.sourceforge.net/

Шаг 5: некоторые другие результаты сканирования

Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования
Некоторые другие результаты сканирования

Здесь вы можете увидеть сканы человеческого лица и 3d сканы стены. Всегда есть некоторые выбросы из-за отражений или неточных результатов изображения.

Шаг 6: графический интерфейс 3D-сканера

Графический интерфейс 3D-сканера
Графический интерфейс 3D-сканера

Для тестирования программного обеспечения 3D-сканирования на этом этапе я добавляю два набора данных: один - сканирование рыбы, а другой - просто плоская стена, чтобы увидеть его точность. Откройте файлы ZIP и запустите SL3DGUI.py. Для установки проверьте шаг 2. Отправьте сообщение на мой почтовый ящик для всех исходных кодов.

Для использования части 3D-сканирования вам необходимо установить две камеры и проектор, а для других частей просто нажмите кнопку. Для тестирования данных выборки сначала щелкните процесс, затем порог, стереопары и, наконец, облако точек. Установите Meshlab, чтобы увидеть облако точек.

meshlab.sourceforge.net/

Рекомендуемые: