Matlab 去除点云中的异常值

Matlab 去除点云中的异常值,matlab,opencv,filter,point-cloud-library,outliers,Matlab,Opencv,Filter,Point Cloud Library,Outliers,使用OpenCV/Matlab,我正在计算视差图。我使用OpenCV SGBM函数来获取它。 结果是好的。我的图像中有点杂音。使用Matlab中的medfilt2,我去除了很多不好的像素 但是,当噪声比真实数据更为明显时,就会产生异常值区域(工厂下面的东西)。我想删除所有。我在寻找更好的方法 使用中值滤波,至少图像在地平面上投影的点较少,在图像顶部没有任何投影的点较少 我的假设是: 以更好的视差消除更多噪音 在重新投影图像3D(OpenCV)之前对视差图进行预处理 对点云进行后处理,以去除带有

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

但是,当噪声比真实数据更为明显时,就会产生异常值区域(工厂下面的东西)。我想删除所有。我在寻找更好的方法

使用中值滤波,至少图像在地平面上投影的点较少,在图像顶部没有任何投影的点较少

我的假设是:

  • 以更好的视差消除更多噪音
  • 在重新投影图像3D(OpenCV)之前对视差图进行预处理
  • 对点云进行后处理,以去除带有Z坐标和颜色的异常值
我不知道怎么做。我正在寻找一种很好的过滤方法,也许可以帮助我做到这一点。我也能使用Matlab和OpenCV

以下是我的图像示例:

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

编辑


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

您可以尝试一下PointCloudLibrary中的
StatisticaloutlierRemove
。您可以找到一个有用的教程和一个示例。

最终的图像是您希望实现的,还是您目前得到的?在第一种情况下,请显示此操作失败的图像,在第二种情况下,请解释您仍然需要改进的地方。无论哪种方式,请显示您使用的代码。最终是我到目前为止实现的。正如您所看到的,在工厂下面有一些异常值,我想删除。(我将编辑我的帖子,以显示正常大小的云图像,中等到小,以便更好地看到。)我已经尝试过了,但我认为我必须更多地使用参数。问题是,对于高分辨率图像(1200万像素),计算时间开始变长。OpenMP是一个并行库,可以针对不同的威胁执行多for循环。点云库还使用OpenMP库进行加速