반응형



 

Camera Calibration


영상과 실제 물체간의 관계를 나타내는 폼인 카메라 매트릭스를 얻는 일련의 작업.


카메라 파라미터는 내부 파라미터와 외부 파라미터로 구성된다.

내부 파라미터는 영상좌표와 카메라 좌표간의 관계를 의미하고, 외부 파라미터는 카메라 좌표와 월드좌표간의 관계를 의미한다.


그럼 월드좌표상의 한점과 영상좌표상의 한점의 관계를 알아보자.


이 둘간의 관계에 대한 수식은 다음과 같다.


Pi = K * E * Pw = K * [R|t] * Pw


이 수식에서 Pi는 영상좌표계에서의 한점을 의미하고, K는 내부파라미터, E는 외부파라미터, Pw는 월드좌표계상에서의 한점을 의미한다. 수식을 살펴보면 외부파라미터 E는 3x3의 Rotation 매트릭스와 3x1의 Translation Vector로 이루어짐을 알수 있다.


내부 파라미터 K는 focal length와 skew vector, optical center 등으로 이루어진다.

이것을 수식을 표현하면..


f * (xc/zc) = Sx * (Xi - Ox)

f * (yc/zc) = Sy * (Yi-Oy)


로 표현될 수 있다.


f는 focal length를 의미하고, (xc, yc zc)는 카메라 좌표상의 한점, (Sx, Sy)는 카메라 좌표계와 영상 좌표계간의 크기변화를 의미한다. (Xi, Yi)는 영상 좌표상의 한점, (Ox, Oy)는 Optical Center를 의미한다.


이를 이용해서 월드 좌표상의 한점과 영상 좌표상의 한점과의 관계를 나타내면,


(x, y, z) = P * (X, Y, Z, 1) = K * E * (X, Y, Z, 1)


로 표현될 수 있다. (참고로 x, y, z 벡터의 transpose를 표현해야 하는데 쓰기 힘들어서 생략, Transposed vector라고 생각하자.)


이 식에서 (X, Y, Z, 1)는 월드상의 한점인데 homogenious 좌표계로 표현된 것이고, K는 내부 파라미터, E는 외부파라미터, P는 프로젝션 매트릭스이고 내/외부 파라미터를 이용해서 구한 투영된 영상의 한 점이 (x, y, z)이다. 따라서 이것을 실제 영상좌표계상의 한점 (Xi, Yi)로 표현하면,


Xi = x/z, Yi = y/z


로 표현될 수 있다.


그럼 영상좌표상의 점들과 월드 좌표상의 점들의 관계를 알아 보았다.


이제 카메라의 영상을 이용해서 카메라 파라미터를 얻어보는 방법을 알아보자.

이 단계가 바로 Camera Calibration이다.


Camera Calibration에는 여러가지 방법이 있는데 일반적으로 Zhang이 제안한 방법이 많이 사용된다. 이 방법은 구현된 함수가 OpenCV에 함수로 제공되고 있고 논문이 존재하니 그것을 찾아보도록 하고, 우리는 쉽게 카메라 파라미터를 이해하기 위해서 가장 기본적인 Direct Method를 써서 구해보자.



Direct Method


이 방법은 보정판을 이용하는 방법이다.


우선 이 방법을 사용하기 위해서는 Pi와 Pw를 알아야 한다.

따라서 보정판을 만들고, 그 보정판을 카메라로 촬영한다.

(단, 이 방법의 경우 평면의 보정판을 사용하지 말고, 3차원형태의 보정판(두개의 보정판을 90도로 붙이면 된다.)을 사용하길 권한다. 2차원 보정판을 사용할 경우 zhang의 방법처럼 여러번 촬영해서 사용해야 정확한 값을 얻을 수 있을 것이다. )


그렇게 하면 3차원 상의 점 Pw와 영상의 한점 Pi를 얻을 수 있다.


Pw와 Pi의 Correspondece pair를 이용해서 우리는 Projection Matrix를 구하는 것이 가능하다.

Projection Matrix는 3x4 형태의 행렬이므로 전체 미지수는 12개, 따라서 우리가 필요한 식의 개수는 12개(사실은 11개만 있어도 된다).. 따라서 6쌍의 점들을 알면 우리는 이 문제를 해결하는 것이 가능하다.

이것을 구하는 식을 나타내면 다음과 같다.





사용자 삽입 이미지


다음식을 이용해서 6개의 Pair에 대한 12개의 연립방정식을 구할 수 있고 이것을 행렬형태로 표현할 수 있다. 이렇게 표현한 식을 SVD를 이용해서 풀면 Projection Matrix를 얻을 수 있다. 이 결과를 QR decomposition 하면 내부파라미터와 외부 파라미터를 분리하는 것이 가능해진다.


식 아래의 그림이 실제 Calibration에 대한 전반적인 흐름과 결과를 나태는 그림이다.

(이 결과는 박순용 교수님(http://vision.knu.ac.kr)의 결과를 인용한 것이다. )


몇몇 분들이 종종 문의하는 Camera Calibration에 대해 간단히 요약해 봤습니다.

(일일이 답해줄수가 없습니다. 죄송.. 저도 먹고 노는 것이 아니기 때문에.. )


예전에 봤던 수업 자료를 토대로 아주 간단하게 적어봤습니다. 이보다 간단할 수 없다?? ㅡㅡ;

조금만 공부한 사람들이 보면.. 정말 간단하구나 할 정도인듯??


Direct Method는 정말 간단한 방법으로 두 점사이의 관계만 안다면 쉽게 카메라 칼리브레이션을 수행할 수 있을 겁니다.


written by chamcham


P.S :

종종 쪽지로 이것 저것 문의하시는 분들 계신데... 답해드리기 힘듭니다.

쪽지에 몇자 적으면 끝.. 거기다.. 저도 놀고 먹는 백수가 아니고, 논문도 프로젝트도 해야하는 대학원생인지라... 생활이 있어서.. 제법 바쁩니다.. 그러니 그간 쪽지에 대한 것은.. 이걸로.. Pass.. 하겠습니다. ㅋㅋ

혹.. 프로그래머가 야근 안하는 세상이 오거나.. 제가 로또 된다면... 모르지만.. ㅡㅡ;;

여튼.. 간간히 포스팅되는 걸루 때울듯.. 특히.. 학교 숙제 질문하면 저한테 졸 맞습니다. 숙제는 엄마에게 물어보세요.. ㅡㅡ;;



반응형

+ Recent posts