[영상 Geometry #1] 좌표계

영상처리 2013. 7. 6. 16:16

이번 글은 컴퓨터 비전에서 가장 어렵고 골치아픈 주제중 하나인 영상 geometry(기하학?)에 대한 것입니다.

 

영상 Geometry는 카메라 캘리브레이션, 스테레오 매칭, structure from motion, 모션 추정, local feature matching, 매치무브(matchmove) 등 다양한 비전 분야에 있어서 가장 기본이 되는 요소로서, 사실 geometry에 대한 이해 없이는 이들 분야 또한 제대로 접근하기 힘들 것입니다.

 

저 또한 그동안 영상 geometry에 대한 피상적인 지식만으로 근근히 버텨왔으나 아무래도 안되겠다 싶어 최근 관련 공부를 시작했습니다. 본 포스팅에서는 저도 공부를 해가면서 projective geometry, epipolar geometry, multiview geometry, essential matrix, fundamental matrix, homogeneous coordinates, affine/perspective transformation, homography, planar homography 등 관련 개념들을 쭉 정리해볼 생각입니다.

 

다음은 예상되는 목차 리스트입니다.

 

1. 좌표계 (Coordinate System)

2. Homogeneous Coordinates

3. 2D 변환 (2D Transformations)

4. 3D 변환 (3D Transformations)

5. Imaging Geometry

6. Epipolar Geometry

7. ...

 

첫 번째 주제는 좌표계입니다.

 

-----------

 

1. 좌표계 (Coordinate System)

 

무엇을 먼저 쓸까 고민하다가 일단은 좌표계 시스템을 정의해야 할 것 같아서 이것을 먼저 정리하고 넘어가려 합니다.

 

영상 geometry에서는 크게 4가지 좌표계가 존재합니다.

 

월드좌표계, 카메라좌표계, 정규좌표계, 픽셀좌표계

 

<그림 1>

 

월드 좌표계와 카메라 좌표계는 3차원 좌표계이고, 정규좌표계와 픽셀좌표계는 2D 좌표계입니다. 이들 좌표계에 대한 명칭이나 기호, 좌표축 방향 등은  정의하기 따라서 조금씩 차이가 있을 수 있지만 이 글에서는 위 그림을 기준으로 모든 설명을 진행토록 하겠습니다.

 

이들 4가지 좌표계를 명확히 구분하고 이해하는 것은 카메라 geometry를 이해하는데 있어서 매우 중요합니다. 그럼 각각의 좌표계에 대해 하나씩 살펴보도록 하겠습니다.

 

1.1 월드 좌표계 (World Coordinate System)

 

우리가 사물(물체)의 위치를 표현할 때 기준으로 삼는 좌표계입니다. 월드좌표계는 어디 하늘에서 주어져 있는 것이 아니라 문제에 따라서 우리가 임의로 잡아서 사용할 수 있는 좌표계입니다. 예를 들어, 자신의 안방 한쪽 모서리를 원점으로 잡고 한쪽 벽면 방향을 X축, 다른쪽 벽면 방향을 Y축, 하늘을 바라보는 방향을 Z축으로 잡을 수 있습니다. 좌표의 단위(unit)는 미터(meter)로 해도 되고 센티미터(centimeter)로 해도 됩니다. 중요한 점은 좌표계는 일종의 약속(protocol)이기 때문에 (3, 1, -10)이라고 했을 때 이 점이 어떤 위치인지 그 문제 내에서 만큼은 유일하게 결정될 수 있으면 되는 것입니다. 이 글에서는 월드좌표계 상의 점을 다음과 같이 대문자로 표기합니다.

 

 --- (1)

 

 

1.2 카메라 좌표계 (Camera Coordinate System)

 

월드 좌표계가 우리가 살고 있는 공간의 한 지점을 기준으로 한 좌표계라면 카메라 좌표계는 카메라를 기준으로 한 좌표계입니다. 카메라 좌표계는 아래 그림과 같이 카메라의 초점(렌즈의 중심)을 원점, 카메라의 정면 광학축 방향을 Z축, 카메라 아래쪽 방향을 Y축, 오른쪽 방향을 X축으로 잡습니다. 기호는 월드좌표계와 구분하기 위해 아랫첨자 c를 사용하겠습니다.

 

<그림 2>

 

카메라 좌표계의 단위는 물론 월드좌표계와 동일해야 할 것입니다. 즉, 월드 좌표계에서 meter 단위를 사용한다면 카메라 좌표계도 meter 단위를 사용합니다. 이 글에서는 카메라 좌표계를 기준으로 한 점의 좌표는 다음과 같이 아랫첨자 c를 사용한 대문자로 표기합니다.

 

 --- (2)

 

 

1.3 픽셀 좌표계 (Pixel Image Coordinate System)

 

편의상 픽셀 좌표계라고 썼지만, 보통은 영상좌표계(Image Coordinate System)라고 불립니다. 픽셀 좌표계는 우리가 실제 눈으로 보는 영상에 대한 좌표계로서 위 <그림 1>과 같이 이미지의 왼쪽상단(left-top) 모서리를 원점, 오른쪽 방향을 x축 증가방향, 아래쪽 방향을 y축 증가방향으로 합니다. 그리고 픽셀 좌표계의 x축, y축에 의해 결정되는 평면을 이미지 평면 (image plane)이라 부릅니다.

 

기하학적으로 볼 때, 3D 공간상의 한 점 P = (X,Y,Z)는 카메라의 초점 (또는 렌즈의 초점)을 지나서 이미지 평면의 한 점 pimg = (x, y)에 투영(projection) 됩니다. 알다시피 점 P와 점 pimg를 잇는 선(ray) 상에 있는 모든 3D 점들은 모두 pimg로 투영됩니다. 따라서 3D 점 P로부터 pimg는 유일하게 결정할 수 있지만, 반대로 영상 픽셀 pimg로부터 P를 구하는 것은 부가적인 정보 없이는 불가능합니다.

 

어쨌든 픽셀 좌표계의 단위는 픽셀(pixel)이며, 픽셀 좌표는 다음과 같이 소문자로 표기합니다.

 

 --- (3)

 

 

1.4 정규 좌표계 (Normalized Image Coordinate System)

 

마지막으로 가장 중요한 정규좌표계입니다. 원래는 정규 이미지 좌표계이지만 줄여서 정규 좌표계로 쓰겠습니다. 지금까지 나온 좌표계는 모두 매우 직관적인 좌표계이지만 정규 좌표계는 편의상 도입된 가상의 좌표계입니다.

 

정규 좌표계를 한마디로 설명하자면 카메라의 내부 파라미터(intrinsic parameter)의 영향을 제거한 이미지 좌표계로 볼 수 있습니다. 또한 정규 좌표계는 좌표계의 단위를 없앤(정규화된) 좌표계이며 카메라 초점과의 거리가 1인 가상의 이미지 평면을 정의하는 좌표계입니다.

 

좀더 쉽게 생각하자면, 원래의 이미지 평면을 평행이동시켜서 카메라 초점과의 거리가 1인 지점으로 옮겨놓은 이미지 평면을 생각하면 됩니다.

 

카메라 내부 파라미터에 대한 내용은 [영상처리] - 카메라 캘리브레이션 (Camera Calibration) 글을 참조하시기 바랍니다.

 

정규 좌표계의 원점은 정규 이미지 평면의 중점(광학축 Zc와의 교점)입니다 (그림 1 참조). 픽셀 좌표계와 원점의 위치가 다름에 주의하기 바랍니다. 그리고 좌표축은 픽셀 좌표계와 구분하기 위해 u, v를 사용하겠습니다.

 

 --- (4)

 

카메라 내부 파라미터를 알면 다음과 같이 픽셀 좌표와 정규 좌표 사이의 변환이 가능합니다.

 

 --- (5)

 

 --- (6)

 

여기서 fx, fy는 초점거리, cx, cy는 주점(principal point, 광학축과 영상평면이 만나는 픽셀좌표)이며, 가운데 3 x 3 행렬을 camera matrix라 부릅니다. 위 식을 정리하면 다음과 같은 식이 됩니다.

 

 --- (7)

 

역으로, 이미지 상의 픽셀 (x, y)에 대응하는 정규좌표는 다음과 같이 계산됩니다.

 

 --- (8)

 

그렇다면 이렇게 굳이 정규 이미지 평면과 정규 좌표계를 도입한 이유는 무엇일까요?

 

우리가 동일한 장면을 동일한 위치와 동일한 각도에서 찍더라도 사용한 카메라에 따라서 또는 카메라 세팅에 따라서 서로 다른 영상을 얻게 됩니다. 그런데, 이러한 카메라 간의 차이는 어떤 일관된 기하학적인 해석을 하는데 있어서 불필요한 요소일 것입니다. 따라서, 이러한 요소를 제거한 정규화된 이미지 평면에서 공통된 기하학적 특성을 분석하고 이론을 수립하는 것이 보다 효과적이기 때문입니다.

 

 

☞ 원래는 하나의 글로 관련된 모든 내용을 정리하려 했으나 글이 너무 길어지는 관계로 부득이하게 소주제별로 글을 나누게 되었습니다. 물리적으로는 나뉘어져 있지만 하나의 글로 봐 주시면 좋겠습니다다. 그리고 향후 이어지는 Geometry 글들은 모두 여기서 설명한 좌표계 시스템을 기준으로 설명할 예정입니다.

 

☞ 카메라 좌표계 모델 그림을 일부 수정하였습니다. 수정 전에는 픽셀 이미지 평면을 카메라 초점 뒤쪽에 위치시켰으나 그렇게 하면 맺히는 상이 상하좌우 반전되는 문제가 있어서 정규 이미지 평면과 마찬가지로 초점 앞으로 위치를 옮겼습니다. 이에 따라 좌표축 방향들도 같이 수정되었습니다. 혹시 수정전 내용을 보신 분은 참고하시기 바랍니다 (수정일: 7.24일)

 

by 다크 프로그래머

 

'영상처리' 카테고리의 다른 글

[영상 Geometry #2] Homogeneous Coordinates  (24) 2013.07.06
TOF 카메라의 원리  (20) 2013.06.24
OpenCV Haar/cascade training 튜토리얼  (210) 2013.05.31