删除Point Cloud中的异常值

时间:2013-11-28 15:17:47

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

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

但是,如果噪声比实际数据更多,则会产生异常区域(在工厂下面)。我想删除所有。我正在寻找一种更好的方法吗?

使用中值滤波器,至少图像在地平面上投射的点越少,图像顶部产生的点就越少。

我的假设是:

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

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

这是我的形象示例:

带噪声的视差图(左)和带有medfilt的视差图(右) Disparity map with noise. Disparity map with medfilt 用嘈杂的视差图生成点云。 Point cloud generated with noisy disparity map. 用medfilt视差图生成的点云。 Point cloud generated with medfilt disparity map.

修改

medfilt2的问题在于我使用的窗户大小为65.因此它适用于大型植物,但是靠近地面的植物会失去形状并变得圆润并与地面融合。这是medfilt的正常做法。但我想避免这种情况,我正在寻找能够在结束时提供更好结果和更少噪音的滤波器。

1 个答案:

答案 0 :(得分:0)

您可以从PointCloudLibrary中获取StatisticalOutlierRemoval。您可以找到有用的教程here以及示例。