相机

相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述。这个模型有很多种,其中最简单的称为针孔模型。针孔模型是很常用,而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。在本书中我们用一个简单的针孔相机模型来对这种映射关系进行建模。同时,由于相机镜头上的透镜的存在,会使得光线投影到成像平面的过程中会产生畸变。因此,我们使用针孔和畸变两个模型来描述整个投影过程。

针孔相机模型根据三角形相似关系

在这里插入图片描述
Zf=−XX′=−YY′\frac{Z}{f}=-\frac{X}{X^{\prime}}=-\frac{Y}{Y^{\prime}}fZ=XX=YY
其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,如图5-2中间的样子所示。这样做可以使式子更加简。
X′=fXZY′=fYZ\begin{array}{l} X^{\prime}=f \frac{X}{Z} \\ Y^{\prime}=f \frac{Y}{Z} \end{array}X=fZXY=fZY
式(5.3)描述了点 P 和它的像之间的空间关系。不过,在相机中,我们最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的 光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面 $o-u-v $。 我 们在像素平面得到了 P′P'P 的像素坐标: [u,v]T[u, v]^{T}[u,v]T
像素坐标系“通常的定义方式是:原点 o’ 位于图像的左上角, 轴向右与 xxx 轴平行, vvv 轴向下与 yyy 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。 我们设像素坐标在 uuu 轴上缩放了α\alphaα倍,在 vvv 上缩放了 β\betaβ 倍。同时,原点平移了 [cx,cy]T\left[c_{x}, c_{y}\right]^{T}[cx,cy]T 那么,P′P'P 的坐标与像素坐标 [u,v]T[u, v]^{T}[u,v]T 的关系为:
{u=αX′+cxv=βY′+cy \left\{\begin{array}{l} u=\alpha X^{\prime}+c_{x} \\ v=\beta Y^{\prime}+c_{y} \end{array}\right. {u=αX+cxv=βY+cy
αf\alpha fαf 合并成 fx,f_{x},fx,βf\beta fβf 合并成 fy,f_{y},fy, 得:
{u=fxXZ+cxv=fyYZ+cy \left\{\begin{array}{l} u=f_{x} \frac{X}{Z}+c_{x} \\ v=f_{y} \frac{Y}{Z}+c_{y} \end{array}\right. {u=fxZX+cxv=fyZY+cy
其中, fff 的单位为米, α,β\alpha, \betaα,β 的单位为像素每米,所以 fx,fyf_{x}, f_{y}fx,fy 的单位为像素。把该式写成矩阵形式,用到齐次坐标,会更加简洁,像素点的归一化坐标:
x=(uv1)=1Z(fx0cx0fycy001)(XYZ)≜1ZKP x= \left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)=\frac{1}{Z}\left(\begin{array}{lll} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \triangleq \frac{1}{Z} \boldsymbol{K} \boldsymbol{P} x=uv1=Z1fx000fy0cxcy1XYZZ1KP

该式中,我们把中间的量组成的矩阵称为相机的内参数矩阵(Camera Intrinsics) KKK .

双目相机模型

双目相机一般由左眼和右眼两个水平放置的相机组成。我们可以把两个相机都看作针孔相机。它们是水平放置的,意味两个相机的光圈中心都位于xxx轴上。它们的距离称为双目相机的基线(Baseline, 记作 bbb ),是双目的重要参数。
在这里插入图片描述
理想情况下,由于左右相机只有在xxx轴上有位移, 因此PPP的像也只在xxx轴(对应图像的uuu轴)上有差异。根据相似关系
z−fz=b−uL+uRb \frac{z-f}{z}=\frac{b-u_{L}+u_{R}}{b} zzf=bbuL+uR
整理得
z=fbd,d=uL−uR z=\frac{f b}{d}, \quad d=u_{L}-u_{R} z=dfb,d=uLuR

这里ddd为左右图的横坐标之差,称为视差(Disparity)。根据视差,我们可以估计一 个像素离相机的距离。视差与距离成反比。然由视差计算深度的公式很简洁,但视差ddd本身的计算却比较困难。我们需要确切地知道左眼图像某个像素出现在右眼图像的哪一个位置(即对应关系),这件事亦属于 “人类觉得容易而计算机觉得困难”的事务。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐