Camera Matrix Model
카메라 행렬 모델은 월드 점 를 이미지 좌표 에 매핑하는 파라미터 집합을 행렬 형태로 표현한 것이다. 우선 아래 그림과 같이 월드 점 와 이미지 좌표 의 관계를 살펴보자. 월드 좌표를 라 하고 그것에 대응하는 이미지 좌표 라 하자.
위 그림에서 원점 를 중심으로 에 해당하는 삼각형 와 에 해당하는 삼각형 는 닮음 관계이다. 따라서 삼각형의 닮음 관계를 따라 와 는 각각 와 에 대해 의 비율을 곱한 값으로 구할 수 있다.
여기서 는 focal length 에 해당하므로 로 치환하고 이후 유도의 편의를 위해 와 의 자리를 바꾸어 최종적으로 아래와 같이 정리한다.
월드 점 의 원점은 이미지의 중심에 있는 반면, 이미지 좌표의 원점은 왼쪽 아래 또는 왼쪽 위를 원점으로 한다. 따라서 원점을 이미지 좌표의 원점 만큼 평행이동 시키는 를 위의 식에 추가한다.
다음으로 월드 점은 물리적 측정 단위(mm, cm 등)을 사용하는데 반해, 이미지 점의 단위는 pixel을 사용한다. 이를 반영하여 와 같은 단위 변환에 해당하는 파라미터를 추가한다. 이때 이미지 픽셀의 aspect ratio(종횡비)가 1이 되지 않을 수 있기 때문에 축과 축에 대해 각각 와 의 파라미터를 사용한다. 이면 square pixel을 가졌다고 한다.
여기서 초점거리 와 단위 변환 파라미터 는 고정된 값이므로 합쳐서 단일 파라미터 로 만든다.
Homogeneous Coordinate
위의 Camera Matrix 모델은 입력을 파라미터 중 하나인 로 나누는 연산이 포함되어 있기 때문에 선형이 아니다. 이를 해결하기 위해 homogeneous 좌표계를 도입한다. 이를 이용하면 좌표 변환을 행렬-벡터 형식으로 나타낼 수 있게 된다.
homogeneous 좌표계는 기존의 점에 대해 차원을 1개 추가하여 표현하는 것이다. 예컨대 2차원 점 를 로 표현하고, 3차원 점 을 로 표현하는 것이다.
임의의 유클리트 벡터 에 대해 homogeneous 좌표 로 변환 할 수 있다. 이 homogeneous 좌표를 다시 유클리드 좌표로 다시 변환하면 가 된다. 따라서 인 경우 homogeneous 좌표 와 유클리드 좌표 는 동일하다.
homogeneous 좌표계를 사용하여 Camera 행렬 모델에서 이미지 점 를 다음과 같이 표현할 수 있다.
(위 식의 2번째 식은 homogeneous를 유클리드 좌표로 다시 변환할 때 라는 점을 따른다.)
위의 변환을 다음처럼 분해할 수 있다.
여기서 행렬 를 camera matrix라고 부른다. 카메라 행렬에 대해 다음과 같이 대신 를 사용하여 표현하는 경우도 있다.
카메라 행렬의 마지막 행이 의 형식이기 때문에 Affine transformation의 형식이 된다.
Intrinsic Parameters
위의 카메라 행렬 에는 2개의 offset 와 2개의 focal length 가 포함되어 총 4개의 파라미터를 갖는다. 여기에 skewness를 추가하면 5개의 자유도가 되며, 이를 카메라의 Intrinsic Parameter라고 하며 다음과 같이 정의된다.
이것은 카메라가 공장에서 물리적으로 생산될 때 카메라에 내재된 설정이 된다.
만일 카메라카멜라에서 일반적으로 skewness는 거의 없다고 가정하며 도 설정한다. 이 경우 이므로 focal length와 center만 존재하는 카메라 행렬을 복구하게 된다.
Extrinsic Parameters
카메라의 내재된 정보가 아니라, 카메라 자체의 움직임에 의해 발생하는 정보—일반적으로 카메라의 연속 프레임 사이의 차이가 된다—가 존재할 때, 즉 카메라 자체가 translation(평행이동) 하거나 rotation(회전) 할 때 월드 점 를 이미지 점 에 매핑하기 위해 다음과 같은 변환을 사용할 수 있다.
여기서 은 를 만족하는 Rotation matrix이고
는 translation vector이고
는 homogeneous world 좌표이다.
따라서 전체 식은 다음과 같이 작성된다.
과 는 카메라에 의존하지 않고 외부에 존재하기 때문에 extrinsic parameter라고 한다.
카메라 행렬을 이용하여 위의 식을 다음과 같이 단순화 할 수 있다.
이것은 다음처럼 계산된다.
여기서 투영 행렬 은 intrinsic과 extrinsic 파라미터로 구성되며, 총 11개의 자유도를 갖는다. 5개는 intrinsic 카메라 행렬에서 오고, 3개는 rotation에서 오고, 3개는 translation에서 온다.
일반적으로 단일 카메라 설정에서 rotation과 translation은 해당 카메라의 연속 프레임 사이에 존재하는 회전과 평행이동을 나타내지만, stereo 카메라 설정을 사용하는 경우 rotation과 translation은 두 카메라 사이의 상대적 rotation과 translation을 의미한다. 물론 stereo 카메라 자체가 rotation과 translation 변화를 갖는다면, 추가로 별도의 rotation과 translation을 구해야 한다.
Rotation Matrix
Rotation 행렬을 각 축 별로 다음과 같이 표현한다. 여기서 는 축의 회전 각도를 의미한다.
행렬 곱의 관계 때문에 행렬곱 에 따라 회전은 처음에 z축을 따라 회전한 후, y축, 그 다음 x축으로 회전하여 얻을 수 있다.
Translation Matrix
translation을 벡터가 아니라 homogeneous 좌표를 따르는 행렬 형식으로 다음과 같이 표현할 수 있다.
Scale Matrix
방향에 따라 어떤 양 으로 벡터를 scale 하기를 원하면 다음과 같은 scale matrix를 구성할 수 있다.
따라서 만일 벡터를 scale 한 다음 rotate하고 마지막으로 translate 하는 변환 행렬은 다음이 된다.