CalibrateCamera函数校正相机畸变,输入三个图像参数,可得到相机内参矩阵(CameraMatrix),畸变矩阵(distortionCoeffs),旋转(rotationMatrix)和平移矩阵(translationMatrix),具体函数如下
CalibrateCamera(
MCvPoint3D32f[][] objectPoints, // 空间三维坐标点
PointF[][] imagePoints, // 平面二维坐标点
Size imageSize, // 图像尺寸
IInputoutputArray cameraMatrix, // 相机内参数
IInputoutputArray distortionCoeffs,// 相机畸变系数
CalibTpye calibrationType, // 标定标志
MCvTermCriteria termCriteria, // 迭代终止条件
out Mat[] rotationVectors, // 旋转向量
out Mat[] translationVectors) // 平移向量
objectPoints和imagePoints每幅图像都要实例化:
imageCount:图像的数量,Npoint:每幅图像点的数量
for( int i=0; i<imageCount;i++)
{
objectPoints[i]=new MCvPoint3D32f[Npoint];
imagePoints[i]=new PointF[Npoint];
}
创建相机矩阵Matrix<double> cameraMatrix =new Matrix<double>(3,3,DepthyType.32s,1); // 保存相机参数[fx 0 cx; 0 fy cy; 0 0 1]
创建相机畸变矩阵Matrix<double> distortionMatrix =new Matrix<double>(1,4,DepthyType.32s,1); //保存四个畸变系数 [k1, k2, p1, p2]
每幅图像都有旋转矩阵和平移矩阵
Mat[] rotation =new Mat[imagecunt];
Mat[] translation=new Mat[imagecunt];
每个矩阵都要实例化:
for(int i =0;i<imagecount;i++)
{
rotation[i]=new Mat(3,3);
translation[i]=new Mat(3,3);
}