相机标定(1)内\外参矩阵和畸变矩阵
相机标定可以说是计算机视觉/机器视觉的基础。分为以下内容:
- 相机标定的目的和意义
- 相机成像过程的简化与建模
- 针孔相机模型的数学描述
- 标定针孔相机模型的参数
相机标定的目的和意义
我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。
相机标定的目标是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个三维到二维的过程,使这个三维到二维的过程的函数找到反函数。
相机成像过程的简化与建模
提到相机的成像,从根本上来说,就是在讨论相机的镜头。固定结构的相机镜头决定了一对固定的物像共轭关系,所谓「共轭」,意思是镜头前某个位置的物,它的像一定在镜头后的某个位置,这个关系是固定的。举个最简单的例子,无穷远处的物必然会在镜头的焦点处成像,对相机成像过程进行简化。
我们发现,简化后的相机模型和针孔相机的成像原理很相似,因此我们把简化后的相机模型称为针孔相机模型。上图中的 是针孔相机模型的焦距, 是等效透镜的中心(也称为光心),但请注意,此针孔相机「焦距」非彼等效透镜「焦距」,只是借用了「焦距」汇聚光线的概念,表达的是CCD(红线)面到光心的距离。但是我们说的是简化后的相机模型和针孔相机的成像原理仅仅是相似,绝不能等同,由于针孔相机的原理是光沿直线传播,所以真实的针孔相机是没有「焦距」的概念的,也不存在像差,其物像关系不具有一一对应性。
理想透视模型——针孔成像模型
在计算机视觉中,最常用的相机模型就是小孔模型(小孔成像模型),它将相机的透镜组简化为一个小孔,光线透过小孔在小孔后方的像面上成像;小孔模型成的是倒像,为了表述与研究的方便,我们常常将像面至于小孔之前,且到小孔的距离仍然是焦距f,这样的模型与原来的小孔模型是等价的,只不过成的是正像,符合人的直观感受。在这种情况下,往往将小孔称作光心(Optical Center)。如下图所示:
小孔模型是一种理想相机模型,没有考虑实际相机中存在的场曲、畸变等问题。在实际使用时,这些问题可以通过在标定的过程中引入畸变参数解决,所以小孔模型仍然是目前最广泛使用的相机模型.
坐标系
前面已经说过,相机标定的目的之一是为了建立物体从三维世界到成像平面上各坐标点的对应关系,所以首先我们需要定义这样几个坐标系来为整个过程做好铺垫:
世界坐标系(world coordinate system):用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。单位为m。是客观三维世界的绝对坐标系,也称客观坐标系。因为数码相机安放在三维空间中,我们需要世界坐标系这个基准坐标系来描述数码相机的位置,并且用它来描述安放在此三维环境中的其它任何物体的位置,用(Xw, Yw, Zw)表示其坐标值。
相机坐标系(camera coordinate system)(光心坐标系):在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。单位为m。以相机的光心为坐标原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,相机的光轴为Z 轴,用(Xc, Yc, Zc)表示其坐标值。
图像坐标系(image coordinate system):为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。 以CCD 图像平面的中心为坐标原点,X轴和Y 轴分别平行于图像平面的两条垂直边,用( x , y )表示其坐标值。图像坐标系是用物理单位(例如毫米)表示像素在图像中的位置。
像素坐标系(pixel coordinate system):为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是我们真正从相机内读取到的信息所在的坐标系。单位为个(像素数目)。以 图像平面的左上角顶点为原点,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用(u , v )表示其坐标值。数码相机采集的图像首先是形成标准电信号的形式,然后再通过模数转换变换为数字图像。每幅图像的存储形式是M × N的数组,M 行 N 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系。
一下子定义出来四个坐标系可能有点晕,下图可以更清晰地表达这四个坐标系之间的关系:
内参矩阵:
像素坐标系与图像坐标系的关系如图:
他们之间的转换关系为:
采用齐次坐标再用矩阵形式将上式表示为:
其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx 和 dy分别是每个像素在图像平面x和y方向上的物理尺寸。
图像坐标系与相机坐标系的关系:
这一过程进行了从三维坐标到二维坐标的转换,也即投影透视过程(用中心投影法将物体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图,也就是使我们人眼看到景物近大远小的一种成像方式)。我们还是拿针孔成像来说明(除了成像亮度低外,成像效果和透镜成像是一样的,但是光路更简单)。
此时,假设相机坐标系中有一点M,则在理想图像坐标系下(无畸变)的成像点P的坐标为(可由相似三角形原则得出):
其中 f 为焦距(像平面与相机坐标系原点的距离),将以上关系表示为矩阵形式,有
则矩阵:
称之为内参矩阵可以理解为矩阵内各值只与相机内部参数有关,且不随物体位置变化而变化。其中fx,fy的单位为个(像素数目)
2、相机坐标系与世界坐标系的变换(外参矩阵):
一般情况下,世界坐标系和相机坐标系不重合,这时,世界坐标系中的某一点P要投影到像面上时,先要将该点的坐标转换到相机坐标系下。刚体从世界坐标系转换到相机坐标系的过程,可以通过旋转和平移来得到。设P在世界坐标系中的坐标为X,P到光心的垂直距离为s(即上文中的Z),在像面上的坐标为x,世界坐标系与相机坐标系之间的相对旋转为矩阵R(R是一个三行三列的旋转矩阵),相对位移为向量T(三行一列),我们将其变换矩阵由一个旋转矩阵和平移向量组合成的齐次坐标矩阵来表示:
即为外参矩阵,之所称之为外参矩阵可以理解为只与相机外部参数有关,且外参矩阵随刚体位置的变化而变化.
其中M1称为相机的内参矩阵,包含内参(fx,fy,u0,v0)。M2称为相机的外参矩阵,包含外参(R:旋转矩阵,T:平移矩阵)。相机标定就是确定相机的内部参数和外部参数。
最后用一幅图来总结从世界坐标系到像素坐标系(不考虑畸变)的转换关系:
实际成像畸变模型
理想的透视模型是针孔成像模型,物和像会满足相似三角形的关系。但是实际上由于相机光学系统存在加工和装配的误差,透镜就并不能满足物和像成相似三角形的关系,所以相机图像平面上实际所成的像与理想成像之间会存在畸变。畸变主要是径向畸变(下图dr),也包括切向畸变(下图dt)等。畸变属于成像的几何失真,是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象,这种变形的程度从画面中心至画面边缘依次递增,主要在画面边缘反映比较明显。
实际情况中我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变。矫正径向畸变前后的坐标关系为:
由此可知对于径向畸变,我们有3个畸变参数需要求解。
切向畸变是由于透镜和CMOS或者CCD的安装位置误差导致。因此,如果存在切向畸变,一个矩形被投影到成像平面上时,很可能会变成一个梯形。切向畸变需要两个额外的畸变参数来描述,矫正前后的坐标关系为:
由此可知对于切向畸变,我们有2个畸变参数需要求解。
综上,我们一共需要5个畸变参数(k1、k2、k3、p1和p2 )来描述透镜畸变。
相机标定(1)内\外参矩阵和畸变矩阵相关推荐
- 无标定物体环境下,高分辨率雷达与相机的像素级外参标定
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Pixel-level Extrinsic Self Calibration of High R ...
- 相机与激光测距仪的外参标定(提升相机标定)
文章目录 Abstract I Introduction II Basic Equations A Geometric Constraints III Solving Extrinsic calibr ...
- 相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 介绍
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 相机与激光雷达外参标定 功能包介绍 环境配置及功能包安装 功能包节点 准备内容 1 l ...
- 相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法 livox_camera_lidar_calibration 功能包介绍 使 ...
- 使用ros标定相机的内参和外参
使用ros标定相机的内参和外参 1 安装依赖 2 运行标定节点 2.1 rocore 2.2 启动摄像头驱动程序 2.3 加载将要标定的图像主题 3 开始标定 3.1 打印一张棋盘格图片 3.2 具体 ...
- 无目标场景下高分辨率激光雷达和相机的像素级外参自标定
文章:Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environm ...
- 最本质的相机内参intrinsics与外参extrinsics分析,从建模,推导到求解
相机内参与外参分析,从建模,推导到求解:Camera Extrinsics and Intrinsics. I. 坐标系的建立,Coordinate System. II. 转换关系,Transfor ...
- 利用python语言进行相机标定
利用python语言进行相机标定 目录 利用python语言进行相机标定 一.相机标定相关原理 1.相机标定简介 2.坐标映射 2.1图像坐标系 1)图像坐标系(Pixel coordinate sy ...
- 相机标定、双目相机标定(原理)、三维重建效果展示
1.相机标定的目的: (1)通过单目相机标定分别求出左右相机的内参数和外参数. (2)矫正由于镜头畸变造成的图片的变形,例如,现实中的直线,拍摄成图像后会外凸或内凹,进行相机标定后可以对这种情况进行校 ...
最新文章
- linux 配置软连接的需要注意的一个问题
- vb6 获得计算机硬件信息_计算机硬件系统由哪几部分组成
- 跟随我在oracle学习php(51)
- 存储过程是用来干什么的_感情不是用来考验的
- wildfly-9.0.2 web项目部署详细步骤
- QQ浏览器视频相似度算法
- matlab将多个nc文件进行合成TIF
- 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
- android n进入分屏代码分析_完全不用鼠标写代码!你信么?[视频]
- 计算机网络自顶向下方法 【第一章 计算机网络及因特网】
- MSM8937-MSM8953 I2C 配置调试指南
- 基于穿戴式智能化步态分析仪的步态分析
- 人脸对齐(一)--定义及作用
- No plugin found for prefix 'mybatis-generator' in the current project ORA-28040: No matching authen
- c语言char几个字节为什么,为什么在C语言中char是1个字节(Why char is of 1 byte in C language)...
- 电视html转vga没有声音,电脑用VGA线连接电视,怎么声音不能传进电视?
- 自然语言处理系列之:中文分词技术
- 【《操作系统慕课版》合集】期末复习 + 核心算法整理 + 课后答案
- java + jfreechart + itextpdf创建折线图饼图并导出为pdf
- 剖析抖音快速涨粉的文案号,了解大佬运营技巧,学以致用
热门文章
- 存储桶列表访问权限_十分钟从入门到精通(上)——OBS权限配置
- java web远程调试工具_java远程调试 - Dendy的个人页面 - OSCHINA - 中文开源技术交流社区...
- python网络爬虫开发从入门到精通_Python突击-从入门到精通到项目实战
- 你准备好了吗,he is coming
- 小汤学编程之JAVA基础day09——常用类(一):比较器、内部类和包装类
- 爬虫常用Xpath和CSS3选择器对比
- package 和 install的区别
- 【java】详解java多线程
- 区别Transform、Transition、Animation
- CSS经验分享:如何书写可维护的CSS代码01