코딩 및 기타/이미지

투영 변환 , 원근 투영의 수학적 모델

정지홍 2025. 1. 20. 12:04

투영 변환이란?

  • 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;은 커진다... 즉, 가까이 있는 물체는 커보임

호모지니어스 좌표

 

 


 

 

 


 

 


 


식1 ( 결과 벡터 = 투영행렬 x 입력벡터 = 결과벡터 )

 

원근 투영의 수학적 모델

  • 원근 투영은 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롤 원근 효과를 제어.

 

ex) 만약에 초점거리 f=2 이며, 기준거리 d=5이며, P(4,6,10)이 존재한다고 하면...아래의 과종으로 ( 4, 6)으로 투영된다.