2013년 10월 20일 일요일

calibration된 물체를 화면에 표시하기

Opencv을 이용하면 Camera의 K, R, t 등을 구할 수 있다.

R, t를 이용해서 카메라축 기준으로 보정에 사용된 패턴을 3차원 공간에 뿌려보자.  보정에는 여러 영상을 사용한다.  다양한 자세의 카메라로 고정된 하나의 교정자(scale)를 활영한다.


캘리브레이션을 통해 R, t를 얻었다면 보정자의 좌표 M(w.r.t world coordinate: 3-vector)은 이미 알고 있다.  카메라를 기준으로 보정자 좌표 M'(camera coordinate)가 필요하다.

m = K[R|-Rc]M = KM'

이고

M'=[R|-Rc]M = inv(K)*m

이다.   단, c는 월드축을 기준으로 했을 때 translation 벡터이다.
주의할 점은 calibration에서 얻은 t는 -Rc이다. 따라서,

c=-R'*t

이다.



카메라의 위치를 기준으로 교정자를 표시 하였다. 잘 표시 되었다.

보정에서 얻은 R은 카메라 축의 방향을 나타낸다.
카메라 좌표의 축 3개의 방향(단위 벡터)이 각각 u, v, w라고 하면 R=[u';v';w']이다.

R은 어떤 월드 축에 대한 카메라 축의 방향이다. 카메라 축을 고정하면 월드 축은 R'로 돌려주면 된다.

이번에는 보정자를 고정시키고 영상을 찍은 카메라의 위치를 표시하면 다음과 같다.

(figures from JHKim)

댓글 1개: