OpenCV 文档中没有充分解释 Konolige 块匹配算法的应用。CvStereoBMState 的参数影响由 cv::StereoBM 计算的视差的准确性。但是,这些参数没有记录。我将在下面列出这些参数并描述我所理解的。也许有人可以添加参数的描述,这些都不清楚。
- preFilterType:确定在计算视差之前对图像应用哪个过滤器。可以是 CV_STEREO_BM_XSOBEL(Sobel 滤波器)或 CV_STEREO_BM_NORMALIZED_RESPONSE(可能与平均强度不同???)
- preFilterSize:前置过滤器的窗口大小(宽度=窗口高度,负值)
- preFilterCap:将输出剪辑到 [-preFilterCap, preFilterCap]。区间外的值会发生什么变化?
- SADWindowSize:左侧和右侧图像中比较窗口的大小,其中计算绝对差的总和以找到相应的像素。
- minDisparity:考虑的最小视差。默认为零,如果可能出现负视差,则应设置为负值(取决于相机视图之间的角度和被测物体到相机的距离)。
- numberOfDisparities:视差搜索范围 [minDisparity, minDisparity+numberOfDisparities]。
- textureThreshold:仅在纹理大于(或至少等于?)此阈值的位置计算视差。纹理是如何定义的???周围窗口的差异???
- uniquenessRatio:引自 calib3d.hpp:“仅当 SAD(d) >= SAD(d*) (1 + uniquenessRatio/100.) 对于搜索范围内的任何 d != d +/-1 时,才接受计算的差异 d*。 "
- 斑点范围:不确定。
- 尝试更小的Windows:???
- roi1, roi2: 只计算这些区域的视差???不确定。
- speckleWindowSize:不确定。
- disp12MaxDiff:不确定,但 calib3d.hpp 中的注释说,执行了左右检查。猜测:像素从左图匹配到右图,从右图匹配到左图。仅当原始左侧像素和后向匹配像素之间的距离小于 disp12MaxDiff 时,差异才有效。