在opencv SGBM中,当我将名为numDisparities的参数设置得更大时,为什么视差图的左侧部分会变暗?

问题描述 投票:0回答:1

当使用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个回答
0
投票

这是因为搜索范围。使用不存在差异来完成立体匹配。换句话说,仅在具有numdisparity参数的右图像中搜索左图像中的像素A.为了从左边向左边搜索,左边的部分被丢弃了。

为了使这个区域充满,通常它们都会左右移动,右边是左边的差异,并进行LR一致性检查。

© www.soinside.com 2019 - 2024. All rights reserved.