四元数的理解与应用

Last updated on:2 years ago

长期以来,计算机视觉和机器人学领域都没有合适和工具来描述三维物体。而四元数正好可以解决这些问题。 方程的公式在实际应用中相当重要,比如在机械臂移动的仿真中,方程组的复杂程度对仿真的速度有着极大的影响。虽然向量是一种简洁的描述运动的系统,但是对于对旋转描述仍然存在不足。

定义

其中,i,j,k满足

则称$q$为四元数,而称a为q的实部,记为$Re(q) = a$;称$b\mathbf{i} + c\mathbf{j} + d\mathbf{k}$为q的虚部,记为$Im(q) = b\mathbf{i} + c\mathbf{j} + d\mathbf{k}$。四元数的全体记为Q。

特别当$c = d = 0$时,q就是复数了,即$q = a + b\mathbf{i} \in C$。在此基础上,若$b = 0$,则q就是实数,即$q = a \in R$。因此,四元数是实数和复数的扩展。

特性

  • 四元数相加:
  • 乘以一个系数:
  • 倒数:
  • 方向向量为单位向量,两两正交。
  • 两个四元数的乘积(哈密尔顿乘积 Hamilton product):

或者

  • 绝对值:
  • 共轭:

应用

刚体位姿描述

刚体位姿描述有四种方法:姿态矩阵法、姿态角表示法、轴—角表示法和单位四元数法。

姿态角和四元数法在相机坐标系和图像坐标系变换中比较常用。其中,四元数法需要4个非独立参数,表示范围大,不存在奇异点,且旋转运动表示形式简洁,但缺点是不直观。它的定义如下:

其中,$\eta$为变量部分,$\mathbf{\varepsilon}=[\varepsilon_x\ \varepsilon_y\ \varepsilon_z]^T$为矢量部分。

RGB坐标系

Illustration of the difference between CNN and QCNN on convolution layers

假设旋转向量$\mathbf{q} = [q_1\ q_2\ q_3]^T$绕着轴$\mathbf{\omega} = [\omega_1\ \omega_2\ \omega_3]^T$得到新的向量$\mathbf{p} = [p_1\ p_2\ p_3]^T$($\mathbf{\omega}$是单位向量)。则

其中,$\mathbf{p}$和$\mathbf{q}$都可以认为是实部为0的四元数,而旋转轴$\mathbf{\omega}$为

参考资料

[1] Quaternion

[2] 李文亮,四元数矩阵,国防科技大学出版社

[3] Pervin, E. and Webb, J.A., 1982. Quaternions in computer vision and robotics. CARNEGIE-MELLON UNIV PITTSBURGH PA DEPT OF COMPUTER SCIENCE.

[4] Zhu, X., Xu, Y., Xu, H. and Chen, C., 2018. Quaternion convolutional neural networks. In Proceedings of the European Conference on Computer Vision (ECCV) (pp. 631-647).