相机标定(具体过程详解)张正友、单应矩阵、B、R、T

首先先声明一点,本文介绍的方法并非很多文章中介绍的方法只是应用,直接调用matlab或者opencv的内部原有相机标定函数,本文主要介绍求解相机参数的一个大体流程。

相机标定分:内参标定、外参标定、c矩阵

内参标定:采用棋盘图或者点阵图,将相机固定(焦距、光圈等内部元素)。用相机拍摄多组不同角度的棋盘图,这点和普通的matlab的棋盘图标定类似。matlab利用棋盘图标定,它也给出了标定的外参,但是给定的并非我们所求,而是将世界坐标系定在了棋盘图上,我们需要的世界坐标系是固定不变的或者至少是与相机的相对位置不会发生改变。
内参标定输入为:像素坐标u、v和世界坐标x、y、z,该z没有定义具体的数值,因为在此处的求解不会应用到,并且我们此步也无法求得。那么这些参数怎么来的呢?u、v为图像中棋盘格的角点坐标,与其对应的x、y表示该角点在整个棋盘图下的坐标,该坐标系定在棋盘图上,因此我们拍摄5次图像,这些图像相应的坐标应该相同。为了计算时数据的变换较为方便,这里z也给出,值给0或1都行,不影响计算。
内参标定输出为:内部参数+相机畸变参数。内部参数:fu、fv、u、v;相机畸变参数:k1,k2

内参求解步骤:

1.求单应矩阵

在这里插入图片描述
这里的λ只是1/s的另一种表示,并非内参矩阵的λ,谨记
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里的h33设置为1……课本中给出的理由是它可以设置为任意数,二郎也和同事讨论过,没有定论,有一种理解有道理:计算中h33能都提到右边,那么在根据公式进行求解时,它变成几,都是对所有公式进行操作的,因此公式之间的关系不会发生改变,所求出来代表关系的h参数也不会受到影响,只是按h33进行了缩放。
比如:两边先同时除以h33(由于没有找到这里的h33=1的解释,因此二郎做了这种假设)
每个特征点,可以求得两个方程。这里有8个未知数,因此可以用4个特征点完成求解。
这里用到了棋盘格,在一张棋盘格图中,我们得到了很多(u,v)与(x,y)的对应,因此可以解出我们的单应矩阵。
这里每个棋盘格图对应了一个单应矩阵,这些单应矩阵主要的不同在于(R,t),每个棋盘图都有自己的世界坐标系,原点在棋盘图的一个角点上,这个matlab内部程序已经指定,一般情况下为左上角。此处单应矩阵的求解用到的最小二乘法。下面的推导和求解,均是建立在单应矩阵已知的情况下进行的。
本文直接调用的matlab的单应矩阵求解代码。

H = homography(img(:,tnum:tnum+snum(i)-1),world(:,tnum:tnum+snum(i)-1));

其中img代表图像坐标的uv,world代表世界坐标的xy。tnum:tnum+snum(i)-1)则是将我们拍的五组图分散开来。

2.单应矩阵构造v,进行B的求解

在这里插入图片描述
这里有人会不理解,r1=和r2=是怎么来的?其实自己可以推导一下,把A设成[3X3]的矩阵,乘进去,应该能够看到,组成了[Ar1 Ar2 Ar3],它们互相还是独立的。至于为什么A到A逆,这个是最基本的转换,左右同时左乘A逆,看一下,是不是变过来了。
在这里插入图片描述
这里的A矩阵为内参矩阵,上面两个式子其实不难证明,
第一个式子:其实是 A − 1 h 1 { {A}^{-1}}{ {h}_{1}} A1h1 A − 1 h 2 { {A}^{-1}}{ {h}_{2}} A1h2的点乘关系,如果他们垂直那么点乘便为0。
A − 1 H = A − 1 λ A [ r 1 r 2 t ] = [ r 1 r 2

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值