我有一些点云 - 即 3D坐标的集合 - 我想要重建的基础结构,即使只是近似,也是3D空间中的2D表面,带有0(图B),1(图A)或2个孔,或两个或多个此类结构的不相交联合(图C)。
每个表面都不是3D域的封闭边界(我的结构是二维的)。从数学上讲,它们是具有1,2或3个边界成分的0 2 - 流形,或者是这种结构的不相交联合。
↑“out”实际上应该由三角形组成;实际的点云不是那么明显来自球体
[例如,将一组点定义为“距离气球的距离在100到150米之间的山脉表面上的采样点”。这些点代表一个表面,可以有0个洞(山的顶部),1个洞(侧翼),2个洞(一个山谷是2座山的基础)]
我的预期输出是连接现有顶点的一组边和三角形面。我将它用于粗糙表面积估计和我的数据集的图形表示。我不需要得到的表面是完美的:如果它们的数量有限,甚至可以接受拓扑伪影(不应该存在的孔)。
我的点云有一些功能:
点的密度有些恒定,如果一组是由非连接的表面组成的,我应该能够使用阈值将它们分开
有时表面的“条带”可以缩小到单个文件点,甚至可以跳过一些点(参见示例C,左侧组件)
我知道不可能有精确的重建算法,但也许有规范的方法来最小化边缘的总长度,或总表面积,或相邻面之间的折痕角:我不确定,因为我'我不是来自计算几何领域。
如果这有帮助,我将用Java实现它,但它是我感兴趣的算法。我不介意算法是否依赖于参数,只要它不做假设不坚持我的情况。
谢谢!
答案 0 :(得分:0)
当密度接近常数时,即点之间的空间相似,两种方法对于三角测量非常有用:“Marching Cubes”和“Ball Pivot”