如何对organized point cloud滤波且不破坏其结构化属性
结构化点云滤波保留结构的解决方案
核心结论
可以通过调整滤波器实现逻辑和运行配置保留点云的结构化属性,你遇到的结构丢失问题是主流点云处理库(如PCL)的默认滤波逻辑导致的:默认模式会直接提取过滤后的有效点生成一维数组,自然丢失了原有球面投影得到的宽高矩阵结构。
具体调整方案
- 统一滤波逻辑:不要删除过滤掉的点的索引位置,而是将对应位置的点坐标值设置为
NaN/无穷大值,全程保留球面投影输出的1024×64的矩阵结构。结构化点云的官方判定规则就是高度>1、无效点用NaN填充,符合这个规则的点云就会被识别为结构化格式,不会被转为高度=1的非结构化数组。 - 各步骤滤波适配:
- 裁剪、自车区域提取:直接标记裁剪范围外、自车覆盖区域的网格位置为
NaN即可,不需要提取有效点重构点云 - 体素滤波:放弃默认的下采样输出一维点云的模式,基于结构化网格做邻域降采样,同一个体素对应的多个网格位置只保留一个符合要求的点,其余对应位置设为
NaN,全程保持1024×64的总点数不变 - 半径离群点去除:判断为离群点的对应网格位置直接填充
NaN,不要删除该点的索引
- 裁剪、自车区域提取:直接标记裁剪范围外、自车覆盖区域的网格位置为
效果验证
按照上述方案调整后,输出的滤波后点云会保持总点数65536、宽度1024、高度64,organized属性为1,仅dense属性变为0(存在无效点属于正常情况),所有支持结构化点云的分割、表面处理算法都可以正常识别调用,全程不需要重新做球面投影上采样。
内容的提问来源于stack exchange,提问作者Hesham Hendy
相关产品推荐
相关产品推荐

