前期规划
- 结构光是否需要?
- 优势:由于主动投射光源,即使在光照不足或无纹理的场景中也能获得稳定的深度信息;结构光在深度相机中的运用主要是通过 主动投射光图案 来计算物体的深度信息。如果应用场景需要同时进行红外成像和结构光深度测量,可以考虑使用 不同波长的红外光 或 优化滤光片 以减少干扰。
- 使用显微镜物镜作为镜头:“有限远物镜法” 和“无限远物镜法” 。【有图】“自制”超微距镜头可以做到什么~-蜂鸟网,可能存在景深较小的情况,或牺牲分辨率提高景深。(一龄幼虫体粗约数百微米)
- 工业微距镜头与无限远物镜比较:
- 前者方便省事,但无法个性化调整组装
- 前者景深较大但分辨率不如后者高(毫米级<微米级)
- 工业微距镜头与无限远物镜比较:
- ~~双色成像:一个深度相机=一个红外+一个荧光?是否可行?成像效果如何,是否会损失深度信息?(需要很好的对齐)
- 建议:使用共轴合成镜筒(两个传感器通过分光镜看同一物体)
- 红外图用于深度图重建
- 荧光图用于生物结构标注和行为观察~~
- 光源:点阵激光照明,非常适合用于三维重构(是否会对幼虫表面组织产生损伤或者是否会影响幼虫行为?)
- 机位:4&6个
深度相机,正四面体构型或者正八面体构型?需考虑仰视角度的必要性和可行性! - 内参标定:张正友的棋盘格标定法
- 算法思路:
- 由于果蝇幼虫头身偏移角度一般不会很大因此从俯视视角观看一般不会出现身体遮挡的问题,这就能够很好的提取出果蝇幼虫身体的中线。
- 配合荧光识别出的体节可以将中线切割为小段,取这些小段的中点作为joint。(可能T1之前不需要joint?)
- 使用blender构建vertices网络,每个体节轮廓由3或5个vertices描述,根据生理结构限制vertices的活动范围
- 每个非特殊joint分别控制对应体节的vertices,设置权重矩阵。
- 对比模型投影到相机中的图像和实际画面,使用梯度下降算法优化
下一步:
- 试着使用无限远距离法用已有物镜搭建一个微距镜头demo, 测试成像情况
- 制作一个透明容器容纳果蝇幼虫方便成像
- 测试张正友相机标定法
- 测试仰视/俯视的可行性
方法
背景知识
变换
刚体变换
- 刚体变换: 刚体变换是一种保持几何结构不变的变换, 保持几何图形的长度和角度不变, 即仅包含平移旋转. $$ 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} $$ 不难看出, 当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$,此时由:$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}$4则等式: $$ \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 ↩︎