matlab - 删除点云中的异常值

标签 matlab opencv filter point-cloud-library outliers

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

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

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

我的假设是:

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

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

    这是我的图像示例:

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

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

    用medfilt视差图生成的点云。

    编辑

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

    最佳答案

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

    关于matlab - 删除点云中的异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20269594/

    相关文章:

    Matlab - 稀疏矩阵系统分辨率

    c++ - 使用 giflib 段错误 C++ 提取帧

    c++ - 在opencv中划分两个矩阵

    Matlab:每行或列的第一个非零元素

    python - 在 numpy 中使用 1d 与 2d 向量的性能/标准

    c++ - OpenCV: ‘AlgorithmInfo’ 在构建 opencv_contrib 时未命名类型

    c++ - 如何使用/安装自定义 Directshow 过滤器

    javascript - 通过 Javascript 中的角色数组过滤用户对象数组

    matlab - 如何在 Matlab 中的二维扫描时间序列上应用移动中值滤波器?

    matlab - 查找列的最后一个真实元素