Как я могу создать приложение для 3D моделирования? Какие ресурсы мне понадобятся?
Я хочу создать приложение, которое конвертирует 2d-изображения / видео в 3d-модель. Исследуя его, я обнаружил похожие приложения, такие как Trnio, Scann3D, Qlone и некоторые другие (хотя немногие из них обеспечивают плохую выходную 3D-модель). Я также узнал о технологии, запущенной в исследовании Microsoft под названием mobileFusion, которая продемонстрировала то же видение, на которое я надеялся, но эти приложения не были такими.
1 ответ
Создание приложения для трехмерного моделирования - сложная задача, и достижение его на высоком уровне требует большого изучения. Чтобы указать вам правильное направление, вы, скорее всего, захотите выполнить то, что называется Structure-from-Motion(SfM) или Одновременная локализация и сопоставление (SLAM).
Если вы хотите запрограммировать это самостоятельно, OpenCV - хорошее место для начала, если вы знаете C++ или Python. Типичный трубопровод включает в себя; извлечение и сопоставление характеристик, оценка положения камеры, триангуляция, а затем оптимизация с использованием настройки пучка. Все конвейеры для SfM и SLAM следуют этим общим шагам (за исключением конечно). Все эти шаги возможны в OpenCV, хотя Googles Ceres Solver - отличная настройка пакета с открытым исходным кодом. SfM обычно идет на плотное сопоставление, где вы получаете очень плотные облака точек, которые хороши для создания сеток. Бесплатный конвейер с открытым исходным кодом для этого - OpenSfM. Еще один хороший источник инструментов - OpenMVG, в котором есть все инструменты, необходимые для создания полного конвейера.
SLAM аналогичен SfM, однако больше ориентирован на приложения в реальном времени и меньше на абсолютную точность. Приложения для этого более сфокусированы на робототехнике, где робот хочет знать, где он находится относительно его среды, но при этом он не столь озабочен абсолютной точностью. Лучшие алгоритмы SLAM - ORB-SLAM и LSD-SLAM. Обе программы с открытым исходным кодом и бесплатны для внедрения в собственное программное обеспечение.
Так что на самом деле все зависит от того, что вы хотите... SfM для высокой точности, SLAM для реального времени. Если вам нужна хорошая 3D-модель, я бы порекомендовал использовать существующие алгоритмы, так как они очень хороши.
Лучшее коммерческое программное обеспечение на мой взгляд... Agisoft Photoscan. Если бы вы могли сделать что-то наполовину лучше, я был бы очень впечатлен. Чтобы ответить на ваш вопрос, какие ресурсы вам потребуются. На мой взгляд, навыки Python/ C++, умение хорошо гуглить и свободное время, чтобы правильно читать фотограмметрию и SfM.