是否有python或c ++中的库能够以一致的方式估算点云的法线?以一致的方式,我的意思是法线的方向在表面上被全局保留。
例如,当我使用python open3d软件包时:
downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid( radius=4, max_nn=300))
我得到的结果不一致,其中某些法线指向内部,而其他法线指向外部。
如果您知道从每个点捕获的视点,则可以将其用于定向法线。我认为情况并非如此-因此,考虑到您的情况(似乎是水密的并且被均匀采样),网格重建很有希望。
PCL库在surface module中提供了许多替代方案。为了正常估算,我将从以下任一位置开始:
尽管很简单,但它们应该足以生成单个连贯的网格。
一旦有了网格,每个三角形就会定义一个法线(叉积)。重要的是要注意,网格不仅是独立面的集合。面已连接,并且这种连通性在整个网格上实现了一致的方向。
pcl::PolygonMesh
是“ half edge data structure”。这意味着每个三角形面都由有序的一组顶点定义,这些顶点定义了方向:顶点的顺序=>叉积的顺序=>定义明确的法线
您既可以使用网格物体(最近的邻居)中的法线,也可以计算出低分辨率的网格物体,然后使用它来调整云的方向。