本文主要是介绍本质矩阵8点法中的线代知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在多视图几何的 2D 几何中,在利用八点法(Eight-point-algorithm)求解本质矩阵(Essential Matrix)的时候,出现一个将 类似二次型的形式:
x T E y \mathbf{x}^{T}E\mathbf{y} xTEy
将其表示成
B E l i n e a r BE_{linear} BElinear
的过程
其中, B B B的元素 仅与 x , y \mathbf{x},\mathbf{y} x,y有关。
下面首先简单地推导该过程,接着复习一下二次型相关内容
“线性化”二次型
我将这个过程称之为 “线性化”,主要是因为它将矩阵 E E E 处理成一个向量。
在这里,矩阵 E E E 是需要求解的未知数。
而 x , y \mathbf{x},\mathbf{y} x,y 则是在两个视图上的匹配特征点的坐标信息。
0 = [ x 1 x 2 x 3 ] [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] [ y 1 y 2 y 3 ] 0=\begin{bmatrix} x_1&x_2&x_3 \end{bmatrix} \begin{bmatrix} e_{11} & e_{12} & e_{13} \\ e_{21} & e_{22} &e_{23} \\ e_{31} & e_{32} & e_{33} \end{bmatrix} \begin{bmatrix} y_1\\y_2\\y_3 \end{bmatrix} 0=[x1x2x3]⎣ ⎡e11e21e31e12e22e32e13e23e33⎦ ⎤⎣ ⎡y1y2y3⎦ ⎤
= [ x 1 e 11 + x 2 e 21 + x 3 e 31 x 1 e 12 + x 2 e 22 + x 3 e 32 x 1 e 13 + x 2 e 23 + x 3 e 33 ] [ y 1 y 2 y 3 ] (1) =\begin{bmatrix} x_1e_{11} +x_2e_{21}+x_3e_{31}& x_1e_{12} +x_2e_{22}+x_3e_{32}& x_1e_{13} +x_2e_{23}+x_3e_{33} \end{bmatrix}\begin{bmatrix} y_1\\y_2\\y_3 \end{bmatrix} \tag{1} =[x1e11+x2e21+x3e31x1e12+x2e22+x3e32x1e13+x2e23+x3e33]⎣ ⎡y1y2y3⎦ ⎤(1)
= [ x 1 y 1 e 11 + x 2 y 1 e 21 + x 3 y 1 e 31 + x 1 y 2 e 12 + x 2 y 2 e 22 + x 3 y 2 e 32 + x 1 y 3 e 13 + x 2 y 3 e 23 + x 3 y 3 e 33 ] (2) =\begin{bmatrix}x_1y_1e_{11} +x_2y_1e_{21}+x_3y_1e_{31}+x_1y_2e_{12} +x_2y_2e_{22}+x_3y_2e_{32}+ x_1y_3e_{13} +x_2y_3e_{23}+x_3y_3e_{33}\end{bmatrix} \tag{2} =[x1y1e11+x2y1e21+x3y1e31+x1y2e12+x2y2e22+x3y2e32+x1y3e13+x2y3e23+x3y3e33](2)
注意:式(2)是一个 1 × 1 1\times1 1×1 的矩阵。
观察式(3)的结构,将式(2)重写:
= [ x 1 y 1 x 1 y 2 x 1 y 3 x 2 y 1 x 2 y 2 x 2 y 3 x 3 y 1 x 3 y 2 x 3 y 3 ] [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] (3) =\begin{bmatrix} x_1y_1 & x_1y_2 &x_1y_3&x_2y_1 & x_2y_2 &x_2y_3&x_3y_1 & x_3y_2 &x_3y_3 \end{bmatrix} \begin{bmatrix} e_{11} \\ e_{12}\\e_{13}\\e_{21} \\ e_{22}\\e_{23}\\e_{31} \\ e_{32}\\e_{33} \end{bmatrix} \tag{3} =[x1y1x1y2x1y3x2y1x2y2x2y3x3y1x3y2x3y3]⎣ ⎡e11e12e13e21e22e23e31e32e33⎦ ⎤(3)
每增加一对特征点,都可以写出一个如式(3)所示的约束。
可以把它们都拼凑起来。得到一个齐次线性方程组。
在这里就不展示拼凑之后的方程组了
求解本质矩阵最少需要 8 对特征点
根据线性代数的基本知识(Rank-Nullity Theorem),
在齐次线性方程组
E m × 9 ∗ e = 0 ⃗ (4) E_{m\times 9}* \mathbf{e} =\vec{0}\tag{4} Em×9∗e=0(4)
其中,
e = [ e 11 e 12 e 13 e 21 e 22 e 23 e 31 e 32 e 33 ] \mathbf{e} = \begin{bmatrix} e_{11} \\ e_{12}\\e_{13}\\e_{21} \\ e_{22}\\e_{23}\\e_{31} \\ e_{32}\\e_{33}\end{bmatrix} e=⎣ ⎡e11e12e13e21e22e23e31e32e33⎦ ⎤
齐次线性方程组基础解系的秩+矩阵 E E E 的秩 = 9。
向量 e \mathbf{e} e 位于矩阵 E E E 的零空间中。如果系数矩阵是满秩的(即秩为8),那么它的零空间维数为 1,也就是 e \mathbf{e} e 构成一条线。这与 e \mathbf{e} e 的尺度等价性是一致的。
所以我们想要矩阵 A 的秩为 8,那么矩阵 A 要有 8 个线性无关的行向量,
那么 m m m 至少为8。
那么至少需要 8 对匹配的特征点。
所以 8 点法应运而生。
最小二乘与线性方程组求解
上述问题会转化为一个线性方程组的求解问题,我们需要求解下列线性方程组
A e = 0 ⃗ \mathbf{Ae}=\vec{0} Ae=0
其中 A \mathbf{A} A 是一个 m × 9 m\times 9 m×9 的矩阵
但是当 m >= 9 的时候,即匹配点为 9 个或者 9 个以上时,不一定存在 e \mathbf{e} e 使得上式成立。
因此此时通过最小化一个二次型来求
min e ∥ A e ∥ 2 2 = min e e T A T A e \min_{\mathbf{e}} \Vert \mathbf{Ae} \Vert ^2_2=\min_{\mathbf{e}} \mathbf{e}^{ T}\mathbf{A}^{T}\mathbf{Ae} emin∥Ae∥22=emineTATAe
上式成立实际上是因为有下式成立
∥ y ⃗ ∥ 2 2 = y ⃗ T y ⃗ \Vert \vec{y} \Vert ^2_2= \vec{y}^{T}\vec{y} ∥y∥22=yTy
二次型复习
上面推导过程涉及的不是二次型,只是类似二次型,因为二次型是
x T E x \mathbf{x}^TE\mathbf{x} xTEx
而上面的是
x T E y \mathbf{x}^TE\mathbf{y} xTEy。
这两种形式的结果都是一个 1 × 1 1\times1 1×1 的矩阵。
So, two different matrices define the same quadratic form if and only if they have the same elements on the diagonal and the same values for the sums b + d c + g {b+d}{c+g} b+dc+g and f + h { f+h} f+h In particular, the quadratic form q A { q_{A}} qA is defined by a unique symmetric matrix
这篇关于本质矩阵8点法中的线代知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!