cv2.StereoSGBM_create() 和 cv2.StereoBM_create() 函数在 opencv3 上的视差映射有什么区别?

What is the difference between cv2.StereoSGBM_create() and cv2.StereoBM_create() functions for disparity mapping on opencv3?

我正在尝试了解 opencv 的视差映射函数我遇到了两种方法 cv2.StereoSGBM_create 和 cv2.StereoBM_create 我不太明白其中的区别。

另外,numDisparities 或 setSpeckleRange 等函数的属性是什么

文档页面底部给出了所有参数的定义here

在块匹配或 cv2.StereoBM_create() 中,通过比较每个 'block' 像素的绝对差之和 (SAD) 来计算视差。在半全局块匹配或 cv2.StereoSGBM_create() 中强制相邻块具有相似的差异。这会创建更完整的视差图,但计算成本更高。

讨论 'block matching'

的论文

讨论 'semi-global block matching'

的论文