SGBM结合KITTI数据集设置参数详解

对于SGBM算法原理不多介绍啦,这里只是结合KITTI标准数据集以及opencv环境下,介绍SGBM参数的含义以及设置。
(感谢开放的学术环境,这里也只是对王泽远硕士的论文进行学习和总结,若有侵权部分,请联系作者删除。)
opencv中对于SGBM算法需要设置很多参数,这些参数都会或多或少的影响到最终匹配结果。概括来说,把这些参数分为三类:

1.预处理滤波参数

这部分参数对输入图像进行预处理,来消减光照不均匀、噪声等因素的影响。
preFilterType:预处理滤波器类型。有两种可选类型:CV_STEREO_BM_NORMALIZED_RESPONSE(归一化响应) 或者 CV_STEREO_BM_XSOBEL(水平方向Sobel算子,默认类型), 该参数为 int 型;
preFilterSize:预处理滤波器窗口大小。
preFilterCap:预处理滤波器的截断值。预处理的输出值仅保留[-preFilterCap, preFilterCap]范围内的值,参数范围:1 - 31。

2.SGBM状态参数

SADWindowSize:SAD窗口大小,容许范围是[1,11],一般应该在 3x3 至 11x11 之间,参数必须是奇数,int 型;
minDispariy:最小视差;
numberofDisparities:最大视差值与最小视差值之差;
PI,P2:控制视差变化平滑性的参数:根据半全局立体匹配优化函数的定义,选取较大的P1、P2值会较平滑的视差结果。P1是用来惩罚相邻像素点视差增减变化;P2是用来约束视差连续性的惩罚系数;
fullDP:决定是否使用双通道动态编程算法提高运算效率的布尔值参数。

3.处理参数

textureTheshold:低纹理区域的判断阈值。
uniquenessRatio:视差唯一性百分比。
speckleWindowSize:检查视差连通区域变化度的窗口大小。
speckeRange:视差变化阈值,当窗口内视差变化大于阈值时,该窗口内的视差清零

对与KITTI数据集,采用下表参数设置可以得到个较好的效果。

设置 KITTI数据集
图像分辨率 1241*376
preFilterType 63
SADWindowSize 11
P1 SADWindowSizeSADWindowSize4
P2 SADWindowSizeSADWindowSize32
minDispariy 0
numberofDisparities 64
uniquenessRatio 10
speckleWindowSize 100
spckleRange 32
FullDP 1

效果图如下:
SGBM结合KITTI数据集设置参数详解_第1张图片

你可能感兴趣的:(opencv参数设置)