相机标定基础

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

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

一. 什么是摄像机标定

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

二. 摄像机标定理论基础

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

相关推荐

  • Axis2创建WebService实例(转载)

    Axis2创建WebService实例(转载)博文地址:http://clq9761.iteye.com/blog/976029

    2022年7月21日
  • Linux renice_free linux

    Linux renice_free linuxLinuxnice和renice命令教程(7个示例)Linux命令行的威力可以从以下事实来衡量:您甚至可以使用命令行工具轻松调整进程的调度优先级。是的,这是可能的,在本教程中,我们将讨论如何使用nice和renice实用程序来实现这一点。但在这之前,值得一提的是本文中的所有示例都已在Ubuntu16.04LTS系统上进行了测试。Linuxnice和renice命令尽管nice命令允许您以修…

    2022年11月3日
  • 7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。[通俗易懂]

    7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。[通俗易懂]7-9 判断素数 (20分) 本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2 ​31 ​​ 的需要判断的正整数。输出格式: 对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例: 2 11 111 输出样例: Yes No#include &l…

    2022年8月18日
  • python的三种取整方式_python取整函数-取整函数,PYTHON[通俗易懂]

    python的三种取整方式_python取整函数-取整函数,PYTHON[通俗易懂]本教程分享:《python取整函数》,python有什么办法使得int按照”四舍五入”的方式取…由于小数取整会采用比较暴力的截断方式,即向下取整,所以要想使得int()按照“四舍五入”的方式取整,可以采用如下方法:5.4“四舍五入”结果为:5,int(5.4+0.5)==55.6“四舍五入”结果为:6,int(5.6+0.5)==6python为什么算除法自动取整了。如图…

    2022年10月27日
  • Android程序员接私活完整攻略「建议收藏」

    Android程序员接私活完整攻略「建议收藏」接私活对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。当你竭尽全力想要去接私活的时候一定做过这样的事,百度搜索“程序员如何接私活”或者…

    2022年6月14日

发表回复

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

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