Обработка изображений: плохое качество диспаритетного изображения с OpenCV - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу создать изображение с несоответствием, используя два изображения с USB-камер низкого разрешения.Я использую OpenCV 4.0.0.Кадры, которые я использую, взяты из видео.Результаты, которые я в настоящее время получаю, очень плохие (см. Ниже).

disparity

Обе камеры были откалиброваны, и данные калибровки использовались, чтобы не искажать изображения.Это из-за низкого разрешения левого изображения и правого изображения?

Left:

left

Right:

right

Для лучшего предположения также есть наложение обоих изображений.

Overlay:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...