C#下的摄像机标定
前言:计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体,而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程称为摄像机标定。标定过程就是确定摄像机的几何和光学参数、摄像机相对于世界坐标系的方位。
内容:
1.假设摄像机所拍摄到的图像与三维空间中的物体之间存在以下一种简单的线性关系:[像]=M[物],这里,矩阵M可以看成是摄像机成像的几何模型。 M中的参数就是摄像机参数。通常参数分为摄像机的内参和外参。
2.摄像机的标定方法分为三类:传统摄像机标定方法、主动视觉摄像机标定方法、摄像机自标定方法。
传统的摄像机标定方法:特点:利用已知的景物结构信息,常用到标定块;优点:可以使用于任意的摄像机模型,标定精度高;不足:标定过程复杂,需要高精度的已知结构信息,在实际应用中很多情况下无法使用标定块。
主动视觉摄像机标定方法:特点:已知摄像机的某些运动信息;优点:通常可以线性求解,鲁棒性比较高;不足:不能用于摄像机运动未知和无法控制的场合。
摄像机自标定方法:特点:仅依靠多幅图像之间的对应关系进行标定;优点:仅需要建立图像之间的对应,灵活性强,潜在应用范围广;不足:非线性标定,鲁棒性不高。
3.摄像机成像模型:图像是空间物体通过成像系统在平面上的反映,即空间物体在像平面上的投影。图像上每一个像素点的灰度反映了空间物体表面某点的反射光的强度,而该点在图像上的位置则与空间物体表面对应点的几何位置有关。这些位置的相互关系由摄像机成像系统的几何投影模型所决定,理想的成像模型是光学中的中心投影,也成为针孔模型,即假设物体表面的反射光都经过一个针孔而投影到像平面上,也就是满足光的直线传播条件。小孔成像透光量太小,需要长时间的曝光,实际摄像系统通常都由透镜或者透镜组组成。由于透镜设计的复杂性和工艺水平等影响,实际透镜成像系统不可能严格满足针孔模型,这也就产生了所谓的镜头畸变,常见的如径向畸变、切向畸变、薄棱镜畸变等,在远离图像中心处会有较大的畸变,在精密视觉测量等应用方面,应该尽量采用非线性模型来描述成像关系。
4.常用坐标系及其关系:计算机视觉常用坐标系采用右手准则来定义,通常有三个不同层次的坐标系统:世界坐标系、摄像机坐标系、图像坐标系(图像像素坐标系、图像物理坐标系)。如下图所示:

(1)世界坐标系(Ow-Xw,Yw,Zw):是客观世界的绝对坐标,由用户任意定义的三维空间坐标系,一般的3D场景都用这个坐标系来表示。
(2)摄像机坐标系(Oc-XcYcZc):以小孔摄像机模型的聚焦中心为原点,以摄像机光轴zc轴建立的三维直角坐标系。x,y一般与图像物理坐标系xf,yf平行,且采取前投影模型。
(3)理想图像坐标系(Oi-XuYu)
(4)实际图像坐标系(Oi-XdYd)
世界坐标系变为摄像机坐标系(三维空间刚体位置的变换):
,式中:
为旋转矩阵;
为平移矩阵。
摄像机坐标系变为理想图像坐标系(投影变换):

理想图像坐标系变为实际图像坐标系(考虑畸变):镜头的畸变主要由径向畸变引起,二级径向畸变的镜头模型为:

用齐次坐标表示为:

式中:k1和k2为径向畸变系数;A'为两者等效变换矩阵。
实际图像坐标变换为像素图像坐标:

用齐次坐标表示为:

式中:(U0,V0)为图像中心O1在O-UV中的坐标;Sx、Sy分别为图像平面上X、Y轴方向单位距离上的像素数;γ为两坐标轴间的倾斜因子。
由上面的公式可以得到:

式中:M1由Sx,Sy,U0,V0,f,k1,k2确定,只与摄像机本身的性质有关,这些参数为摄像机的内部参数;M2由旋转矩阵R和平移向量T确定,为摄像机的外部参数。
以上就是标定算法的核心部分。在EMGU中使用CameraCalibration来完成对摄像头的标定,得到内参及外参。
代码后期附上:
C#下的摄像机标定的更多相关文章
- [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII
部分 VII摄像机标定和 3D 重构 OpenCV-Python 中文教程(搬运)目录 42 摄像机标定 目标 • 学习摄像机畸变以及摄像机的内部参数和外部参数 • 学习找到这些参数,对畸变图像进行修 ...
- 机器视觉学习笔记(5)——基于OpenCV的单目摄像机标定
本文CameraCalibrator类源代码来自于OpenCV2 计算机视觉编程手册(Robert Laganiere 著 张静 译) 强烈建议阅读机器视觉学习笔记(4)--单目摄像机标定参数说明之后 ...
- 基于EmguCV的摄像机标定及矫正
标签: EmguCV摄像头标定C# 2015-05-03 14:55 501人阅读 评论(6) 收藏 举报 分类: C# 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] ...
- 用OpenCV进行摄像机标定
用OpenCV进行摄像机标定 照相机已经存在很长时间了.然而,随着廉价针孔相机在20世纪末的引入,日常生活中变得司空见惯.不幸的是,这种廉价伴随着它的代价:显著的扭曲.幸运的是,这些常数,通过校准和一 ...
- [zt]摄像机标定(Camera calibration)笔记
http://www.cnblogs.com/mfryf/archive/2012/03/31/2426324.html 一 作用建立3D到2D的映射关系,一旦标定后,对于一个摄像机内部参数K(光心焦 ...
- halcon摄像机标定
摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径 'E:/calibration_description/caltab_123mm.descr:为标定 ...
- 【OpenCV】摄像机标定+畸变校正
摄像机标定 本文目的在于记录如何使用MATLAB做摄像机标定,并通过OpenCV进行校正后的显示. 首先关于校正的基本知识通过OpenCV官网的介绍即可简单了解: http://docs.open ...
- Matlab 摄像机标定+畸变校正
博客转载自:http://blog.csdn.net/Loser__Wang/article/details/51811347 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行 ...
- opencv单目摄像机标定(一)
#include <string> #include <iostream> #include <cv.h> #include <highgui.h> u ...
随机推荐
- sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果
select [value] = stuff((select ','+modmb003 from modmb detail where modmb=18 for xml path('')), 1, ...
- springBoot 数组增加工具类包
1.pom中加入依赖 <!--数组工具类 start--> <dependency> <groupId>org.apache.commons</groupId ...
- Hotspot JVM下,parallel与concurrent的区别
转载于知乎 作者:Ted Mosby链接:https://www.zhihu.com/question/21535747/answer/144884632来源:知乎著作权归作者所有.商业转载请联系作者 ...
- HDU 1269.迷宫城堡-Tarjan or 双向DFS
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- zoj 2615 Cells 栈的运用
题目链接:ZOJ - 2615 Scientists are conducting research on the behavior of a newly discovered Agamic Cell ...
- 记录一次(xheditor-1.1.6-zh-cn.min.js)的错误:Cannot read property 'match' of undefined的问题解决
由于使用了xheditor富文本框,且这个版本是2011年开发的系统,当时只有IE8,所以一切正常. 但是问题来了,今天使用IE11测试和谷歌浏览器测试,发现一直报这个错误: 且google了一下,没 ...
- 【Android】attr、style和theme
一.Attr 属性,风格样式的最小单元: Attr 的定义 在自定义 View 的时候,在 res/attrs.xml 文件中声明属性,而Android 系统的属性也是以同样的方式定义的.比如 lay ...
- 2017.3.14 activiti实战--第二十章--REST服务
学习资料:<Activiti实战> 第二十章 REST服务 20.1 通信协议概述 略. 20.2 REST API概述 资源分类 资源基础URI 说明 Deployments manag ...
- Android4.4电池管理
一.概述 Android4.4的电池管理功能用于管理电池的充.放电功能. 整个电池管理的部分包含Linux电池驱动.Android电池服务.电池属性和參数.电池曲线优化四个部分. Linux电池驱动用 ...
- 记一个发HTML格式邮件的问题
很早做了一个自动发邮件的程序,前一向发现Notes升级后反而CSS样式都没有了. 起初不以为意,反正格式数据在,客户也没说啥,后来觉得这样的态度要不得,小洞不补,大洞吃苦. 于是查查资料,发现浏览器里 ...