【问题标题】:Remove outlier in Point Cloud删除点云中的异常值
【发布时间】:2013-12-14 16:42:17
【问题描述】:

使用 OpenCV/Matlab,我正在计算视差图。我使用 OpenCV SGBM 函数来获取它。 结果很好。我的图像中有一点噪点。使用 Matlab 中的 medfilt2,我删除了很多坏像素。

但是在噪音比真实数据更多的地方,会产生异常值区域(植物下的东西)。我想全部删除。我正在寻找更好的方法?

使用中值滤波器,至少图像在地平面上投影的点更少,在图像顶部没有任何东西的地方生成的点更少。

我的猜测是:

  • 以更好的差异去除更多噪音
  • 在 reprojectionImageTo3D (OpenCV) 之前对视差图进行预处理
  • 对点云进行后处理以去除 Z 坐标和颜色的异常值

我不知道该怎么做。我正在寻找好的过滤方法,也许可以帮助我。我也可以使用 Matlab 和 OpenCV。

这是我的图像示例:

带有噪声的视差图(左)和带有 medfilt 的视差图(右) 使用噪声视差图生成的点云。 使用 medfilt 视差图生成的点云。

编辑

medfilt2 的问题是我使用的窗口大小为 65。所以它对大植物有好处,但靠近地面的植物会变形并变圆并与地面融合。这很正常,这是 medfilt 所做的。但我想避免这种情况,我正在寻找一种最终能提供更好结果和更少噪音的过滤器。

【问题讨论】:

  • 最终的图像是您希望实现的,还是您目前得到的?在第一种情况下,请显示失败的图像,在第二种情况下,请说明您仍想改进的地方。无论哪种方式,请显示您使用的代码。
  • 决赛是我目前所取得的成绩。如您所见,植物下方有一些异常值,我想删除。 (我将编辑我的帖子以显示云图像正常大小,中到小以便看清楚。)

标签: matlab opencv filter point-cloud-library outliers


【解决方案1】:

您可以试一试 PointCloudLibrary 中的 StatisticalOutlierRemoval。您可以找到有用的教程here,以及一个示例。

【讨论】:

  • 我已经尝试过了,但我觉得我必须更多地使用参数。问题是,对于高分辨率图像(1200 万像素),这个计算开始变长了。
  • OpenMP 是一个并行库,可以针对不同的威胁执行多个 for 循环。点云库也使用 OpenMP 库来加速
猜你喜欢
  • 2021-02-14
  • 2021-12-20
  • 1970-01-01
  • 2012-08-11
  • 2021-11-16
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多