오늘은 핀홀카메라 모델과 좌표계에 대해 이해한 내용을 간단히 정리해보려고 한다. 인턴을 시작하면서 카메라에 대해 처음 공부하고 있다. 새롭고 뜻깊은 경험이다! :D
핀홀 카메라 모델
핀홀 카메라 모델은 projection 할 때 사용하는 카메라에 대한 표준 모델이라고 생각하면 된다. 초등학교 때 배운 바늘구멍 카메라와 작동 원리가 유사하다. 아래 그림과 같이 빛을 조그마한 구멍으로 투사시켰을 때 3D 물체가 image plane에서 거꾸로 보이게 된다.
그리고 2d image의 상에서 바늘구멍까지의 거리를 f(초점거리)라고 한다. 이 f는 calibration으로 구할 수 있는 camera intrinsic 중 하나로 변하지 않는 고유값이다. 자율주행에서는 카메라를 주로 사용하고, 이렇게 전방의 3D 물체를 카메라의 2D 평면으로 투사(projection)시키는 것이 굉장히 중요할 것이다.
참고로 앞에서 언급한 f와 camera intrinsic은 다음과 같은 행렬의 구성요소를 뜻한다! 이러한 행렬은 주로 K라고 나타내며, 잘 바뀌지 않는다.
좌표계
영상 geometry를 이해하는 기본은 좌표계를 이해하는 것이다. 아래와 같이 크게 4가지 좌표계가 존재한다고 한다.
위 그림에서 월드 좌표계와 카메라 좌표계는 3D이고, 픽셀 좌표계와 정규 좌표계는 2D 기반이라고 생각하면 된다. 그럼 네가지 좌표를 차례차례 정리해보겠다.
1. 월드 좌표계 (World Coordinate)
우리가 세상에 존재하는 사물의 위치를 표현하는 3차원 좌표이다. 월드 좌표계의 중심은 정하기 나름일 것이다. 그리고 단위도 정하기 나름이다. 임의로 설정해도 괜찮다는 말이다!
2. 카메라 좌표계 (Camera Coordinate)
말 그대로 카메라를 기준으로 한 좌표이다. 위 월드 좌표계 안에 카메라가 존재할텐데(따라서 월드 좌표계의 단위와 카메라 좌표계의 단위는 동일할 수밖에 없다), 이 카메라를 기준으로 바라본 좌표를 나타낸다고 이해하면 되겠다. 카메라 좌표계의 원점은 카메라의 "초점"이 된다.
3. 픽셀 좌표계 (Pixel Image Coordinate)
실제 세상은 3D 인데, 카메라로 이를 촬영하면 2D의 이미지로 3D 물체들이 투영(Projection)된다. 따라서 이렇게 우리가 직접 보는 이미지와 영상에 대한 좌표계가 픽셀 좌표계라고 이해하면 된다. 이러한 픽셀 좌표계는 2D일 것이며, 아래와 같이 가장 왼쪽 위가 원점이다.
위에서 투영(Projection)이라는 표현을 사용했는데, 이렇듯 3D 공간상의 한 점은 카메라 초점을 지나 2D 이미지의 한 점에 투영되게 된다. 이렇게 3D에서 2D로 차원을 축소하는 작업은 결정적이라, 별다른 정보가 필요하지 않다. 하지만 반대(2D 이미지의 한 점을 3D로 보내는 작업)는 부가적인 정보가 필요하다.
4. 정규 좌표계 (Normalized Image Coordinate)
위 세가지의 좌표계는 실제로 존재하는 좌표계이지만, 마지막 정규 좌표계는 초점거리(f)가 1인 가상의 이미지 평면이라고 생각하면 된다. 초점거리가 여기서 1이라는 소리는, 앞서 소개한 카메라의 내부 파라미터 (intrinsic)의 영향력을 제거한 이미지 좌표계라는 뜻이다. 원래 이미지 평면을 초점거리가 1이 되도록 땡겨왔다고 생각해보자. 아래와 같은 관계라고 이해하면 되겠다.
이러한 정규 좌표계의 원점은 Z축과의 교점인 정규 이미지 평면의 중점이 된다.
+) 픽셀 좌표와 정규 좌표 사이의 변환
카메라 내부 파라미터(camera intrinsic)를 알면 두 좌표계 사이에 자유롭게 변환이 가능하다. 아래와 같이 말이다. 아래에서 u와 v는 정규 좌표계의 벡터이고, x와 y는 픽셀 좌표계의 벡터라고 생각하자. 가운데 끼어있는 matrix는 카메라 내부 파라미터이다.
Reference
[0] https://darkpgmr.tistory.com/77?category=460965 - 감사합니다!
'Autonomous Driving 🚙 > Geometry' 카테고리의 다른 글
[영상 Geometry] FOV(Field Of View)에 대해 (0) | 2022.07.20 |
---|---|
[영상 Geometry] Homogeneous Coordinate에 대해 (0) | 2022.07.20 |
[영상 Geometry] 2D & 3D Transformation(변환)에 대해 (0) | 2022.07.19 |