【问题标题】:In opencv SGBM,why the left part of the disparity map become dark when I make the parameter named numDisparities larger?在opencv SGBM中,当我使名为numDisparities的参数变大时,为什么视差图的左侧变暗?
【发布时间】:2019-08-23 15:23:36
【问题描述】:

当使用SGBM获取视差图时,如果我增加名为numisparities的参数,图片的左侧会变大。有什么问题吗?

numisparities=6*16

numisparities=12*16

numisparities=22*16

相关代码:

num = cv2.getTrackbarPos("num", "depth")
blockSize = cv2.getTrackbarPos("blockSize", "depth")
window_size = cv2.getTrackbarPos("windowSize","depth")
if blockSize % 2 == 0:
    blockSize += 1
if blockSize < 5:
    blockSize = 5


min_disp = 0
num_disp = 16 * num - min_disp
stereo = cv2.StereoSGBM_create(minDisparity=min_disp,
                               numDisparities=num_disp,
                               blockSize=blockSize,
                               P1=8 * 3 * window_size ** 2,
                               P2=32 * 3 * window_size ** 2,
                               disp12MaxDiff=1,
                               uniquenessRatio=10,
                               speckleWindowSize=100,
                               speckleRange=32
                               )
disparity = stereo.compute(imgL, imgR).astype(np.float32) / 16.0
disp = cv2.normalize(disparity, disparity, alpha=0, beta=255, 
norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)

谢谢!!

【问题讨论】:

    标签: python opencv computer-vision stereo-3d


    【解决方案1】:

    这是因为搜索范围。立体匹配是使用视差数来完成的。换句话说,左侧图像中的像素 A 仅使用 numdisparity 参数在右侧图像中搜索。对于从左到右的搜索,左边的部分被丢弃。

    为了填充这个区域,他们通常会同时进行左 w.r.to 右视差和右 w.r.to 左视差并进行 LR 一致性检查。

    【讨论】:

    • 对不起,我还是不明白为什么要丢弃左边的部分。对于一个 rectified pair ,位于 x 的左图像的像素将在右图像中从 x 搜索到 x+numdisparity?如果这是对的,为什么左边的部分被丢弃了?
    猜你喜欢
    • 2015-08-27
    • 2016-11-24
    • 2017-02-23
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2023-03-03
    • 2023-03-21
    相关资源
    最近更新 更多