0

所以我试图使用 CV2.StereoSGBM_create 在凉亭模拟中获得视差图。并使用 WLS 过滤器处理视差。但是,我的 StereoSGBM 地图似乎偶尔会出现失真问题。这是正常的图像: 在此处输入图像描述

这是失真: 在此处输入图像描述

对于 SGBM,我的代码是:

        stereoLeft = cv2.StereoSGBM_create(
    minDisparity = 0,
    numDisparities = 16,
    blockSize = 9,
    uniquenessRatio = 50,
    speckleRange = 1,
    speckleWindowSize = 190,
    disp12MaxDiff = 0,
    P1 = 91,
    P2 = 289
    )
    left_disp = stereoLeft.compute(grayLeft,grayRight)
    norm_image = cv2.normalize(left_disp, None, alpha = 0, beta = 1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
    cv2.imshow("SGBM", norm_image)
    cv2.imshow("SGBM", norm_image)
    cv2.waitKey(1)

由于 WLS 过滤图像是从 SGBM 生成的,我认为问题在于 SGBM 而不是 WLS 过滤图像。我尝试修改 SGBM 的参数,但没有帮助。任何帮助将不胜感激,谢谢!

4

1 回答 1

0

显然,它与相机的时间同步有关。我使用 ros 的 message_filter 包来同步它们。

于 2020-07-29T17:05:13.067 回答