我需要带法线的点云,并找到本教程,http://www.open3d.org/docs/0.7.0/tutorial/Basic/pointcloud.html#voxel-downsampling作者首先做了voxel_down_sample()
,然后用函数estimate_normals()
估计法线。但实际上,没有voxel_down_sample()
,我们可以找到函数estimate_normals()
的法线。最重要的是,使用这些函数不应该影响数据本身。那么哪种选择是安全的呢?为什么作者首先应用voxel_down_sample()
?仅仅使用estimate_normals()
就能正确地找到法线,并且不丢失和破坏数据,就足够了吗?在任何编程语言中,有什么好的、可行的方法可以用来估计点云的法线?
发布于 2022-07-17 10:23:58
包括激光雷达在内的所有点云传感器在测量过程中都有一个固有噪声。特别是,如果给点云传感器一个特定的位置,如给定的教程中的特定位置,传感器的质量和观察者的测量技术很可能会对感测点云产生显著的影响。数据预处理是至关重要的,因为原始数据将是噪声干扰,不均匀和不一致的。如果没有预处理,您将无法获得所需的精确值,例如正常值。
就个人而言,我认为给定教程中的voxel_down_sample()
是这个准备的一个组件。除了通过基于特定网格间隔的点采样来统一原始点云之外,您还可以在一定程度上减轻流程中的噪声。或者,由于输入点云过于密集,所以可以使用它来减轻计算复杂性。
当然,即使您立即使用voxel_down_sample()
而不进行下采样,您也可以达到预期的结果。但是,我建议您通过一些满足您的数据属性的预处理过程,以便将来进行分析。
在正常估计的情况下,在其他语言或库(如matlab、pcl等)中,该过程是几乎相同的。例如,对于一个特定的o3d库,正常估计的邻域是通过球形查询抽样方法得到的,而matlab的pcnormals
则使用knn查询。主要的区别在于邻域抽样方法,其特定的超参数应该根据您的数据进行调整。真正重要的是你使用的数据,而不是估算方法。你可以自由地使用一种最适合你的环境的方法。
https://stackoverflow.com/questions/70891301
复制相似问题