张正友标定法_相机标定(张正友标定算法)解读与实战二

本文深入解析张正友标定法,通过拍摄棋盘格估算相机内参和姿态。介绍了从2D-3D点对应到单应性矩阵的推导,阐述了相机模型、内参矩阵、外参的计算过程,并涉及畸变系数的优化。最后预告将使用C++实现该算法。
摘要由CSDN通过智能技术生成

上一篇介绍了相机模型和畸变模型,有了这个基础就可以对相机标定进行讲解了。

张正友标定法,其实就是拍摄10几张不同姿态的棋盘格,就可以估算出相机的内参和棋盘格的姿态。利用针孔相机模型,计算棋盘格三维平面的世界坐标与棋盘格图像的坐标之间的透视关系(单应性)。
具体推导过程:

有2D点m 和 3D点M

7a150c62824ad03ab5f3c3e2b95271de.png

对应的齐次坐标分别是

0651ee0fcc19a737ba7e7667beadd3eb.png

根据针孔相机模型,世界坐标系到像素坐标之间的关系:

8bd5b02d1aca37e3cc4a5eca89d0931f.png

A 就是相机的内参矩阵:

f1c6f150417a4fafbcd8a78ca768f702.png

其中a,b分别表示x,y方向的焦距, u0 , v0 表示光心坐标, γ表示x方向和y方向之间的倾斜系数,一般来说默认等于0.

我们把R用3个列向量的表示,并令Z=0

9a5404d4f9c7e4ab415210996e313c79.png

进一步简化

18fc8366af4c9dc54cf76cc50b30d16e.png

H 就是单应性矩阵。

根据R的性质可以设置两个约束条件, r1, r2 是单位正交的向量,存在以下性质:

b5afa94f222787f04dfe1cfb38c9869d.png

把H矩阵也写成3个列向量的形式,那么约束条件就可以写成

25db7f811ee02e32e6148f323c6b134d.png

展开

4b6b4c8778a011aed7891cdf7ba53265.png

可以看出这两个等式是关于下式的方程:

830c14d255bdc087e8d5d01b1cb8cff6.png

两个平面之间的单应性矩阵H 可以利用DLT计算求得,那么计算出A来,然后就可以计算其他的参数。

0fc6e10590d4635e12bee1b4532c413e.png

B 是一个对称矩阵,有6个参数需要求解,一个棋盘格有两个方程,所以至少需要拍摄3张棋盘格图像

d621362f479a78c3a3c73fabd45d0105.png

令hi 表示H矩阵第i列的向量 , 那么

a2efa367ae6ba32b55d52be097efe6cc.png

把方程组化简成Vb=0的形式

43d17afc6043f2654ed1e39c61eaa49c.png

计算出B之后,就可以对B进行分解,求得相机内参A

000e2f462c93d689f30817f72edfab6e.png

求解出A矩阵之后,相机的外参就可以求解

30275b8df85d17c12150f3256ba163d1.png

以上都是通过求解方程组,得到的初值,而做相机标定,往往需要拍摄10几张以上,那么求解的结果就不够准确,所以需要对初值进行迭代优化。
构建最大似然估计,使得目标函数求和最小

58c78048c08e87ef45c54d74fad39fef.png

如果把畸变系数也考虑进去

606024bbef22b7fd84fb540939848bfe.png

一般来说,畸变系数的求解都是放在优化函数迭代求解的,初值可以设置为0。

好了原理就讲这么多,那么开始实现吧。

下一讲,重点用C++代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值