700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Matlab工具箱实现张正友相机标定

Matlab工具箱实现张正友相机标定

时间:2023-01-23 04:43:54

相关推荐

Matlab工具箱实现张正友相机标定

1. 基本原理

一个二维平面中的棋盘点和一个三维空间内的棋盘点可以表示如下:

它们对应的齐次坐标和可以表示如下:

如果和是同一个点,那么他们的转换关系可以写为:

其中,是任意的比例因子,是外参矩阵,是旋转矩阵,是平移矩 阵,是相机内参矩阵,是坐标的主点,和分别是图像在和轴的比例因子, 是描述两个坐标轴倾斜角的参数。

进一步地,假定棋盘点所在平面在世界坐标系中的坐标为0,且轴与棋盘格的方向重合,原点为检测到棋盘格点的首点,如图 1 所示,其中原点为黄色矩形标记点。

图 1 示意图

那么可以得到如下式子:

则点和它在棋盘上的映射点的关系可以用单应矩阵表示如下:

这里,。显然是一个 3*3 的矩阵,自由度是 8。需要 8 个 方程即 4 组对应点,但是通常情况下,为了得到更准确的解,需要大于 4 对的对应点, 方程组就会变成超定的,此时可以使用最小二乘法进行优化得到最后的解。

2. 实验过程和步骤

原始Camera Calibration工具箱链接如下。由于其最近更新为,版本较新的matlab运行这个工具箱的代码会出现很多错误。因此,本文只采用它提供的20张棋盘图,利用matlabRa内置的工具箱完成实验。

Camera Calibration Toolbox for Matlab (stanford.edu)http://robots.stanford.edu/cs223b04/JeanYvesCalib/htmls/example.html通过下面的链接下载用于标定 20 张的棋盘图,如图 2 所示

http://robots.stanford.edu/cs223b04/JeanYvesCalib/htmls/calib_example.ziphttp://robots.stanford.edu/cs223b04/JeanYvesCalib/htmls/calib_example.zip

图2 20张棋盘图

打开matlabRa自带的App “Camera Calibrator”

图3 Camera Calibrator位置示意图

导入下载的20张图片后点击Calibrate即可完成标定。

图4 运行示意图

3. 实验结果

从图7中可以看出第5、18、19、20张图的平均误差较大,其中第5张图的平均误差最大。观察误差较大的4张图与其他16张图的不同点,猜测可能是因为棋盘偏离标准位置所导致的,这里的标准位置我认为是棋盘平面与相机方向正交或平行。

图5 以摄像头为参考系

图6 以平面为参考系

图7 像素平均误差

4. 总结

算法优点:张正友标定方法相比于经典方法显得十分灵活和简便,只需要摄像机从不同方向观测标定板即可。

局限性:摄像机拍照时通过透镜把实物投影到像平面上,但是由于透镜的精度及其他问题,得到的图像会出现失真的情况。因此我们需要考虑成像畸变的问题。透镜的畸变主要分为径向畸变和切向畸变,还有薄透镜畸变等等,但都没有径向和切向畸变影响显著。张正友标定方法只关注了影响最大的径向畸变,忽略了切向畸变,所以标定数据和实际仍存在轻微误差。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。