Задача:
Дано : n точек, сильно коррелированных с 3d-выпуклым k-сторонним многоугольником, где n >> k
Найти : наиболее подходящая вогнутая оболочка, которая соответствует исходной геометрии точек
Попытки решения:
Предупреждение: псевдокод
segments = []
for each point in image:
#segment points into planes via comparing approximate normals
#actual implementation is more complicated
findSegment(image,point)
for each segment in image:
#transform coordinate system to be a
#2D-plane perpendicular to the normal of segment
transform(segment, segment.normal)
edges = findEdges(segment)
polygonHull = reconstructPolygon(edges)
#transform back to original coordinate system
transform(segment, segment.normal)
Пример:
___
| | |
| \__ ==> | ___
| | |__/ /_____
|_______| / / \_
/ /_____/
/
Вход будет просто высокой плотностьюоблако точек, которое приблизительно равномерно распределено случайными точками в плоскости многоугольника с небольшим шумом.
Выходные данные будут вершинами многоугольника в 3d точках.
Мой вопрос: есть ли лучший способ подойти к этой проблеме?Проблема с вышеуказанным решением состоит в том, что точки могут быть шумными.Кроме того, растеризация точек в 2d с последующим формированием поиска ребра довольно затратна.
Любые указатели были бы хорошими.Заранее спасибо