3d сканер из двух камер. Важные моменты перед работой

Если вы хотите сделать 3Д-сканер своими руками, первым делом найдите веб-камеру. Если она у вас есть, стоимость всего проекта обойдется в 40-50 долларов. В последние годы настольное 3D-сканирование сделало большие скачки, но оно все еще имеет большие ограничения. Аппаратное обеспечение техники строится на основе определенного объема и разрешения сканирования. Вы можете получить неплохие результаты, только если ваш объект соответствует требованиям и разрешению съемки.

Принцип работы съемки в объемном режиме

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

В отличие от аппаратного сканера, этот процесс не имеет ограничений по размеру или разрешению. Если вы можете сфотографировать объект, вы можете отсканировать его:

  • Ограничивающим фактором при фотограмметрии является качество фотографий и, следовательно, мастерство фотографа.
  • Фотографии должны быть хорошо видны и четко сфокусированы.
  • Они также должны располагаться вокруг объекта, чтобы каждая их часть была охвачена.

Без 3D-сканера вы сможете сделать трехмерное изображение лишь больших объектов. Маленькие предметы отсканировать не получится. Чтобы подробнее это понять, разберем понятие фотограмметрии.

Что такое фотограмметрия и как она влияет на отображение предметов?

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

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

Фотограмметрия существует уже некоторое время, но только когда Autodesk включился в свою бета-программу Memento, все стало работать стабильно. Memento был переименован в ReMake, когда он покинул бета-фазу. Звучит как волшебство, верно? Ну, это не волшебство, это реальность. Теперь любой желающий может заняться трехмерным сканированием, не тратя сотни на сканер. Даже доступные 3D-сканеры с открытым исходным кодом требуют довольно много знаний, чтобы заставить их работать должным образом. С помощью фотограмметрии любой может получить то, чего он хочет.

Поворотный круг - второй этап создания сканера

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

Просто! Перенесите фотографии на компьютер, а затем используйте Autodesk ReMake, чтобы творить чудеса. Это удивительно, но он не только хорошо создает сетку, но и предоставляет инструменты для настройки сетки, ремонта отверстий, выравнивания, подготовки к 3D-печати или служит системной формой в качестве 3D-ресурса для игр или визуализации!

Что ж, учитывая, что Apple удалила разъем для наушников для iPhone 7 и выше, будет использоваться обновленная версия создания сканера. В основе лежит принцип работы по триггеру для камеры Bluetooth. Это заменит необходимость в разъеме для наушников.

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

С набором кнопок позволяет пользователю управлять Arduino. Используя кнопки, пользователь может выбрать количество снимков, которые будут сделаны за оборот. Изготовленный своими руками 3Д-сканер высокого качества может работать в автоматическом режиме, где он делает снимок, продвигает шаговый двигатель и повторяет его, пока не завершит полный оборот.

Существует также ручной режим, при котором каждое нажатие кнопки делает снимок, перемещает шаговый регулятор и ждет. Это полезно для сканирования деталей. 3Д-сканер фокусируется на рамке, обрамляющей изображение.

Дополнительное программное обеспечение

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

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

Есть два решения:

  • Одним из них является перемещение камеры вокруг объекта, чтобы фон оставался синхронизированным с движением. Это хорошо для больших объектов, но гораздо сложнее автоматизировать процесс.
  • Более простое решение - оставить фон без особенностей. Это сделать проще для небольших объектов. Добавьте к этому правильное освещение, и вы уже на пути к безликим фонам.

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

  • "Ардуино". У него есть контакты, которые не закрыты ЖК-экраном, что облегчает подключение.
  • SainSmart 1602 LCD Shield, который имеет дисплей и несколько кнопок для управления сканером.
  • Драйвер шагового двигателя (Easy Driver).

Шаговый двигатель NEMA 17 будет поворачивать объект сканирования. С большим шаговым двигателем (с соответствующим драйвером и источником питания) этот изготовленный своими руками 3Д-сканер высокого качества мог бы увеличить масштаб сканирования. ИК-светодиод 950 nm запускает камеру. На этом принципе основаны некоторые популярные модели ручных 3Д-сканеров. Своими руками можно повторить процесс строения. Мы предлагаем несколько вариантов на выбор.

Spinscan от Тони Бьюзера: основа всех сканеров

В 2011 году гений 3D-печати, Тони Бьюзер, выпустил Spinscan. Это самодельный 3Д-сканер с открытым исходным кодом на основе лазера и цифровой камеры. Позже MakerBot использовал идеи из Spinscan для создания сканера Digitizer с закрытым исходным кодом.

FabScan

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

VirtuCube

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

Уже выпущены два новых интересных лазерных сканера с открытым исходным кодом: The BQ Cyclop и Murobo Atlas.

BQ - лазерная система сканирования

Испанская компания по производству бытовой электроники BQ анонсировала 3D-сканер Cyclop на выставке CES. Cyclop использует два лазерных линейных уровня, стандартную веб-камеру USB и пользовательский контроллер Arduino от BQ. BQ написал свое собственное приложение для сканирования под названием Horus. В то время как в сообщениях говорится, что Cyclop еще не доступен, BQ заявляет, что это будет позже в этом году.

"Атлас" - разработанный проект, требующий доработок

3Д-сканер с описанием принципов работы от Murobo в настоящее время ищет средства на Kickstarter. Как и Spinscan, Digitizer и Cyclop, Atlas использует лазерные линейные модули и веб-камеру для сканирования объекта на вращающейся платформе. Атлас заменяет Arduino Raspberry Pi, чтобы объединить управление и захват в устройство. Как и Cyclop, создатель Atlas обещает, что это будет проект с открытым исходным кодом. Наборы за 129 долларов распроданы, но некоторые остались по цене 149 и 209 долларов.

В 2019 году компания стремится выпустить созданный из смартфона 3Д-сканер, который будет не только отображать фоновую видимость, но и конструировать фокус при захвате изображения. В Америке DIY-новинки поражают. Если вы не знаете, как сделать 3Д-сканер, используйте незавершенную версию "Атласа". Там достаточно понятный функционал, а разработчикам нужно лишь прошить устройство и обеспечить работу тех функций, которые хочется видеть в результате.

CowTech Ciclop: новая модель многофункционального устройства

Цена достигает 160 долларов (в зависимости от того, печатаете ли вы 3D-детали или нет). Компания основана в США. Разрешение готовых изображений достигает 0,5 мм. Максимальный объем сканирования: 200 × 200 × 205 мм. BQ лег в основу комплекта DIY 3Д-сканера для 3Д-принтера. Своими руками можно доработать версию модели до создания изображений в четырехмерном пространстве.

CowTech Engineering использовала фонды, возглавляемые BQ, придавая уникальное значение обновленной модели. Появились возможности:

  • обзора окружающей среды,
  • захвата фона,
  • отображения линз в перевернутом стиле.

Верный движению open source, Cowtech начал кампанию Kickstarter, чтобы собрать деньги для запуска в производство версии оригинала - Ciclop CowTech. Команда поставила высокую цель - собрать 10 000 долларов, но была встречена с удивлением и восторгом, когда сообщество смогло собрать 183 000 долларов. Комплект 3Д-сканера из фотоаппарата и телефона CowTech Ciclop DIY появился на свет.

Так в чем же разница между версией CowTech и BQ DIY?

CowTech Ciclop по-прежнему использует программное обеспечение Horus 3D, так как это фантастический магазин для 3D-сканирования объектов. Различия, однако, заключаются в несколько ином дизайне, на разработку которого команда потратила нескольких дней, чтобы детали могли быть напечатаны в 3D на любом 3D-принтере FDM.

Эти же заготовки можно использовать для разработки устройств своими руками. 3Д-сканеры и принтеры этой компании имеют только небольшой объем сборки, поэтому компания CowTech разработала детали, которые можно распечатать на любом принтере с объемом сборки 115 × 110 × 65 мм, который есть почти во всех 3D-принтерах.

Ciclop от CowTech:

  • Здесь есть регулируемые держатели лазера.
  • В CowTech DIY используется лазерная резка акрила.
  • Модели используют резьбовые стержни.
  • Лазерная резка акрила отсутствует.

В этом нет ничего страшного, и сканеры по-прежнему выглядят довольно схожими, но CowTech намеревался только улучшить существующий дизайн, а не реформировать его. CowTech продает готовый к сканированию Ciclop за 159 долларов на своем веб-сайте. В целом это отличный дешевый DIY 3D-сканер, очень эффективный для лазерного триангуляционного 3D-сканирования.

Поворотные станки и столы для создания сканеров

  1. Мобильный телефон оснащен технологией DIY 3D-сканера: фотограмметрия - присутствует технологическая особенность.
  2. Цена: бесплатная печать самостоятельно (хотя материалы будут стоить около 30 долларов США).
  3. Этот 3Д-сканер своими руками будет создать довольно просто. Дейв Кларк, британский производитель, еще до начала старта продаж позаботился о том, чтобы модели могли разбираться. Запчасти пойдут на создание других сканеров.

Это связано с тем, что он основан на фотограмметрии, а не на лазерной триангуляции и совместим с вашим смартфоном! Вы можете скачать файл для 3D-печати, чтобы синхронизовать устройства.

Своими руками 3Д-сканер получится сделать из подручных средств. Нужно только довериться создателям DIY 3D. Простое устройство мгновенно превращает ваш iPhone или Android в 3D-сканер, подключив его к этому проигрывателю. Затем, используя наушники и камеру телефона, делает более 50 фотографий объекта, который будет сканироваться при вращении поворотного стола.

После того как вы взяли эти изображения, вы можете загрузить их в такую ​​программу, как Autodesk ReCap, чтобы превратить фотографии в полноценный 3D-файл.

В целом это фантастический креативный проект и отличный DIY 3D-сканер для людей с ограниченным бюджетом.

Microsoft Kinect 3D сканер

Его стоимость еще ниже - всего 99 долларов (однако больше не продается, хотя Kinect V2 все еще доступен с Xbox One). Лозунг компании: "Сделай своими руками 3Д-сканер из "Кинекта" и удиви друзей.

Хотя Microsoft отреагировала на спрос, создав собственное приложение 3D Scan для сканера Kinect, существует ряд сторонних опций, которые могут быть предпочтительнее. К ним относятся:

  • Skanect, сделанный Occupital, который также продает датчик структуры.
  • ReconstructMe. Он предоставляет набор инструментов, которые позволяют выполнять 3D-сканирование менее чем за 100 долларов.

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

Перед тем, как создавать сканер

Существует множество камер, которые вы можете использовать. Конечно, чтобы знать, как сделать 3Д-сканер из телефона собственноручно, нужно посчитать, что для этого понадобится. Если вы планируете использовать Pi Scan для управления камерами, то вам следует использовать Canon PowerShot ELPH 160. Но если используете какую-то другую настройку, то вот несколько общих рекомендаций по выбору камер:

  1. Сколько мегапикселей вам нужно? Измерьте предметы, которые вы собираетесь сканировать. Стремитесь к наибольшему среднему размеру (не выбирайте самые большие выбросы). Например, большинство учебников размером 22,86 × 27,94 см. Теперь умножьте этот размер на PPI (пикселей на сантиметр), который вы намереваетесь захватить. 300 - это безопасный минимум, хотя вы не ошибетесь, если захватите больше. Итак, в нашем примере - 9 × 300 = 2700. 11 × 300 = 3300. Нам нужно изображение размером не менее 2700 × 3300 = 8 910 000 пикселей, или около 9 мегапикселей.
  2. Какой контроль вам нужен? Если вы просто сканируете одну книгу или сканируете предмет только для его информационного содержания (в отличие от попыток запечатлеть фактический внешний вид), вам не нужны очень хорошие снимки. Если освещение или настройки камеры меняются от снимка к снимку, вы все равно получите качественный результат.
  3. Скорость затвора - баланс белого апертура ISO.
  4. Вспышка вкл/выкл. Любая пользовательская обработка изображений (повышение резкости, улучшение цвета и т. д.).
  5. Фокус (в идеале возможность блокировки фокуса).
  6. Компенсация воздействия.
  7. Увеличение изображения - большинство зеркальных фотоаппаратов допускают весь этот вид контроля; для компактных камер только камеры Canon Powershot, поддерживающие CHDK. Они позволяют контролировать все эти параметры.

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

  • Первая трудность, с которой сталкиваются при создании трехмерного лазерного сканера, - нахождение вращающейся платформы. При этом ею нужно управлять лишь с помощью MatLab. Вместо того чтобы тратить много денег или времени, можно купить шаговый двигатель 28BYJ-48-5V с платой модуля тестирования привода ULN2003.
  • Дальше приклейте платформу к валу шагового двигателя и поместите его в паз внутри держателя. Платформа должна быть на одном уровне с "мрамором", но имейте в виду, что чем дешевле он, тем более несовместимы диаметры, которые могут сделать вещи не ровными.
  • Если у вас есть метод получения точного вращения, которым можно управлять в Mat Lab, настройте камеру на любом расстоянии и высоте, а также лазерную линию слева или справа от камеры и от поворотного стола. Угол наклона лазера должен быть оптимальным, чтобы покрыть большую часть поворотного стола, но ничто не должно быть точным, мы будем обрабатывать разницу в масштабе модели в коде.
  • Самая важная часть для правильной работы - это калибровка камеры. Используя набор инструментов для компьютерного зрения MatLab, можно получить точное фокусное расстояние и оптический центр камеры с точностью до 0,14 пикселя.

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

Большинство дешевых компактных камер не имеют программного интерфейса. Они могут управляться только ручным или механическим запуском. Но команда добровольцев разработала программное обеспечение, которое позволяет дистанционно управлять компактными камерами Canon и настраивать их. Это программное обеспечение называется CHDK.

  • CHDK загружается на SD-карту, которая затем вставляется в камеру.
  • Когда камера запускается, CHDK запускается автоматически.
  • Поскольку CHDK никогда не вносит постоянных изменений в камеру, вы всегда можете просто извлечь специальную карту CHDK SD для нормальной работы камеры.

CHDK является важной предпосылкой для программных контроллеров, перечисленных ниже. Контроллеры работают на ПК или Raspberry Pi и взаимодействуют с программным обеспечением CHDK, работающим на камерах, через USB. При использовании других видов дешевых камер единственным вариантом управления является какой-либо механический или ручной запуск через программы-установщики, как показано выше.

Внимание! Соблюдайте меры безопасности при работе с лазерным излучением. Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

Профессиональный 3D-сканер — штука сложная и далеко не каждому нужная, а оттого довольно дорогая. А вот простенький аналог для оцифровки небольшого количества объектов можно сделать самостоятельно и с минимальными затратами денег и времени. Нам понадобятся: лазерный модуль, веб-камера, бумага, принтер, картон или лист фанеры, а также специальный софт. Разберём всё по порядку. Нам необходим лазерный модуль с лучом в виде линии (а не точки, как в некогда популярных китайских указках). Проще всего достать красные модули, но подойдут и зелёные, белые или синие. Стоят они в пределах тысячи рублей при покупке в офлайн-магазине. А если заказывать на какой-нибудь китайской интернет-барахолке, то можно немного сэкономить, но придётся ждать, пока его доставит (слоу-) почта.

Мы приобрели для эксперимента лазерный модуль с длиной волны 650 нм (красного цвета) мощностью 5 мВт. Более мощные лазеры стоят заметно дороже, и при этом они куда опаснее. Лучше, конечно, купить модуль с автономным питанием, так как он гораздо удобнее. В противном случае надо обязательно узнать параметры питания и озаботиться созданием небольшой «обвески» с батареями или аккумуляторами и выключателем. На всякий случай напомним, что красный провод — это +, а чёрный -. Соблюдайте полярность подключения и параметры питания, а иначе лазер может выйти из строя. Обязательно ознакомьтесь с нижеследующим предупреждением!

Внимание!!! Лазерное излучение очень опасно! Никогда не направляйте лазерный луч в глаза людям (в том числе себе) и животным — это может нанести непоправимый вред зрению (например, вызвать ожог сетчатки глаза)! Запрещается смотреть на лазерный луч через любые оптические приборы! Не направляйте лазерный луч на любые транспортные средства (в том числе самолёты)! Никогда не давайте лазер детям или неадекватным людям, а также позаботьтесь о том, чтобы они не смогли получить доступ к лазеру! Не используйте лазерные модули мощностью более 5 мВт, так как в этом случае опасность может представлять даже отражённый луч! В любом случае настоятельно рекомендуется приобрести для работы специальные защитные очки, рассчитанные на ту длину волны, которую излучает лазерный модуль! Не держите лазерный модуль на уровне головы! Всегда соблюдайте меры безопасности! Если вам непонятен смысл вышесказанного, не используйте лазер! Редакция 3DNews и автор не несут никакой ответственности за любые возможные последствия, в том числе за травмы, причиненные лазерным излучением!

Ещё раз прочитайте предыдущий абзац и запомните вышесказанное. Неплохо бы ознакомиться с популярным FAQ по лазерной безопасности. Кстати, отличной заменой модулю может стать лазерный уровень. Стоит он тоже в районе 1 000 рублей. При этом он заведомо менее опасен из-за небольшой мощности излучения, да и не придётся заморачиваться с организацией питания и выключателя: вставил батарейку — и работай.

Дальше по списку идёт веб-камера. Необходимо, чтобы она поддерживала WDM или DirectShow (кажется, все современные модели имеют подходящие драйверы) и выдавала хотя бы 30 FPS при разрешении 640x480. Можно взять камеру похуже, но и результат будет соответствующий. Чем выше поддерживаемое разрешение и частота кадров, тем лучше, но и нагрузка на ПК в этом случае будет заметнее. Разработчики используемого нами софта, к которому мы сейчас перейдём, рекомендуют отдать предпочтение Logitech Pro 9000. Мы же воспользовались веб-камерой Logitech HDPro Webcam 910. Идеальный вариант — использование хорошей чёрно-белой камеры с CCD-матрицей.

Наконец, о самом главном — о программе, которая будет заниматься переводом плоского изображения с веб-камеры в трёхмерную модель. Это давно известная утилита DAVID-Laserscanner , которая уже попадала в новостные заметки нашего ресурса. Совсем недавно вышел «мажорный», третий по счёту релиз. Для корректной работы на ПК должен быть установлен Microsoft .NET Framework версии 2.0 или старше. Сразу надо оговориться, что полноценная версия программы стоит 329 евро. Демоверсия практически полноценна, но не позволяет сохранять готовую 3D-модель. Кажется, нашим читателям не надо объяснять, где приобрести правильную версию. Если же вы кристально чисты душой и у вас есть свободные 400 евро, то купите готовый фирменный комплект из веб-камеры с подставкой, ПО, калибровочных панелей с креплениями и красным лазером с питанием. Если нет, то начать надо с изготовления калибровочного угла.

В принципе, процесс настройки и работы с утилитой хорошо расписан в wiki проекта. Так что мы лишь вкратце опишем основные этапы работы. Скачайте и установите DAVID-Laserscanner. В папке с программой в каталоге Printout вы найдёте файлы с шаблонами калибровочных поверхностей под форматы A3 и A4. Надо выбрать подходящий формат исходя из размеров сканируемого объекта. Примерно прикинуть можно, опираясь на то, что высота сканируемого объекта должна быть в 1,5-2 раза меньше высоты калибровочного угла. Распечатайте шаблоны, разрежьте или согните их по линиям сгиба и закрепите на двух плоских поверхностях — листах фанеры или картона, на стенах в углу комнаты, внутри коробки и так далее. В общем, включите фантазию.

Главное условие — угол между двумя плоскостями должен составлять 90 градусов и не меняться. Также надо следить за тем, чтобы распечатанные листы оставались гладкими и ровными, а на их поверхности не было ничего глянцевого. Разработчики, в частности, рекомендуют крепить распечатанные листы с помощью пластыря. Также важно не перепутать ориентацию листов. На распечатке надо измерить и запомнить длину (в мм) линии, подписанной Scale. В качестве примера мы будем сканировать небольшую фигурку совы. В этом случае подошёл шаблон формата А4, который был прикреплён к куску картонной папки с помощью степлера.

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

Как только камера и угол будут установлены, можно приступать к калибровке. Запустите DAVID-Laserscanner, выберите в качестве источника видеосигнала вашу веб-камеру, а также установите режим её работы (разрешение и частоту кадров). Теперь перейдите к разделу Camera Calibration. Введите заранее измеренную ширину Scale и нажмите Calibrate. Если программа сразу выдала, что калибровка прошла успешно, то это очень здорово. В противном случае придётся играться с настройками камеры. Отключите различные «улучшалки» изображения, уберите автоматическую подстройку яркости и контраста, а также следящий автофокус. Если есть ручная фокусировка, то сделайте изображение круглых меток более чётким. Также придётся подобрать расстояние от угла до объектива и наклон камеры. Процесс калибровки может надолго затянуться, но, как только он завершится, сразу же аккуратно закрепите камеру и калибровочный угол и больше не трогайте их.

Перед каждым новым сканированием процесс калибровки придётся повторять. Теперь можно поместить сканируемый объект в угол (можно на подставку) и перейти в раздел 3D Laser Scanning. Объект должен находиться в центре изображения с камеры, а слева и справа обязательно должны быть видны части калибровочного угла. Чтобы убедиться в этом, включите лазер и наведите его на образец — на изображении должна быть видна линия как слева и справа, так и на самом объекте. Обратите внимание, что просканировать полупрозрачный или прозрачный образец не получится — его надо покрыть чем-нибудь вроде талька или матовой краской. Вообще, матовые объекты гораздо лучше подходят для сканирования.

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

Переключите режим отображения на карту глубины (Camera Shows -> Depth Map). Аккуратно переместите лазерный луч в поле зрения веб-камеры. Луч должен быть по возможности горизонтальным, как можно более тонким, а сам модуль надо держать выше камеры. Поводите лучом вверх-вниз вдоль сканируемого объекта — и вы увидите, как программа с небольшой задержкой отрисовывает на экране его контуры в пространстве. Нельзя водить лучом слишком быстро, но и от слишком медленного перемещения толку не будет. Старайтесь «закрасить» образец как можно более плотной сеткой линий. Также надо добиться того, чтобы не было «грязи» — лишних линий вокруг объекта. Лучше всего держать лазерный модуль в руке и при этом двигать его только кистью. В конце надо будет аккуратно вывести линию луча за пределы калибровочного угла.

Скорее всего, вам удастся добиться чистого сканирования далеко не с первого раза. Поэкспериментируйте с настройками камеры и самого сканирования, положением камеры и лазера, освещением, фильтрацией (Result filtering, но эти значения лучше не менять) и так далее. В общем, надо как следует набить руку. Зато потом всё будет гораздо проще. Как только вы освоитесь и подберёте оптимальные значения для всех параметров, приступайте к финальному сканированию. Нажмите Stop и Erase, а затем снова Start и сделайте первый скан объекта. Как только он покажется вам достаточно качественным, нажимайте Stop, а затем Add to list. На всякий случай сохраните отдельно копию скана, нажав Save As.

Снова нажмите Stop и Erase. Поверните объект вокруг вертикальной оси так, чтобы он хоть немного пересекался с предыдущим положением. Повторяйте таким образом процедуру сканирования до тех пор, пока объект не повернётся на 360 градусов. Не забывайте сохранять копии сканов и добавлять их в список. В принципе, совсем не обязательно поворачивать образец вокруг одной из осей (иногда это просто невозможно), просто так будет удобнее. Ваша задача — получить трёхмерные сканы объекта со всех сторон, чтобы слить их воедино и экспортировать.

Процесс текстурирования оставим для самостоятельного изучения и перейдём к сшиванию, за которое отвечает модуль Shape Fusion. Можно сделать это и вручную почти в любом трёхмерном редакторе. DAVID-Laserscanner сохраняет сканы в открытом формате Alias Wavefront (*.obj), но в демоверсии специально занижает качество. У вас уже должен быть готовый список с отсканированными элементами. Нам надо выровнять их между собой. Выбираем тип выравнивания в списке. Если вы «крутили» объект вокруг одной оси, то выберите её. Ну а если ещё и поворачивали на строго определённый угол, укажите и его. Затем нажмите Align Scans и выберите в списке два соседних скана. Программа ненадолго «задумается» и постарается выровнять их между собой в паре-тройке вариантов. Выберите наиболее точный кнопками с закруглёнными стрелочками в верхней части окна.

Повторяйте процедуру выравнивания попарно между элементами списка — 1-2, 2-3, 3-4 и так далее. В результате вы получите грубую трёхмерную модель. Не исключено, что некоторые сканы никак не будут выравниваться — их можно выкинуть или начать совмещение с конца списка, постепенно подбираясь к проблемному месту. Можно попробовать выбрать для них другой тип выравнивания. Не обращайте внимания на «грязь» вокруг объекта и недостатки на его поверхности — программа их в итоге сгладит. В общем-то, чем больше сканов, тем качественнее может получиться модель. Но тогда возрастает и вероятность случайной ошибки. Здесь, как и c самим сканированием, приходится идти трудным путём проб и ошибок.

Как только вы посчитаете, что добились нужной степени совмещения сканов, нажимайте кнопку Fuse и ждите, пока программа подготовит трёхмерную модель. Как и выравнивание, этот процесс довольно ресурсоёмкий. Очень скоро вы сможете насладиться (или, наоборот, разочароваться) результатом своих действий. Кстати говоря, у DAVID-Laserscanner есть альтернативный режим работы, где используется проектор . Если он у вас есть, то можете поэкспериментировать именно с ним, а не с лазером.

Готовую модель можно экспортировать в тот же obj-формат и открыть в 3D-редакторе для окончательной доводки до ума и подготовки к печати. Естественно, точную копию сканируемого объекта получить не удастся. Во-первых, DAVID-Laserscanner особенно трудно даются различные хитрые выемки или полости. Во-вторых, для воспроизведения очень мелких узоров на поверхности (например, частой насечки) требуется высокое разрешение камеры и как можно более тонкая линия лазера. В-третьих, при сканировании в любом случае получаются пропуски, которые программа пытается заполнить, основываясь на положении близлежащих точек. В общем, идеал, как всегда, недостижим.

Готовая, максимально сглаженная модель

Помимо этого, есть очевидные ограничения на размер сканируемых объектов. Слишком мелкие не будут получаться из-за относительного малого разрешения сканирования, а для очень крупных надо изыскивать соответствующих размеров место для установки калибровочного угла. Кроме DAVID-Laserscanner есть и другие программные комплексы со схожим принципом работы. Правда, зачастую они требуют наличия дополнительных приспособлений для вращения объекта или перемещения лазера. Тем не менее даже описанная выше самодельная конструкция может сэкономить массу времени неопытным 3D-моделлерам. Так что пробуйте, экспериментируйте и у вас обязательно всё получится! Удачи!

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

Первый прототип

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

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

Результат был интересный. Да, мы находили расстояние. Да, мы могли «нацелиться» на любую точку в полусфере над сканером. И радости нашей не было предела. Но когда мы провели оценку времени сканирования этой полусферы, то оно оказалось равным 48 часам. И дело не в камере. И даже не в Java. А в том, что установка была настолько хлипкой, что колебалась после каждого поворота в течение пяти секунд. Приходилось делать измерение, поворачиваться и ждать пять секунд, пока она не перестанет качаться. А вдобавок библиотека для камеры перед каждым снимком включала ее, а затем выключала. На это уходило 1-2 секунды. Но летняя школа заканчивалась, и переделывать было некогда: это была уже ночь перед сдачей проекта. Вернее утро. На следующий день мы представляли наш проект на конкурсе перед научным жюри и неожиданно выиграли. Наверное, именно из-за этой победы мы решили продолжить нашу работу над этим проектом.

Версия два

На самом деле лето закончилось, а учебный год начался. Желание работать пропало. Установку планировали закончить к следующему конкурсу, до которого был целый месяц. Месяц. А потом внезапно три дня. Но за месяц мы решили изменить установку. Собрать ее крепкой, установить на лазерную указку линзу, которая будет создавать лазерную линию. Это позволило бы сканировать сразу 720 точек (в сканере стояла HD камера). Вот только три дня внесли свои коррективы:

Собран второй сканер из визирных пластиковых линеек, клея, малярного скотча и держится только благодаря синей изоленте. Вместо линзы стоит пробирка. На эту пробирку светит зеленый лазер. Отразившийся луч создает на экране более-менее равномерную лазерную полоску. Дальномер закреплен лишь на одном моторе, который вращает его в горизонтальной плоскости. Плату управления заменили на STM32VLDiscovery. Просто STM32 я знаю лучше, да еще и Atmega сгорела, а программатор был давно утерян. Выглядит не очень, зато работает! Колебания уменьшились, а скорость соответственно увеличилась. Но не сильно. Тут был обнаружен очень интересный подвох - китайская лазерная указка включалась не сразу, а плавно увеличивала свою мощность в течение секунды. Таким образом, секунда на колебания, секунда на прогрев лазера, секунда на снимок, а их два. Вот и получаем 4 секунды. Но за одно измерение мы находим расстояние до 720 точек! Выглядел процесс сканирования приблизительно так:

А результат так:

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

А что собственно конкурс? А вот ничего! Мы закончили сканировать все подряд в 4 часа ночи, а в 9 утра на стенде обнаружили, что лазер сгорел. Как оказалось, пока мы несли его из гостиницы к стенду, в него попал дождь, и при включении он сгорел. А выглядит она в нерабочем состоянии так, что поверить в слова «оно работало 5 часов назад» сложно. Мы расстроились. Желание продолжать улетучилось с дымком из лазера. Но все же была собрана…

Третья версия

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

Первое что бросается в глаза - это то, что теперь мы сканируем не область вокруг сканера, а объект, который вращается на платформе. А так же мы достали нужную линзу, собрали все нормально, переписали программу, а еще заменили отладочную плату на самодельную. И еще теперь мы делаем только один снимок на измерение. Лазер достаточно мощный, а линза достаточно хороша для того, чтобы однозначно находить лазер на фотографии. Благодаря этому мы не дожидаемся прогрева лазера - он всегда включен. А еще камеру теперь включаем только один раз. То есть время тратится по большей части на поворот платформы и обработку изображения. В программе добавили меню выбора точности. Время сканирования - от двух до десяти минут. В зависимости от выбранной точности. При максимальной точности получается, что платформа за шаг поворачивается на 0,5 градуса, а расстояние определяется с точностью 0,33 мм. Платформа приводится в движение шаговым мотором через редуктор. Собственно платформа - большой диск, а резиновый валик на валу мотора - маленький. Мотором и лазером управлял микроконтроллер STM32F050F4 через полевые транзисторы. В самом начале статьи как раз скан игрушки, полученный с помощью этого сканера. Так как сканер выдает облако точек в формате.obj, то после триангуляции мы можем напечатать отсканированный объект на 3D принтере, что и видно на той же фотографии. На экране мы можем видеть модель после триангуляции. Никакой ручной работы над моделью не проводилось.

На конкурсе мы победили. А он давал проход на международный конкурс Intel ISEF. А потому мы начали работать над следующим сканером.

Четвертая версия

На данный момент это последняя версия сканера, которую мы собрали. Для сравнения на платформе стоит вторая версия. К разработке четвертого сканера мы постарались подойти со всей основательностью, с какой только могли. Установка была начерчена в САПРе, детали вырезаны лазером, все покрашено, ничего лишнего снаружи не торчит. Изменения: теперь платформа действительно является шестерней. Она вырезана из оргстекла и по краям у нее 652 зубчика. Это решает проблему, которая сильно портила сканы в предыдущем сканере: резиновый валик немного проскальзывал, из-за чего платформа часто поворачивалась не на 360 градусов. Сканы были либо с «вырезанным кусочком», либо с перекрытием. Здесь же мы всегда точно знали насколько повернута платформа. Мощность лазера сделали регулируемой программно. Благодаря этому можно было на ходу менять мощность лазера, избегая засветки ненужных частей при малой освещенности помещения. Для управления всей электронникой решили не разводить новую плату, а просто применить отладочную F401RE-Nucleo. На ней установлен ST-LinkV2.1, который работает отладчиком и USB->UART адаптером.

Точность получилась потрясающая: Угловое разрешение 0.14 градуса. По расстоянию 0,125 мм. Область сканирования представляет собой цилиндр высотой 20 см и диаметром 30 см. Цена всех деталей и резки лазером на момент его создания (май 2014) составляла менее 4000 рублей.

В процессе использования мы всего один раз ставили максимальную точность. Сканирование длилось 15-20 минут. Получили почти 2 миллиона точек. Ноутбук отказался рассчитывать модель из облака точек. Эксперимент больше не повторяли.

Заключение

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

Спасибо всем, кто дочитал до конца!

UPD:
Коллега нашел видео о работе сканера, которое мы снимали на ISEF:

Да, большая часть видео не интересная, но в конце моделька на ноутбуке.

А еще вот примеры отсканированных объектов. Но все они относятся к третьей версии сканера.
Dropbox
В файле model.obj хорошо видно, что получается при проскальзывании этого резинового валика на моторе - у собаки три глаза. Сканирование остановили, из-за чего получился вырез. Все файлы - это облака точек. Открывать можно при помощи MeshLab. Модели не обрабатывались руками. Полностью сырые данные. Сверху видно «белые пятна» - участки без точек. Их не видит камера. Так же белые пятна можно заметить и в других местах. Они появляются либо на слишком темных участках, либо при перекрытии поверхностей. Например в файле stn_10.obj рога козла перекрывают друг друга, из-за чего внутренняя поверхность рогов не отсканировалась.

3D технологии прочно вошли в нашу жизнь. Изготовить 3D копию можно для любого существующего объекта, а созданная на промежуточном этапе цифровая модель будет максимально идентична оригиналу. Стоимость 3D сканеров, которые могут дать нам компьютерную модель предмета, зачастую составляет многие тысячи, а некоторые модели и миллионы, рублей. При таких суммах многих наверняка заинтересует вопрос – а можно ли сделать 3D сканер своими руками?

Так вот, сделать 3D сканер вполне возможно, для этого понадобятся:

  • Веб-камера (от ее качества, и минимального количества помех будет зависеть качество модели);
  • Лазерный уровень (или любой другой линейный лазер, и чем тоньше луч, тем более четким будет съем данных);
  • Несколько не сложных приспособлений (крепления, калибровочный угол);
  • Компьютерная программа для обработки снимков.

У нас на форуме вы можете познакомиться с примером .

Без соответствующей программы вы не сможете создать цифровую модель. Для этого вы можете воспользоваться программами TriAngles или DAVID-laserscanner. Чтобы воспользоваться продуктом TriAngles, вам понадобиться основание способное равномерно вращаться. При этом существует дополнительное ограничение – форма объекта должна быть сферической или цилиндрической.

А вот David-laserscanner – платная программа, но имеется бесплатная тестовая версия, в которой можно работать неограниченное время, правда с сохранением результатов в очень плохом качестве.

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

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

Затем мы проводим калибровку камеры. В программе имеются режимы автоматической и ручной настройки, в нормальных условиях вам понадобится только автоматический. Ручной же используется когда в помещении плохое освещение или используется некачественно выполненный калибровочный угол. Чтобы улучшить результат калибровки – может понадобиться стереть ластиком (программным инструментом) лишние темные области на изображении.

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

Требуется отключить в настройках камеры любые режимы автокорректировки, а в настройках программы выбрать цвет вашего лазера. Затем нажимаем кнопку «Старт», включаем лазер и плавно, кистевым движением, водим его лучом по объекту, при этом желательно сохранять одинаковое положение руки. Это относится к одному циклу сканирования. Для съема состояния с точек куда не доставал лазер нужно менять его положение – располагать выше или ниже линии камеры. Луч лазера обязательно должен падать на сам предмет и на фоновые поверхности как слева так и справа от него.

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

Добившись достаточного заполнения вы сможете посмотреть на результат в трехмерном виде, для чего нужно нажать кнопку «Показать 3D»

Кстати, при данном сканировании, не обязательно пользоваться лазером, возможен вариант с проецированием на объект линии тени. Для этого нужен яркий источник цвета и, например, шнур.

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

Если вас удовлетворил полученный результат, то нажимаете кнопку «Сохранить», чтобы не потерять достигнутого результата в случае какой-либо ошибки.

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

Эти действия выполняются в приложении 3D Shape Fusion, которое позволяет качественно выравнивать и объединять 3D слои созданные с разных ракурсов. При склеивании можно указывать в каком режиме вы крутили предмет при сканировании – произвольно, вокруг вертикальной или горизонтальной оси, со случайным или фиксированным углом поворота, программа довольно-таки качественно объединяет сканы, но при этом у вас имеется возможность очистить изображения от лишних элементов.

Обратите внимание – выравнивание происходит с произвольным алгоритмом, поэтому, если у вас не получилось правильно объединить сканы с первого раза – обязательно попробуйте еще, вполне может все получиться со следующей попытки. Если же это не помогает, то вы можете воспользоваться режимом «Ручного выравнивания», при котором необходимо указать не менее трех совпадающих пар точек на поверхностях сканов.

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

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