Matlab工具箱实现张正友相机标定
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工具箱实现张正友相机标定相关推荐
- OpenCV实现张正友相机标定源代码
本源代码基于VC++和opencv Opencv2.4.13.6版本开发,实现张正友相机标定源代码,资源包括完整源代码和12张棋盘图片,完美运行. Opencv2.4.13.6安装包下载地址:http ...
- 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)
from:https://blog.csdn.net/dcrmg/article/details/52939318 使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么 ...
- 张正友相机标定程序实现
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/hongbin_xu/article/details/78988450 前言 在前面的博客中( 三维重 ...
- 张正友相机标定算法详解
张正友相机标定算法详解 1.齐次表示法与一些基本结论 1.1 点与直线的齐次表示 在射影几何中,通常用齐次方式来表达点与直线.比如p=(u,v)p=(u,v)p=(u,v)被表示成p^=(x1,x ...
- [毕设系列] 一、张正友相机标定
张正友相机标定 预备知识 0.1 刚体.仿射.线性.旋转变换 0.2 什么是标定? 0.3 为什么要进行标定? 0.4 什么是畸变? 一.张正友标定法 1.1 简介 1.2 流程 1.3 畸变公式 二 ...
- opencv C++ 张正友相机标定
//张正友相机标定 //https://blog.csdn.net/u010925447/article/details/77997735 #include <opencv2/core/core ...
- 张正友相机标定(全流程,含畸变,matlab源代码解析)
张正友标定的具体原理很多文章已经介绍,这里主要结合源代码对其中的基本原理及本人遇到的问题进行介绍.(仅介绍基本原理供本人复习,同时方便他人,如有问题,请及时指正勿喷) 1. 标定基本思路介绍 相机标定 ...
- 三维重建学习(3):张正友相机标定推导
前言 前面的几篇博客中介绍了有关相机标定的基础知识(三维重建学习(1):基础知识:旋转矩阵与旋转向量.三维重建学习(2):相机标定基础).这次介绍一个十分经典的单目相机标定方法--张正友标定,并给出数 ...
- 张正友相机标定算法原理与源代码(OpenCV+C++)
摄像机的标定问题是机器视觉领域的入门问题,可以分为传统的摄像机定标方法和摄像机自定标方法.定标的方法有很多中常见的有:Tsai(传统)和张正友(介于传统和自定标)等, 摄像机成像模型和四个坐标系(通用 ...
- 【计算机视觉】张正友相机标定Calibration原理过程结果
一.数学原理 1.将世界坐标转换为图像坐标: 2.图像坐标转换为像素坐标系: 3.针孔成像下的透视投影矩阵: 4.世界坐标系转换为像素坐标系 5.张氏标定法的畸变模型: 以上参考:https://bl ...
最新文章
- python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序
- Ubuntu 安装firefox中文版 (启用google翻译功能)
- CMake 进行调试
- SQL和PL/SQL的性能优化之四---联结与子查询
- [hackinglab][CTF][脚本关][2020] hackinglab 脚本关 writeup
- Kubernetes 创建pod一直处于ContainerCreating 状态解决过程
- ROS笔记(21) 地图
- 计算机一直显示配置更新开不了机怎么办,电脑开机出现配置更新怎么办
- meshlab点云转mesh
- 计算机用户guest无法删除吗,Win7怎么删除Guest账户?
- 规范的计算机网络规模分类,就计算机网络按规模分类而言,下列说法中规范的是( )。...
- http web服务器
- 应对新《劳动合同法》 万名华为员工自选去留
- 悟透JavaScript - 对象素描
- Python创建自己的聊天机器人
- 量子计算到底是个什么鬼?
- 主流开源流媒体服务器有哪些?
- 小龙虾消费大数据:规模千亿级 带动500多万就业
- 如何编写有多个返回值的C语言函数
- 脑与认知神经科学Matlab Psytoolbox认知科学实验设计——实验设计三