基于Opencv2.4.9的双目相机标定代码

本文介绍了使用Opencv2.4.9进行双目相机标定的方法,分享了作者在学习过程中整理的简洁代码,并提供了完整的源代码下载链接,包括说明文档和实验图片。
摘要由CSDN通过智能技术生成

现在很多双目相机标定的原理说明。个人看过比较好的链接如下:
http://blog.csdn.net/chenyusiyuan/article/details/5961769
http://blog.csdn.net/chenyusiyuan/article/details/5963256

我学习时,找了许多代码资料,很多不完整,或代码不够简洁。以下代码是我参考别人的代码最终写出的双目相机标定代码。
创建一个双目相机标定类CCalibratnMethod。源文件和头文件内容如下

//.cpp
//双目标定函数 输入为CAMERACALIB& cameraCalib在头文件中定义
void CCalibratnMethod::CameraCalibration(CAMERACALIB& cameraCalib)
{
    m_cameraCalib = cameraCalib;
    cvutMatrix::Matrix<double> Rl(3,3); //左边图像的旋转矩阵
    cvutMatrix::Matrix<double> Tl(3,1);//左边图像的平移矩阵
    cvutMatrix::Matrix<double> Rr(3,3); //右边图像的旋转矩阵
    cvutMatrix::Matrix<double> Tr(3,1);//右边图像的平移矩阵 
    cvutMatrix::Matrix<double> steroR(3,3);       
    cvutMatrix::Matrix<double> steroT(3,1);
    cvutMatrix::Matrix<double> intrinsic_matrixL(3,3);
    cvutMatrix::Matrix<double> distortion_coeffsL(4,1);
    cvutMatrix::Matrix<double> intrinsic_matrixR(3,3);
    cvutMatrix::Matrix<double> distortion_coeffsR(4,1);

    ifstream fsImgL(cameraCalib.m_sFilePathL); //左摄像头定标所用图像文件的路径
    ifstream fsImgR(cameraCalib.m_sFilePathR); 
    //左相机标定图像角点提取
    CornerDetection(fsImgL,m_imagePointSeqL);
    //右相机标定图像角点提取
    CornerDetection(fsImgR,m_imagePointSeqR);
    //左图角点转换
    CvSize square_size = cvSize((int)m_cameraCalib.m_dSquareSize,(int)m_cameraCalib.m_dSquareSize);
    cvutMatrix::Matrix<double> object_pointsL(bordSize.width*bordSize.height*sucesses,3);
    cvutMatrix::Matrix<double> image_pointsL(m_imagePointSeqL.cvseq->total,2);
    cvutMatrix::Matrix<int> point_countsL(sucesses,1);
    CornerConvert(m_imagePointSeqL,object_pointsL,image_pointsL,point_countsL);
    //右图角点转换
    cvutMatrix::Matrix<double> object_pointsR(bordSize.width*bordSize.height*sucesses,3);
    cvutMatrix::Matrix<double> image_pointsR(m_
各标定步骤实现方法 1 计算标靶平面与图像平面之间的映射矩阵 计算标靶平面与图像平面之间的映射矩阵,计算映射矩阵时不考虑摄像机的成像模型,只是根据平面标靶坐标点和对应的图像坐标点的数据,利用最小二乘方法计算得到[ [ix] ] .2 求解摄像机参数矩阵 由计算得到的标靶平面和图像平面的映射矩阵得到与摄像机内部参数相关的基本方程关系,求解方程得到摄像机内部参数,考虑镜头的畸变模型,将上述解方程获 得的内部参数作为初值,进行非线性优化搜索,从而计算出所有参数的准确值 [[x] ] .3 求解左右两摄像机之间的相对位置关系 设双目视觉系统左右摄像机的外部参数分别为Rl, Tl,与Rr, Tr,,即Rl, Tl表示左摄像机与世界坐标系的相对位置,Rr, Tr表示右摄像机与世界坐标系的相对位置 [[xi] ]。因此,对于空间任意一点,如果在世界坐标系、左摄像机坐标系和右摄像机坐标系中的坐标分别为Xw,, Xl , Xr,则有:Xl=RlXw+Tl ;Xr=RrXw+Tr .因此,两台摄像机之间的相对几何关系可以由下式表示R=RrRl-1 ;T=Tr- RrRl-1Tl 在实际标定过程中,由标定靶对两台摄像机同时进行摄像标定,以分别获得两台摄像机的内、外参数,从而不仅可以标定出摄像机的内部参数,还可以同时标定出双目视觉系统的结构参数 [xii] 。由单摄像机标定过程可以知道,标定靶每变换一个位置就可以得到一组摄像机外参数:Rr,Tr,与Rl, Tl,因此,由公式R=RrRl-1 ;T=Tr- RrRl-1Tl,可以得到一组结构参数R和T
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值