单目相机标定原理

一.相机标定主要涉及三个坐标系:图像坐标系、摄像机坐标系和世界坐标系

【图像坐标系】

        摄像机采集的图像变换为数字图像后,每副数字图像在计算机内为M x N数组,M行N列的图像中每一个元素(pixel)数值就是图像点的亮度(灰度)。如图,在图像上定义直角坐标系(U,V),每一个像素为单位的图像坐标系坐标,由于(u,v)只能表示像素位于数组中的列数与行数,并没有使用物理单位表示该像素在图像中位置,所以需要再建立以物理单位(mm)表示的图像坐标系,该图像坐标系以图像内某一点O1为原点,X轴和Y轴分别平行于U轴和V轴。

wpsA134.tmp

        如图中,(u、v)表示以像素为单位的图像坐标系的坐标,(x、y)表示以mm为单位的图像坐标系的坐标。在X、Y坐标系中,原点O1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心。但是由于制造原因,很多情况下会有偏移。若O1在U、V坐标系中坐标为(u0,v0),每一个像素在X轴与Y轴方向上的物理尺寸为dx、dy,则图像任一像素在两个坐标系下有如下关系:

wpsA135.tmp


【摄像机坐标系】

        如图,Oc点为摄像机光心,Xc轴和Yc轴与图像的X轴与Y轴平行,Zc轴为摄像机光轴,它与图像平面垂直。光轴与图像平面的交点,即为图像坐标系的原点。由点Oc与Xc、Yc、Zc轴组成的直角坐标系称为摄像机坐标系,OOc为摄像机焦距:

wpsA136.tmp

        由于摄像机可以安放在现实环境中任意位置,所以在环境中任选一个基准坐标系来描述摄像机位置,并用它描述环境中任何物体的位置,该坐标系为世界坐标系。它有Xw、Yw和Zw轴组成,摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵与平移向量t来描述。

wpsA147.tmp

       总体来说,世界坐标系到图像坐标系的关系可总结如下:

wpsA157.tmp

        摄像头成像几何关系,其中Oc点称为摄像头(透镜)的光心,Xc轴和Yc轴与图像的x轴和Y轴平行,Zc轴为摄像头的光轴,它与图像平面垂直。光轴与图像平面的交点O1,即为图像坐标系的原点。由点Oc与Xc、Yc、Zc轴组成的坐标系称为摄像头坐标系,Oc O1 的距离为摄像头焦距,用f表示。

        图像坐标系是一个二维平面,又称为像平面,实际上就是摄像头的CCD传感器的表面。每个CCD传感器都有一定的尺寸,也有一定的分辨率,这个就确定了毫米与像素点之间的转换关系。举个例子,CCD的尺寸是8mm X 6mm,帧画面的分辨率设置为640X480,那么毫米与像素点之间的转换关系就是80pixel/mm。”设CCD传感器每个像素点的物理大小为dx*dy,相应地,就有dx=dy=1/80。

二. 针孔模型

wpsA158.tmp

       又称为线性摄像机模型,任何空间点M在图像中的投影位置m,为光心Oc与M的连线OcM与图像平面的交点(各种相似三角形有木有,但是要注意像平面和现在讨论的其实是关于Oc对称的哦,所以计算的时候不要忘记了负号,不然出来的图像就是倒着的啦),这种关系也称为重心摄影或者透视投影。此时有比例关系如下:

wpsA178.tmp

      将上面的世界坐标到摄像机坐标的转换代入,最后皆可以得到世界坐标系与摄像机坐标系之间的关系啦:

wpsA179.tmp

        其中,很容易可以知道alph=f/dx,beta=f/dy,分别代表了以X轴与Y轴方向上的像素为单位表示的等效焦距。gamma在较高精度的相机模型中引入,表示图像平面中以像素为单位的坐标轴倾斜程度的量度,gamma=alpha*tan(theta),theta是相机CCD阵列v轴的偏斜角度。

        由针孔模型我们可以知道,如果一直摄像机的内外参数,就知道投影矩阵M,这时候对任何空间点就可以求出其对应图像坐标,但是如果已知空间某点的像点m位置(u,v)即使已经知道摄像机内外参数,Xw也不能唯一确定,因为在投影过程中消去了Zc的信息。

        在上面的式子中M是3x4不可逆矩阵,当已知M与(u,v)时,由公式得到的三个方程中消去z,只可以得关于Xw,Yw与Zw的两个线性方程,这个方程组即为射线OP的方程,也就是说,投影点为m的所有点均在该射线上,所以,该空间是不能唯一确定的。

三. 相机畸变

        摄像头由于光学透镜的特性使得成像存在着径向畸变,可由三个参数k1,k2,k3确定;由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数p1,p2确定。单个摄像头的定标主要是计算出摄像头的内参(焦距f和成像原点cx,cy、五个畸变参数(一般只需要计算出k1,k2,p1,p2,对于鱼眼镜头等径向畸变特别大的才需要计算k3))以及外参(标定物的世界坐标)。OpenCV中使用的求解焦距和成像原点的算法是基于张正友的方法,而求解畸变参数是基于 Brown 的方法。

1.径向畸变

       设(u、v)为理想的图像像素坐标,相对应的,wpsA17A.tmp 为真实获得的像素坐标。则(x,y)就为理想的图像物理坐标,wpsA17B.tmp 为实际获得的图像物理坐标,可以得到如下的关系式:

wpsA18C.tmp

       我们知道,(u0,v0)在求摄像机内参的时候可以知道,wpsA18D.tmp 在圆心提取排序后也可以知道,(u,v)可以通过OpenCV中cvProjectpoints函数求得反投影残差。(x,y)可以通过wpsA18E.tmpwpsA19F.tmp求出,于是克得到如下公式:

wpsA1A0.tmp

设Dk=d,所以wpsA1A1.tmp可以求出畸变系数k1,k2.

      在求得了径向畸变的系数以后,就可以如下得到成像仪某点理想的径向位置

wpsA1A2.tmp

       其中,r就是当前点的所在透镜半径,k3只有在精度很高的时候才用得到(可以看到其实是将径向畸变做了一个泰勒展开并忽略高阶误差得到的)

2.切向畸变(由于透镜表面曲率不总是严格共线产生)

       主要包括离心畸变和薄棱镜畸变,其中,离心畸变是由摄像机的镜头中各个透镜的光轴不能完全重合造成的。

离心畸变其数学模型可以表示为:

wpsA1A3.tmp

       薄棱镜畸变是由镜头设计和制造缺陷等误差造成(比如镜头与摄像机像面之间有很小的倾角,其不仅会引起径向偏差,而且会引起切向误差)其数学模型为:

wpsA1A4.tmp

       可以看到,薄棱镜畸变的结果就是之前内参矩阵求解时候的那个gamma啦wpsA1A5.tmp

       综合考虑径向畸变和切向畸变,就需要对小孔成像模型进行修正,理想的图像点归一化坐标为p=(x,y)T,有畸变的图像点的归一化坐标为Pd=(xd,yd)T之间关系为:

wpsA1B5.tmp

    特别说明:在opencv中求出了畸变系数和摄像机内参数以后,就可以用cvUndistort2( ImageC1, Show1, &intrinsic_matrix, &distortion_coeffs);来进行图像矫正了  (建议使用Matlab工具箱来矫正,Opencv自己的函数误差不是一般大,而且对角点提取的精度要求超高(虽然用了亚像素级别),⊙﹏⊙b汗,之前自己按照书上来结果发现矫正以后图像扭曲的不行还以为自己的问题查错查了好久,结果直接标定传入参数进行矫正以后各种准确…….)。

附录:cvUndistort2的函数说明

wpsA1B6.tmp

wpsA1C7.tmp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开始之 activity_lifecycle和现场保护

生命周期: oncreate—onstart—onresume,--onpause--onstop,——onrestart——onstart——onresume,。。onpause。。。onstop。。。ondestroy 现在保护---保存系统状态 通过这个方法保存到数据库中或者xml中,&#xff…

Apache启动错误:could not bind to address[::]:443

Q:Windows环境下启动apache报错如下: 可是在httpd.conf文件中apache listen的明明是http 80端口,为什么会报443的错误? A:因为你的计算机安装了VM,所有有个vm的进程一直占用着443端口,在命令行下…

针孔相机拍摄的图像坐标和空间点的对应关系

一:摄像机成像原理 摄像机成像模型一般有三种:透镜投影模型(小孔摄像机模型)、正交投影模型和透视投影模型 光学中最基本的高斯成像公式:1/u 1/v 1/f (式一) 原理图如下: 二:认识三个…

粥做得好不好,全凭一个良心!

粥做得好不好,全凭一个良心! 工作不也是凭良心么! 文章中的红色字体表达了一切! 霜降节气的到来,意味着冬季的临近,而霜降后气温的降低,利于蔬菜的淀粉沉淀,收浆后的莲藕也变得更为…

黑盒测试

引言: 什么是黑盒测试呢!? 像我一样的测试小白就会望文生义了:对黑盒子测试 那么黑盒子是什么!? 思考5秒后,得出了这样的答案:黑盒子就是黑色的盒子,嘿嘿! 正文&#xf…

Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation

简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻个人修改补充…

悬浮按钮

效果图 //将dp转换为px public static int dip2px(Context context, float dpValue) {final float scale context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale 0.5f); }//浮动图片监听 private void initListener() {//弹出对话框jianwen.set…

图像坐标:我想和世界坐标谈谈(A) 【计算机视觉学习笔记--双目视觉几何框架系列】

玉米竭力用轻松具体的描述来讲述双目三维重建中的一些数学问题。希望这样的方式让大家以一个轻松的心态阅读玉米的《计算机视觉学习笔记》双目视觉数学架构系列博客。这个系列博客旨在捋顺一下已标定的双目视觉中的数学主线。数学推导是有着几分枯燥的,但奇妙的计算…

img

转载于:https://www.cnblogs.com/SoulCode/p/6508720.html

图像坐标:我想和世界坐标谈谈(B)

二、图像坐标:我想和世界坐标谈谈(B) 玉米将在这篇博文中,对图像坐标与世界坐标的这场对话中涉及的第二个问题:谈话方式,进行总结。世界坐标是怎样变换进摄像机,投影成图像坐标的呢? 玉米做了一个简单的图示…

【Android】Fragment的简单笔记

被虐了,做某公司笔试时,发现自己连个Fragment的生命周期都写不详细。平时敲代码,有开发工具的便利,有网上各大神的文章,就算忘了也很容易的可以查到,但当要自己不借助外界,却发现自己似乎对该知…

三、致敬“张正友标定”

三、致敬“张正友标定” 此处“张正友标定”又称“张氏标定”,是指张正友教授于1998年提出的单平面棋盘格的摄像机标定方法。张氏标定法已经作为工具箱或封装好的函数被广泛应用。张氏标定的原文为“A Flexible New Technique forCamera Calibration”。此文中所提到…

Using KernelShark to analyze the real-time scheduler【转】

转自:https://lwn.net/Articles/425583/ This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the …

3、时间和随机数

一、时间 1.1 使用Calendar/[ˈkləndɚ]/类获取时间 1.1.1 常用方法 (1)public static Calendar getInstance(): 使用默认时区和语言环境获取一个基于当前时间的Calendar对象。 (2)public int get(int field) 返回给定日历字段表示的日历部分的数字…

哥尼斯堡的“七桥问题” (欧拉回路,并查集)

哥尼斯堡的“七桥问题” (25分) 哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决…

无人驾驶汽车之争本田为何未战先败

摘要 : 本田汽车的研发部门对于汽车虽然理解深刻,但从整体而言,本田的造车理念还停留在上个时代,在未来的无人驾驶竞争中,本田已经有未战先啊败的苗头。 百度百家The BIG Talk硅谷站连续5小时的高密度头脑风暴,果然让人…

理解git结构与简单操作(四)合并分支的方法与策略

接上节,此时的dev分支与master分支的进度就不一样了,所以需要将dev分支与master分支同步。这里需要的就是合并分支的操作,大家应该都知道用git merge或者git rebase。 git merge merge,即「合并」。 fast-forward 当出现我们上面图…

摄像机标定

利用摄像机所拍摄到的图像来还原空间中的物体。在这里,不妨假设摄像机所拍摄到的图像与三维空间中的物体之间存在以下一种简单的线性关系:[像]M[物],这里,矩阵M可以看成是摄像机成像的几何模型。 M中的参数就是摄像机参数。通常,这…

Linux下Tomcat重新启动

在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看Tomcat是否以关闭 ps -ef|grep java 如果显示以下相似信息,说明Tomcat还没有关闭 root …

大数据和人工智能的关系是什么?

何为大数据?何为人工智能? 大数据,百度百科上是这么定义的,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率…