相机标定基础

相机标定基础一.什么是摄像机标定从二维图像中恢复物体的三维信息,必须要知道空间坐标系中的物体点同它在图像平面上像点之间的对应关系,而这个对应关系是由摄像机的成像几何模型所决定的,这些几何模型参数就是摄像机参数。在大多数情况下这些参数必须通过实验才能得到,这个过程被称为摄像机标定。摄像机标定就是确定摄像机内部几何和光学特性(内部参数)以及摄像机坐标系相对于世界坐标系的三维位置和方向(外部参数)的过程。

大家好,又见面了,我是你们的朋友全栈君。

一. 什么是摄像机标定

从二维图像中恢复物体的三维信息,必须要知道空间坐标系中的物体点同它在图像平面上像点之间的对应关系,而这个对应关系是由摄像机的成像几何模型所决定的,这些几何模型参数就是摄像机参数。在大多数情况下这些参数必须通过实验才能得到,这个过程被称为摄像机标定。
摄像机标定就是确定摄像机内部几何和光学特性(内部参数)以及摄像机坐标系相对于世界坐标系的三维位置和方向(外部参数)的过程。

二. 摄像机标定理论基础

摄像机标定包括成像模型和求摄像机参数。不同的摄像机成像模型对应不同的参数集合,不同的参数集合又对应不同的求解方法。因此,应根据实际应用场合选择合适的摄像机标定方法。摄像机成像模型包括线性模型和非线性模型。
线性模型是根据小孔成像原理,建立像点和对应物体表面空间点的几何位置关系,描述的是理想情况,即像点、投影中心和空间点三者是共线关系。实际应用中,由于立体视觉系统,摄像机的物理构造产生各种畸变,使得实际像点位置会偏移理想像点位置,造成像点、投影中心和相应的空间点之间的共线关系受到破坏,所以需要建立畸变校正模型,即非线性模型。一个完整的成像模型应当包括线性模型和非线性模型。基于此,下面首先介绍摄像机线性模型。
⑴四个常用坐标系
为定量描述光学成像过程,定义四个坐标系,如图1。

这里写图片描述
这里写图片描述 是相机坐标系,

① 图像坐标系
在图像上定义直角坐标系u-v,原点O在图像平面的左上角,每一像素的坐标(u, v)分别是该像素在数组中的列数和行数,所以(u, v)是以像素为单位的图像坐标系的坐标。求图中特正点的坐标都是以此为坐标系。

② 成像平面坐标系
由于图像坐标系只表示像素位于数组中的列数和行数,并没有用物理单位表示出该像素在图像中的位置,因此需要再建立以物理单位(如毫米)表示图像坐标,我们称它为成像平面坐标系x-y。在x-y坐标系中,原点O1(即图像主点坐标)定义在摄像机光轴与图像平面的交点,x,y轴分别平行于u,v轴。若O1在图像坐标系中的像素坐标为(u0,v0),dx,dy分别为图像平面在x,y方向上单位象素间的距离,则两个坐标系间的关系可表示为:

这里写图片描述

这里写图片描述
写成齐次坐标形式为:

这里写图片描述

③ 摄像机坐标系:
摄像机坐标系这里写图片描述 是固定在摄像机上的直角坐标系,其原点Oc定义在摄像机的光心,Xc,Yc轴分别平行于成像平面坐标系的x, y轴,z 轴与光轴重合,即 z 轴垂直于摄像机的成像平面。光心到图像平面的距离作为摄像机的有效焦距 f 。

这里写图片描述
由于Oc,P和pu三点共线,由相似性得

这里写图片描述

这里写图片描述
写成齐次坐标形式:

这里写图片描述
④世界坐标系:
由于摄像机和物体可以安放在环境中的任何位置,因此还需要在环境中选择一个基准坐标系来描述摄像机的位置,并用它来描述环境中任何物体的位置,这个坐标系就叫做世界坐标系 。这是一个假想的坐标系,用作一般参考,可根据具体情况来选择。由于它的选取具有随意性,故在计算机视觉中通常以所测物体的中心三维坐标系或摄像机坐标系来定义世界坐标系的。世界坐标系与相机坐标系关系式

这里写图片描述

其中R为3*3旋转正交矩阵,t为1*3平移向量,代表了摄像机光心与世界坐标系中心点的偏离量。
将上式写成齐次坐标形式:

这里写图片描述
注意:
fu,fv,u0,v0这四个参数只与摄像机内部结构有关,fu,fv 是以像素为单位的焦距, 我们称之为摄像机内部参数。内参数矩阵不依赖场景的视图,一旦计算出,可以被重复使用(只要焦距固定)。R , t完全由摄像机和世界坐标系的相对位置决定,称之为摄像机外部参数。

由以上矩阵等式得:
这里写图片描述

三. 相机的非线性畸变

理想的透镜成像满足针孔模型,是近似的三角相似关系,但实际上一般透镜由于加工和装配误差的存在都是畸变成像,也就是说其正真的像点位置在上图点pd而非点pu。尤其是在近距、广角和高精度测量的情形下,两者位置偏差更大,因此必须对这种成像偏差进行补偿,即建立非线性模型。非线性模型中影响图像畸变的因素主要有三个:径向畸变、离心畸变和薄棱镜畸变。
如果只考虑一阶二阶径向畸变和切向畸变则有公式:

这里写图片描述
注:上式有错误,p1,p2相互调换就对了
其中k1,k2是一阶、二阶径向畸变系数,p1,p2是一阶、二阶切向畸变系数。
正因为畸变,所以相机标定就是要求出这些参数。然后对畸变图像的每一个像素点进行矫正。相关标定算法后续给出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144097.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python怎么表示取余_python如何实现取余操作

    python怎么表示取余_python如何实现取余操作python实现取余操作的方法:可以利用求模运算符(%)来实现。求模运算符可以将两个数相除得到其余数。我们还可以使用divmod()函数来实现取余操作,具体方法如:【divmod(10,3)】。在python中要实现取余操作可以使用求模运算符(%),该运算符可以将两个数相除得到其余数。(推荐教程:Python入门教程)如果一个数恰好能被另外一个数据整除,则余数为0,%运算后返回结果为0。可利用余数…

    2022年4月25日
    57
  • mysql中phpmyadmin安装教程_安装phpMyAdmin图文教程

    mysql中phpmyadmin安装教程_安装phpMyAdmin图文教程phpmyadmin的安装配置已经是老生常谈的话题了,网络上到处都可以找到相关的配置教程。但是,那些大多都是手动配置的,稍不留神,容易出错。因此站长今天在这里介绍的是,被很多phpmyadmin用户所忽略的phpmyadmin自带的安装程序,下面我们就开始一步一步来安装phpmyadmin。1、首先下载phpmyadmin3.4.11,这是目前最稳定无bug的版本,点击下载2、在你的web根目录新…

    2022年6月1日
    31
  • C++无锁编程资料,无锁队列等

    C++无锁编程资料,无锁队列等1.Lamport’sLock-FreeRingBuffer    [Lamport,Comm.ofACM,1977]   也就常说的单生产者-单消费者的ringbuffer,限制就是只能一个读线程(消费者),一个写进程(生产者)。    好像有人改进了一下设计,参加文章“Cache优化的并发无锁队列”http://www.doci

    2022年5月20日
    64
  • python 装饰器

    python 装饰器本文首先介绍了什么是闭包函数,然后从闭包函数引入到了函数装饰器、类装饰器,之后又说明了如果一个函数被多个装饰器同时修饰时它们的执行顺序是什么样的,最后介绍了避免装饰后原函数信息丢失的解决方案。

    2022年7月5日
    25
  • html css制作404页面,CSS3绘制404页面

    html css制作404页面,CSS3绘制404页面标题有点噱了…最近在做一个交通有关的项目,想做一个类似标志牌的404,所以就有了这个.只用的CSS3中的旋转,效果如下上代码:Error.circle{width:200px;height:200px;border-radius:200px;border:15pxsolid#B22727;}.circle>div{color:#B22727;font:bol…

    2022年7月27日
    7
  • AssertValid和Dump 这两个函数的作用[通俗易懂]

    AssertValid和Dump 这两个函数的作用[通俗易懂]
    AssertValid函数是用来判断表达式的合法性或正确性,如果不正确或不合法则终止程序并返回相应的提示信息 
     如AssertValid(t==0);//用来判断t是否等于0,如果t!=0则终止程序 
     Dump函数一般用来显示debug信息的,其函数中的内容一般在debug时,在debug窗口中才能看到。
    CObject::AssertValid 成员函数提供对对象内部状态的运行时检查。尽管从 CObject 派生类时不需要重写 Asse

    2022年7月14日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号