[Math] Quaternion (사원수) 와 3D Rotation

2024. 7. 9. 12:00·.../Math
728x90
728x90

1. Quaternion 이란?

Quaternion Multiplication Table과 Caylet Q8 Graph.

  • 1843년 William Rowan Hamilton(아일랜드 수학자)이 제안한 수 (or 4D vector)로
  • real number(실수) $1$과 세 개의 imaginary unit (허수 단위) $i, j, k$를 basis로 가지는
  • 4-dimenentional vector space(4차원 벡터 공간)을 구성하는 number의 집합:
    (vector space를 이루는 vector로 표현 가능)

쉽게 생각하면

  • 2D에 해당하는 complex nubmer를 4D로 확장했다고 볼 수 있음
  • Computer Graphics, Computer Vision, Robot Engieering 등에서 물체를 3차원으로 회전시키는 공간 변환등을 표현하는 데 많이 사용됨.
  • 4d vector space를 이루므로 4개의 real components를 가지는 vector로 표현됨.

다음과 같은 수식으로 표현됨.

$$q=q_0+q_1i+q_2j+q_3k$$

where,

  • $q_0,q_1,q_2,q_3$ : real number. vector 표현시 component의 값에 해당.
  • $i,j,k$ : imaginary unit. real number axis와 함께 quaternion이 이루는 4d vector space의 basis에 해당함.

가장 기본적인 것은 다음의 imaginary unit들의 곱셈에 대한 성질의 이해임.

  1. $i^2 = j^2 = k^2 = ijk = -1$
  2. $ij = k, jk =i, ki = j$
  3. $ji = -k, kj = -i, ik = -j$

참고: vector space에 대해 - 2022.04.05 - [.../Math] - [Math] Definition of Vector Space

 

[Math] Definition of Vector Space and Sub-Space

Vector 의 엄밀한(?) 정의는 Vector Space의 Element임.즉, Vector를 제대로 이해하려면 Vector Space에 대한 정의를 확실히 이해해야 한다.Vector Space의 정의.Vector Space는 아래를 만족하는 Non-Empty Set을 가르킴.Ve

dsaint31.tistory.com


2. Quaternion의 연산

Quaternion의 기본 연산은 다음과 같음:

2-1. Addition:

두 Quaternion $p = q_0 + q_0i + q_1j + q_2k$와 $p = p_0 + p_1i + p_2j + p_3k$ 의 Addition은 각 성분별로 이루어짐.
  
$$q + p = (q_0 + p_0) + (q_1 + p_1)i + (q_2 + p_2)j + (q_3 + p_3)k$$


2-2. Multiplication:

두 Quaternion $q$과 $p$의 Multiplication은 다음과 같이 정의됨.
  
$$q \cdot p = (q_0p_0 - q_1p_1 - q_2p_2 - q_3p_3) + (q_0p_1 + q_1p_0 + q_2p_3 - q_3p_2)i + (q_0p_2 - q_1p_3 + q_2p_0 + q_3p_1)j + (q_0p_3 + q_1p_2 - q_2p_1 + q_3p_0)k $$


2-3. Scalar Multiplication:

Quaternion $q = q_0 + q_1i + q_2j + q_3k$에 Scalar $s$ 를 곱하면, 각 성분에 $s$를 곱하는 것임.
$$s \cdot q = sq_0 + (sq_1)i + (sq_2)j + (sq_3)k$$


2-4. Inverse:

Quaternion $q$ 의 Inverse는 $q$ 가 영이 아닌 경우 다음과 같이 정의됨.  

$$q^{-1} = \frac{\bar{q}}{|q|^2}$$

 

여기서 $\bar{q}$는 Quaternion의 conjugate(켤레)임.
$$\bar{q} = q_0 - q_1i - q_2j - q_3k$$

$|q|$는 Quaternion의 크기(Norm)임.

$$|q| = \sqrt{q_0^2 + q_1^2 + q_2^2 + q_3^2}$$


3. Applications

Quaternion은 3차원 회전과 같은 공간 변환을 표현하는 데 유용함. 

Computer Vision, Computer Graphics, Robotics 에서는 Quaternion을 사용하여 객체의 rotatoin(회전)을 효율적으로 계산함.

Quaternion을 사용하면 rotation matrix(회전 행렬)보다 계산 효율이 높고, 연산 안정성이 뛰어남 (특히 interpolation이 우수).

특히, Unit Quaternion(크기가 1인 Quaternion)을 사용하면 

Rotation Vector (회전 벡터, Rodrigues' Angle)를 Quaternion으로 쉽게 변환하여 회전 연산을 수행할 수 있음.


4. Unit Quaternion과 Rodrigues' Angle 변환

이 절에서는

Unit Quaternion을 $q_0 + q_1i + q_2j + q_3k$ 형태로 표시하여 Rodrigues' Angle로 변환하는 과정을 설명함.

참고: Rodrigues's Angle - 2023.08.05 - [.../Math] - [Math] Rotation Vector (= Axis-Angle, Rodrigues Angle)

 

[Math] Rotation Vector (= Axis-Angle, Rodrigues Angle)

3차원 공간에서의 rotation을 표현하는 방법.Euler angle과 함께 가장 많이 사용되는 방법 중 하나임.하지만 3개의 축에 대한 3개의 rotation angle로 표현하는 Euler angle과 달리,Rotation Vector는 하나의 vector

dsaint31.tistory.com

4-1. Unit Quaternion 과 Rodrigues' Angle 관계:

Unit Quaternion $q = q_0 + q_1i + q_2j + q_3k$가 주어짐.

여기서 $q_0, q_1 ,  q_2 , q_3$는 실수이고, $i, j, k$ 는 앞서 설명한 관계의 imaginary unit임.

 

여기서 Rodrigues' Angle의 회전축 vector $\vec{v}$와 각도 $\theta$의 관계는 다음과 같고 이를 이용하여 변환이 이루어짐.

$$q = \cos\left(\frac{\theta}{2}\right) +\sin\left(\theta\right)\vec{v}$$ 

 


4-2. 회전 각도 $\theta$ 계산:

회전 각도 $\theta$는 다음과 같이 계산됨:   
$$ \theta = 2 \cos^{-1}(q_0)$$

where

  • $q_0$는 Quaternion의 실수 성분임.
  • $\theta$는 $0$ 에서 $2\pi$ 사이의 radian으로 나옴.

4-3. 회전축 $\vec{v}$ 계산:

회전축 $\vec{v}$는 Quaternion의 벡터 부분 $\langle q_1, q_2, q_3 \rangle$ 를 사용하여 계산됨.

 

회전축은 방향만을 나타내야 하므로 단위 벡터이며 다음과 같이 계산됨:
$$\vec{v} = \frac{\langle q_1, q_2, q_3 \rangle}{\sin\left(\frac{\theta}{2}\right)}$$
where

  • $\sin\left(\frac{\theta}{2}\right)$는 $\theta$ 의 절반에 대한 사인 값임.
  • 이 값은 $q_0$와 관계있음.

4-4. 벡터 부분 $\langle q_1, q_2, q_3 \rangle$ 구하기:

벡터 부분 $\langle q_1, q_2, q_3 \rangle$는 Quaternion의 허수 성분임. 이를 사용하여 회전 축을 계산함.

  • 벡터 부분이 $\sin\left(\frac{\theta}{2}\right) $와 곱해진 형태로 나타나므로, $\vec{v} $를 계산할 때 이를 분모로 나눠줌.
  • 따라서, $q_1, q_2, q_3$가 주어지면 회전 축은 다음과 같이 계산됨:

$$\vec{v} = \frac{\langle q_1, q_2, q_3 \rangle}{\sqrt{1 - q_0^2}}$$


4-5. 예시

예를 들어, $q = \frac{\sqrt{3}}{2} + \frac{1}{2\sqrt{3}}i + \frac{1}{2\sqrt{3}}j + \frac{1}{2\sqrt{3}}k$인 경우:

4-5-1. 회전 각도 계산:

$$q_0 = \frac{\sqrt{3}}{2} \implies \theta = 2 \cos^{-1}\left(\frac{\sqrt{3}}{2}\right) = 2 \cdot \frac{\pi}{6} = \frac{\pi}{3} = 60^\circ$$


4-5-2. 회전축 계산:

$$\sin\left(\frac{\theta}{2}\right) = \sin\left(\frac{\pi}{6}\right) = \frac{1}{2}$$

$$\vec{v} = \frac{\langle \frac{1}{2\sqrt{3}}, \frac{1}{2\sqrt{3}}, \frac{1}{2\sqrt{3}} \rangle}{\frac{1}{2}} = \langle \frac{1}{\sqrt{3}}, \frac{1}{\sqrt{3}}, \frac{1}{\sqrt{3}} \rangle$$

따라서, 주어진 Unit Quaternion은 회전 각도 $\theta = 60^\circ$ 와 회전 축 $\vec{v} = \langle \frac{1}{\sqrt{3}}, \frac{1}{\sqrt{3}}, \frac{1}{\sqrt{3}} \rangle$로 변환됨. 


참고: Quaternion을 Rotation Matrix 로 변환

주어진 Unit Quaternion $q = q_0 + q_1i + q_2j + q_3k$을 3x3 Rotation Matrix(회전 행렬) $R$ 로 변환하는 과정을 설명함.

 

Rotation Matrix(회전 행렬) $R$ 은 다음과 같이 계산됨:

 

$$R = \begin{bmatrix}
1 - 2q_2^2 - 2q_3^2 & 2q_1q_2 - 2q_0q_3 & 2q_1q_3 + 2q_0q_2 \\
2q_1q_2 + 2q_0q_3 & 1 - 2q_1^2 - 2q_3^2 & 2q_2q_3 - 2q_0q_1 \\
2q_1q_3 - 2q_0q_2 & 2q_2q_3 + 2q_0q_1 & 1 - 2q_1^2 - 2q_2^2
\end{bmatrix}$$


같이 보면 좋은 자료들

https://colin-broderick.medium.com/deriving-the-quaternion-product-a22858c40921

 

Deriving the quaternion product

Introduction

colin-broderick.medium.com

2024.07.07 - [Programming/DIP] - [Math] Euler Angles and Rotation Matrix

 

[Math] Euler Angles and Rotation Matrix

Euler Angle 과 Rotation Matrix Euler Angle 은 3차원 공간에서 객체의 orientation 및 rotation(회전)을 표현하는데 사용되는 방법임. 참고로 orientation을  나타내는데 Axis Angle도 많이 사용되고, rotation(회전)의

dsaint31.tistory.com

2023.08.05 - [.../Math] - [Math] Rotation Vector (= Axis-Angle, Rodrigues Angle)

 

[Math] Rotation Vector (= Axis-Angle, Rodrigues Angle)

Rodrigues Angle은 3차원 공간에서의 rotation을 표현하는 방법 중 하나임. Euler angle과 함께 가장 많이 사용되는 방법 중 하나임.하지만 3개의 축에 대한 3개의 rotation angle로 표현하는 Euler angle과 달리,Rot

dsaint31.tistory.com

2024.07.09 - [Programming/DIP] - [CV] Pose: Position + Orientation

 

[CV] Pose: Position + Orientation

Pose라는 용어는Computer Vision, Augmented Reality, Computer Graphics, Robot Engineering 등에서 특정 object의공간에서의 위치(position)와해당 위치에서의 자세(or 방향, orientation)를 합친 개념임. Position (위치)3차원

dsaint31.tistory.com


 

'... > Math' 카테고리의 다른 글

[Math] Identity (항등원) and Inverse (역원)  (0) 2024.07.20
[Math] Term: Algebra란? (대수란?)  (1) 2024.07.20
[Math] Projective Space: $\mathbb{P}^n$, n차원 투영공간  (0) 2024.07.06
[Math] Hypothesis Testing 에서 Conservative Approach (보수적 접근법)란?  (1) 2024.07.05
[Math] Duality of Projective Geometry  (0) 2024.06.28
'.../Math' 카테고리의 다른 글
  • [Math] Identity (항등원) and Inverse (역원)
  • [Math] Term: Algebra란? (대수란?)
  • [Math] Projective Space: $\mathbb{P}^n$, n차원 투영공간
  • [Math] Hypothesis Testing 에서 Conservative Approach (보수적 접근법)란?
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (748)
      • Private Life (13)
      • Programming (56)
        • DIP (112)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    Python
    linear algebra
    math
    Convolution
    Vector
    signals_and_systems
    Optimization
    Term
    opencv
    numpy
    SIGNAL
    DIP
    SS
    cv2
    인허가제도
    signal_and_system
    function
    Probability
    Programming
    fourier transform
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[Math] Quaternion (사원수) 와 3D Rotation
상단으로

티스토리툴바