使用Matlab做相机标定(获取相机的内外参数矩阵)

相机标定

本文章相机标定主要分为单目相机和双目相机的标定,使用Matlab进行标定。

前期准备(获取图片)

准备一个标定板,使用OpenCV程序进行拍照,拍照时尽量让标定板占据更多的画面,拍摄20张图片(可以增加或减少)。

单目标定

1.打开Matlab.界面如下图1所示。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第1张图片 图1.Matlab界面
2.点击上方“APP”功能,进入如下界面,红色部分为相机标定功能(上方为弹单目相机标定功能,下方是双目相机标定)。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第2张图片
图2.相机标定功能
3.点击单目相机标定,进入如下标定界面,点击红色部分的**“下三角”**选择“From file”,选择文件夹,选择照片。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第3张图片
图3.选择文件夹
4.选择照片后,进入如下界面,选择标定板的大小(单位 mm),我的设置为25mm。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第4张图片
图4.设置标定板大小

5.参数设置。Radial Distortion.畸变参数(需理解畸变参数含义)。2 Coefficients 表示计算2个畸变参数:k1/k2;3 Coefficients 表示计算3个畸变参数:k1/k2/k3。一般来说选择计算2个畸变参数即可。计算3个畸变参数时,k3值比较小,大概量级为1e-5,可以忽略(实际计算过程中,如果考虑太多高阶的畸变参数,会导致标定求解的不稳定。如果选择了计算3个畸变参数,需要注意畸变矩阵的排列顺序:[k1,k2,p1,p2,k3])。

点击**“Calibrate”**开始标定。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第5张图片
图5.参数设置
6.标定参数误差。如图6中的红色部分是标定误差,标定误差平均值小于0.3个像素,相机参数可用。(从标定误差中可以看出每张照片的误差,如果某张照片误差过大,可以在左侧图片列表中将其删除,重新标定)。

使用Matlab做相机标定(获取相机的内外参数矩阵)_第6张图片
图6 标定误差
7.点击图7中的红色部分进行参数保存。会出现图8的命令框,点击确定即可。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第7张图片
图7 参数保存
使用Matlab做相机标定(获取相机的内外参数矩阵)_第8张图片
图8 命令框
8.参数保存后,关闭标定界面,会出现图9界面。(工作区内的文件即为标定参数,双击会出现图10界面)
使用Matlab做相机标定(获取相机的内外参数矩阵)_第9张图片
图9 标定之后的主界面
使用Matlab做相机标定(获取相机的内外参数矩阵)_第10张图片
图10 标定结果
其中,“RadiaDistortion”即为相机的畸变矩阵,“IntrinsicMatrix”即为内参矩阵。

双目标定

双目标定与单目标定几乎相同。
1.导入左右相机的图片。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第11张图片
图 11 双目相机的文件导入
2.如图12所示为,导入双目相机之后的图片,下方为平均误差分析区域。导入图片后设置**“Radial Distortion”,之后点击“Calibrate”开始标定。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第12张图片
图12 双目相机文件导入之后的界面
3.标定结束后保存参数,出现如下界面。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第13张图片
图13 保存参数
4.关闭标定界面,返回主界面查看参数,(点击主界面
工作区**内的文件,查看参数。如图14所示)。其中CameraParameters1,为左相机参数;CameraParameters2,是右相机参数;RotationOfCamera2为旋转矩阵,TranslationOfCamera2是平移矩阵。
使用Matlab做相机标定(获取相机的内外参数矩阵)_第14张图片
5.使用OpenCV中的stereoRectify函数可以获得其他参数矩阵(校正旋转矩阵Rl,Rr,重投影矩阵Q,投影矩阵P等)。

参考文档:
原文链接:https://blog.csdn.net/leonardohaig/article/details/81254179

你可能感兴趣的:(使用Matlab做相机标定(获取相机的内外参数矩阵))