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

内容:

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命令行与shell脚本编程大全 第3版》Linux命令行---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  2. Bioconda安装与使用

    1.  Bioconda是一个自动化管理生物信息软件的工具,就像APPstore.360软件管家一样. Bioconda的优点是安装简单,各个软件依赖的环境一同打包且相互隔离,非常适合在服务器中建立自 ...

  3. AC日记——任务查询系统 洛谷 P3168

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  4. ansible-playbook启动的多种方式

    #quick start ## start the playbook with no password, it will run "sudo su - root" at the t ...

  5. spring源码学习(一)

    Spring作为一个IOC容器,今天我们学习它作为web解析的地方,学习下webmvc包的代码.我们先看下web.xml文件 可以看到通过DispatcherServlet来实现页面的mapper处理 ...

  6. log4j(一)

    一.基础知识 Log4j有三个重要组件:Logger-日志信息的级别,appenders-日志信息的输出目的地,layouts-日志信息的输出格式. Logger-日志信息的级别:level 是日志记 ...

  7. 3)nginx的启动与停止、重启,linux配置对外端口

    [启动] 启动代码格式:nginx安装目录地址 -c nginx配置文件地址例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /u ...

  8. mysql之字符串操作

    写在前面 上篇文章学习了mysql常用的日期操作的函数,这篇文章将学习mysql的字符串操作的函数. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete ...

  9. GDI 编程基础简介

    今天准备重新对GDI的知识进行回顾一下,以便加深认识. 一.GDI 在进行Windows编程时,可能经常会用到设备描述表的类型句柄,例如,最厂家的HDC,它就是图像设备描述类型句柄.因为GDI的绘图函 ...

  10. iOS7自定义back按钮和pop交互手势

    Clambake for iPhone有一个回退按钮在所有的导航条上.这是一个简单的没有文字箭头. 实现一个自定义按钮是简单的.类似这个设置controller 的navigationItem一个le ...