删除Point Cloud中的异常值 [英] Remove outlier in Point Cloud

查看:468
本文介绍了删除Point Cloud中的异常值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用OpenCV / Matlab,我正在计算一个视差图。我使用OpenCV SGBM函数来获取它。
结果很好。我的形象中有一些噪音。用Matlab中的medfilt2,我删除了很多坏像素。但是,在噪声比实际数据更多的情况下,这会产生异常值区域(Thing under the plant)。我想删除所有。我正在寻找更好的方法来做到这一点?

使用中值滤波器,至少图像在地平面上获得的点较少,在地平面上的点较少



我的推测是:


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



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



这里有一个我的图像的例子:

Disparity带有噪音的地图(左)和带有金属过滤的视差地图(右)

使用噪音视差图生成的点云。

用medfilt视差图生成的点云。



编辑



medfilt2的问题在于我使用65的窗口大小,所以对于大工厂,但靠近地面的植物失去了形状,变得圆润并与地面融合。这是正常的,这是medfilt做的。但我想避免这一点,我正在寻找一个结果更好,噪音更小的过滤器。

>你可以从PointCloudLibrary一次性地提供 StatisticalOutlierRemoval 。您可以在此处找到一个有用的教程以及一个示例。


With OpenCV/Matlab, I'm computing a disparity map. I use OpenCV SGBM function to get it. The result are good. I got a bit of noise in my image. With medfilt2 in Matlab, I remove a lot of bad pixels.

But where the noise is more present than the real data, That create outliers zone (Thing under the plant). I would like to remove all. I'm looking for a better way to do it ?

With the median filter, at least the image get less point projected on the ground plane and less point generated in the top of image where there nothing.

My supposition is :

  • Remove more noise with a better disparity
  • Doing pre-processing on disparity map before reprojectionImageTo3D (OpenCV)
  • Doing post-processing on point cloud to remove outlier with Z coordinate and maybe color

I'm not sure how to do it. I looking for nice filtering method that maybe can help me for that. I can work with Matlab and OpenCV as well.

Here an example of my image I have :

Disparity map with noise(Left) and Disparity map with medfilt(Right) Point cloud generated with noisy disparity map. Point cloud generated with medfilt disparity map.

EDIT

The problem of the medfilt2 is that I'm using a window size of 65. So it good for the big plant, but the plant near the ground lose their shape and get rounded and fusion with the ground. It normal this is what medfilt do. But I would like to avoid that, I'm searching for a filter that give better result and less noise at the end.

解决方案

You could give the StatisticalOutlierRemoval from the PointCloudLibrary a shot. You can find a useful tutorial here, along with an example.

这篇关于删除Point Cloud中的异常值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆