카메라 캘리브레이션(Camera Calibration)
✔ 카메라 내부 파라미터 값을 구하는 과정
✔ 실세계 3D 점이 2D 영상에 투영되기까지의 필요한 파라미터들 중 내부 요인의 파라미터 값을 구하는 과정
✔ 통상적으로 카메라 내부 파라미터와 왜곡를 구하는 것을 말한다
다크프로그래머
3차원 점들이 영상에 투영된 위치를 구하거나 역으로 영상좌표로부터 3차원 공간좌표를 복원할 때에는 이러한 내부 요인을 제거해야만 정확한 계산이 가능해집니다. 그리고 이러한 내부 요인의 파라미터 값을 구하는 과정을 카메라 캘리브레이션이라 부른다.
-
내부 파라미터: 초점거리(Focal length), 주점(Principle Point), 비대칭계수(Skew Coefficient)
-
외부 파라미터: 회전(rotation), 이동(translation)
카메라 내부 파라미터(Intrinsic Parameter)
초점거리(Focal length)
- 이미지 평면(또는 이미지 센서) 에서 광학중심(또는 카메라 렌즈) 사이의 거리
- 초점거리(Focal Length)
주점(Principle Point)
- 이미지 평면과 광학축이 만나는 점
비대칭계수(Skew Coefficient)
- 이미지 센서의 cell array의 y축이 기울어진 정도
- (skew_c = )
- 요즘 카메라들은 skew 에러가 거의 없기 때문에 보통 고려하지 않는다.
- (즉, skew_c = 0)
카메라 왜곡(Distortion)
- 렌즈 왜곡에는 크게 방사왜곡(radial distortion)과 접선왜곡(tangential distortion)이 있다.
- 가 주요 파라미터로 사용되며 이 방사 왜곡, 가 접선 왜곡 계수로 사용됨.
- 은 렌즈 중심을 기준으로 픽셀 좌표()의 거리를 나타냄 ( ).
방사 왜곡(Radial Distortion)
- 볼록렌즈의 굴절률에 의한 것으로서 영상의 왜곡 정도가 중심에서의 거리에 의해 결정되는 왜곡.
- 정규 좌표 픽셀 () 에 대해 아래와 같은 식으로 표현됨.
접선 왜곡(Tangential Distortion)
- 렌즈와 이미지센서(CMOS 등)의 수평이 맞지 않아 생기는 왜곡으로 가로 세로 비율의 왜곡 등 비대칭적인 변형을 일으킴.
왜곡 보정식
2D 이미지 투영(Projection)
카메라 내부 파라미터
- = 내부 파라미터 (Intrinsic Parameter)
- , = 초점거리(focal length)
- , = 주점(principal point)
- = 비대칭계수(skew coefficient)
요즘 카메라들은 skew 에러가 거의 없기 때문에 카메라 모델에서 보통 비대칭 계수까지는 고려하지 않는다 (즉, skew_c = 0). 또한 현대의 일반적인 카메라는 가로방향 셀 간격과 세로방향 셀 간격의 차이가 없기 때문에 f = fx = fy라 놓아도 무방함.
카메라 외부 파라미터
- = 외부 파라미터(회전/이동변환 행렬)
월드좌표계, 카메라좌표계 사이의 회전(R, Rotation) 및 평행 이동(T, Translation) 변환
캘리브레이션과 영상 해상도
해상도
- 입력 영상의 해상도를 바꾸면 카메라 캘리브레이션 결과도 바뀜.
- 카메라 내부 파라미터중 초점거리 fx, fy, 주점 cx, cy는 픽셀 단위를 사용하는데, 카메라의 물리적인 초점거리나 이미지 센서의 크기는 변하지 않지만 한 픽셀이 나타내는 물리적 크기가 변하기 때문이다.
- 만일 영상해상도를 (640x480)으로 놓고 캘리브레이션 한 결과와 (320x240)로 놓고 캘리브레이션 한 결과를 비교해 보면 (320x240)의 경우가 fx, fy, cx ,cy의 값이 1/2씩 줄어들게 된다.
- 반면에 렌즈왜곡계수(k1, k2,k3, p1, p2)는 normalized 좌표계에서 수행되기 때문에 영상 해상도와 관계없이 항상 동일함.
- 따라서, 한 해상도에서만 캘리브레이션을 수행해도 다른 모든 해상도에 대한 파라미터 값을 구할 수 있게 된다. 렌즈왜곡계수는 동일하며, fx,fy,cx,cy만 영상 해상도에 비례해서 조정해 주면 된다.
오토포커싱(auto focusing)
- 카메라에 있는 오토 포커싱 기능을 켜면 계속 초점거리가 바뀔 수 있으므로 캘리브레이션에는 적합하지 않다.
그래서 어떻게 내부 파라미터를 구하는데?
- 카메라 내부 파라미터와 렌즈의 왜곡도 고려해야하는 캘리브레이션 문제는 비선형임.
- 최적의 파라미터를 찾는 문제 (근사 모델).
- 대표적인 방법으로 Zhang’s Method
참고
- 👍 다크 프로그래머 :: 카메라 캘리브레이션 (Camera Calibration)
- 👍 OpenCV: 카메라 캘리브레이션(Camera Calibration) (with code)
- [CSCI 5563] 1. 3D Point Projection
- [Calibration] Camera와 좌표계 변환 기초
Prev: (Camera Model) 1. 카메라 모델 Next: (Camera Model) 3. Zhang’s 캘리브레이션 방법