Кремень КД Реклама
Кремень КМ Реклама

3D сканеры Ciclop и Piclop

rwpbb
Идет загрузка
Загрузка
23.03.2017
9082
22
3D-моделирование

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

19
3D сканеры Ciclop и Piclop

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

Года 3 назад идея была реализована в Испании BQ labs и опубликована под свободными лицензиями. Были выложены детали конструкции для печати на 3D принтере и очень красивая программа horus, написанная на Python. Для четкого выделения лазерной подсветки необходимо было управлять экспозицией камеры. В момент создания актуальной была Ubuntu 14.04. V4L2 поддерживает управление камерой, но она не стыкуется с официальной версией OpenCV.

Следуя принципу написания минимального собственного кода для получения работоспособного результата, разработчики слегка подправили текущую версию OpenCV. Решение правильное, рабочая установка была получена, а кто запоздал, пусть сам расхлебывает ситуацию, при которой установка на новые версии Ubuntu требует сноса всех программ, использующих более новые версии OpenCV. Идеологически система устарела, и авторам. вероятно, было не интересно править последующие версии тем более, что массового потребителя, использующего в своей работе Windows это не коснулось, поскольку в этой ОС используются драйверы от производителя камеры.

Сообщество конечно задачу попыталось решить, но идеального всех устраивающего результата похоже не добилось. Я воспользовался решениями, предложенными Fabien Devaux. Его версия horus не требует специальной версии OpenCV, но работает очень медленно. Он предложил свое решение этой проблемы, написав программу thot с интерфейс командной строки CLI (Command line interface). Программа имеет собственную систему автоматической калибровки, но можно воспользоваться и результатами калибровки, полученными с помощью horus.

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

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

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

3D сканеры Ciclop и Piclop



Сканеры позволяют добиться примерно одинакового результата. Высокое разрешение камеры Piclop не востребовано, как и возможность делать более 800 снимков за один оборот. Лимитирует разрешение воспринимаемая толщина лазерного луча. Воспринимаемая толщина линии зависит от яркости точки, которая в свою очередь зависит от отражающей способности материала модели и угла падения луча на поверхность.

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

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

Если не рассматривать отдельных моделей с мелким слабовыраженным рельефом, разумное разрешение для этого сканера 1,9 Мп (1600 х 1200). При этом разрешении скорость сканирования у обеих сканеров порядка пяти минут, но учитывая меньше операций финальной обработки, результат со сканера Piclop будет получен чуть быстрее.

Мне оказалось легче добиться приемлемого результата при сканировании с двумя включенными лазерами на сканере Piclop с ручной калибровкой. Это достаточно трудоемко, но терпение и время позволяют добиться результата, тогда как автоматическая калибровка это лотерея, может сразу повезти, может не повезти никогда.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

19
Комментарии к статье