点云的一致法线计算

问题描述 投票:0回答:1

是否有python或c ++中的库能够以一致的方式估算点云的法线?以一致的方式,我的意思是法线的方向在表面上被全局保留。

例如,当我使用python open3d软件包时:

downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
    radius=4, max_nn=300))

我得到的结果不一致,其中某些法线指向内部,而其他法线指向外部。

非常感谢estimated normals (black lines indicate outside directed normals)

graphics 3d point-cloud-library point-clouds open3d
1个回答
0
投票

如果您知道从每个点捕获的视点,则可以将其用于定向法线。我认为情况并非如此-因此,考虑到您的情况(似乎是水密的并且被均匀采样),网格重建很有希望。

PCL库在surface module中提供了许多替代方案。为了正常估算,我将从以下任一位置开始:

尽管很简单,但它们应该足以生成单个连贯的网格。

一旦有了网格,每个三角形就会定义一个法线(叉积)。重要的是要注意,网格不仅是独立面的集合。面已连接,并且这种连通性在整个网格上实现了一致的方向。

pcl::PolygonMesh是“ half edge data structure”。这意味着每个三角形面都由有序的一组顶点定义,这些顶点定义了方向:顶点的顺序=>叉积的顺序=>定义明确的法线

您既可以使用网格物体(最近的邻居)中的法线,也可以计算出低分辨率的网格物体,然后使用它来调整云的方向。

© www.soinside.com 2019 - 2024. All rights reserved.