相机之针孔模型

本文深入探讨了视觉SLAM的基本概念和技术细节,包括灰度图、RGB图、深度图的概念,详细介绍了小孔成像原理及其数学模型,还讨论了相机坐标系、像素坐标系与世界坐标系之间的转换关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20170928-0929更新:修改一些内容上的错误,添加世界坐标系坐标的内容
20170908更新:公式都采用LaTex编辑

[注]
本文的内容基本上是基于《视觉SLAM十四讲》第五讲的部分内容写的,加深自己的理解。


引言

现在跟着高翔博士的一起做RGB-D SLAM系列学习,通过深度相机,得到一张RGB图和一张深度图。
先说一下什么是灰度图(gray scale image),比如用1个字节长度(8位)来表示1张图片的黑白程度,255代表白色,0代表黑色。
RGB图,就是红,绿,蓝三原色,每个颜色都用1个字节来表示该种颜色的深浅,比如黄色的RGB值是(255, 255, 0)。
深度图存放的深度数据d则和真实世界的距离z成某一比例。

小孔成像

小孔成像应该是大家在小学或者中学时期都做过的一个物理小实验(可是我并没有印象啊…)。
这里有一个很有趣的小视频:小孔成像科普

相机坐标系与物理成像平面

我们来定义一个相机坐标系 O-x-y-z,一个物理成像平面坐标系O’-x’-y’-z’,单位都是米。
如下图所示(手画的):

在相机坐标系中一个点P坐标为:

[xyz]T

经过小孔O投影后落在物理成像平面上,成像点为P’坐标为:

[xy]T

(正是许许多多个成像点组成后变成了一个完整的像)
根据三角形相似的关系,可以得到以下关系式 :

fz=xx=yy

为了简化模型,把物理成像平面对称到相机平面的另一边,这样一来,式子中的负号就没了。如下:

{x=fxzy=fyz

以后,为了方便表达,我们也称之为针孔相机模型。

像素坐标系

在相机中,最终我们得到的是一个个像素,这就需要在物理成像平面上对像进行采样和量化。
图像是由一个个像素点组成,传统的像素坐标系是这样定义的:


这里我们定义像素点的坐标为:

[uv]T

从物理成像平面到像素坐标系,它们之间的关系是缩放和平移。
物理成像平面的x’轴缩放α倍后得到像素坐标系的u轴;
物理成像平面的y’轴缩放β倍后得到像素坐标系的v轴;
物理成像平面的原点平移 后得到像素坐标系的原点;
可以得到以下关系式:

{u=αx+cxv=βy+cy

将x’和y’用x,y的式子替换得到:
{u=αfxz+cxv=βfyz+cy

然后通过合并:

{fx=αffy=βf

得到下面的式子:

{u=fxxz+cxv=fyyz+cy

这样一来,我们就得到了像素坐标和相机坐标之间的关系式,不过要明白式子中参数的单位:米,像素,像素/米。

针孔模型的矩阵形式

有了上面的关系式,让我们先把它写成矩阵的形式:

uv1=1zfx000fy0cxcy1xyz=1zKP

按照习惯,把z放到等式的左边:
zuv1=fx000fy0cxcy1xyz=KP

对于这个式子作以下2点说明:

  • 中间的矩阵我们把它叫做相机的内参数矩阵(camera intrinsics),好奇的宝宝可能马上就会问了,那有没有外参数矩阵呀?(下面就会讲了哦!);
  • 式子左边的是像素坐标的齐次坐标形式,这里等式的等号是严格成立的,只不过左边是齐次坐标,右边没有用到非齐次坐标。

在上面的式子中, xyz 指的是相机坐标系下的坐标,但是,我们用个办法把它换成世界坐标系下的坐标。
这就要用到旋转矩阵那一部分的知识啦!
可以参考这个帖子:旋转矩阵和变换矩阵

我们把式子写成了以下的形式:

zPuv=zuv1=K(RPw+t)=KTPw

  • Puv 是像素坐标的齐次形式
  • 其中 Pw 是世界坐标系中的坐标
  • 这里的R,t 就是名为相机外参数的东西啦!也就是相机的位姿,也是SLAM中带估计的目标,代表了机器人的轨迹。

因为我们前面讲,齐次坐标形式乘以一个非零的常数都是表示一个点或者向量,那么我们可以把z丢掉,得到以下式子:

Puv=KTPw

但是这样一来,等号就变成了在齐次坐标系下才相等的概念,不是严格想等了,所以我们还是要想个办法,让等号能够成立。

  • 第一步:我们曾经讲过RaTa 出现在等号的两头时,隐含了齐次和非齐次间的一个变换,在这里就是:
    K(RPw+t)=KTPw

TPw 就是又把齐次形式的世界坐标变换到相机坐标系,为了能和K 相乘,需要把 TPw ,也就是齐次形式的相机坐标系坐标的最后一维扔掉,又变成了相机坐标系坐标的非齐次形式: xyz

  • 第二步:上面讲因为丢了一个z使得等式不是严格成立,那么我们在等式右边也扔掉一个z,找个什么借口呢?对呀,你看这个第一步得到的相机坐标系坐标的非齐次形式,它的第三维也是z,那么现在我们认为,这个三维坐标是某个二维平面坐标的非齐次形式变得,也就是说,我认为现在这个 xyz 是个齐次坐标。
    那么按照齐次和非齐次的转换得到:
    x/zy/z1

    这样以来,我在等式两边相当于同时除以z,那么这个等号就是严格成立的了。

归一化平面和归一化坐标

上面等式左边的 Puv 我们看作是像素坐标的齐次形式,等号右边的看作是什么呢?可以看作是位于相机前面z=1处的平面上的点。
这个平面就叫做归一化平面,那么,我们就可以把像素坐标 [uv] 看作是在归一化平面上的点进行量化测量的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值