Проблема искажения / мерцания карты диспаратности OpenCV

Итак, я пытаюсь использовать 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, но это не помогло. Любая помощь будет оценена по достоинству, спасибо!


person user3084686    schedule 29.07.2020    source источник


Ответы (1)


Видимо, это связано с синхронизацией времени камер. Я использовал пакет ros message_filter для их синхронизации.

person user3084686    schedule 29.07.2020