[文章阅读]-A New Mirror-based Extrinsic Camera Calibration Using an Orthogonality Constraint

試著忘記壹切 提交于 2019-12-18 09:04:22

Abstract

此文的目的,标定相机和3D参照物之间的外参关系(相机看不到参照物的情况下). 镜子最少需要换三个姿态, 使用不同姿态下拍摄的3D物体的2D表观来计算外参。本文的贡献在于提出一个外参标定算法, 该算法可以从三mirrored图像中关于P3P问题求出唯一解。每个P3P问题有多达四个解因此 a set of three P3P问题有多达64个解。我们的方法可以根据一个正交约束来选择一个解:单一参照物的所有反射都需要满足这一约束(什么意思?)。另外我们提出的方案通过解一个大的线性系统来计算外参。这两点可保证我们能获取唯一且鲁班的solution. 最后使用了合成数据和真实数据进行了定量和定性的实验评估。

Introduction

有关相机与3D参照物的外参标定的研究由来已久, 3D外参标定可用于从多视角中实现3D形状恢复, 基于视觉的机器人导航以及增强现实系统。

然而,标准校准技术对摄像机的视场有一个基本的限制: 摄像机应该能够直接观察到三维参考对象。针对这些限制不能被满足的情况, 有些算法提出使用mirrors来辅助标定[8, 10, 12, 13, 15, 16, 18]: 相机通过镜子来观察参照物体, 并从镜子对参照物的reflections中来估计外参。

应用并不仅仅局限于解决 field-of-view问题。还可以用于:基于单个相机和多个镜子的3D形状重构, 在这一应该用中, 单个相机所拍摄到的不同视角的视频肯定是同步的,并且享用同一相机内参。

本文贡献:从三张mirrored图像中求解P3P问题并且可得到唯一解。这是基于正交性约束的,单个参照物的不同反射都该满足此约束。我们的方法使用参照物在同一mirror的三个不同(未知)姿态下的像点来求解外参。 并且据我们所知, 这是根据mirrored图像来标定静态相机的最小配置了。(尤其是在RANSAC场景中)为这种最小配置建立一个更好的算法非常重要,因为算法所需要的输入越少, RANSAC的表现就越好。与SOTA[8]相比([8]能够通过重投影误差这样的后处理算法来从64个candidates中选择出一个解), 我们所提出的算法能够生成一个更好的解,并且对观测噪声更鲁棒(如Section5所述)。

本文剩余结构组织如下: 第二节回顾传统的技术并澄清这篇文章的贡献。 第三节描述了在外参标定中(新)的正交约束。第四节介绍了我们所提出的算法。第五节使用合成的和真实的数据进行了定量和定性的评估。 第六节总结此文并对未来做出了展望。

Related Work

按照对mirror姿态的假设, Mirror-based标定算法可以被归结为两个主要的Groups,(1)已知姿态,(2)未知姿态。

第一类方法明确测试mirror的位姿态[10,13]. 文献[10]将marker粘贴在mirror plane上(并通过从markers中估计出的消失点)来标定mirror的姿态

如表1所示, 第二类又可被归为两个子类: (2a) 使用不少于四个已知的参照点进行标定[12, 16, 18] (2b)使用三个已知的参照点来进行标记[8]。(2a)和(2b)的主要区别在于,相机外参是否能够被唯一确定, 也就是PnP问题. 给定已知3D参照点的n(4{\ge}{4})个2D投影(这里所说的是每个3D点的n个投影,还是说总共n个参照点的投影呢), 我们能够唯一确定相机的外参(请问)。在n=3n{=}3的情况下,我们通常有多达4个可能的解。

我们所提出的方法可以被归为(2b)这一类。Hesch[8]等人也研究了这种Configuration。他们首先求解P3P问题并且根据每个mirror姿态来获取4个solutions, 总共获取3D反射参照点的共计64种可能的组合。然后他们针对每种组合来计算外参, 最后选择反投影误差最小的那组参数。

与[8]相比,我们首先引进了参照物的反射物所应该满足的正交约束。并且证明这种约束能让我们从64个候选反射参照点中选择出最好的3D reflected reference points组合(中间无需计算外参和他们的反投影误差)。 另外我们提出使用线性等式系统来求解外参。第五节的评估实验定量地证明了我们所述方法的优越性。

Measurement Model and Orthogonality Constraint

这部分介绍符号记法,观测模型以及reflections的正交约束。

Notations and Measurement Model

如图2所示,给定相机CC, 三个平面mirror πj(j=1,2,3)\pi_{j}(j{=}1,2,3),以及场景中的三个参照点。用pXi(i=1,2,3)p^{i}_{X}(i{=}1,2,3)来表示参照点在局部坐标系统XX下的位置。那么这些点在相机坐标系统下的位置可以表示为:
pCi=RpXi+T(i=1,2,3)(1) p_{C}^{i}{=}Rp_{X}^{i}{+}T{\quad}(i{=1},2,3) \tag{1}

其中R和T分别代表旋转矩阵和平移向量。参照点pCip_{C}^{i}在镜子πj\pi_{j}中的像点记录为pCijp_{C}^{ij}.这一点被投影到相机CC的图像平面上的qijq_{ij}点。每个平面通过(nj,dj)(n_{j},d_{j})来表示, 其中njn_{j}代表mirror在CCS下的法线, djd_{j}代表镜面到C的距离。外参标定的目的在于从qij(i,j=1,2,3)q_{ij}(i,j{=}1,2,3)中估计出RRTT.

从mirror πj\pi_{j}到像点pCijp_{C}^{ij}的距离tijt_{ij}等于从mirror πj\pi_{j}到真实点pCip_{C}^{i}的距离。这一关系可以表达为

pCi=2tijnj+pCij,pCipCij=2tijnj(2) p_{C}^{i}=2t_{ij}n_{j}+p_{C}^{ij}, 即p_{C}^{i}{-}p_{C}^{ij}=2t_{ij}n_{j} \tag{2}

同时距离tijt_{ij}还满足
tij+dj=njTpCij(?)(3)t_{ij}{+}d_{j}{=}-n_{j}^{T}p_{C}^{ij} (能否用代数的方法推导出呢?) \tag{3}

公式(2)建模的是真实点和虚拟点在相机坐标系下的关系,公式(3)建模的是两个虚拟点的距离与相机到镜面距离的关系。tijt_{ij}从这两个方程式中剔除出去, 我们可以得到下面这个式子,

pCi=2(njTpCij+dj)nj+pCij(4) p_{C}^{i}=-2(n_{j}^{T}p_{C}^{ij}+d_{j})n_{j}+p_{C}^{ij} \tag{4}

公式(4)就是我平常所讲述的虚拟点和像点之间的关系, 上面的公式还可以进一步写作为
pCi=(I2njTnj)pCij2djnj p_{C}^{i}=(I-2n_{j}^{T}n_{j})p_{C}^{ij}-2d_{j}n_{j}

所以说pCip_{C}^{i}pCijp_{C}^{ij}之间的关系可以通过householder矩阵来表示,这也是描述我们的测量模型的一个基本公式。

Orthogonality Constraint on Mirrored Points

首先考虑同一真实点pCip_{C}^{i}在两个镜面下的反射点pCijp_{C}^{ij}pCikp_{C}^{ik}的关系。让mjk=nj×nkm_{jk}=n_{j}{\times}n_{k}代表πj\pi_{j}πk\pi_{k}的交线方向, 那么有mjkm_{jk}将满足下面的正交性约束。

命题3.1. πj\pi_{j}πk\pi_{k}交线的方向mjkm_{jk}垂直于同参照点在的镜面反射的连线。即:
pCijpCik,mjk=0 \langle{p_{C}^{ij}-p_{C}^{ik},m_{jk}}\rangle{=}0

证明: 公式(4)表明了两点。[1] 3D参照点pCip_{C}^{i}可以从每个镜面πj\pi_{j}的位置以及其相应的镜像点的位置pCijp_{C}^{ij}中估算出来。[2]从不同mirror及其反射点中所估计出来的pCip_{C}^{i}是相等的。 因此我们将会有

pCi=2(njTpCij+dj)nj+pCij=2(nkTpCik+dk)nk+pCik(6) \begin{aligned} p_{C}^{i}&=-2(n_{j}^{T}p_{C}^{ij}+d_{j})n_{j}+p_{C}^{ij}\\&=-2(n_{k}^{T}p_{C}^{ik}+d_{k})n_{k}+p_{C}^{ik} \tag{6} \end{aligned}

由于向量mjkm_{jk}πj\pi_{j}πk\pi_{k}交线的方向, 因此与法线πj\pi_{j}πk\pi_{k}都垂直:
njTmjk=0,nkTmjk=0(7) n_{j}^{T}m_{jk}{=}0, {\quad} n_{k}^{T}m_{jk}=0 \tag{7}

将公式(6)的两端同时乘以mjkm_{jk}我们可以得到
pCij,mjk=pCik,mjkpCijpCik,mjk(8) \langle{p_{C}^{ij},m_{jk}}\rangle=\langle{p_{C}^{ik},m_{jk}}\rangle{\Leftrightarrow}\langle{p_{C}^{ij}{-}p_{C}^{ik},m_{jk}}\rangle \tag{8}

在下一节中我们将使用该命题来描述我们的外参标定算法。

Extrinsic Calibration From Mirrored Images Using the Orthogonality Constraint

这一节使用3D参照点在不同镜面姿态下的反射点来计算相机的外参。算法1显示了我们的算法流程: 首先对每个相机求解P3P问题, 并且获取64个可能的mirrored reference points的组合。然后利用3.2节中所述的正交约束来选择出一种组合。一旦获取了mirrored reference points, 我们将通过求解一个大型的线性等式系统来求解RRTT.

Unique Solution of Three P3P Problems Using the Orthogonality Constraint

P3P算法的目的是,利用三个参照点在图像平面上的投影qijq_{ij}来求解这三个参照点在相机坐标系{C}下的3D坐标。因为通常情况下P3P问题有多达四个解。我们将这四个解记为PCij={pCiju}u=14\mathcal{P}_{C}^{ij}=\{p_{C}^{ij_{u}}\}_{u=1}^{4}. 在我们的实验中, 我们使用了三个不同的mirror姿态得到了64种可能的组合(第一个姿态下的像点s有四种可能,第二和第三中姿态下也是有四种可能)。

这里我们使用3.2节所介绍的正交约束来选择出其中一种组合。
根据公式(8)的正交约束我们得到
[(pC1jpC1k)T(pC2jpC2k)T(pC3jpC3k)T]mjk=Qjkmjk=0(9) \begin{bmatrix} (p_{C}^{1j}-p_{C}^{1k})^{T}\\ (p_{C}^{2j}-p_{C}^{2k})^{T}\\ (p_{C}^{3j}-p_{C}^{3k})^{T}\\ \end{bmatrix}m_{jk}{=}Q_{jk}m_{jk}{=}0 \tag{9}

在(9)的左端乘QjkT以Q_{jk}^{T}我们得到
QjkTQjkmjk=Mjkmjk=0(10) Q_{jk}^{T}Q_{jk}m_{jk}=M_{jk}m_{jk}=0{\quad}\tag{10}

因为MjkM_{jk}是个3×33{\times}3的半正定矩阵, 我们可以计算mjkm_{jk}作为MjkM_{jk}的最小特征值所对应的特征向量。

在理想的无噪声的情况下, 如果3D点pCijp_{C}^{ij}pCikp_{C}^{ik}是householder变换的结果的话, 那么MjkM_{jk}的最小的特征值应该是0, 从而公式(8)应该是严格成立的(根据公式(8)的话,mjkm_{jk}就是MjkM_{jk}的属于特征值为零的特征向量)。利用这一事实可以帮助我们我们去除掉一些无用的组合, 因为如果组合无效的话, 那么公式(9)的左手端不可能为零, 因此理想无噪声情况下的最小特征值也不可能为零(垂直性与必要条件与充分条件的关系)。

当观测噪声存在的时候, 我们通过下述方式来评估最小特征值的size
ρ=λ3/(λ1+λ2+λ3) \rho=\lambda_{3}/(\lambda_{1}{+}\lambda_{2}{+}\lambda_{3})

其中λ1,λ2\lambda_{1},\lambda_{2}λ3\lambda_{3}MjkM_{jk}的从大到小排列的特征值。因为每种solution组合具有三个MjkM_{jk}:M12,M23M_{12},M_{23}M31M_{31}, 因此我们可从这些矩阵中求出ρ\rho的和: ρˉ=ρ(M12)+ρ(M23)+ρ(M31)\bar{\rho}=\rho(M_{12}){+}\rho(M_{23}){+}\rho(M_{31}), 根据ρˉ\bar{\rho}我们可求出最佳的组合记为P1P1,P2P2P3P3

这里需要注意的是, 让公式(9)左端为零的组合的唯一性并没有理论上的证明。但是基于合成数据和真实数据的相关实验证实了上述方案所选取到的solution的有效性。

Linear Solution of Rotation and Translation

截止到这里, 我们获取了交叉向量m12m_{12},m23m_{23}m31m_{31}。使用这些向量我们可以计算出mirror的法线:
n1=(m12×m31)/m12×m31n2=(m12×m23)/m12×m23n3=(m31×m23)/m31×m23(12) \begin{aligned} n_{1}=(m_{12}{\times}m_{31})/||m_{12}\times{m_{31}}||\\ n_{2}=(m_{12}{\times}m_{23})/||m_{12}\times{m_{23}}||\\ n_{3}=(m_{31}{\times}m_{23})/||m_{31}\times{m_{23}}||\\ \end{aligned} \tag{12}
请问这里方向的正负要紧吗!!! 请问这里方向的正负要紧吗

这里我们可以利用镜子是面朝向相机的这一事实来对n1n_{1},n2n_{2}n3n_{3}的符号进行更正, 也就是说法向的z值在相机坐标系{C}下应该是负值, 如图2所示。

使用n1n_{1},n2n_{2}n3n_{3}, 根据公式(1)和(4)我们有
pCi=RpXi+T(i=1,2,3)pCi=(2njTpCijnj+pCij)djnjp_{C}^{i}{=}Rp_{X}^{i}{+}T{\quad}(i{=1},2,3){--}p_{C}^{i}=(-2n_{j}^{T}p_{C}^{ij}n_{j}{+}p_{C}^{ij})-d_{j}n_{j}从公式(1)和(4)中除去pCip_{C}^{i}我们可获取如下线性等式系统:

pCi=RpXi+T  (i=1,2,3)pCi=(2njTpCijnj+pCij)djnj  pCi=RpXi+T=bijdjnjpCi=RpXi+T+djnj=bij {{p_{C}^{i}{=}Rp_{X}^{i}{+}T{\;}(i{=1},2,3){----}p_{C}^{i}{=}(-2n_{j}^{T}p_{C}^{ij}n_{j}{+}p_{C}^{ij}){-}d_{j}n_{j}}}\\ {\qquad\qquad\qquad\qquad\qquad\;}\Updownarrow{\qquad\qquad\qquad\qquad\qquad}\\ {p_{C}^{i}{=}Rp_{X}^{i}{+}T{=}b_{ij}{-}d_{j}n_{j}}{\Longleftrightarrow}{p_{C}^{i}{=}Rp_{X}^{i}{+}T{+}d_{j}n_{j}{=}b_{ij}}

===========================================================================

AZ=B(13) AZ=B \tag{13}

A=[I32n103×103×1x1I3y1I3I32n103×103×1x2I3y2I3I32n103×103×1x3I3y3I3I303×1n203×1x1I3y1I3I303×1n203×1x2I3y2I3I303×1n203×1x3I3y3I3I303×103×1n3x1I3y1I3I303×103×1n3x2I3y2I3I303×103×1n3x3I3y3I3](14) A=\begin{bmatrix} I_{3} & 2n_{1} & 0_{3\times{1}} & 0_{3\times{1}} &x_{1}I_{3} & y_{1}I_{3}\\ I_{3} & 2n_{1} & 0_{3\times{1}} & 0_{3\times{1}} &x_{2}I_{3} & y_{2}I_{3}\\ I_{3} & 2n_{1} & 0_{3\times{1}} & 0_{3\times{1}} &x_{3}I_{3} & y_{3}I_{3}\\ I_{3} & 0_{3{\times}1} & n_{2} & 0_{3\times{1}} &x_{1}I_{3} & y_{1}I_{3}\\ I_{3} & 0_{3\times{1}} & n_{2} & 0_{3\times{1}} &x_{2}I_{3} & y_{2}I_{3}\\ I_{3} & 0_{3\times{1}} & n_{2} & 0_{3\times{1}} &x_{3}I_{3} & y_{3}I_{3}\\ I_{3} & 0_{3{\times}1} & 0_{3\times{1}} & n_{3} &x_{1}I_{3} & y_{1}I_{3}\\ I_{3} & 0_{3{\times}1} & 0_{3\times{1}} & n_{3} &x_{2}I_{3} & y_{2}I_{3}\\ I_{3} & 0_{3{\times}1} & 0_{3\times{1}} & n_{3} &x_{3}I_{3} & y_{3}I_{3}\\ \end{bmatrix} \tag{14}

{Z=[TTd1d2d3r1Tr2T]TB=[b11b21b31b12b22b32b13b23b33]bij=(2njTpCijnj+pCij)T(15) \begin{cases} Z=\begin{bmatrix}T^{T}&d_{1}&d_{2}&d_{3}&r_{1}^{T}&r_{2}^{T}\end{bmatrix}^{T}\\ B=\begin{bmatrix}b_{11}&b_{21}&b_{31}& b_{12}&b_{22}&b_{32}&b_{13}&b_{23}&b_{33}\end{bmatrix}\\ b_{ij}=(-2n_{j}^{T}p_{C}^{ij}n_{j}+p_{C}^{ij})^{T} \end{cases} \tag{15}

可知道这里的A是27×1227{\times}12的矩阵, B是含有27个元素的列向量, 而Z是含有12个元素的列向量。这里可以看到, 在这个方程中, 我们使用了局部坐标系统PXi=(xi,yi,0)TP_{X}^{i}{=}(x_{i},y_{i},0)^{T}. 其中r1r_{1}r2r_{2}是旋转矩阵RR的第一列和第二列, R=(r1,r2,r3)R=(r_{1},r_{2},r_{3}). 所以才只有12列。

由于该系统有12个未知变量(Z)和27个约束(A和B的行), 关于Z的最小二乘解可以
表达为Z=ABZ=A^{*}B,其中AA^{*}AA的Moore-Penrose pseudo-inverse. 旋转矩阵RR
第三列可以通过下面式子来计算:
r3=r1×r2/(r1r2) r_{3}=r_{1}{\times}r_{2}/(||r_{1}||\cdot||{r_{2}}||)

但是通过上述方式所获取的r1r_{1},r2r_{2}r3r_{3}并不一定会满足下面的约束(旋转矩阵的约束).
{r1=r2=r3=1r1Tr2+r2Tr3+r3Tr1=0 \begin{cases} ||r_{1}||=||r_{2}||=||r_{3}||=1\\ r_{1}^{T}r_{2}+r_{2}^{T}r_{3}+r_{3}^{T}r_{1}=0 \end{cases}

为了强加这些约束, 我们需要求解正交的Procrustes问题[5,20]。
给定两个矩阵R,SR3×3R,S{\in}R^{3{\times}3},可以通过最小化RSR^F||R{-}S\hat{R}||_{F}来求解正交矩阵R^\hat{R}, 求得R^=UVT\hat{R}=UV^{T}, 其中UΣVT=STRU{\Sigma}V^{T}=S^{T}R. 在我们所讨论的问题中, 我们使用I3I_{3}来代替SS, 这样就可求得距离RR最近的R^\hat{R}.

有没有另外的求解办法呢?

可令ui=RpXi+Tu_{i}{=}Rp_{X}^{i}{+}T,这样我们将会有等式ui+djnj=biju_{i}{+}d_{j}n_{j}{=}b_{ij}, 我们可以先求出uiu_{i}?

ui+d1nj=bij,j=1,2,,3 u_{i}+d_{1}n_{j}=b_{ij},j=1,2,\cdots,3

这里是9个方程共计六个未知数, 因此是可解的。

可能产生误差的地方

[1] 角点检测中所产生的误差,
[2]PnP算法中恢复出的3D点有误差;
[3]求解线性方程组的误差。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!