相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)
相机标定
一、相机标定的目的
确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。
二、通用摄像机模型

世界坐标系、摄像机坐标系和像平面坐标系都不重合。同时考虑两个因素 :
(1)摄像机镜头的畸变误差,像平面上的成像位置与线性变换公式计算的透视变换投影结果有偏差;
(2)计算机中图像坐标单位是存储器中离散像素的个数,所以像平面上的连续坐标还需取整转换。

摄像机参数
l 摄像机内部参数 (Intrinsic Parameters)
摄像机坐标和理想坐标系之间的关系
图像坐标系、摄像机坐标系
The list of internal parameters:
- Focal length(焦距): The focal length in pixels is stored in the 2x1 vector fc.
- Principal point(主点): The principal point coordinates are stored in the 2x1 vector cc.
- Skew coefficient(偏斜系数): The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c.
- Distortions(畸变): The image distortion coefficients (radial and tangential distortions) are stored in the 5x1 vector kc.
l 摄像机外部参数 (Extrinsic Parameters)
摄像机在世界坐标系里的位置和方向
摄像机坐标系、世界坐标系
主要包括:旋转矩阵 R 的9个参数和平移矩阵的3个参数。或定义为 6 个。主要包括: 旋转矩阵的3个偏转角和平移矩阵的3个参数。
简而言之:

三、摄像机原理

摄像机坐标系的原点

位于摄像机的镜头中心,像平面坐标中心

位于光轴上,由小孔成像模型,

为焦距。从客观场景到数字图像的成像变换由 以下4步组成 :

四、摄像机标定方法分类
l 传统摄像机标定方法
l 主动视觉摄像机标定方法
l 摄像机自标定方法
|
标定方法 |
特点 |
优点 |
不足 |
|
传统摄像机标定方法 |
利用已知的景物结构信息。常用到标定块。 |
可以使用于任意的摄像机模型,标定精度高 |
标定过程复杂,需要高精度的已知结构信息。 |
|
主动视觉摄像机标定方法 |
已知摄像机的某些运动信息 |
通常可以线性求解,鲁棒性比较高 |
不能使用于摄像机运动未知和无法控制的场合 |
|
摄像机自标定方法 |
仅依靠多幅图像之间的对应关系进行标定 |
仅需要建立图像之间的对应,灵活性强 |
非线性标定,鲁棒性不高 |

四、张正友平面标定方法
算法原理


• 在这里假定模板平面在世界坐标系

的平面上
• 其中,

为摄像机的内参数矩阵,

为模板平面上点的齐次坐标,

为模板平面上点投影到图象平面上对应点的齐次坐标,

和

分别是摄像机坐标系相对于世界坐标系的旋转矩阵和平移向量


根据旋转矩阵的性质,即

和

,每幅图象可以获得以下两个对内参数矩阵的基本约束


由于摄像机有5个未知内参数,所以当所摄取得的图象数目大于等于3时,就可以线性唯一求解出

算法描述
- 打印一张模板并贴在一个平面上
- 从不同角度拍摄若干张模板图象
- 检测出图象中的特征点
- 求出摄像机的内参数和外参数
- 求出畸变系数
- 优化求精
五.使用Matlab相机标定工具箱标定相机的基本步骤
1.安装MATLAB
2.安装相机标定工具箱Camera Calibration Toolbox


2.准备一张标定板
3、实验数据采集

3、相机标定步骤
First calibration example - Corner extraction, calibration, additional tools






然后在对每一幅测试图进行手动设置最外围的四个角点,第一个点会作为原点,一般位于左上角,其他三个点选择顺序不重要,不过还是建议按顺时针选取(为标定方便,我们未将最外层的方格包括在内)

接下来需要设定每个小方格在现实世界中的宽高,以便随后角点的自动选择;实验过程中设定为30mm×30mm;只需第一次设定



说明
A. 通过Recomp. corners按钮提高标定精确度;
B. Analyse error展示角点误差分布,用鼠标左键点击后,在命令窗口可直接显示该点信息;
C.点击Reproject on images按钮用计算出来的参数投影到图像。这些投影是基于当前的内部参数和外部参数。二次投影误差同样显示如下:



附件列表
相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)的更多相关文章
- 相机标定过程(opencv) + matlab参数导入opencv + matlab标定和矫正
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解
想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...
- Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!
一.安装 Autoware & ZED 内参标定 & 外参标定准备 之前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定! 记录了我用 ...
- 利用matlab摄像机标定
(1)输入图像 "Image names"键 Matlab的图形窗口显示出20幅靶标图像 (2) 提取角点 "Extract grid corners"键. 输 ...
- Matlab 摄像机标定+畸变校正
博客转载自:http://blog.csdn.net/Loser__Wang/article/details/51811347 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行 ...
- Matlab计算机视觉/图像处理工具箱推荐
Matlab计算机视觉/图像处理工具箱推荐 转载http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理 ...
- matlab 小波工具箱
wavemenu --- >wavelet ---->wavelet packet1-D Matlab小波工具箱的使用1 转载▼ http://blog.sina.com.cn/s/blo ...
- matlab添加M_map工具箱(转 http://blog.sina.com.cn/s/blog_491b86bf0100srt9.html)
之前转载过matlab画世界地图的博文.最近正好用到.首先试了matlab自带的worldmap,感觉画出来的图形不尽如人意,比较杂乱.如下图. 略查阅了些资料,请教了Liangjing,一致推荐m_ ...
- Matlab小波工具箱的使用2
Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...
随机推荐
- volatile关键字 学习记录2
public class VolatileTest2 implements Runnable{ volatile int resource = 0; public static void main(S ...
- hibernate学习四(关系映射一对一与组件映射)
一.关系映射简介 在数据库中,表与表的关系,仅有外键.但使用hibernate后,为面向对象的编程,对象与对象的关系多样化:如 一对一,一对多,多对多,并具有单向和双向之分. 开始练习前,复制上一次项 ...
- jQuery动画slideUp()不正常位移原因
用jQuery写一个列表.当点击底部按钮时,列表中序号超过6的项目可以向下拉出或者向上收起. 用slideUp(),遇见一个问题.展开列表项会产生不正常位移,如下图所示.动画结束发生位移. 出现这个问 ...
- hdu4405 Aeroplane chess
Aeroplane chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 让ecshop模板支持php运算
让ecshop模板支持php运算在 cls_template.php 底部加入函数: /** * 处理if标签 * * @access public * @param string $tag_args ...
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...
- 在_vimrc中 set noexpandtab python 不起效果
我ctm,今天配置不让tab转为空格,在_vimrc中set noexpandtab 不起效果. set ts=4也不起效果. 但是在命令行中其效果. 我都不知道咋办了. 问人说我有可能使用的不是那个 ...
- angular.extend用法实例
angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 实例一 ...
- [CodeWars][JS]如何判断给定的数字是否整数
问题描述: We are asking for a function to take a positive integer value, and return a list of all positi ...
- C# WinForm实现Windows 7 Aero磨砂玻璃效果
在Vista系统之后,微软为窗体程序提供了Aero磨砂的效果,如下图.那么用C#如 何来实现这种磨砂效果呢? 代码: using System; using System.Collections.Ge ...