1. 基本原理

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

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

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

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

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

图 1 示意图

那么可以得到如下式子:

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

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

2. 实验过程和步骤

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

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张棋盘图

打开matlabR2021a自带的App “Camera Calibrator”

图3 Camera Calibrator位置示意图

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

图4 运行示意图

3. 实验结果

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

图5 以摄像头为参考系

图6 以平面为参考系

图7 像素平均误差

4. 总结

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

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

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

  1. OpenCV实现张正友相机标定源代码

    本源代码基于VC++和opencv Opencv2.4.13.6版本开发,实现张正友相机标定源代码,资源包括完整源代码和12张棋盘图片,完美运行. Opencv2.4.13.6安装包下载地址:http ...

  2. 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

    from:https://blog.csdn.net/dcrmg/article/details/52939318 使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么 ...

  3. 张正友相机标定程序实现

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/hongbin_xu/article/details/78988450 前言 在前面的博客中( 三维重 ...

  4. 张正友相机标定算法详解

    张正友相机标定算法详解 1.齐次表示法与一些基本结论 1.1 点与直线的齐次表示 ​ 在射影几何中,通常用齐次方式来表达点与直线.比如p=(u,v)p=(u,v)p=(u,v)被表示成p^=(x1,x ...

  5. [毕设系列] 一、张正友相机标定

    张正友相机标定 预备知识 0.1 刚体.仿射.线性.旋转变换 0.2 什么是标定? 0.3 为什么要进行标定? 0.4 什么是畸变? 一.张正友标定法 1.1 简介 1.2 流程 1.3 畸变公式 二 ...

  6. opencv C++ 张正友相机标定

    //张正友相机标定 //https://blog.csdn.net/u010925447/article/details/77997735 #include <opencv2/core/core ...

  7. 张正友相机标定(全流程,含畸变,matlab源代码解析)

    张正友标定的具体原理很多文章已经介绍,这里主要结合源代码对其中的基本原理及本人遇到的问题进行介绍.(仅介绍基本原理供本人复习,同时方便他人,如有问题,请及时指正勿喷) 1. 标定基本思路介绍 相机标定 ...

  8. 三维重建学习(3):张正友相机标定推导

    前言 前面的几篇博客中介绍了有关相机标定的基础知识(三维重建学习(1):基础知识:旋转矩阵与旋转向量.三维重建学习(2):相机标定基础).这次介绍一个十分经典的单目相机标定方法--张正友标定,并给出数 ...

  9. 张正友相机标定算法原理与源代码(OpenCV+C++)

    摄像机的标定问题是机器视觉领域的入门问题,可以分为传统的摄像机定标方法和摄像机自定标方法.定标的方法有很多中常见的有:Tsai(传统)和张正友(介于传统和自定标)等, 摄像机成像模型和四个坐标系(通用 ...

  10. 【计算机视觉】张正友相机标定Calibration原理过程结果

    一.数学原理 1.将世界坐标转换为图像坐标: 2.图像坐标转换为像素坐标系: 3.针孔成像下的透视投影矩阵: 4.世界坐标系转换为像素坐标系 5.张氏标定法的畸变模型: 以上参考:https://bl ...

最新文章

  1. python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序
  2. Ubuntu 安装firefox中文版 (启用google翻译功能)
  3. CMake 进行调试
  4. SQL和PL/SQL的性能优化之四---联结与子查询
  5. [hackinglab][CTF][脚本关][2020] hackinglab 脚本关 writeup
  6. Kubernetes 创建pod一直处于ContainerCreating 状态解决过程
  7. ROS笔记(21) 地图
  8. 计算机一直显示配置更新开不了机怎么办,电脑开机出现配置更新怎么办
  9. meshlab点云转mesh
  10. 计算机用户guest无法删除吗,Win7怎么删除Guest账户?
  11. 规范的计算机网络规模分类,就计算机网络按规模分类而言,下列说法中规范的是( )。...
  12. http web服务器
  13. 应对新《劳动合同法》 万名华为员工自选去留
  14. 悟透JavaScript - 对象素描
  15. Python创建自己的聊天机器人
  16. 量子计算到底是个什么鬼?
  17. 主流开源流媒体服务器有哪些?
  18. 小龙虾消费大数据:规模千亿级 带动500多万就业
  19. 如何编写有多个返回值的C语言函数
  20. 脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计三

热门文章

  1. PLC面向对象编程系列之双通气缸功能块(SMART梯形图)
  2. mysql数据生成词云图,7个好用的在线词云生成工具
  3. python判断excel某单元格是否为空
  4. 年终了,大家要小心!
  5. linux下搭建测试环境
  6. 怎么用电脑录制游戏视频
  7. 生态参数反演(植被覆盖度FVC)手把手教会
  8. java 怎么去JTF边框_求助 java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?...
  9. 操作系统中的基础抽象
  10. 关于sip软电话嵌入到网页web端的学习----第一天(2)(高手指点)遇到问题了jssip