Алгоритмы трёхмерной реконструкции
Отслеживание перемещения камеры относительно реконструируемой модели. На этом шаге необходимо новое облако точек A совместить с текущей реконструкцией. Для этого текущая реконструкция переводится в формат облака точек. С помощью алгоритма Iterative-Closest-Points (ICP) итеративно вычисляется матрица преобразования (размерность), минимизирующая квадрат расстояний между вершинами преобразованного… Читать ещё >
Алгоритмы трёхмерной реконструкции (реферат, курсовая, диплом, контрольная)
Для создания трёхмерной реконструкции сцены или объекта необходимо создать его трёхмерную модель и вычислить цвет её вершин. Для геометрической реконструкции будет использоваться алгоритм 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].
Результатом работы данного алгоритма является трёхмерная полигональная модель, состоящая из списка вершин и списка полигонов, задаваемых тремя точками.