Первая попытка 3д-сканирования

Подписаться на 3Dtoday
Bangybug
Идет загрузка
Загрузка
17.06.18
525
3
печатает на Prusa i3 Steel - DIY
Личные дневники
5
Через 4 месяца после заказа, пришла мне камера Intel Realsense D435. Что внутри:
  • Внутри корпуса 2 rgb камеры и проектор ИК-паттерна.
  • SDK с открытым кодом, драйвер в user-mode, тоже открытый, можно подключать и к ARM-системам (Android), и к интелловским. Но андройд приходится рутовать, чтобы нативный код с доступом к USB работал. Вот бы написать драйвер полностью на Java. Хотя это должна быть посильная задача.
  • Firmware закрытый, обещают что его будут дорабатывать. Есть MIPI-разём для синхронизации нескольких камер и ещё бог знает чего, про него не говорят. Как я понял, сейчас нет синхронизации между потоками модуля глубины и rgb, во всяком случае firmware не сообщает внутренний таймстамп к кадрам, приходится пользоваться таймстампом хоста.
  • Обе rgb-камеры стримают raw с разрешением 1920 x 1080 30фпс (или меньше, при этом можно иметь до 60 фпс).
  • Модуль глубины тоже стримает свой поток с разрешением до 1280 x 720 до 90 fps.
  • Стримить можно либо всё, либо по-отдельности. Всё вместе на максималке может не вместиться в полосу USB3, создал тему https://communities.intel.com/thread/126389 - но мне там говорят, что это из-за процессора, хотя я в это не верю до конца. Сам тестировал на разных системах, чем система новее - тем работает лучше (стримы не виснут, доступно большее разрешение и т.д.).
  • Камера эффективна на расстояниях 0.2 - 10м. Очевидно, чем дальше - тем точность хуже.
Игрушка хорошая, интересная, но я абсолютно пропустил тему с камерами от кинектов, поэтому для меня это ново и сравнить не с чем. И стали зудиться руки сделать себе 3д-сканер. Этими приборами я не пользовался, так что сравнить не с чем. Если кто есть из Челябинска - хотелось бы посмотреть на ваш процесс сканирования вживую.

На выходе с камеры мы получаем облако точек, которое вычисляется внутренним процессором. Как мне кажется, это делается весьма достойно, пробовал сканировать достаточно мелкие объекты (клавиатуру). По наивной прикидке, при расстоянии в 30 см, при 16-битах глубины, можно будет различать 0,004 мм, но на деле будет 1мм, а если постараться, то можно получить 0.3 мм, https://github.com/IntelRealSense/librealsense/issues/999 Впрочем я не смог отсканировать монетку, границы монетки определяются, а то что на ней нарисовано - уже нет, это было ожидаемо. Делаю вывод, что разрешение по глубине хуже разрешения моего 3д-принтера, но не намного.

Мне интересно сделать свой 3д-сканер ручного типа. Затея больше упирается в программирование. От алгоритмических проблем 3д-сканирования я сейчас достаточно далёк.

Как мне кажется, основная проблема - это совмещение полученных облаков из точек в одно целое. Ведь невозможно захватить все точки со всех сторон сразу только одной камерой. Это должно быть похоже на задачу определения гомографий - https://en.wikipedia.org/wiki/Homography_(computer_vision) - т.е. когда в серии кадров находятся особые точки, зафиксированные относительно друга. Как частный случай - глаза, нос, рот. Если отслеживать эти точки в системе отсчёта координат, свзяанной с камерой, то можно вычислить преобразование координат, соответствующее перемещению камеры между соседними кадрами. Сейчас я пользуюсь Meshlab, там особые точки задаются вручную, и совмещение происходит более-менее автоматически. Чтобы помочь процессу поиска гомографии, хочу применить инерциальные датчики. Пока я делал только виброметр (если кому интересно - может поможет для оценки вибрации принтеров, см. https://bitbucket.org/Bangybug/vibrometer/src/master/).

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

Когда пытался отсканировать себя, то сразу же столкнулся с проблемой освещения. Когда камера стоит стационарно, а сам ты поворачиваешься около неё, то при совмещении снимков получается вот такое:
5f32a00520836999d09f5880fd08e285.jpg
Подписаться на 3Dtoday
5
Комментарии к статье

Комментарии

17.06.18 в 15:24
1
К освещению при сканировании вообще серьёзные требования...
P.S. Сам я правда, фотограмметрией балуюсь...:-)
17.06.18 в 17:13
1
После сканирования объектов - может возникнуть "вывернутая"(обратная?) задача - сканирование помещений.

Предел в 10 метров - как раз для жилых комнат, ну и малых офисов.

У Вас уже есть кусок хлеба, а если повезёт - с маслом ;-) .

Ещё ДО программирования firmware.

На чём собственно можно и набить руку, изучив аппу и разобравшись с фокусировкой и объективами как камер так и проекторов.

Освещение очевидно - безтеневое, и надо уже подумать про "матирующий спрей", который на себя, живого, не очень-то и "нанесёшь".

Удачи!
Ski.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

3Dtoday за 60 секунд от 16 июля

Аналитики IDC прогнозируют двукратный рост европейского рынка 3D-печати к 2022 году

3D Systems предлагает настольные фотополимерные 3D-принтеры FabPro 1000

Новая версия 3D принтера SkyOne

Lockheed Martin оснащает спутники 3D-печатными титановыми баками

3D-принтер итальянца в России: Raise3D N1 Dual — моделирование и прототипирование