张正友标定法及Matlab实现相机标定

时间:2024-03-20 14:42:25

一、张正友标定法
参考教程:https://blog.csdn.net/heroacool/article/details/50286677
https://blog.csdn.net/u010128736/article/details/52860364
1、计算单应性矩阵Honograhy
设:
张正友标定法及Matlab实现相机标定
则描述空间坐标(标定所使用的棋盘)到图像坐标的映射的关系是:
张正友标定法及Matlab实现相机标定
其中:
s: 世界坐标系到图像坐标系的尺度因子
A: 相机内参矩阵
(u0,v0): 像主点坐标
α, β: 焦距与像素横纵比的融合
γ: 径向畸变参数

设棋盘格位于Z = 0,定义旋转矩阵R的第i列为 ri, 则有:张正友标定法及Matlab实现相机标定
于是空间到图像的映射可改为:张正友标定法及Matlab实现相机标定
H是单应性矩阵Homography,可通过最小二乘,从角点世界坐标到图像坐标的关系求解
令 H 为 H = [h1 h2 h3],张正友标定法及Matlab实现相机标定
2、计算内参数矩阵
张正友标定法及Matlab实现相机标定
设H中的第i列为 hi,张正友标定法及Matlab实现相机标定
根据b的定义,可以推导出如下公式,张正友标定法及Matlab实现相机标定
张正友标定法及Matlab实现相机标定

张正友标定法及Matlab实现相机标定
可以推导出张正友标定法及Matlab实现相机标定,如果有n组观察图像,则V 是 2n x 6 的矩阵张正友标定法及Matlab实现相机标定
根据最小二乘定义,V b = 0 的解是 VTV 最小特征值对应的特征向量。
因此, 可以直接估算出 b,后续可以通过b求解内参
内部参数可通过如下公式计算(cholesky分解):张正友标定法及Matlab实现相机标定

3、计算外参数矩阵
外部参数可通过Homography求解,由 H = [h1 h2 h3] = λA[r1 r2 t],可推出
张正友标定法及Matlab实现相机标定

相机标定基本步骤:
1、打印一张棋盘格A4纸张(黑白间距已知),并贴在一个平板上
2、针对棋盘格拍摄若干张图片
3、在图片中检测特征点(Harris特征)
4、利用解析解估算方法计算出5个内部参数,以及6个外部参数
5、根据极大似然估计策略,设计优化目标并实现参数的refinement

二、基于张正友标定法用Matlab实现相机标定
拍摄工具:IPHONE 7PLUS
棋盘规格:8 * 8
棋盘格规格:21.8 * 21.8mm

采用的是matlab自带工具包实现相机标定
参考教程:https://blog.csdn.net/heroacool/article/details/51023921
点击应用程序,选择CameraCalibator
张正友标定法及Matlab实现相机标定
添加图片,点击AddImages添加图片进行标定
张正友标定法及Matlab实现相机标定
所使用的照片共15张,如下

张正友标定法及Matlab实现相机标定
张正友标定法及Matlab实现相机标定
导入图片后,输入棋盘格大小,实验中棋盘格为21.8 * 21.8mm
张正友标定法及Matlab实现相机标定
可以得到:
张正友标定法及Matlab实现相机标定
点击Calibrate,进行标定
张正友标定法及Matlab实现相机标定
绿色圈所圈出来的是棋盘的角点
张正友标定法及Matlab实现相机标定
平均误差为1.74
张正友标定法及Matlab实现相机标定
点击Export Camera Parameters,可以看到相机参数

张正友标定法及Matlab实现相机标定
在matlab工作空间输入cameraParams.IntrinsicMatrix,可查看内参矩阵、径向畸变

张正友标定法及Matlab实现相机标定

张正友标定法及Matlab实现相机标定