OpenCV SGBM 参数解释

@param minDisparity 最小可能的视差值。 通常情况下,它为零,但有时。 校正算法可以移动图像,因此需要相应调整该参数。 。

@param numDisparities 最大视差减去最小视差。 该值始终大于 。 零。 在当前的实现中,该参数必须能被 16 整除。

@param blockSize 匹配的块大小。 它必须是奇数 \\>=1 。 正常情况下,应该是。 3..11 范围内的某处。 。

@param P1 控制视差平滑度的第一个参数。 见下文。 。

@param P2 控制视差平滑度的第二个参数。 值越大差异越平滑。

P1 是相邻像素之间视差变化正负 1 的惩罚 。

P2 是对邻居像素之间视差变化大于 1 的惩罚。

 该算法需要 P2 > P1 。 请参阅stereo_match.cpp 示例,其中一些相当不错。

显示 P1 和 P2 值(

分别为

8*number_of_image_channels*blockSize*blockSize 和 32*number_of_image_channels*blockSize*blockSize )。 。

@param disp12MaxDiff 左右方向允许的最大差异(以整数像素为单位)。

差异检查。 将其设置为非正值以禁用检查。 。

@param preFilterCap 预过滤图像像素的截断值。

        先说算法。 计算每个像素的 x 导数并按 [-preFilterCap, preFilterCap] 间隔剪辑其值。 。 结果值被传递到 Birchfield-Tomasi 像素成本函数。 。

@param uniquenessRatio 最佳(最小)计算成本函数的百分比保证。 值应该“赢得”第二个最佳值,以认为找到的匹配正确。 通常一个值在 5-15 范围内就足够了。 。

@param speckleWindowSize 考虑噪声斑点的平滑视差区域的最大尺寸。 并作废。 将其设置为 0 以禁用散斑过滤。 否则,将其设置在 . 50-200 范围。 。

@param speckleRange 每个连接组件内的最大视差变化。 如果做散斑的话。 过滤时,将参数设置为正值,它会隐式乘以16。 通常,1 或 2 就足够了。 。

@param mode 将其设置为 StereoSGBM::MODE_HH 以运行全面的两遍动态编程。 算法。 它将消耗 O(W*H*numDisparities) 字节,这对于 640x480 立体声和 . 对于高清尺寸的图片来说巨大。 默认情况下,它设置为 false 。 。 。 第一个构造函数使用所有默认参数初始化 StereoSGBM。 所以,你只需要做。 将 StereoSGBM::numDisparities 设置为最小值。 第二个构造函数使您能够设置每个参数 到自定义值。

你可能感兴趣的:(双目立体匹配,机器人视觉)