아핀 변환 이란?
아핀 변환(Affine Transformation)은 선형 변환(Linear Transformation)과 평행 이동(Translation)을 결합한 변환을 의미한다. 즉, 다음과 같은 수식 처럼 $\mathbf{x}$ 를 변환하면, 아핀 변환이다.
$ \mathbf{y} = \mathbf{A} \mathbf{x} + \mathbf{b} $
이곳에서 $\mathbf{A}$ 는 선형 변환을 하는 행렬이고, $\mathbf{b}$ 가 수평 변환을 하는 벡터이다.
아핀 변환 사용해보기
$\mathbf{x}$ 를 ${\theta}$도만큼 회전시키려면 다음과 같은 $\mathbf{A}$를 사용하면 된다.
$\mathbf{A} = \begin{bmatrix} \cos{\theta} & -\sin{\theta} \\ \sin{\theta} & \cos{\theta} \end{bmatrix}$
즉, 45도를 회전하려면 다음과 같은 $\mathbf{A}$를 사용하면 되며
$\mathbf{A} = \begin{bmatrix} \cos{\theta} & -\sin{\theta} \\ \sin{\theta} & \cos{\theta} \end{bmatrix}$
전체 수식은 다음과 같아진다.
$\begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}
$
이를 다음과 같이 파이썬 코드로 만들어 실행해보면
import numpy as np
# 회전 각도 (라디안 단위)
theta = np.pi / 4 # 45도 회전
# 회전 행렬 정의
rotation_matrix = np.array([
[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]
])
# 원래 점 정의
point = np.array([1, 0])
# 회전 변환 적용
rotated_point = np.dot(rotation_matrix, point)
print("Rotated point:", rotated_point)
$\begin{pmatrix}1 & 0 \end{pmatrix}$ 에 있던 점이 45도만큼 회전해 $\begin{pmatrix}\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2} \end{pmatrix}$ 으로 이동한 것을 볼 수 있다.
이런 회전 변환 외에도 다음과 같은 변환들이 있으며, 이 변환들을 $\mathbf{A}$와 $\mathbf{b}$를 적절히 활용해 만들어 낼 수 있다.
- 확대/축소(Scaling): 특정 비율로 확대하거나 축소시키는 변환.
- 이동(Translation): 일정한 벡터만큼 평행 이동시키는 변환.
- 반사(Reflection): 축을 기준으로 반사시키는 변환.
- 왜곡(Shear): 특정 방향으로 평행하게 이동시키는 변환.
'Machine Learning Math > Linear Algebra' 카테고리의 다른 글
고윳값 분해(Eigen Decomposition) 란 무엇인가? Numpy, TensorFlow, PyTorch 사용해 고유값 분해 해보기 (0) | 2024.08.06 |
---|---|
고유 벡터(Eigenvector)와 고유 값(Eigenvalue)이란 무엇인가? Numpy, TensorFlow, PyTorch로 고유 벡터 구해보기 (0) | 2024.08.02 |
직교 행렬(Orthogonal Matrix)이란 무엇인가? (0) | 2024.07.31 |
대각 행렬(Diagonal Matrix) 한 번에 정리하기 (0) | 2024.07.23 |
역행렬(Inverse Matrix) 이란 무엇인가? Numpy, TensorFlow, PyTorch 에서 계산 방법 알아보기 (0) | 2024.07.22 |