서론
HumanSC3D 데이터셋에서 3차원 좌표를 시각화 해보던 중, camera parameter라는게 있어서 뭔지 알아보게됐다.
이것들이 뭔지 알아보도록 하자.
참고
https://velog.io/@landsky1234/Camera-Parameters
https://darkpgmr.tistory.com/32
https://kr.mathworks.com/help/vision/ug/camera-calibration.html
결론적으로 다크 프로그래머님의 글을 요약한게 됐다는 점을 앞서 밝힙니다.
Camera Calibration이란?
3차원 대상을 2차원인 이미지에 어떻게 맺힐까?
이는 영상을 찍을 당시, 카메라의 위치 및 방향에 의해 결정된다.
더 자세히 파고들면, 다음과 같다.
- 사용된 렌즈
- 렌즈와 이미지 센서와의 거리
- 렌즈와 이미지 센서가 이루는 각도
결론적으로
1. 3차원 점들이 이미지에 투영된 위치를 구하거나
2. 이미지의 좌표로부터 3차원 공간 좌표를 복원하는 경우
위와같이 카메라 자체만의 요소들을 제거해야만 정확한 계산이 가능해진다.
그렇다면 camera calibration이란 무엇인가?
카메라 내부 요인의 파라미터 값을 구하는 과정
Perspective Projection
결국 촬영한다는 것은 3차원 대상을 2차원 평면으로 projection(사영)하는 것이다.
Pinhole 카메라 모델에서는 다음과 같은 변환 관계로 모델링된다.
- (X, Y, Z) : 월드 좌표계(world coordinate system) 상의 3D 점의 좌표
- [R|t] : Extrinsic parameter
- 월드 좌표계를 카메라 좌표계로 변환시키기 위한 회전 / 이동변환 행렬
- 카메라의 설치 높이, 방향 등 외부 공간과의 기하학적 관계와 관련
- A : Intrinsic camera matrix
- 카메라의 초점 거리, aspect ratio, 중심점 등 카메라 자체와 관련
- Extrinsic parameter와 합쳐서 camera matrix 또는 projection matrix 라 부른다.
- s : scale factor
Intrinsic Parameters
대표적으로 3개가 있다.
1. 초점거리(focal length) : fx, fy
2. 주점(principal point) : cx, cy
3. 비대칭계수(skew coefficient): skew_c = tan(alpha)
Focal Length
렌즈 중심과 이미지 센서와의 거리를 의미한다
- 볼록렌즈의 초점이 아니다
- 이미지 센서에는 CCD, CMOS 등이 있다.
- 픽셀 단위
이미지의 픽셀은 이미지 센서의 cell에 대응된다.
초점거리가 픽셀단위라는 의미는 초점거리가 이미지 센서의 셀 크기에 대한 상대적인 값이라는 의미이다.
예를들어, 이미지 센서의 cell 크기가 0.1mm이고 카메라의 초점거리 f = 500px 이라고 하자.
이는 카메라의 렌즈 중심에서 이미지 센서까지의 거리가 이미지 센서 cell크기의 500배라는 뜻이며, 50mm라는 말이다.
결국 초점 거리가 멀어질수록 렌즈 중심에 대응되는 이미지 센서의 크기가 점점 커질것이라는 것을 알 수 있다.
근데 왜 데이터셋을 보면 focal length가 2가지 값(fx, fy)로 표현될까?
이는 이미지 센서의 cell이 정사각형이 아닌 것을 반영했기 때문이다.
같은 카메라로 calibration을 수행할때, 이미지의 해상도를 반 줄이면 초점거리는 어떻게 변할까?
초점거리는 상대적인 개념이다.
따라서 해상도를 바꾸면 한 픽셀에 대응하는 물리 크기가 변하기 때문에 초점거리도 변해야한다.
이미지 해상도를 반 줄이게 되면 이미지 센서의 2x2 cell이 하나의 픽셀에 대응되게 되므로 초점거리도 기존 해상도의 초점거리에 비해 반 줄여야 맞다.
월드 좌표로부터 이미지 좌표는 어떻게 얻을 수 있을까?
기본적인 흐름은 다음과 같다.
1. 월드 좌표계의 z값으로 x와 y를 나눠준다
- 이는 normalized image plane 상의 좌표로 변환하는 것과 같다.
- z값은 카메라 초점으로부터 월드 좌표까지의 거리를 의미하기 때문이다.
- 따라서 z값으로 x와 y를 나눠주면 초점거리를 1로 만드는 것과 같아진다.
2. 이후 초점거리 f를 곱해서 image plane상의 좌표를 얻는다.
- 초점거리를 f로 만드는 것과 동일하다.
3. 해당 좌표에서 cx, cy를 더해준다.
- 이미지에서의 좌표는 이미지 중심 기준이 아니라 좌상단 모서리가 기준이기 때문이다.
즉 다음과 같다.
Principal Point
Principal point인 cx, cy는 카메라 렌즈의 중심에서 이미지 센서에 내린 수선의 발 좌표이다.
- 픽셀 단위
Skew Coefficient
비대칭 계수 skew_c는 이미지 센서 cell array의 y축이 기울어진 정도를 나타낸다.
Extrinsic Parameters
Extrinsic parameters는 카메라 좌표계와 월드 좌표계 사이의 변환관계를 설명한다.
- 좌표계 사이의 회전 및 평행이동 변환으로 표현된다.
- 카메라 고유의 파라미터가 아님.
- 다음 요소에 민감하기 때문
- 카메라를 어떤 위치에 어떤 방향으로 설치했는지
- 월드 좌표계를 어떻게 정의했는지
Calibration tool등을 이용해서 카메라 고유의 intrinsic parameter들을 구한다.
미리 알고있거나 샘플로 뽑은 3차원 월드 좌표와 2차원 영상 좌표매칭 쌍들을 이용해서 perspective matrix를 통해 변환 행렬을 구하면 된다.
'컴퓨터 비전' 카테고리의 다른 글
3D keypoints 시각화 해보기 (0) | 2024.07.13 |
---|---|
[컴퓨터 비전] Histogram Equalization (1) | 2023.03.21 |
[컴퓨터 비전] 이미지 변환(2) - Bilinear Interpolation (0) | 2023.01.21 |
[컴퓨터 비전] 이미지 변환(1) (0) | 2022.02.04 |