Как вы можете исправить обрезанные стереоизображения в OpenCV? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть пара горизонтально выровненных стереокамер, которые были откалиброваны с использованием полного размера изображений.

Я исправляюсь, вызывая cv2.initUndistortRectifyMap, чтобы получить карту для каждой камеры, а затем cv2.remap

При использовании полноразмерных изображений это выглядит следующим образом:

map1, map2 = cv2.initUndistortRectifyMap(camera_matrix_1, dist_coeffs_1, R1, P1, (w, h), cv2.CV_16SC2)
map3, map4 = cv2.initUndistortRectifyMap(camera_matrix_2, dist_coeffs_2, R2, P2, (w, h), cv2.CV_16SC2)
rectified1 = cv2.remap(img1, map1, map2, cv2.INTER_LINEAR)
rectified2 = cv2.remap(img2, map3, map4, cv2.INTER_LINEAR)

Где параметры для cv2.initUndistortRectifyMap являются выходными данными cv2.stereoCalibrate и cv2.stereoRectify

Однако для повышения скорости обработки изображения будут обрезаны (и потенциально могут быть скопированы) во время обработки, прежде чем их можно будет исправить.Это означает, что процесс исправления не может использовать полный размер изображения.

Что необходимо изменить, чтобы заставить код работать с кадрированием (и объединением) изображений перед выпрямлениемсделано?

1 Ответ

0 голосов
/ 09 января 2019

Если вы хотите обрезать и изменить размер (масштабировать) оригинал img1 и img2 и использовать его после калибровки, вам необходимо изменить camera_matrix_1 и camera_matrix_2.Кадрирование меняет главную точку, масштаб меняет фокусное расстояние.Но результат (вывод) rectified1 и rectified2 не изменит свой размер: w, h.Если вы хотите получить выходное изображение меньшего размера, вам нужно изменить P1 и P2.

z 0 sx
0 z sy * camera_matrix  ->  camera_matrix'
0 0 1 

Были z - масштабный коэффициент, s - смещение центра обрезанного изображения.Масштаб и смещение могут быть разными для camera_matrix и P.Не забудьте заново создать map1, map2 ... используя initUndistortRectifyMap с новыми параметрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...