투영 변환이란?
- 3d 공간의 점 P ( x , y, z )가 투영 평명에 매핑될 때, 원근법을 수학적으로 모델링 하기 위해서 투영행렬( projection matrix )를 사용한다.
- 이를 하기 위해 투영 관계는 아래의 식을 따른다.
- x' , y' 은 투영 평면 상의 2d 좌표
- x , y , z 는 3d점의 원래 좌표
- f는 초점 거리 ( 카메라 렌즈와 투영 평면 사이 거리)
- 이를 하기 위해 투영 관계는 아래의 식을 따른다.

- 위의 투영 관계를 행렬로 표현하면 아래와 같다.

- 컴퓨터 그래픽스에서는 원근 투영을 좀 더 효율적으로 계산하기 위해서 호모지니어스 좌표를 사용한다.
- 호모지니어스 좌표는 3d점 ( x , y , z )를 ( x , y , z , 1 )로 확장하여 계산한다
- 결과적으로 z에 따라서 x,y의 스케일이 조정된다.
- z가 크면 x' , y;은 작아진다... 즉, 멀리 있는 물체는 작아보임
- z가 작다면 x' , y;은 커진다... 즉, 가까이 있는 물체는 커보임
- 결과적으로 z에 따라서 x,y의 스케일이 조정된다.
- 호모지니어스 좌표는 3d점 ( x , y , z )를 ( x , y , z , 1 )로 확장하여 계산한다





원근 투영의 수학적 모델
- 원근 투영은 3d 점을 2d점으로 변환하는 것이다. 이 변환은 행렬 연산으로 표현 가능
- 3d공간의 점 P( x , y , z , 1 )을 투영평면에 매핑한다고 하면, 투영 변환은 위의 식1과 같은 형태로 표현한다.
- [ x y z 1 ]은 입력 벡터이다. 앞의 3가지의 값은 3d공간에서의 좌표이며, 1은 동차 좌표의 마지막 항목으로, 투영 계산후 스케일링에 사용함.
- 결과 벡터
- 투영 행렬과 입력 벡터를 곱하면 [ f*x , f*y , z , z/d ] 와 같다.
- 투용된 2d 좌표를 구하기 위해서는 w'으로 나누어야 한다. 이는 동차 좌표에서 스케일링을 제거하는 과정이다.
- x'' = x' / w' 이며 y'' = y' / w'이다.
- x'' , y''은 투영평면의 2d좌표
- z롤 원근 효과를 제어.
- x'' = x' / w' 이며 y'' = y' / w'이다.
ex) 만약에 초점거리 f=2 이며, 기준거리 d=5이며, P(4,6,10)이 존재한다고 하면...아래의 과종으로 ( 4, 6)으로 투영된다.

'코딩 및 기타 > 이미지' 카테고리의 다른 글
| fast R-CNN ( Fast Region-based Convolutional Neural Network ) (0) | 2025.01.21 |
|---|---|
| R-CNN ( Regions with Convolutional Neural Networks ) (1) | 2025.01.20 |
| coordinate system ( world , camera , pixel , normalized ) (0) | 2025.01.19 |
| segNet (0) | 2025.01.19 |
| VGG 16 (1) | 2025.01.17 |