【发布时间】: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