Библиотека pcl_octree предоставляет эффективные методы для создания иерархической структуры данных дерева из данных облака точек. Это позволяет выполнять пространственное разбиение, сглаживание и поиск по набору данных точек. Каждый узел ок-дерева имеет либо восемь дочерних узлов, либо нет. Корневой узел описывает кубическую ограничивающую рамку, которая охватывает все точки. На каждом уровне дерева этот объем подразделяется в два раза, что приводит к увеличению разрешения вокселей.
Реализация pcl_octree предоставляет эффективные алгоритмы поиска ближайших соседей, такие как «Поиск соседей в вокселе», «Поиск K ближайших соседей» и «Поиск соседей в радиусе». Она автоматически подстраивает свои размеры под набор данных точек. Набор классов узлов листьев предоставляет дополнительную функциональность, такую как проверки пространственной «занятости» и «плотности точек на воксель». Функции сериализации и десериализации позволяют эффективно кодировать структуру ок-дерева в двоичный формат. Кроме того, реализация пула памяти уменьшает затратные операции выделения и освобождения памяти в сценариях, где ок-деревья должны создаваться с высокой скоростью.
На рисунке ниже показаны ограничивающие рамки вокселей узлов ок-дерева на самом низком уровне дерева. Воксели ок-дерева окружают каждую 3D-точку с поверхности модели «кролика». Красные точки представляют данные точек. Это изображение создано с помощью octree_viewer (visualization/tools/octree_viewer).
Примеры использования библиотеки pcl_octree можно найти на странице справочника по PCL.