Введение
Пример реконструкции 3D-объекта
Алгоритм 3D реконструкции по набору изображений
Описание технологии работы программных продуктов по трехмерной фотограмметрии
Полезные ссылки
Введение
Фотограмметрия — реконструкция поверхности 3D объекта с помощью фотографий (по одному или нескольким изображениям).
В статье 3D-реконструкция по двум изображениям была представлена простая математическая модель восстановления облака точек.
Пример реконструкции 3D-объекта
Ниже рассмотрен пример реконструкции 3D-объекта в редакторе 3DF Zephyr, совершаемого по множеству фото.
Загружаем и устанавливаем 3DF Zephyr Free.
Далее выполняем действия в соответствии с описаниями по ссылкам Getting started with 3DF Zephyr и 3д-сканирование: Фотограмметрия.
- Загружаем набор фото по ссылке Download Dataset – Cherub (531MB) На рис. ниже одно из них
- Создаем новый проект и импортируем (перетаскиваем) в него первых 50 загруженных фото (В версии 3DF Zephyr Free ограничение на 50 фото).
- Выполняем соответствующие настройки и запускаем процесс создания облака точек. Через несколько минут получаем облако точек вместе с расставленными вокруг него камерами
- Запускаем генерацию 3D-модели. Процесс длился около 20 часов. В результате был получен следующий результат (см. рис. ниже).
Алгоритм 3D реконструкции по набору изображений
Алгоритм следующий:
- Определяются ключевые точки (см. Выделение особенностей на изображении).
- Устанавливается соответствие между между ключевыми точками на перекрывающихся фрагментах последовательных пар изображений.
- Оценивается соответствие ключевых точек. Отфильтровываются ошибочные точки.
- По 2D координатам ключевых точек пар изображений решается система линейных уравнений и находятся параметры положения камер (подробнее см. Геометрическая модель камеры — внешние и внутренние параметры, а также Калибровка камеры).
- Определяются 3D координаты точек по соответствию цвета на перекрывающихся фрагментах последовательных пар изображений (см. алгоритм в статье 3D-реконструкция по двум изображениям).
Продолжение описания алгоритма см. в статье От облака точек к поверхности.
Описание технологии работы программных продуктов по фотограмметрии
Информация о каждой фотографии записывается в специальный файл: высота, угол поворота камеры, данные долготы и широты. Программа использует технологии машинного зрения и фотограмметрии для нахождения общих точек на многих фотографиях. В результате каждому пикселю (ключевой точке) на фотографии находится цветовое соответствие на других фотографиях.
Каждое соответствие становится ключевой точкой. Если ключевая точка найдена на трех фотографиях и более, программа строит эту точку в пространстве. Чем больше таких точек, тем лучше определяются координаты точки в пространстве. Следовательно, чем больше пересечений между фотографиями, тем точнее будет модель. Пересечение от 60 до 80% является оптимальным.
В фотограмметрии применяются алгоритмы, целью которых является минимизирование суммы квадратов множества ошибок. Обычно для решения используют алгоритм Левенберга — Марквардта (или метод связок), основанный на решении нелинейных уравнений методом наименьших квадратов.
В процессе обработки фотографий создается расширенное облако точек (совокупность всех 3D точек), которое используется для генерирования поверхности, составленной из полигонов. В заключение определяется, какие пиксели на фотографии соответствуют какому полигону. Для этого 3D модель развертывается в плоскость и затем пространственное положение точки ставится в соответствие оригинальной фотографии для задания цвета.
Полезные ссылки:
- Трехмерная фотограмметрия, или От фотографии к 3D-модели
- Сравнение 7 систем фотограмметрии. Что лучше выбрать?
- Как создаются 3D-фото автомобилей
- Structure from Motion — классическая реализация
- Getting started with 3DF Zephyr
- 3д-сканирование: Фотограмметрия
- 3D Body Scanning Project
- Deep Neural Networks in Photogrammetry
Автор: Николай Свирневский