От облака точек к поверхности (From point cloud to surface)

Автор: | 13.09.2020

Статья на стадии разработки!!!

Введение

Фотограмметрия — реконструкция поверхности 3D объекта с помощью фотографий (по одному или нескольким изображениям).

Метод реконструкции должен предполагать правильную геометрию. При этом топология и особенности поверхности определяются только из конечного набора точек выборки.

Задачу реконструкции поверхности по точкам можно сформулировать следующим образом: по набору точек выборки P, предположительно лежащих на или около неизвестной поверхности S, необходимо создать модель поверхности S’, приближающуюся к S. Поверхность S’ может быть представлена сеткой или сплайном.

Сетка — это набор треугольных (или многоугольных) смежных, неперекрывающихся граней, соединенных вместе вдоль их ребер.

Сплайн — кусочно-полиномиальная функция, которая может иметь локально очень простую форму, но в то же время быть глобально гибкой и гладкой.

Восстановление поверхности  — сложная задача:

  • Процедура реконструкции поверхности не может гарантировать точное восстановление S, поскольку у нас есть информация о S только через конечный набор точек выборки.
  • Точки обычно неорганизованы и часто зашумлены.
  •  Поверхность может быть произвольной — неизвестного топологического типа и с резкими изменениями формы.

Классификация алгоритмов перехода от облака точек к поверхности

Общая классификация алгоритмов проводится в соответствии с качеством (типом) исходных данных:

  • Неорганизованные облака точек: алгоритмы, которые используют лишь информацию про пространственное положение точек. При этом нет никаких предположений про геометрию объекта.
  • Структурированные облака точек: алгоритмы на основе структурированных данных могут учесть дополнительную информацию по точкам (например, структурные линии).

Структурные линии – это линии соединяющие точки поверхности и однозначно определяющие триангулирование участка поверхности. Каждый отрезок структурной линии при формировании цифровой модели рельефа обязательно будет являться ребром треугольника.

Наличие структурных линий значительно сокращает необходимость ручного редактирования построенной триангуляции. Можно сказать, что с их помощью можно управлять триангуляцией, т.к. именно вдоль них ориентируются стороны треугольников.

Другая классификация основана на способе представления поверхности:

  • Параметрическое представление: эти методы представляют поверхность как набор параметрических участков поверхности, описываемых параметрическими уравнениями. Затем можно соединить несколько участков вместе, чтобы сформировать непрерывную поверхность. Примеры параметрических представлений включают B-сплайн, кривые Безье.
  • Неявное представление: эти методы пытаются найти гладкую функцию.

Поверхность называется N-гладкой относительно заданной параметризации, если каждая из координатных функций x(u,v), y(u,v), z(u,v) имеют непрерывную производную до порядка N включительно.

  • Симплициальное представление: в этом представлении поверхность представляет собой набор простых объектов, включая точки, ребра и треугольники.

Классификация по использованию данных:

  • Аппроксимированные поверхности не всегда содержат все исходные точки (см. на рис. красная линия), но находятся как можно ближе к ним. Чтобы оценить правильность сетки используется функция расстояния (метод наименьших квадратов — кратчайшее расстояние точек в пространство от созданной поверхности).

Классификация алгоритмов по наличию дополнительной информации:

  • известен топологический тип поверхности (например, плоскость, цилиндр или сфера)

  • информация о структуре (чайник с носиком, ручкой и крышкой) и ориентации

Этапы перехода от облака точек к поверхности

Преобразование облака точек в поверхность состоит из четырех шагов:

Предварительная обработка:

  • статистические методы для снижение шума — устраняются ошибочные точки;
  • уменьшение избыточности ввода для сокращения времени вычислений — понижающая дискретизация, отбираются наиболее характерные точки;
  • заполнение дыр — зазоры в облаке точек закрываются добавлением (вручную или автоматически) новых точек .

Определение глобальной топологии поверхности объекта:

  • установление отношений между соседними частями поверхности
  • сортировка и рассмотрения возможных «ограничений» (например, определение структурных линий)
  • выделения особых свойств (например, кромок).

Создание многоугольной поверхности:

  • Это основная операция, которая преобразует набор точек в согласованную полигональную модель (сетку) с вершинами, ребрами и гранями.
  • Треугольная (или тетраэдрическая) сетка создается при требованиях определенного качества, например — ограничение на размер элемента сетки, отсутствие пересечения структурных линий и т. д.;
  • Хорошо известный метод строительства сетки — Делоне триангуляция (DT), который одновременно оптимизирует упомянутые выше показатели качества.На рисунке приведены диаграмма Вороного (слева) и триангуляция Делоне (справа) того же набора точек. Каждая область диаграммы Вороного состоит из части плоскости, ближайшей к этому узлу. Соединение узлов ячеек Вороного, имеющих общие границы образуют треугольники Делоне.  Критерий Делоне гарантирует, что никакая вершина не лежит внутри окружностей,  описанных вокруг любого из треугольников в сети.
  • Триангуляция выполняется в 2D или в 3D, в зависимости от геометрии входных данных. Триангуляция в 3D называется тетраэдризацией или
    тетраэдризация. Тетраэдризация — это разбиение входной домен в набор тетраэдров, которые встречаются только в общие грани (вершины, ребра или треугольники). Тетраэдризация результаты намного сложнее, чем двумерная триангуляция. Типы входных областей могут быть простыми многогранниками (сфера), непростыми многогранник (тор) или облаками точек.

Постобработка — операции редактирования  для уточнения и совершенствования многоугольной поверхности:

  • коррекция краев — грани можно разделить на две части или переместить в другое место;
  • отверстия можно заполнить многоугольными конструкциями;
  • можно уменьшить количество полигонов, сохраняя форму  и границы объекта;
  • сжатие многоугольных конструкций;
  • добавление новых вершин и корректировка координат существующих вершин.
  • удаление шипов  с помощью функций сглаживания.

Программное обеспечение для моделирования поверхностей

Программное обеспечение для моделирования поверхностей  — это пакеты (библиотеки), которые выполняют все алгоритмы и операции, описанные в предыдущих разделах.

 

Форматы файлов облака точек

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

Используемые типы файлов поддерживают как ASCII код,  передающий данные в виде строк текста, так и двоичные форматы. Каждая строка текста в файле ASCII представляет запись в виде пространственных координат (x, y, z). Дополнительная информация, такая как цвет и интенсивность, может быть включена в некоторые форматы. Файлы ASCII можно открывать в текстовых редакторах. Однако использование текста для передачи данных связано с расходами. Форматы двоичных файлов более компактны. Также требуется меньше времени для обработки и визуализации двоичных файлов, поскольку их можно проиндексировать, что позволяет читать их по частям, а не последовательно.

PCD (Point Cloud Data) — формат необработанных облаков точек

PLY — наиболее распространенный и универсальный формат для экспорта обработанных облаков точек.  Он использует списки номинально плоских многоугольников для представления объектов, с цветом, прозрачностью, нормалью поверхности, текстурой, координатами и значениями достоверности данных.

Есть две версии этих файлов: одна в формате ASCII, а другая в двоичном формате. Представление ASCII для удобства начала работы и двоичную версию для компактного хранения и для быстрого сохранения и загрузки.

PCG, RCS, RCP: форматы файлов, разработанные Autodesk специально для удовлетворения требований своих продуктов.  При необходимости файлы Autodesk можно экспортировать и импортировать в более распространенные форматы:

  • Импорт : ASC, CL3, CLR, E57, FLS, FWS, ISPROJ, LAS, PCG, PTG, PTS, PTX, RDS, TXT, XYB, XYZ, ZFS, ZFPRJ, DXF, DWG.
  • Экспорт: RCS, RCP, PCG, PTS, E57, DXF, DWG

Для помощи в преобразовании файлов можно обратиться к стороннему программному обеспечению. Однако это всегда сопряжено с риском повреждения данных. Если вы застряли в принятии решения, мы рекомендуем отдавать приоритет E57 и PLY с узлом, учитывающим простоту форматов файлов XYZ и их полезность для длительного хранения. С точки зрения совместимости эти типы файлов трудно превзойти.

Визуализация данных из PLY и PCD файлов

По ссылке   PLY Files an ASCII Polygon Format   можно получить множество файлов PLY формата. Один из них (airplane.ply) использую в программе на Python для визуализации данных.

Создаю в редакторе «Блокнот» файл  airplane.ply   с текстовкой, скопированной со страницы по указанной выше ссылке.

import numpy as np
import open3d as o3d

def main():
 cloud = o3d.io.read_point_cloud("airplane.ply") # Read the point cloud
 print(cloud)
 o3d.visualization.draw_geometries([cloud]) # Visualize the point cloud

if __name__ == "__main__":
 main()

Программа чтения PCL может правильно прочитать и PCD файл. По ссылке   получаю файл формата .pcd. (chair.pcd) и читаю его в той же программе.

cloud = o3d.io.read_point_cloud("chair.pcd")

Преобразование  PLY файла в Inventor файл

Для преобразования  PLY файла в Inventor файл использую программу на языке С. Копирую код программы по ссылке  Convert a PLY file to an Inventor file. Содержимое  файла cube.ply для тестирования программы копирую по ссылке.

 

point cloud .pcd file

Полезные ссылки: