Posts 카메라 캘리브레이션
Post
Cancel

카메라 캘리브레이션


카메라 캘리브레이션

작품개요

기존의 체커보드를 이용하는 카메라 캘리브레이션 라이브러리 보다 간소화된 카메라 캘리브레이션을 수행하는 함수를 구현해본다. https://github.com/ghkddnrwh/camera_calibration


코드실행방법

코드를 실행시키면 다음과 같은 이미지가 뜨게 된다.

1번 클릭 -> 2번 클릭 -> … -> 5번 클릭 -> ese 누르기 -> 원하는 포인트 1(test point 1) 클릭 -> 원하는 포인트 2(test point2) 클릭 -> ese 누르기 그럼 두번째 이미지가 뜨게 된다. 두번째 이미지는 같은 객체를 다른 각도에서 찍은 이미지이다. 첫 번째 이미지에서 찍은 점들과 같은 점들을 다시 찍으면 된다. 1번 클릭 -> 2번 클릭 -> … -> 5번 클릭 -> ese 누르기 -> 원하는 포인트 1(test point 1) 클릭 -> 원하는 포인트 2(test point2) 클릭 -> ese 누르기

여기까지 수행하면 cmd 창에 결과가 출력된다.


결과

마지막 출력에 4개의 벡터가 나온다. 그 중에 두번째, 네번째 벡터가 원하는 포인트1, 원하는 포인트2를 카메라 좌표계에서 월드 좌표계로 변환한 결과를 보여준다. 이때 월드 좌표계는 1번을 (0, 0, 0), 2번을 (1, 0, 0), 3번을 (0, 1, 0) 으로 가지는 좌표계이다.

[1.05384003 1.47541013 0.49791424] [1.0759119 1.49894164 0.22437367]

위의 출력 결과는 이미지상에 보이는 기둥(딱풀에 종이 감은 모양)의 빨간선 끝점과 중간점을 각각 원한는 포인트 1, 2로 하고 월드 좌표계로 변환한 결과를 보여준다. 해당 점의 실제 좌표값은 (1.05, 1.43, 0.5) (1.05, 1.43, 0.25)

이고 실제 값과 비교 했을 때 약간의 오차를 가지는 것을 확인 할 수 있다. 점을 세밀하게 잘 찍으면 좋은 결과가 나온다.


코드 설명

Camara Calibration은 기본적으로 Intrinsic Parameter, Extrinsic Parameter, 왜곡 계수를 구하는 것을 의미한다. 일반적인 Calibraion 함수는 이 세가지를 한번에 모두 구해주게 된다. 해당 코드에서는 Intrinsic Parameter 중 h의 값과 Extrinsic Parameter를 구하게 된다.

Intrinsic Parameter는 점들의 투영 값들과 투영된 점들간에 닮음비를 이용해서 구한다 Extrinsic Parameter는 선형변환행렬을 이용해서 구한다.


부족한 점

Intrinsic Parameter에는 hx, hy, u, v 4개가 존재하게 된다. 실제로 수기로 작성한 식에서는 4개를 가지는 4차 방정식 4개를 구했지만 4차방정식을 풀지를 못해서 부득이하게 hx, hy 만을 구하는 선형 방정식을 이용했다. 하지만 hx, hy만을 구하는 선형 방정식도 값이 허수가 발생하는 문제점이 발생해서 h 만 구하는 방벙식으로 최종 수정했다. 4개의 파라미터를 모두 구하는 방법에 대해 추후 연구가 필요해 보인다.

1
This post is licensed under CC BY 4.0 by the author.