Построение 3d модели с использованием нескольких изображений из нескольких точек (kinect)

Можно ли построить трехмерную модель неподвижного объекта, если бы различные изображения вместе с данными о глубине собирались под разными углами? Я думал, что это своего рода круглая конвейерная лента, на которой будет размещен кинект, и конвейерная лента, в то время как реальный объект, который должен быть реконструирован в трехмерном пространстве, находится посередине. После этого конвейерная лента вращается вокруг изображения по кругу, и захватывается множество изображений (возможно, 10 изображений в секунду), что позволяет Kinect захватывать изображение с любого угла, включая данные о глубине, теоретически это возможно. Модель также должна быть воссоздана с текстурами.

Я хотел бы знать, существуют ли уже подобные проекты / программное обеспечение, и будут ли признательны любые ссылки. Возможно ли это в течение 6 месяцев. Как мне поступить? Например, любой подобный алгоритм, на который вы могли бы указать

Спасибо, МилиндаД

5 ответов

Это определенно возможно, и есть много 3D-сканеров, которые работают с более или менее одинаковым принципом стереоскопии.

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

Существует проект с открытым исходным кодом Meshlab для 3d видения, который включает в себя алгоритмы 3d реконструкции*. Я не знаю деталей алгоритмов, но программное обеспечение, безусловно, является хорошей отправной точкой, если вы хотите играть в 3d.

Я знал некоторые другие, я постараюсь найти их и добавить сюда:

(* Вики-страница не имеет контента, перенаправляет для входа в систему для редактирования)

Проверьте https://bitbucket.org/tobin/kinect-point-cloud-demo/overview который является примером кода для Kinect для Windows SDK, который делает именно это. В настоящее время он использует растровые изображения, захваченные датчиком глубины, и перебирает массив байтов для создания облака точек в формате PLY, который может считывать MeshLab. На следующем этапе мы применяем / улучшаем алгоиртхим треугольника Делануни, чтобы сформировать сетку вместо точек, к которой можно применить текстуру. Тогда на третьем этапе я получу формулу слияния мешей, чтобы объединить несколько капот из Kinect, чтобы сформировать полную сетку трехмерных объектов.

Это основано на некоторой работе, которую я проделал в июне с использованием Kinect для целей захвата 3D-печати.

Однако код.NET в этом хранилище исходного кода поможет вам начать с того, чего вы хотите достичь.

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

Если вас больше интересует теоретическая (я имею в виду, если вы хотите знать, как) часть этой проблемы, вот документ Microsoft Research о глубокой камере и реконструкции 3D.

Попробуйте VisualSfM ( http://ccwu.me/vsfm/) от Changchang Wu ( http://ccwu.me/)

Он берет несколько изображений с разных углов сцены и выводит трехмерное облако точек.

Алгоритм называется "Структура от движения". Краткая идея алгоритма: он включает в себя выделение характерных точек на каждом изображении; поиск соответствий между ними по изображениям; построение характерных дорожек, оценка матриц камеры и, следовательно, трехмерных координат характерных точек.

Другие вопросы по тегам