天天看點

【矩陣】RQ/QR 分解

Multiple View Geometry in Computer Vision A.4.1.1 (page 579)

将一個 3x3 矩陣 $ A $ 進行 RQ 分解是将其分解成為一個上三角陣 $ R $ 與一個正交陣(orthogonal matrix) $ Q $ 的乘積。要求矩陣 $ A $ 的秩為3,即滿秩。

所謂矩陣 $ Q $ 正交是指 $ Q^TQ=I $, $ Q $ 可以看作是一個旋轉矩陣。此旋轉矩陣由三個子旋轉矩陣點乘而來,即 $ Q = Q_xQ_yQ_z $ 。$ Q_x, Q_y, Q_z $ 如下:

\[Q_x = \begin{bmatrix}

1 & 0 & 0 \\

0 & \cos (roll) & -\sin (roll)\\

0 & \sin (roll) & \cos (roll) \\

\end{bmatrix}

\]

\[Q_y = \begin{bmatrix}

\cos (pitch) & 0 & \sin (pitch) \\

0 & 1 & 0 \\

-\sin (pitch) & 0 & \cos (pitch) \\

\end{bmatrix}

\]

\[Q_z = \begin{bmatrix}

\cos (yaw) & -\sin (yaw) & 0 \\

\sin (yaw) & \cos (yaw) & 0 \\

0 & 0 & 1 \\

\end{bmatrix}

\]

将矩陣 $ A $ 右乘一個矩陣,相當于将 $ A $ 進行一次初等列變換。

由 \(A = RQ = RQ_z^TQ_y^TQ_x^T\) 得 \(AQ_xQ_yQ_z = R\)。

将 $ A $ 右乘 $ Q_x $ 是将 $ A $ 的第一列保持不變,第二列和第三列進行線性組合,解釋如下:

\[ A = \begin{bmatrix}

A_{11} & A_{12} & A_{13} \\

A_{21} & A_{22} & A_{23} \\

A_{31} & A_{32} & A_{33}

\end{bmatrix} \]

\[ AQ_x = \begin{bmatrix}

A_{11} & cA_{12} + sA_{13} & -sA_{12} + cA_{13} \\

A_{21} & cA_{22} + sA_{23} & -sA_{22} + cA_{23} \\

A_{31} & cA_{32} + sA_{33} & -sA_{32} + cA_{33}

\end{bmatrix} \]

上式省略了 $ roll $ ,将 $ [AQ_x]_{32} $ 置為0。加上 \(c^2 + s^2 = 1\) 的條件,可以算出 \(c, s\),求得 $ Q_x $ 。

$ AQ_x $ 的結果右乘 $ Q_y $ 是将第二列保持不變,第一列和第三列進行線性組合,将 $ [AQ_xQ_y]_{31} $ 置為0,求得 $ Q_y $ 。

$ AQ_xQ_y $ 的結果右乘 $ Q_z $ 是将第三列保持不變,第一列和第二列進行線性組合,将 $ [AQ_xQ_yQ_z]_{21} $ 置為0,求得 $ Q_x $ 。

經過三次右乘(初等列變換)可以得到上三角陣 $ R $ 。

最後由計算得到的 $ Q_x, Q_y, Q_z $ 通過 \(Q = Q_z^TQ_y^TQ_x^T\) ,得到 \(A\) 的 RQ 分解。

對于 QR、LQ、QL 分解使用類似的方式進行計算。QR 與 QL 分解是将矩陣 $ A $ 進行初等行變換。