计算机视觉5—张正友相机标定原理及实现

目录

1.相机标定原理及介绍

1.1 简介

1.2 算法流程

1.3 坐标系

1.4 外参矩阵

1.5 极大似然估计

1.6 径向畸变估计

2.算法实现

2.1 代码

    2.1.1 main.py

    2.1.2 intrinsics.py求解内参矩阵

    2.1.3 distortion.py求解畸变矫正系数

    2.1.4 extrinsics.py求解外参矩阵

    2.1.5  refine_all微调参数

2.2 实验结果及分析

2.3 实验小结


1.相机标定原理及介绍

1.1 简介

相机标定的目的和意义在于我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。而相机标定的目标是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个三维到二维的过程,使这个三维到二维的过程的函数找到反函数。

“张正友标定”是指张正友教授1998年提出的单平面棋盘格的摄像机标定方法[1]。文中提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可以。同时也相对于自标定而言,提高了精度,便于操作。因此张氏标定法被广泛应用于计算机视觉方面。

1.2 算法流程

  • 打印一张棋盘格A4纸张(黑白间距已知),并贴在一个平板上
  • 针对棋盘格拍摄若干张图片(一般10-20张)
  • 在图片中检测特征点(Harris角点)
  • 根据角点位置信息及图像中的坐标,求解Homographic矩阵
  • 利用解析解估算方法计算出5个内部参数,以及6个外部参数
  • 根据极大似然估计策略,设计优化目标并实现参数的refinement

1.3 坐标系

(1)像素坐标系:如下图所示,像素坐标系u-v的原点为O0,横坐标u和纵坐标v分别是图像所在的行和列,在视觉处理库OpenCV中,u对应x,v对应y;

(2)图像坐标系:图像坐标系x-y的原点是O1,为像素坐标系的中点,如下图所示:假设(u0,v0)代表O1在u-v坐标系下的坐标,dx和dy分别表示每个像素在横轴x和纵轴y的物理尺寸

(3)相机坐标系:如下图所示,O为摄像机光心,Zc为摄像机的光轴,和图像平面垂直;OO1为摄像机焦距;

(4)世界坐标系:如下图所示,世界坐标系是为了描述相机的位置而被引入的,任何维的旋转可以表示为坐标向量与合适的方阵的乘积。平移向量是第一个坐标原点与第二个坐标原点的偏移量;在世界坐标系下,有两个重要的参数:旋转矩阵R和平移向量T。

1.4 外参矩阵

设三维世界坐标的点为 M=[X,Y,Z,1]T ,二维相机平面像素坐标为 m=[u,v,1]T ,所以标定用的棋盘格平面到图像平面的单应性关系为: sm=A[R,t]M  ,其中

设棋盘格位于Z = 0,定义旋转矩阵R的第i列为 ri, 则有:

S\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=A\begin{bmatrix} r1 & r2 & r3 & t \end{bmatrix}\begin{bmatrix} Y\\ 0\\ 1 \end{bmatrix}=A\begin{bmatrix} r1 & r2 & t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 1 \end{bmatrix}

令 H=[h1 h2 h3]=λA[r1 r2 t]  ,于是空间到图像的映射可改为: sm=HM ,其中H是描述Homographic矩阵,H是一个齐次矩阵,所以有8个未知数,至少需要8个方程,每对对应点能提供两个方程,所以至少需要四个对应点,就可以算出世界平面到图像平面的单应性矩阵H。一般而言,求解出的R = [r1 r2 t] 不会满足正交与归一的标准。

 

1.5 极大似然估计

上述的推导结果是基于理想情况下的解,但由于可能存在高斯噪声,所以使用最大似然估计进行优化。设我们采集了n副包含棋盘格的图像进行定标,每个图像里有棋盘格角点m个。令第i副图像上的角点Mj在上述计算得到的摄像机矩阵下图像上的投影点为(K为相机内参矩阵A):

其中Ri和ti是第i副图对应的旋转矩阵和平移向量,K是内参数矩阵。则角点mij的概率密度函数为(K为相机内参矩阵A):

构造似然函数(K为相机内参矩阵A):

让L取得最大值,即让下面式子最小。这里使用的是多参数非线性系统优化问题的Levenberg-Marquardt算法[2]进行迭代求最优解(K为相机内参矩阵A)。

1.6 径向畸变估计

张氏标定法只关注了影响最大的径向畸变。则数学表达式为:

其中,(u,v)是理想无畸变的像素坐标,(u,v)(u,v)是实际畸变后的像素坐标。(u0,v0)代表主点,(x,y)是理想无畸变的连续图像坐标,(x,y)(x,y)是实际畸变后的连续图像坐标。k1和k2为前两阶的畸变参数。

化作矩阵形式:

记做:Dk=d,则可得:

计算得到畸变系数k。使用最大似然的思想优化得到的结果,即像上一步一样,LM法计算下列函数值最小的参数值(K为相机内参矩阵A):

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值