方法
背景知识
光学知识
- 数值孔径NA: NA = n × sin(α),其中 n 是介质的折射率,α 是光轴上的最大入射角。
- 光圈数: F值 = f / D,其中 f 是镜头的焦距,D 是光圈的直径。F值越小,光圈越大,进光量越多。
- 景深DoF: $=\frac{n\lambda}{{NA}^2}+\frac{ne}{M\cdot {NA}}=\frac{2Fcf^2s^2}{f^4-F^2c^2s^2}$
- 放大倍率:$M=\frac{f}{s-f}$
- 视差: 是指从不同观察位置看同一个物体时,物体在视野中的位置差异。这是我们感知深度和立体感的关键机制之一。
- 镜头的远心性是光学系统中的一个重要特性,尤其在高精度测量和机器视觉中非常关键。简单来说,远心性指的是镜头在成像过程中,主光线(即穿过物体和镜头中心的光线)是否与光轴平行。根据光阑(控制光线通过的孔径)的位置不同,远心镜头可以分为三种类型:
- 物方远心镜头:光阑位于像方焦平面,使得从物体来的主光线平行于光轴。这样即使物体稍微前后移动,成像大小也不会改变,适合精确测量物体尺寸。
- 像方远心镜头:光阑位于物方焦平面,使得成像后的主光线平行于光轴。这样无论图像传感器的位置如何变化,图像大小保持一致,适合对图像尺寸要求严格的应用。
- 双远心镜头:结合了上述两者的优点,物方和像方主光线都平行于光轴,成像稳定性和精度最高,常用于高端工业检测。 远心镜头的最大优势在于它能消除视差误差和放大倍率变化,这在机器人视觉、显微测量、精密装配等领域非常重要。
变换
刚体变换
- 刚体变换: 刚体变换是一种保持几何结构不变的变换, 保持几何图形的长度和角度不变, 即仅包含平移旋转. $$ x’=R x+ \vec t $$ 其中$R\in SO(2)$1为旋转矩阵, $\vec{t}$为平移向量
齐次坐标
由于旋转和平移基于的是不同运算(矩阵乘法和向量加法), 这导致每次变换都要分别处理,不方便组合多次变换。为了统一成单一矩阵乘法形式,我们引入齐次坐标。(除此之外透视投影是非线性的,需要将其转化为线性的矩阵运算)
齐次坐标(以二维为例):将点(x,y)对应的向量$\vec{x}=\begin{bmatrix}x_1\\ x_2\end{bmatrix}$拓展为 $\tilde{x}=\begin{bmatrix}x_1\\ x_2\\ Q\end{bmatrix}$并将上述变换统一为: $$ T=\begin{bmatrix} R&\vec{t}\\ 0&Q \end{bmatrix}=\begin{bmatrix} cos\theta&-sin\theta&t_x\\ sin\theta&cos\theta&t_y\\ 0&0&Q \end{bmatrix} $$ 如此一来: $$ x’=R x+ \vec t\Longrightarrow \tilde{x}’=T\tilde{x} $$ 通常情况下, 要求上面的情形Q=1, 表明齐次坐标系等价于标准化的欧几里得坐标系. 在$Q\ne1$时, 齐次坐标系和欧几里得坐标系之间存在以下变换: $$ \vec{x}=\begin{bmatrix}\frac{X_1}{Q}\\ \frac{X_2}{Q}\end{bmatrix} \Longleftrightarrow \tilde{x}=\begin{bmatrix}X_1\\ X_2\\ Q\end{bmatrix} $$ 不难看出: 对于任意其次坐标系下的$\tilde{x}$只要他们各项保持相同的比例他们在实际笛卡尔坐标系下就表示同一个点. 除此之外,当Q=0时$\vec{x}$为无穷远处的向量, 通常我们认为Q=0指代的平面为无穷远处的平面.
仿射变换
在刚体变换的基础上加上缩放和剪切此时$R\in\mathbb R^{2\times2}$不在要求是正交矩阵 $$ \tilde{x}’=T\tilde{x}\quad T=\begin{bmatrix} M&t\\ 0&1 \end{bmatrix} $$
李群基础
一些集合既是群,又是连续空间中的流形, 这类群叫做: 李群
例如: SO(3): 3维空间中所有旋转矩阵构成的李群; SE(3): 3维空间中所有刚体变换构成的李群 这些群既具有代数结构又具有微分结构, 在计算机视觉中我们十分关注其具备的几何性质.
切空间
在几何上, 某个曲面或者流形在一点处的局部切平面上能够表示从切点到所有其他方向的向量张成的向量空间. 该空间内包含了所有“从切点出发的可能速度方向”。被称为该几何结构的切空间.
在李群中(以SO(3)为例), 它的切空间就是从单位元素(单位矩阵)出发的所有微小变换方向
相机标定
相机采用张正友标定法进行标定, 由于深度相机存在两个sensor通常需要对两个sensor逐一标定其内外参数, 若采用共用光路的决策则每个相机组标定一次即可.
基本概念
- 相机内参: 定义相机成像过程中的内部几何和光学特性, 通常包含: 焦距$f_x,f_y$2、主点$c_x,c_y$2、二维像素轴角2,在某些情况中还包含畸变参数。实际上我们常使用内参矩阵来表示一个相机的内参: $$ A=\begin{bmatrix} f_x& \gamma & c_x\\ 0 & f_y& c_y\\ 0& 0& 1 \end{bmatrix} $$
- 相机外参3:描述 世界坐标系到相机坐标系 的变换,即: $$ T=[R\mid t]=\begin{bmatrix} R&\vec{t}\\ 0&Q \end{bmatrix} $$ 也就是前面提到的齐次坐标下的变换矩阵的三维形态。
基础理论
相机模型
分别在三维现实和相机所成二维图像上建立坐标系,我们有: $$ s\cdot\vec{m}=A[R\mid \vec{t}]{M} \tag 1 $$ 其中:$M=\begin{bmatrix}X\\ Y\\ Z\\ 1\end{bmatrix}$、$\vec{m}=\begin{bmatrix}u\\ v\\ 1\end{bmatrix}$、A是前文提到的内参矩阵、s是一个标量尺度因子。为与原论文照应方便起见将A的字母改写为:$A=\begin{bmatrix}\alpha & \gamma & u_0\\0 & \beta& v_0\\0& 0& 1\end{bmatrix}$;将$[R\mid \vec{t}]$改写为$\begin{bmatrix}r_1& r_2& r_3& t\end{bmatrix}$
如果世界坐标的点均位于Z=0平面上,则可以简化上述坐标和外参矩阵为: $$ M=\begin{bmatrix}X\\ Y\\ 1\end{bmatrix}\quad T=\begin{bmatrix}r_1& r_2& t\end{bmatrix} $$
则(1)式转变为: $$ s\cdot\vec{m}=s\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=A\begin{bmatrix}r_1& r_2& t\end{bmatrix}\begin{bmatrix}X\\ Y\\ 1\end{bmatrix}=A[R\mid \vec{t}]{M} $$ 令$H=A\begin{bmatrix}r_1& r_2& t\end{bmatrix}=\begin{bmatrix}h_1& h_2& h_3\end{bmatrix}$,则$s\vec{m}=HM$,H是一个单应矩阵4,此时由:$A^{-1} \vec{h}{1 or 2} = \vec{r}{1 or 2}$ 可得:
$$ \begin{gathered} \vec{h}_1^\tau A^{-\tau}A^{-1}\vec{h}_2=\vec{r_1}\vec{r_2}=0 \quad (2)\\ \vec{h}_1^\tau A^{-\tau}A^{-1}\vec{h}_1=\vec{r_1}^2=1=\vec{r_2}^2=\vec{h}_2^\tau A^{-\tau}A^{-1}\vec{h}_2\quad (3) \end{gathered} $$
(2)(3)两式将在后续作为两个限制条件为解出A($B=A^{-\tau}A^{-1}$)创造机会,此二式除了可以通过代数的方法得到外其也具有一定的几何意义,将在本版块最后作介绍。
取$B=A^{-\tau}A^{-1}=\begin{bmatrix}B_{11}& B_{12}& B_{13}\\ \vdots& \ddots & \vdots\\ B_{31}& \cdots& B_{33} \end{bmatrix}$得到一个对称矩阵,即该矩阵由6个元素决定,取这六个元素为一个向量$\vec{b}=[B_{11},B_{12},B_{22},B_{13},B_{23},B_{33}]^\tau$,再取$v_{ij}=\begin{bmatrix}h_{i1}h_{j1}\\ h_{i1}h_{j2}+h_{i2}h_{j1}\\ h_{i2}h_{j2}\\ h_{i3}h_{j1}+h_{i1}h_{j3}\\ h_{i3}h_{j2}+h_{i2}h_{j3}\\ h_{i3}h_{j3}\end{bmatrix}$5则等式: $$ \vec{h_i}^\tau B\vec{h_j}=v_{ij}^\tau \vec{b} \tag4 $$ 成立,此时(4)式结合(2)(3)两式可得到线性方程组: $$ \left[\begin{gathered} v^\tau_{12}\\ (v_{11}-v_{22})^\tau \end{gathered}\right]\vec{b}=0 $$ 由于$\vec b$中有6个未知元,因此需要额外两个上述形式且线性无关的线性方程组才能将$\vec b$解出。每张照片提供一对方程组做约束条件,也就是说至少需要3张不同机位拍出的照片才能解出$\vec b$。
求解细节
- 要解出$\vec b$,就要先求出H。H通常是通过已知角点坐标利用DLT(Direct Linear Transform)算法求解。其基本思路是利用角点坐标代入$s\vec{m}=HM$得到方程,将其改造为“$A\vec x=0$”的形式后通过奇异值分解法SVD来解得最优H。
- 求出H后就能够进一步求出$\vec b$,同样的使用SVD法对其求解,$\vec b=$最小奇异值对应的右奇异向量。
- 最初求得的$\vec b$不一定精确,还需要通过最大似然法对其进行优化
- 求出$\vec b$后相机内参外参也可以轻易求出: ![[{4F75EB17-25A5-425F-AFB0-91F298E054D3}.png|300]] ![[{E085E9CA-CC7B-4247-BAB5-B9E2811C27B1}.png|300]]
Figure ![[示意图.jpg]] #Fig1
-
SO(2): 二维特殊正交群(Special Orthogonal Group in 2D), 由所有行列式为1的2×2的正交矩阵组成,它表示二维空间中的所有旋转变换。在数学和物理中,SO(2) 是一个李群. ↩︎
-
这里焦距分为x方向和y方向上的焦距, 这是因为相机成像后产生图片的像素可能不是正方形, 若像素为正方形则$f_x=f\cdot s_x=f\cdot s_y=f_y$, s为像素两个方向上的尺度因子; 图像中心(光轴与成像平面交点);通常图像像素都是方形的,但是有的时候图像的像素是菱形或平行四边形的。 ↩︎ ↩︎ ↩︎
-
如图Fig1由于相机(眼睛)参考系与现实参考系存在位置与角度的差异,因此仅使用相机内参无法还原二维平面坐标到三维现实坐标 ↩︎
-
单应矩阵,表示两个平面之间的透视投影关系, 将整个从平面世界点到图像点的非线性投影问题,变成线性代数中简单的矩阵乘法形式。 ↩︎
-
注意此处的v与表示点坐标的v不是同一个v ↩︎