使用[Bouguet’s Calibration Toolbox]工具箱进行相机标定

使用[Bouguet’s Calibration Toolbox]工具箱进行相机标定

写在前面

使用此方法标定相机是为了在后面继续标定投影仪,进而完成系统标定。
如果只是单纯标定相机,请移步MATLAB–相机标定教程选用matlab自带相机标定工具。当然按照此方法也可以完成相机标定,只是太过繁琐。
如果是准备标定相机+投影仪系统,那么前期标定相机必须按此方法进行。
前期的工具箱加载以及标定板拍摄图像之类内容,参见Matlab添加工具箱对相机+投影仪系统进行标定->步骤1,2

开始相机的标定

1.打开工具箱

matlab命令行输入calib_gui打开
在这里插入图片描述
选择Standard...打开Camera Projector Calibration Toolbox界面
相机标定工具箱

2.读取图像:

单击相机标定工具窗口中的Image names按钮,Matlab显示当前路径文件夹下所有图片名称,
image names
输入标定图像的基本名称(只需输入名称中前面相同部分)例如image_ 然后回车,再输入对应图像的格式,之后所有图像都将加载到内存中, Matlab窗口应如下所示:
加入图像
完整的图像集也以缩略图格式显示(此图像始终可以通过运行mosaic来重新生成)
所有图像

3.提取网格角点:

单击“相机标定工具”窗口中的Extract grid corners按钮,matlab命令行显示提取角点
回车以选择所有图像(否则,您将输入图像索引列表,例如[2 5 8 10 12],以提取图像子集的角点)。然后,选择角点查找器的默认窗口大小:wintx = winty = 5,方法是在带有wintx和 winty问题的空参数的情况下按输入 。这将导致一个大小为11x11像素的有效窗口。
提取角点
然后,第一个标定图像如图所示:
标定图像
单击矩形棋盘图案上的四个极端角。单击位置显示在以下四个图上。
点击的规则:选择第一个单击的点与关联到网格的参考框架的原点关联。可以按任意顺序单击矩形网格的其他三个点。提取角点
标定图像中会绘制出网格如图
绘制网格
matlab中显示

Processing image 1...
Using (wintx,winty)=(20,20) - Window size = 41x41      (Note: To reset the window size, run script clearwin)
Click on the four extreme corners of the rectangular complete pattern (the first clicked corner is the origin)...
Could not count the number of squares in the grid. Enter manually.
Number of squares along the X direction ([]=10) = x方向方格数量
Number of squares along the Y direction ([]=10) = y方向放个数量
Size dX of each square along the X direction ([]=100mm) = 方格的尺寸
Size dY of each square along the Y direction ([]=100mm) = 方格的尺寸

输入x方向,y方向棋盘格的数量,方格的尺寸。
matlab中显示

If the guessed grid corners (red crosses on the image) are not close to the actual corners,
it is necessary to enter an initial guess for the radial distortion factor kc (useful for subpixel detection)
Need of an initial guess for distortion? ([]=no, other=yes) 

如果预测的角点接近真实的图像角点,则可以跳过此步骤(如果图像失真不大)。在当前图像中就是这种情况:预测的角点与真实的图像角点足够接近。因此,无需通过输入对径向畸变系数的猜测来“帮助”软件检测图像拐角。按“ enter”,然后使用这些位置作为初始猜测自动提取角。然后,将自动提取图像的角点,并显示在图中(角点周围的蓝色方框表示角点查找器窗口的界限):
角点
对第二张,第三张,…,图像执行相同的步骤。例如,以下是图像2、3、4、5、6和7的检测到的角点:
角点

4.主要标定步骤:

角点提取后,点击相机标定工具中Calibration来运行摄像机标定程序。
标定分为两个步骤:首先进行初始化,然后进行非线性优化。
初始化步骤基于不包含任何镜头畸变的标定参数计算封闭式解(程序名称: init_calib_param.m)。
非线性优化步骤将所有标定参数(固有的9 DOF:焦点,主点,失真系数和6 * 20 DOF外部=> 129参数)上的总重投影误差(最小二乘)最小化。有关标定参数的完整说明,请单击该链接。通过迭代梯度下降对雅可比矩阵(程序名称:go_calib_optim.m)进行显式(闭合形式)计算来实现 优化。
标定结果
标定参数存储在许多变量中。有关它们的完整说明,请访问此页面。请注意,偏斜系数alpha_c和6阶径向失真系数(kc的最后一项)尚未估算(这是默认模式)。因此,x和y像素轴之间的角度为90度。在大多数实际情况下,这是一个很好的假设。但是,稍后将介绍在优化中引入偏斜系数alpha_c的方法。

5.显示外参

单击摄像机标定工具中的Show Extrinsic。然后以3D图的形式显示外部参数(网格相对于相机的相对位置):
外参
在该图上,帧 (O c,X c,Y c,Z c)是摄像机参考帧。红色金字塔对应于由图像平面定义的相机的有效视野。要从“以相机为中心”视图切换到“以世界为中心”视图,只需单击位于图左下角的“ 切换到以世界为中心”视图按钮。
外参
在此新图形上,每个摄像机的位置和方向都由绿色金字塔表示。再次单击切换到以相机为中心的视图按钮,可将图形返回到“以相机为中心”的图。

6.重新投影

点击相机标定工具中Reproject on images以显示网格在原始图像上的投影。这些投影是根据当前的内部和外部参数计算的。在要显示的图像问题编号中输入一个空字符串(只需按“ enter”), 即可显示([] =所有图像)以指示您要显示所有图像:
重投影
下图显示了带有检测到的角(红叉)和重新投影的网格角(圆)的前四个图像。
重投影
重新投影误差也以彩色编码的十字形显示:
error

7.误差分析

点击Analyse error显示如图,允许你去检查哪个点对应大的误差,选择图像上那个点,在matlab中会输出具体信息。退出误差分析工具,在图像上的任何位置右击。
analyse
matlab中显示error

8.保存

点击Save保存标定结果。

9.参数介绍

(后续补充)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值