Я хочу создать изображение несоответствия, используя два изображения с USB-камер с низким разрешением. Я использую OpenCV 4.0.0. Кадры, которые я использую, взяты из видео. Результаты, которые я сейчас получаю, очень плохи (см. ниже).
Обе камеры были откалиброваны, и данные калибровки использовались для устранения искажений изображений. Это из-за низкого разрешения левого изображения и правого изображения?
Left:
Right:
Чтобы лучше угадать, также есть наложение обоих изображений.
Overlay:
Значения для функции cv2.StereoSGBM_create()
основаны на значениях примера кода, поставляемого с OpenCV (находится в OpenCV/samples/python/stereo_match.py
).
Я был бы очень благодарен за любую помощь или предложения.
Вот мой код:
# convert both image to grayscale
left = cv2.cvtColor(left, cv2.COLOR_BGR2GRAY)
right = cv2.cvtColor(right, cv2.COLOR_BGR2GRAY)
# set the disparity matcher
window_size = 3
min_disp = 16
num_disp = 112-min_disp
stereo = cv2.StereoSGBM_create(minDisparity = min_disp,
numDisparities = num_disp,
blockSize = 16,
P1 = 8*3*window_size**2,
P2 = 32*3*window_size**2,
disp12MaxDiff = 1,
uniquenessRatio = 10,
speckleWindowSize = 100,
speckleRange = 32
)
# compute disparity
dis = stereo.compute(left, right).astype(np.float32) / 16.0
# display the computed disparity image
matploitlib.pyplot.imshow(dis, 'gray')
matploitlib.pyplot.show()