Алгоритмы трехмерной реконструкции, Создание полигональной модели алгоритмом KinFu - Программа трехмерной реконструкции сцены по изображениям и данным сканирования глубины

Для создания трехмерной реконструкции сцены или объекта необходимо создать его трехмерную модель и вычислить цвет ее вершин. Для геометрической реконструкции будет использоваться алгоритм KinectFusion, реализованный в библиотеке PCL как KinFu.

Создание полигональной модели алгоритмом KinFu

Алгоритм KinFu производит постепенную геометрическую реконструкцию сцены по потоку снимков глубины. Алгоритм состоит из следующих основных шагов:

1. Получение снимка глубины с RGB-D камеры и его конвертация в облако точек. Для конвертации используются параметры камеры:

- фокусные расстояния камеры;

- координаты центра изображения.

Координаты каждой точки из облака рассчитываются по формуле:

Где - координаты на снимке глубины, - глубина в миллиметрах (в KinFu - 16-битное число). Нормалью для каждой вершины в облаке является векторное произведение двух векторов: вектора, соединяющего текущую вершину с вершиной, расположенной над ней на снимке глубины, и вектора, соединяющего текущую вершину с вершиной, расположенной справа на снимке глубины.

2. Отслеживание перемещения камеры относительно реконструируемой модели. На этом шаге необходимо новое облако точек A совместить с текущей реконструкцией. Для этого текущая реконструкция переводится в формат облака точек. С помощью алгоритма Iterative-Closest-Points (ICP) итеративно вычисляется матрица преобразования (размерность ), минимизирующая квадрат расстояний между вершинами преобразованного облака и ( и представлены как матрицы, где - количество вершин). В KinFu применяется модификация алгоритма ICP, устойчивая к погрешностям и делающая предположение, что углы поворота камеры являются небольшими, позволяя принять и [8]. Упрощенный алгоритм позволяет ускорить вычисления, но не находит решения при больших углах поворота. Полученная матрица используется для определения текущего положения камеры.

    3. Интеграция нового облака точек в текущую реконструкцию. Текущая реконструкция представлена в виде трехмерного равномерного воксельного пространства ограниченного объема. В каждом вокселе хранится значение, называемое Truncated Signed Distance Function (TSDF). Это значение показывает скользящее среднее расстояния от центра вокселя до предполагаемой поверхности объекта. Значение функции отрицательное, когда воксель находится за поверхностью сцены, и положительное, когда воксель находится перед поверхностью. Через те воксели, в которых функция меняет знак, проходит поверхность реконструируемой сцены. Преобразованное новое облако точек, полученное на предыдущем шаге, используется для обновления значений TSDF. 4. Визуализация текущей реконструкции. Визуализация используется для контроля над процессом реконструкции и для получения текущей карты глубины, которая используется алгоритмом ICP для оценки смещения камеры. Визуализация представляется в виде двумерного изображения, каждый пиксель которого вычисляется путем прохождения луча через воксельный объем до ближайшего вокселя (raycasting), в котором функция TSDF меняет знак. В этой точке вычисляются координаты и нормаль, по которым генерируется трехмерное изображение. 5. Получение готовой реконструкции. Воксельный объем преобразуется в облако точек с нормалями и триангулируется для получения полигональной модели. Для триангуляции в KinFu применяется алгоритм Marching Cubes [6].

В реализации KinFu в PCL все шаги алгоритма выполняются параллельно на графическом процессоре, что позволяет достичь скорости, приемлемой для реконструкции в реальном времени.

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

Похожие статьи




Алгоритмы трехмерной реконструкции, Создание полигональной модели алгоритмом KinFu - Программа трехмерной реконструкции сцены по изображениям и данным сканирования глубины

Предыдущая | Следующая