Металл2024 Реклама
Метобр2024 Реклама

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

Bangybug
Идет загрузка
Загрузка
17.06.2018
2013
2
Личные дневники

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

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

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

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 к камере есть пример удаления фона с фотографий (удобно для съёмки ведущей прогноза погоды), и это должно подойти при задачу автоматизации удаления лишних точек.

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

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

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

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

5
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама