常见的相机标定方式是张正友的棋盘格标定法,即用相机拍摄打印好的棋盘格图图像,将图像传入函数计算出相机的内参数据。
本文讲解的是将相机直接连接电脑,用matlab的相机标定工具箱通过相机实时采集一定数量的棋盘格图像,然后计算获取相机内参。
实现:
Win10,64系统
matlab R2016a
后续用途:
(一)solvepnp 单目三维位姿估计--------理论
(二)solvepnp 单目三维位姿估计--------利用二维码求解相机世界坐标
Step1 打开相机标定工具箱


在《图像处理和计算机视觉》栏 找到相机标定工具:


在弹出的上图中点击红色下拉三角,选择 “From camera” 即工具箱会读取外接相机然后实时画面获取图像。
如果此期间弹出错误,提示未安装web camera的相应的包,那么需要你额外安装下对应的包;
安装方式为:

在主页中选择 “附加功能” 选择 “Get Hardware support packages”

在网络条件好的情况选择网络安装,下一步;

查看支持安装的所有包,找到USB Webcams 这个USB相机包 文件,点击Next安装。


如此,安装了能够读取外部USB相机的包后,用matlab打开相机就不再出错了。
Step 2 读取相机开始采集图像做标定
在上一步中 From camera后,正确连接相机的情况下,会出现下图:

选择待会用相机采集图像后保存图像的路径;选择每次采集图像的间隔时间(默认5秒),选择共采集多少张图(默认20张);
选择完毕后点击Capture 进行采集;
使用方式是你可以将棋盘格打印出来后贴在墙上,拿着摄像头从各个角度拍摄采集棋盘格图像;或者你固定相机不动,将棋盘格固定在平坦物上,让棋盘格动;我选择前者。
选择Capture后会弹出下图,让你填写棋盘格网格实际物理尺寸(默认25mm),实际常用的网格图大小也差不多,我的是26mm

开始采集图像:

实际采集20张图像后即停止采集,我 在选项中选择了 3阶径向畸变系数,计算切向畸变系数。
只要你的重投影整体平均误差小于0.5像素即可:

下图是标定过程中以相机为中心视角的外参情况:

下图是以棋盘格为中心视角的外参 情况:

Step 3 导出标定数据

我们可以导出得到相机的内参信息:

上图划红线解释依次为:
径向畸变系数(3阶),切向畸变系数(2阶),世界坐标单位是mm,内参矩阵,焦距(分fx,fy),成像平面原点(理想情况是图像宽高中心位置),成像平面原点坐标(单位是像素);
获取如上信息后则可以对相机做矫正,做PnP相机位姿估计啦~
本文详细介绍使用Matlab相机标定工具箱进行实时棋盘格图像采集,计算相机内参的过程。涵盖Win10系统环境下Matlab R2016a的配置,webcamera包安装,及解决常见错误。并分享了如何采集图像、设置参数,最终导出包括畸变系数、内参矩阵在内的标定数据。
1187





