【矩阵】RQ/QR 分解
Multiple View Geometry in Computer Vision A.4.1.1 (page 579)
将一个 3x3 矩阵 AA 进行 RQ 分解是将其分解成为一个上三角阵 RR 与一个正交阵(orthogonal matrix) QQ 的乘积。要求矩阵 AA 的秩为3,即满秩。
所谓矩阵 QQ 正交是指 QTQ=IQTQ=I, QQ 可以看作是一个旋转矩阵。此旋转矩阵由三个子旋转矩阵点乘而来,即 Q=QxQyQzQ=QxQyQz 。Qx,Qy,QzQx,Qy,Qz 如下:
Qx=[1000cos(roll)−sin(roll)0sin(roll)cos(roll)]
Qy=[cos(pitch)0sin(pitch)010−sin(pitch)0cos(pitch)]
Qz=[cos(yaw)−sin(yaw)0sin(yaw)cos(yaw)0001]
将矩阵 A 右乘一个矩阵,相当于将 A 进行一次初等列变换。
由 A=RQ=RQTzQTyQTx 得 AQxQyQz=R。
将 A 右乘 Qx 是将 A 的第一列保持不变,第二列和第三列进行线性组合,解释如下:
A=[A11A12A13A21A22A23A31A32A33]
AQx=[A11cA12+sA13−sA12+cA13A21cA22+sA23−sA22+cA23A31cA32+sA33−sA32+cA33]
上式省略了 roll ,将 [AQx]32 置为0。加上 c2+s2=1 的条件,可以算出 c,s,求得 Qx 。
AQx 的结果右乘 Qy 是将第二列保持不变,第一列和第三列进行线性组合,将 [AQxQy]31 置为0,求得 Qy 。
AQxQy 的结果右乘 Qz 是将第三列保持不变,第一列和第二列进行线性组合,将 [AQxQyQz]21 置为0,求得 Qx 。
经过三次右乘(初等列变换)可以得到上三角阵 R 。
最后由计算得到的 Qx,Qy,Qz 通过 Q=QTzQTyQTx ,得到 A 的 RQ 分解。
对于 QR、LQ、QL 分解使用类似的方式进行计算。QR 与 QL 分解是将矩阵 A 进行初等行变换。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?