使用OpenCV / Matlab,我正在计算视差图。我使用OpenCV SGBM函数来获取它。
结果很好。我的图像有点杂音。使用Matlab中的medfilt2,我消除了很多不良像素。
但是,在噪声比实际数据存在更多的地方,将创建离群值区域(位于植物下方的东西)。我想删除所有。我正在寻找更好的方法吗?
使用中值滤波器时,至少图像投影到地平面上的点更少,而在图像顶部没有任何东西的位置上生成的点更少。
我的假设是:
我不确定该怎么做。我在寻找一种不错的过滤方法,也许可以帮到我。我也可以使用Matlab和OpenCV。
这是我的图像示例:
带噪点的视差图(左)和带medfilt的视差图(右)
用噪声视差图生成的点云。
用medfilt视差图生成的点云。
编辑
medfilt2的问题是我使用的窗口大小为65。所以这对大型植物很有用,但是靠近地面的植物失去了形状,变得圆滑并与地面融合。这是medfilt正常的做法。但是我想避免这种情况,我正在寻找一个过滤器,该过滤器可以提供更好的结果,并最终减少噪音。
最佳答案
您可以给PointCloudLibrary中的StatisticalOutlierRemoval
拍照。您可以找到有用的教程here以及示例。