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

但是,在噪声比实际数据存在更多的地方,将创建离群值区域(位于植物下方的东西)。我想删除所有。我正在寻找更好的方法吗?

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

我的假设是:

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

    我不确定该怎么做。我在寻找一种不错的过滤方法,也许可以帮到我。我也可以使用Matlab和OpenCV。

    这是我的图像示例:

    带噪点的视差图(左)和带medfilt的视差图(右)

    用噪声视差图生成的点云。

    用medfilt视差图生成的点云。

    编辑

    medfilt2的问题是我使用的窗口大小为65。所以这对大型植物很有用,但是靠近地面的植物失去了形状,变得圆滑并与地面融合。这是medfilt正常的做法。但是我想避免这种情况,我正在寻找一个过滤器,该过滤器可以提供更好的结果,并最终减少噪音。

    最佳答案

    您可以给PointCloudLibrary中的StatisticalOutlierRemoval拍照。您可以找到有用的教程here以及示例。

    09-05 05:08