OpenCV:相机标定函数和程序( 四 )


                OutputArray jacobian=noArray(), 
                double aspectRatio=0 ); 
第一个参数objectPoints, 为相机坐标系中的三维点坐标;
第二个参数rvec为扭转标的目的量, 每一张图像都有本身的扭转标的目的量;
第三个参数tvec为平移标的目的量, 每一张图像都有本身的平移标的目的量;
第四个参数cameraMatrix为相机的内参数矩阵;
第五个参数distCoeffs为相机的畸变矩阵;
第六个参数imagePoints为每一个内角点对应的图像上的坐标点;
第七个参数jacobian是雅可比行列式;
第八个参数aspectRatio是跟相机传感器的感光单位有关的可选参数, 若是设置为非0, 则函数默认感光单位的dx/dy是固定的, 会依此对雅可比矩阵进行调整;
②误差计较:以opencv里的norm把这里的两个通道别离分隔来计较的(X1-X2)^2的值, 然后同一乞降, 最后进行根号;
double norm(InputArray src1,
 InputArray src2,
           int normType=NORM_L2,
InputArray mask=noArray());
以图片的亚像素角点坐标和按照标定成果把空间三维坐标点映射到图像坐标点的对比:

OpenCV:相机标定函数和程序



OpenCV:相机标定函数和程序



OpenCV:相机标定函数和程序



5图像矫正:操纵标定成果对图像进行矫正
方式一:initUndistortRectifyMap和remap相连系实现 。
initUndistortRectifyMap计较畸变映射, remap把求得的畸变映射应用到图像上 。
void initUndistortRectifyMap(InputArray cameraMatrix,
 InputArray distCoeffs, 
                         InputArray R,
InputArray newCameraMatrix, 
                         Size size,
int m1type,
OutputArray map1,
OutputArray map2 ); 
第一个参数cameraMatrix为之前求得的相机的内参矩阵;
第二个参数distCoeffs为之前求得的相机畸变矩阵;
第三个参数R, 扭转矩阵;
第四个参数newCameraMatrix, 输入的校正后的3X3摄像机矩阵;
第五个参数size, 摄像机采集的无掉真的图像尺寸;
第六个参数m1type, 界说map1的数据类型, 可所以CV_32FC1或者CV_16SC2;
第七个参数map1和第八个参数map2, 输出的X/Y坐标重映射参数;
void remap( InputArray src,
OutputArray dst, 
          InputArray map1,
InputArray map2, 
          int interpolation,
int borderMode=BORDER_CONSTANT, 
          const Scalar& borderValue=https://vvvtt.com/article/Scalar());
第一个参数src, 输入参数, 代表畸变的原始图像;
第二个参数dst, 矫正后的输出图像, 跟输入图像具有不异的类型和大小;
第三个参数map1和第四个参数map2, X坐标和Y坐标的映射;

猜你喜欢