【发布时间】:2019-05-11 03:10:20
【问题描述】:
我有一对水平对齐的立体相机,它们使用图像的完整尺寸进行了校准。
我正在通过调用 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 的输出
但是,为了提高处理速度,在处理图像时,图像将被裁剪(并可能被装箱),然后才能进行校正。这意味着校正过程不能使用图像的完整尺寸。
需要更改哪些代码才能在完成校正之前对图像进行裁剪(和分箱)?
【问题讨论】:
-
装箱了吗?那不会影响任何事情。校正不会重新调整像素值。至于裁剪,我认为校正会重新缩放图像,所以你真的必须检查数学来弄清楚如何补偿它。我怀疑这将涉及阅读 Hartley 和 Zisserman 并可能阅读 opencv 源代码。我建议通过填充白色来“取消裁剪”,然后在纠正后再次裁剪
标签: python opencv image-processing computer-vision camera-calibration