Проблема искажения / мерцания карты диспаратности 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, но это не помогло. Любая помощь будет оценена, спасибо!
1 ответ
Видимо, это связано с синхронизацией времени камер. Я использовал пакет ros message_filter для их синхронизации.