【发布时间】:2016-06-11 23:12:49
【问题描述】:
opencv 中的 initUndistortRectifyMap 函数会生成 x 和 y 方向的 maap,其中包含未失真像素的坐标,它根据固有相机矩阵、失真矩阵和旋转矩阵计算这些地图。
initUndistortRectifyMap(cam1,dst1,R1,P1, imageSize, CV_16SC2, map1x,map1y);
cam1(内在相机矩阵) dst1(失真系数) R1(旋转矩阵) map1x(图像大小的新图,表示移动的 x 坐标在未失真图像中的位置) map2x((图像大小的新映射,表示偏移的 y 坐标在未失真图像中的位置) 因此,如果在失真图像中新建图像坐标 (xdistort,ydistort) 可以使用
计算未失真的x_undistort = map1x.at<short>(ydistort,xdistort);
y_undistort = map2x.at<short>(ydistort,xdistort);
我检查了未失真图像中的对应点,它们不会产生相同的点。我在 (0,0) 处检查了 map1x 的值,它包含负值,当我单击控制台查找坐标值时,它会从 (0:im_width,0:imheight) 给出相应的结果。是否有任何标准化程序?如何直接计算点而不处理整个图像。
【问题讨论】: