Трёхмерная реконструкция сцены с использованием RGB-D камеры. Программные продукты для трёхмерной реконструкции. Создание полигональной модели алгоритмом KinFu. Псевдокод алгоритма вычисления цвета вершин. Архитектура программы и особенности реализации.
Аннотация к работе
Трехмерная реконструкция и трехмерное сканирование в настоящее время быстро развиваются и находят широкое применение в робототехнике, медицине, производстве, 3D печати и 3D моделировании. Распространению применения трехмерных реконструкций способствует повышение доступности устройств, пригодных для трехмерного сканирования и печати, и применение новых алгоритмов трехмерной реконструкции. В основном применяются лазерные сканеры, позволяющие проводить реконструкцию с высокой точностью. Появление Microsoft Kinect - устройства, совмещающего в себе обычную RGB (Red-Green-Blue) камеру и сенсор глубины (Depth), использующий инфракрасный свет для получения информации о расстоянии до поверхности объекта - существенно расширило круг пользователей, имеющих возможности для трехмерного сканирования. В связи с более высокой доступностью данных камер появились приложения, позволяющие использовать их для трехмерной реконструкции.Реконструкция сцены с использованием Red-Green-Blue-Depth (RGB-D) камер производится путем обработки данных поступающих с сенсора глубины и цветной камеры. Сенсор глубины работает следующим образом: прожектор излучает шаблон из инфракрасных точек на поверхность объекта. Инфракрасная камера создает снимок и преобразует его в карту глубины, в которой яркость каждого пиксела показывает расстояние от камеры до поверхности объекта. С использованием внутренних параметров камеры (фокусного расстояния) снимок глубины преобразуется в облако точек, в котором каждой точке соответствуют координаты в 3D пространстве. Для реконструкции с использованием таких устройств применяются алгоритмы, обрабатывающие последовательный поток снимков глубины, что позволяет компенсировать погрешность измерения большим количеством данных.Программные продукты, разработанные для трехмерного сканирования c использованием RGB-D камер, имеют много сходств в организации процесса сканирования и построении пользовательского интерфейса, поскольку основаны на алгоритме KINECTFUSION. Процесс сканирования проходит следующим образом: после первоначальной настройки параметров (объем сканируемого пространства, детализация) производится процесс сканирования: камера плавно перемещается пользователем, охватывая поверхность сканируемого объекта. Полигональная модель строится в режиме реального времени, используя поступающие с камеры снимки глубины для обновления.У рассмотренных ранее программ для трехмерной реконструкции имеются несколько недостатков при вычислении цвета модели. Возникают они по следующим причинам: Во-первых, цветное изображение и карта глубины не делаются одновременно, а производятся с разницей в 10-100 миллисекунд, поэтому точку съемки цветного изображения нужно корректировать для корректного наложения.Приложение, которое необходимо разработать, должно производить геометрическую реконструкцию сцены и вычисление цвета вершин модели. Для геометрической реконструкции будет использована реализация алгоритма KINECTFUSION в библиотеке PCL - KINFU [8] (без модификации LARGESCALE), так как он позволяет использовать для сканирования различные RGB-D камеры, совместимые с OPENNI [7]. Для вычисления цвета вершин модели будет использован алгоритм Q.-Y.Zhou и V.Koltun [13], который устраняет недостатки реконструкции цвета, характерные для аналогичных приложений, путем проведения коррекции положения камеры при съемке изображения и коррекции наложения изображения на полигональную модельДля создания трехмерной реконструкции сцены или объекта необходимо создать его трехмерную модель и вычислить цвет ее вершин.Алгоритм KINFU производит постепенную геометрическую реконструкцию сцены по потоку снимков глубины. Координаты каждой точки из облака рассчитываются по формуле: где - координаты на снимке глубины, - глубина в миллиметрах (в KINFU - 16-битное число). Нормалью для каждой вершины в облаке является векторное произведение двух векторов: вектора, соединяющего текущую вершину с вершиной, расположенной над ней на снимке глубины, и вектора, соединяющего текущую вершину с вершиной, расположенной справа на снимке глубины. Для этого текущая реконструкция переводится в формат облака точек . С помощью алгоритма Iterative-Closest-Points (ICP) итеративно вычисляется матрица преобразования (размерность ), минимизирующая квадрат расстояний между вершинами преобразованного облака и (и представлены как матрицы , где - количество вершин).Вычисление цвета может проводиться одновременно с геометрической реконструкцией, интегрируя цвет в каждом вокселе. Другой подход использует сохраненные при сканировании снимки и соответствующие им положения камеры для последующего их наложения на готовую полигональную модель.Алгоритм Zhou и Koltun наложения цветных изображений, сделанных в процессе сканирования, на полигональную модель с вычислением цвета для каждой вершины подробно изложен в статье [13]. Для этого применяется два подхода, выполняемых одновременно: коррекция положения камеры (Camera pose optimization) и коррекция изображения (Nonrigid correction).
План
Содержание
Введение
1. Трехмерная реконструкция сцены с использованием RGB-D камеры
1.1 RGB-D камера
1.2 KINECTFUSION
1.3 Программные продукты для трехмерной реконструкции
1.4 Проблемы при вычислении цвета вершин
1.5 Выбор алгоритмов для реализации
2. Алгоритмы трехмерной реконструкции
2.1 Создание полигональной модели алгоритмом KINFU
2.2 Вычисление цвета вершин полигональной модели
2.3 Алгоритм Q.-Y. Zhou и V.Koltun для вычисления цвета вершин модели
2.3.1 Коррекция положения камеры
2.3.2 Коррекция наложения изображения
2.3.3 Преобразование изображений
2.3.4 Псевдокод алгоритма вычисления цвета вершин
2.4 Отбор изображений
3. Архитектура программы и особенности реализации
3.1 Выбранные инструменты
3.2 Архитектура приложения
3.3 Процесс реконструкции
3.3.1 Инициализация и геометрическая реконструкция