zoukankan      html  css  js  c++  java
  • 摄像机标定

      由于经常需要进行摄像机标定,所以对张正友标定算法做了一个总结。其实可以参考以下博客:

    http://blog.csdn.net/u010128736/article/details/52860364

    http://blog.csdn.net/pinbodexiaozhu/article/details/43373247

    一、相机模型

      要理解摄像机标定,首先要理解基于小孔成像的相机成像模型,下面分析小孔成像模型并给出整个投影过程。

      如图所示,(X,Y,Z)表示物体在相机坐标系(以光心为坐标原点,光轴为Z轴,如上图所示),(X',Y')表示物体在成像平面上的坐标,则根据三角形相似 可以得出:

    去负号可得(表示物理成像面在光心之前,不影响计算):

      上面的过程表示将一个相机坐标系下的一点投影到了相机成像面上,下面则要将物理成像面(物理成像坐标系)上的点转换到像素面(像素坐标系)上,像素坐标系原点一般定义在左上角,故物理成像面到像素成像面可以描述成一个缩放加一个平移:

    其中:dx,dy为传感器单个像素在不同方向上的长度,cx,cy图像像素的中心值。

    故,结合前面小孔成像可得:

    的物理意义为焦距长度上像素个数。

      将上面的结论写成矩阵形式即为:

    这里的K矩阵就是我们需要标定的相机内参数。

       通常情况下,我们不知道一个点在相机坐标系下的坐标,但却可以任意定义一个世界坐标,每一个点都有其绝对的世界坐标值,如果要得到相机坐标系的坐标值,需要求解相机的位姿矩阵,即外参:

    这里的Pw为世界坐标系下一点,R,t为旋转和平移矩阵,T表示位姿矩阵(含旋转和平移),也称为外参矩阵。

      总结前面的投影过程为:

       相机标定还必须考虑的一点是畸变参数,畸变可以分为径向畸变、切向畸变、薄棱镜畸变等,下图描述了切线方向和半径方向的畸变示意图:

    径向畸变又可分为两种,桶形和枕形失真,它是由镜头引入的:

    切向畸变主要是传感器和镜头的不平行引入的:

    这里只给出径向和切向畸变的数学模型,具体可以参考:

    径向畸变多项式: 

     

    其中,

     

    切向畸变多项式:

    一般畸变系数包含上述k1,k2,p1,p2,k3。

     二、张正友标定算法

       基本方程:

    根据前面的投影过程,下述投影过程容易理解,其中s为任意比例系数:

    在张氏标定法中,通常假设模型平面在世界坐标系的Z=0的平面上,所以上式可以整理为:

    简写为:

    其中H称为单应矩阵,反映的是Z=0平面到像素平面的变换关系:

    张氏标定法中棋盘格之间的距离是已知的,以9*6的棋盘格为例,每个方格的距离应是30mm,也就是每个角点的世界坐标是已知的,像素坐标通过角点检测获得,故单应矩阵现在是可以求取的(至于如何求取单应矩阵,还请自行了解),最少使用4个点可以求得单应矩阵。

      下面则是求解各个矩阵,首先令H为:

    则容易得出以下结论:

     由于旋转矩阵的单位正交性,所以有以下约束存在:

    故可以得到两个关于内参的基本方程:

    因此,按照前面的分析,一个单应矩阵可以获得两个K的约束,故最少需要2幅图像才能求得四个内参,如果是5个内参,至少需要3幅图像。(单应矩阵的求取方法要求每幅图像有至少4个对应点。)

      具体的求解方法由于不涉及标定理论,就不再展示,但可以参考计算机视觉或机器视觉书,上面有详细的计算过程。

    三、小结

      标定结果应该至少包含以下内容:

      张氏标定法应用广泛,在OpenCV中给出张氏标定的函数接口,所以应用也是非常方便,对于大部分的相机标定任务张氏标定法都能胜任。

  • 相关阅读:
    汇编 | 寄存器内存访问内存中字的存储
    机器学习 | 鸢尾花分类项目实战
    机器学习 | 剖析感知器算法 & Python实现
    机器学习 | 机器学习简介
    用 shell 脚本做命令行工具扩展
    基于预计算的实时环境光照(Real-time Environment Lighting Based On Precomputation)
    Java-jvm调优文档摘要
    Probius+Kubernetes任务系统如虎添翼
    Django+Ansible构建任务中心思路
    【多线程】Android多线程学习笔记——线程池
  • 原文地址:https://www.cnblogs.com/mafuqiang/p/7111184.html
Copyright © 2011-2022 走看看