坐标系旋转矩阵推导过程

本文详细介绍了如何通过旋转矩阵实现平面及三维坐标系中点的旋转变换,并给出了绕X、Y、Z轴旋转的具体公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、先来个平面旋转的分析:

两角和(差)公式

推导

旋转变换一般是按照某个圆心点,以一定半径 旋转一定的角度α,为了简单起见我们给出下面的情景

假定点A(x,y)想经过旋转变换到达B(x',y'),已知旋转角度α和点A坐标,计算出点B


要计算点B则分别计算他的x'和y'分量

根据矩阵乘法计算规则,可以推出 

只要给出旋转角度,计算出矩阵,然后使用这个矩阵分别左乘每一个点,就能计算出这个点旋转后的点坐标 这样我们就可以通过矩阵变换坐标了 



二、延伸到三维坐标:

    坐标的旋转变换在很多地方都会用到,比如机器视觉中的摄像机标定、图像处理中的图像旋转、游戏编程等。

    任何维的旋转可以表述为向量与合适尺寸的方阵的乘积。最终一个旋转等价于在另一个不同坐标系下对点位置的重新表述。坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ。

    若以坐标系的三个坐标轴X、Y、Z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。

   假设三维坐标系中的某一向量 ,其在直角坐标系中的图如图1所示。其中点P在XY平面、XZ平面、YZ平面的投影分别为点M、点P、点N。
 
                                              
                                                                 图1 直角坐标系XYZ

   1、 绕Z轴旋转θ角
    绕Z轴旋转,相当于 在XY平面的投影OM绕原点旋转,如下图所示,OM旋转θ角到OM'。
                                                 
                                                            
                                                                   图2 向量绕Z轴旋转示意图

   设旋转前的坐标为 ,旋转后的坐标为 ,则点M的坐标为 ,点M'的坐标为 。由此可得:
                                                       
    对于 进行三角展开可得:
                                                      
    且有 ;可得绕Z轴旋转 角的旋转矩阵为:
                         
                                                                   

   2、 绕X轴旋旋转θ角


   绕X轴旋转,相当于 在YZ平面的投影ON绕原点旋转,如下图所示,ON旋转θ角到ON'。
                                                             
                                                                   图3 向量绕X轴旋转示意图

   设旋转前的坐标为 ,旋转后的坐标为 ,则点N的坐标为 ,点N'的坐标为 。由此可得:

                                                   
    对于 进行三角展开可得:
                                                
    且有 ;可得绕X轴旋转 角的旋转矩阵为:
                         
                                                         

    3、 绕Y轴旋旋转θ角
   绕Y轴旋转,相当于 在XZ平面的投影OQ绕原点旋转,如下图所示,OQ旋转θ角到OQ'。
                                                 
                                                            
                                                                   图4 向量绕Y轴旋转示意图

   设旋转前的坐标为 ,旋转后的坐标为 ,则点Q的坐标为 ,点Q'的坐标为 。由此可得:

                                               
    对于 进行三角展开可得:
                                             
    且有 ;可得绕Y轴旋转 角的旋转矩阵为:
                         
                                           



   4、绕X、Y、Z轴旋转的旋转矩阵分别为:
 
                




<think>嗯,用户的问题是关于世界坐标系转换到摄像机坐标系旋转矩阵的计算方法和公式。首先,我需要回忆一下坐标系转换的基本概念。通常,这涉及到旋转和平移两个部分,也就是外参矩阵中的旋转矩阵R和平移向量T。 用户提到的引用中,引用[1]和[4]都提到了外参矩阵M_ext,它由旋转和平移组成。引用[2]和[3]提到通过solvePnP等方法求解外参,可能需要特征点。所以,旋转矩阵的计算通常需要已知对应点的坐标,然后通过数学方法求解。 首先,我需要明确坐标系转换的步骤。世界坐标系到相机坐标系的转换是通过旋转矩阵R和平移向量T实现的。公式应该是P_c = R * P_w + T,其中P_w是世界坐标,P_c是相机坐标。旋转矩阵R是3x3的正交矩阵,满足R^T R = I,行列式为1。 接下来,如何计算R呢?根据引用[2],当有至少6个非共面特征点时,可以建立方程组求解。这应该涉及到线性代数的方法,比如使用最小二乘法或QR分解。此外,引用[3]提到可以使用colmap或metashape等软件通过运动恢复结构来获得外参,这可能涉及到特征匹配和优化算法。 不过用户可能更关注手动计算或理论上的方法。例如,使用两组坐标系中的对应点坐标,构建方程组,然后求解旋转矩阵。假设有多个点对,每个点对提供三个方程,但由于旋转矩阵的自由度是3(绕x、y、z轴的旋转角度),所以至少需要两个点,不过通常需要更多点来提高精度。 另外,旋转矩阵可以通过欧拉角、旋转向量或四元数来表示。使用旋转向量时,可以通过罗德里格斯公式转换为旋转矩阵。引用[2]提到的solvePnP方法返回旋转向量,然后转换成矩阵,这可能是一个常见步骤。 总结步骤应该是:1. 收集至少6个非共面的3D-2D对应点;2. 构建投影方程,考虑内参矩阵K;3. 利用线性方法(如DLT)或非线性优化求解旋转和平移参数;4. 分解得到R矩阵,可能需要进行QR分解或SVD来确保正交性。 需要注意的是,实际应用中通常使用现有的算法或库(如OpenCV的solvePnP),而不是手动计算,但理解背后的数学原理对问题解决很重要。用户可能希望了解理论基础,所以需要详细说明公式推导和计算方法,包括可能的步骤和所需条件,如特征点的数量和共面性要求。</think>### 世界坐标系到摄像机坐标系旋转矩阵计算方法 #### 1. **坐标系转换的基本原理** 世界坐标系到摄像机坐标系的转换通过**外参矩阵**实现,包含旋转矩阵$R$(3×3)和平移向量$T$(3×1)。公式为: $$ P_c = R \cdot P_w + T $$ 其中: - $P_w = [X_w, Y_w, Z_w]^T$ 是世界坐标系中的点坐标 - $P_c = [X_c, Y_c, Z_c]^T$ 是摄像机坐标系中的点坐标 - $R$ 是旋转矩阵,描述世界坐标系到摄像机坐标系旋转变换 - $T$ 是平移向量,描述坐标原点的偏移[^1][^4]。 --- #### 2. **旋转矩阵的计算步骤** 旋转矩阵的计算通常需要**已知对应点坐标**,并通过以下方法求解: ##### **方法一:利用3D-3D点对应** 1. **收集对应点**:获取至少3组非共面的世界坐标系点$P_w$和摄像机坐标系点$P_c$的对应坐标。 2. **构建方程**:根据$P_c = R \cdot P_w + T$,将问题转化为最小二乘优化问题: $$ \min_{R, T} \sum_{i=1}^n \| R \cdot P_{w,i} + T - P_{c,i} \|^2 $$ 3. **求解步骤**: - **去中心化**:计算所有点的质心$\bar{P_w}$和$\bar{P_c}$,并计算去中心化坐标$q_i = P_{w,i} - \bar{P_w}$,$p_i = P_{c,i} - \bar{P_c}$。 - **计算协方差矩阵**:$H = \sum_{i=1}^n q_i \cdot p_i^T$。 - **奇异值分解(SVD)**:对$H$进行SVD分解,$H = U \Sigma V^T$,则旋转矩阵为: $$ R = V \cdot U^T $$ - **计算平移向量**:$T = \bar{P_c} - R \cdot \bar{P_w}$[^2][^4]。 ##### **方法二:利用2D-3D点对应(如solvePnP)** 当仅有2D图像点与3D世界坐标的对应关系时(如相机标定场景): 1. **输入参数**:已知相机内参矩阵$K$、畸变系数、多组$(P_w, p_{pixel})$。 2. **构建投影方程**: $$ s \cdot p_{pixel} = K \cdot [R \mid T] \cdot \begin{bmatrix} P_w \\ 1 \end{bmatrix} $$ 其中$s$为尺度因子。 3. **求解旋转向量**:使用OpenCV的`solvePnP`方法,传入3D点、2D点、内参和畸变系数,直接输出旋转向量$\theta$(罗德里格斯形式)和平移向量$T$。 4. **旋转向量转矩阵**:通过罗德里格斯公式将旋转向量$\theta$转换为旋转矩阵$R$: $$ R = \cos(\theta) \cdot I + (1 - \cos(\theta)) \cdot \theta \theta^T + \sin(\theta) \cdot [\theta]_\times $$ 其中$[\theta]_\times$是向量的叉积矩阵[^2][^3]。 --- #### 3. **关键公式总结** - **旋转矩阵的性质**:$R$是正交矩阵,满足$R^T R = I$且$\det(R) = 1$。 - **外参矩阵**:完整的转换矩阵形式为: $$ M_{ext} = \begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix} $$ --- #### 4. **实际应用注意事项** - **特征点要求**:至少需要6组非共面点以求解稳定解(超定方程组)[^2]。 - **数值稳定性**:推荐使用SVD分解或QR分解保证旋转矩阵的正交性。 - **工具实现**:实际工程中可直接调用`solvePnP`(OpenCV)或SFM工具(如COLMAP)[^3]。 --- 相关问题
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值