python 或 c++ 中是否有一个库能够以一致的方式估计点云的法线?
以一致的方式,我的意思是法线的方向在表面上全局保留。
例如,当我使用 python open3d 包时:
downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
radius=4, max_nn=300))
我得到的结果不一致,其中一些法线指向内部,而其余的则指向外部。
many thanks
UPDATE: 好消息!
The 切面算法现已在 Open3D 中实现!
The 源代码和文档.
你可以打电话pcd.orient_normals_consistent_tangent_plane(k=15)
.
And k
是 knn 图参数。
原答案:
就像马克说的,如果你的点云来自多个深度图像,那么你可以调用open3d.geometry.orient_normals_towards_camera_location(pcd, camera_loc)
在将它们连接在一起之前(假设您使用的是 python 版本Open3D).
但是,如果您没有该信息,您可以使用切面算法:
-
为您的点云构建 knn-graph。
图形节点是点。如果一个点是另一个点的 k 最近邻,则两个点相连。
-
Assign weights to the edges in the graph.
The weight associated with edge (i, j) is computed as 1 - |ni ⋅ nj|
- 生成最小生成树结果图的。
- 以初始节点为树的根,
以深度优先顺序遍历树,为每个节点分配一个
与其父级的方向一致。
其实上面的算法来自于3.3节Hoppe1992年
SIGGRAPH纸从无组织点重建表面。算法也是开源.
据我所知,该算法不能保证完美的方向,但它应该足够好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)