前言:计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体,而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程称为摄像机标定。标定过程就是确定摄像机的几何和光学参数、摄像机相对于世界坐标系的方位。

内容:

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#下的摄像机标定的更多相关文章

  1. [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII

    部分 VII摄像机标定和 3D 重构 OpenCV-Python 中文教程(搬运)目录 42 摄像机标定 目标 • 学习摄像机畸变以及摄像机的内部参数和外部参数 • 学习找到这些参数,对畸变图像进行修 ...

  2. 机器视觉学习笔记(5)——基于OpenCV的单目摄像机标定

    本文CameraCalibrator类源代码来自于OpenCV2 计算机视觉编程手册(Robert Laganiere 著 张静 译) 强烈建议阅读机器视觉学习笔记(4)--单目摄像机标定参数说明之后 ...

  3. 基于EmguCV的摄像机标定及矫正

    标签: EmguCV摄像头标定C# 2015-05-03 14:55 501人阅读 评论(6) 收藏 举报  分类: C# 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] ...

  4. 用OpenCV进行摄像机标定

    用OpenCV进行摄像机标定 照相机已经存在很长时间了.然而,随着廉价针孔相机在20世纪末的引入,日常生活中变得司空见惯.不幸的是,这种廉价伴随着它的代价:显著的扭曲.幸运的是,这些常数,通过校准和一 ...

  5. [zt]摄像机标定(Camera calibration)笔记

    http://www.cnblogs.com/mfryf/archive/2012/03/31/2426324.html 一 作用建立3D到2D的映射关系,一旦标定后,对于一个摄像机内部参数K(光心焦 ...

  6. halcon摄像机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  7. 【OpenCV】摄像机标定+畸变校正

      摄像机标定 本文目的在于记录如何使用MATLAB做摄像机标定,并通过OpenCV进行校正后的显示. 首先关于校正的基本知识通过OpenCV官网的介绍即可简单了解: http://docs.open ...

  8. Matlab 摄像机标定+畸变校正

    博客转载自:http://blog.csdn.net/Loser__Wang/article/details/51811347 本文目的在于记录如何使用MATLAB做摄像机标定,并通过opencv进行 ...

  9. opencv单目摄像机标定(一)

    #include <string> #include <iostream> #include <cv.h> #include <highgui.h> u ...

随机推荐

  1. linux私房菜-读书笔记

    第零章:计算机概论 计算机:接受用户输入指令和数据,经过中央处理器的数据和逻辑单元运算处理器处理后,以产生或存储成有用的信息. 计算机硬件的五大单元:输入单元.输出单元.CPU内部控制单元.算术逻辑单 ...

  2. hdu 1215(因子和)

    七夕节 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  3. (3)Django 配置

    一.settings django安装的应用程序 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.c ...

  4. Java 8 Comparator: 列表排序

    在本文中,我们将看到几个关于如何在Java 8中对List进行排序的示例. 1.按字母顺序排序字符串列表 List<String> cities = Arrays.asList( &quo ...

  5. Maximum Product Subarray - LeetCode

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  6. JetBrains软件开发框架下的类似于“.IntelliJIdea2018.1”的配置文件夹的移动

    JetBrains软件开发框架下几款软件,如: 会在C盘用户文件夹下生成很大的配置文件夹(IDE config folder),十分占空间,也影响电脑性能. 这些索引目录移动的原理相似,现在以Idea ...

  7. How To Commit Just One Data Block Changes In Oracle Forms

    You have an Oracle Form in which you have multiple data blocks and requirement is to commit just one ...

  8. 80端口被屏蔽解决方法,80端口穿透之NAT端口映射技术

    介绍一种NAT端口映射技术应用,达到80端口穿透目的,解决80端口被屏蔽的问题,也是80端口被屏蔽解决方法中经常用到的. 80端口穿透类似80端口转发,因为80端口被屏蔽,在数据层面来说是不能直接访问 ...

  9. mysqldumps 远程备份

    普通模式 mysqldump -uroot -ppassword -h10.26.114.25 -P3306 --databases databasename > XXX.sql 多条在一起模式 ...

  10. EXCel鼠标右键不能用解决办法

    EXCel鼠标右键不能用解决办法 倒腾vba首要是保证安全,各路大神的代码非常神奇,莫名的就让你的excel嘎嘣了,如出现右键无法使用(确定不是您的鼠标问题),那么以下代码可完全修复设置.操作步骤:打 ...