九七的视觉工程 | 普通单目相机成像过程及相机内参详解

news/2024/11/22 11:46:03/

相机成像过程及相机内参详解

一、定义介绍

  本节以小孔成像模型为例,详细介绍了普通单目相机的成像过程,相机内参及内参矩阵的详细含义。本节所述的成像原理与大部分相机成像原理类似,读懂此节可满足大部分与单目视觉相关的工作,也可以此类推到更复杂的内容。

二、原理解读

相机成像原理图

(一)成像过程

1.坐标系

  在相机成像过程中存在三个坐标系(也可加上世界坐标系看作四个):相机坐标系(也称为光心坐标系)、物理(成像平面)坐标系、像素坐标系

相机坐标系:如图所示,为o-x-y-z坐标系,对应相机平面。以光心O为原点,z轴指向相机正前方,y轴向下,x轴向右。我们所谓的真实世界中的物体的坐标基于世界坐标系,此处的相机坐标系是经过世界坐标系转换来的,但世界坐标系到相机坐标系是属于外参,因此,我们人为地将物体看作基于相机坐标系即可,本质上没有太大影响。

物理坐标系:如图所示,为o’-x’-y’坐标系,对应物理平面。物理坐标系是个二维坐标系(包括后面的像素坐标系)!并非相机坐标系的三维。物理(成像平面)坐标系本质上就是用来刻度感光芯片(如CMOS)的平面,一般物理坐标系原点就是感光芯片的中心点(也有可能不是,根据具体厂家生产不同决定)。物理平面就是感光芯片上的图片。

像素坐标系:如图所示,为o’’-u-v坐标系,对应像素平面。由物理平面映射而成,相当于改变物理坐标系原点、改变基于物理坐标系下的成像平面的缩放倍数,可以理解为像素坐标系和物理坐标系处于同一个平面。图像成像到像素平面其实就可以理解为平时电脑上看到的图片(PNG、JEPG等)。

f f f:焦距,相机光心到物理成像平面的距离。一般相机在生产时就固定了,由厂家给出;也存在变焦相机,指的就是 f f f是可变的。比如1~5mm变焦相机,指的就是相机的焦距 f f f可以在1~5mm内变动,一般变焦相机通过硬件微型电机前后移动镜头来实现变焦功能。

2.成像转换过程

  假设镜头前有一实际的点P,从P转到 p p p的过程即是成像转换的过程。我们以相机的光心为原点,那么基于相机坐标系,这个点P的坐标就为(X, Y ,Z)。此时我们得到了一个实际点(有一个点,实际物体看做很多很多个点就是了)在相机坐标系下的坐标,接下来要做的就是通过相机坐标系下的点,转而获得该点基于物理坐标系下的坐标;再从基于物理坐标系下获得的坐标,转而获得该点基于像素坐标系下的坐标,这样就完成了实际物体到图像的成像过程。下面分步解释几个转换:

(1)从相机坐标系到物理坐标系

  上面我们假设相机坐标系下有一点P(X,Y,Z),投影到成像平面坐标系下为P’(X’,Y’)。如图所示,根据假设,我们已知X、Y、Z和 f f f(焦距),由于是小孔成像模型,成像平面与相机平面平行,且两坐标系原点同在相机坐标系Z轴。依据相似三角形原理,我们不难求出P’(X’,Y’)的坐标,这里没有Z轴,因为物理坐标系是二维的。以下为推到公式:
因相似三角形原理,且小孔成像导致图像倒置180度
− X ′ f = X Z \frac{-X'}{f}=\frac{X}{Z} fX=ZX
X ′ = f − X Z X'=f\frac{-X}{Z} X=fZX
同理可得 Y ′ = f − Y Z Y'=f\frac{-Y}{Z} Y=fZY

(2)从物理坐标系到像素坐标系

  得到P’(X’,Y’)后,从物理坐标系映射到像素坐标系其实是一种人为的过程,如图所示,以左上角为像素坐标系原点只是一种人为约定的习惯。将物理平面的所有点都映射到像素平面,不难理解,需要先进行缩放,然后加上点的偏移。如图,P’(X’,Y’)映射到像素平面后为 p ( u , v ) p(u,v) p(u,v)但因为小孔成像模型中(1)从相机坐标系到物理坐标系这个过程,会导致图像翻转180度,因此,一般情况下(有些相机设备可能不是这样),成像平面上右下角的点,就应该是像素平面的原点。我们假设X’轴、Y’轴缩放倍数为 α 、 β α、β αβ,点偏移为 c x 、 c y c_x、c_y cxcy,那么,我们就可以得到点 p ( u , v ) p(u,v) p(u,v)的坐标。
u = α X ′ + c x = α f − X Z + c x u=αX'+c_x=αf\frac{-X}{Z}+c_x u=αX+cx=αfZX+cx

v = β X ′ + c y = β f − Y Z + c y v=βX'+c_y=βf\frac{-Y}{Z}+c_y v=βX+cy=βfZY+cy

虽然说小孔成像导致图像倒置,但这些都是人为规定的,我们也可以将成像平面看做是在相机前面,也是变成如图所示样子(从 − f -f f处的蜡烛变成了 f f f处红色的蜡烛)
在这里插入图片描述
这样一来,我们就把负号去掉了,一般情况下相机生成厂家也都是这么做的(他们就是直接去除负号)。因此,点 p ( u , v ) p(u,v) p(u,v)的坐标又可以写成
u = α X ′ + c x = α f X Z + c x u=αX'+c_x=αf\frac{X}{Z}+c_x u=αX+cx=αfZX+cx

v = β X ′ + c y = β f Y Z + c y v=βX'+c_y=βf\frac{Y}{Z}+c_y v=βX+cy=βfZY+cy

(二)相机内参矩阵

1.推导内参矩阵

我们用 f x f_x fx替换 α f αf αf,用 f y f_y fy替换 β f βf βf;则上式变为
u = f x X Z + c x u=f_x\frac{X}{Z}+c_x u=fxZX+cx

v = f y Y Z + c y v=f_y\frac{Y}{Z}+c_y v=fyZY+cy

然后再将上式写成矩阵的形式,就变成了
( u v 1 ) = ( f x Z 0 c x Z 0 f y Z c y Z 0 0 1 Z ) ∗ ( X Y Z ) \begin{pmatrix} u\\ v\\ 1\end{pmatrix}=\begin{pmatrix} \frac{f_x}{Z}&0&\frac{c_x}{Z}\\ 0&\frac{f_y}{Z}&\frac{c_y}{Z}\\ 0&0&\frac{1}{Z}\end{pmatrix}*\begin{pmatrix} X\\ Y\\ Z\end{pmatrix} uv1=Zfx000Zfy0ZcxZcyZ1XYZ

提取出K,变成下式
( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ∗ ( X Y Z ) \begin{pmatrix} u\\ v\\ 1\end{pmatrix}=\frac{1}{Z}\begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix}*\begin{pmatrix} X\\ Y\\ Z\end{pmatrix} uv1=Z1fx000fy0cxcy1XYZ

将Z提取到前面,上式便写成
Z p = K P Zp=KP Zp=KP

此时,我们就得到了内参矩阵,K( ( f x 0 c x 0 f y c y 0 0 1 ) \begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix} fx000fy0cxcy1)就是内参矩阵

2.内参矩阵的意义

通过上面,我们得到了内参矩阵K: ( f x 0 c x 0 f y c y 0 0 1 ) \begin{pmatrix} f_x&0&c_x\\ 0&f_y&c_y\\ 0&0&1\end{pmatrix} fx000fy0cxcy1
其中, f x = α f f_x=αf fx=αf f x f_x fx就是 f f f(焦距)和 α α α(像素平面u轴缩放倍数)的乘积;
f y = β f f_y=βf fy=βf f y f_y fy就是 f f f(焦距)和 β β β(像素平面v轴缩放倍数)的乘积;
c x c_x cx就是物理平面与像素平面u轴的偏移
c y c_y cy就是物理平面与像素平面v轴的偏移

来自:九七的视觉工程
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!


http://www.ppmy.cn/news/537855.html

相关文章

adimec工业相机在半导体电子行业中的应用

十多年来,Adimec 一直为领先的焊贴检测 (SPI) 和自动光学检测 (3D AOI) 设备制造商提供服务。Adimec 的创新成像技术帮助他们在具有挑战性的生态系统中在检其组件尺寸缩小,散热优良。 为了继续创新&#x…

Docker部署Hadoop

目录 1.安装VMware 1.1下载VMware 1.2安装VMware 2.创建虚拟机并安装Centos7系统 1.创建空白虚拟机 2.在空白虚拟机中安装Centos7系统 1.安装VMware 1.1下载VMware 官网下载 VMware Workstation Pro17 1.2安装VMware 1.点击下一步- 2.选择我接受许可协议中的条款&…

公考 粉笔980资料分析笔记

一、 速算技巧 1、截位法 从左往右保留n位数据并且四舍五入,一般会保留两位或者三位。 1.1

广数GSK(980, 988, 980tdi网口,980tdc串口)数据采集实战

1.本人在项目中采集过980tdi网口,980tdc串口,980tdc串吕相对麻烦点 系统可能要升级,还要加串口服务器,比较麻烦,直接C#调用C封装好的DLL 2.980,988是跟朋友换的资源,朋友在项目中也是验证过的 3.资料都是精…

利用EndNote向Word插入参考文献出现文本({作者,年份 #980})

问题: 利用EndNote向Word插入参考文献出现文本({作者,年份 #980}) 文档尾部未有参考文献列出文中是文本格式 解决办法: 将InstantFormatting由Off设置为on 如果出现报错提示,ignore即可,把报错…

麒麟980和骁龙765g的差别盘点

现在市面上的处理器,主要就是高通骁龙处理器,以及苹果的A系列处理器以及联发科天玑处理器作斗争,但是当初还有一个华为的麒麟海思处理器,性能也是非常强悍的,那么麒麟980和骁龙765g的差别在哪里呢? K980的…

麒麟980处理器要来了,最强国产手机非它莫属!

2019年将至,三星和苹果两位大咖的旗舰机型也将相继登场,对于华为来说,下半年可谓挑战重重。上半年华为P20系列的摄影功能虽然大受好评,但是其搭载的麒麟970却让这款手机失分不少。你要知道,麒麟970可是去年的旗舰芯片&…

天玑800能搭载鸿蒙系统吗,天玑800和麒麟980哪个好-天玑800和麒麟980对比评测

随着5G时代的降临,手机处理器也迎来了一大波的换新热潮,渐渐的5G也成为了人们选择手机的一个重要标准。今天为大家介绍的两款芯片都是主打中端手机市场的天玑800和麒麟980,那么这两款芯片究竟哪一款更加出众呢?就让我们拭目以待吧…