Engineering Navi - ARToolkit 프로그래밍 1 - Camera Calibration.

 
** 이 글은 http://kougaku-navi.net/ARToolKit.html 의 기초 프로그래밍 부분을 해석한 것 입니다.

** 저처럼 ARToolKit에 막 입문하신 분들께 조금이나마 도움을 줄 수 있을 것 같아, 해석하게 되었습니다

** 글을 쓰신 Sunao Hashimoto 씨의 동의를 얻지 않고 해석한 점 죄송하게 생각합니다.

    (スナオ・ハシモト様、勝手に翻訳することになって本当に申し訳ございません。もし、問題になれば、
   消しますのでsega_kr@hotmail.comにご連絡してください。ありがとうございます。) 

** 처음 설치부분은 생략합니다. 예제 파일이 이상없이 돌아간 이후에 글을 참고해 주시기 바랍니다.
     (ARtoolkit이 들어있는 폴더는  Program File 폴더 내에 세팅하였음.)

 ** 이 글을 쓴 분은 로지텍 퀵 캠 For Notebook Pro를 사용했습니다.

 ** 자연스러운 표현을 위해, 의역하였습니다.




1. Camera Calibration을 해봅시다.


 1-1. Camera Calibration 라는 것은 무엇인가?
   사용하는 카메라에 따라, 초점 거리와 렌즈의 일그러짐 등 특성이 달라집니다. 이런 카메라의 특성값
(카메라 파라미터)는 영상으로 부터 마커의 3차원 위치상태를 구하는 계산과 3D 오브젝트를 정확하게
처리하는데 영향을 미치게 됩니다. 보다 정확한 계측을 하기 위해서는 사전에 카메라 파라미터를 구하는
작업
, 즉 Camera Calibration이 필요하게 됩니다.

 공식사이트(영문)에는 2가지 방법의 Calibration방법에 관하여 해설이 있습니다.
  ARToolKit Documentation - Camera Calibration 

  - 1. 1 Step Calibration(간단함)
   영상을 중첩시켜 표시한 다음 충분한 정확도를 얻어낼 수 있는 방법.
 
  - 2. 2 Step Calibration(복잡함)
    보다 높은 정밀도를 가진 결과를 얻어낼 수 있는 방법.(3차원 계측 방면)

여기에서는 간단한 방법인 '1 Step Calibration'에 대해 해설하겠습니다.

1-2. Calibration용 패턴을 인쇄한다.
   일반적인 Camera Calibration으로는 격자 모양과 등간격 점을 인쇄한 종이(Calibration 보드)를
사용합니다. 
이것을 카메라에 촬영하고, 영상 안에 격자모양의 점의 위치를 기록한 뒤, 약간의 계산을
실행함으로 카메라 
파라미터를 산출하는 것이 가능합니다. ARToolKit에는 그 Calibration용 패턴과
계산 툴이 들어가 있습니다.
  Calibration에서 사용하는 패턴은 아래의 PDF 파일 입니다.

 -> C:\Program Files\ARToolKit\patterns\calib_dist.pdf
     
  이 PDF 파일을 인쇄해 주세요.(프린트가 없다면, PC의 모니터에 패턴을 표시하는 것도 좋은 방법입니다.)

            Calibration용 패턴(calib_dist.pdf)

 인쇄한 점과 점사이의 길이(점의 중심에서의 길이)를 자로 측정해 주십시요. 이 때, 미리미터 단위로
측정하는
것에 주의하시기 바랍니다. A4의 종이에 인쇄를 한 경우에는 38mm~40mm정도가 될 것 입니다.
 이 수치는
다음에 사용하게 됩니다.

1-3. Calibration의 사용 방법.
  이제부터 Calibration을 사용해 봅시다. 1 Step Calibration에서는 아래의 프로그램을 사용했습니다.

 -> C:\Program Files\ARToolKit\bin\calib_camera2.exe
 
 1-3-1. calib_camera2.exe 파일을 더블 클릭하면, 아래와 같이 표시됩니다.

-> Input the distance between each marker dot, in millimeters:
  
 점과 점 사이의 거리를 미리미터 단위로 입력해 달라는 말이기 때문에, 여기에서는 방금전 자로 측정했던
길이를 입력하고 엔터를 눌러 주십시요. 그렇게 하면, 비디오 캡쳐 설정 다이얼로그가  표시되기 때문에
그대로 OK를 눌러 주세요.(※해상도를 변경하고 있은 경우는 '출력 사이즈'의 항목을 변경하세요.)

 값을 입력하면 이렇게 표시되어, 영상 윈도우가 표시됩니다.
Input the distance between each marker dot, in millimeters: 38
Camera image size (x,y) = (320,240)

-----------
Press mouse button to grab first image,
or press right mouse button or [esc] to quit.
argl error: Your OpenGL implementation and/or hardware's texturing capabilities
are insufficient to support rectangle textures.


  1-3-2. 다음은 4 X 6 개의 모든 점이 화면 안에 들어가도록 촬영를 하고, 그 상태로 화면에 1회 좌클릭
합시다. 이 때, Calibration용 패턴은 꼭 평평한 장소에 두시기 바랍니다.

  1-3-3 클릭하면, 화면이 정지하고 특징점 기록 모드에 들어갑니다.

-----------
Press mouse button and drag mouse to rubber-bound features (6 x 4),
or press right mouse button or [esc] to cancel rubber-bounding & retry grabbing.

"마우스 버튼을 눌러 드래그하고 6 X 4 개(총 24개)의 특징점을 선택하여 주십시요. 우클릭 또는 ESC키로
작업을 캔슬하고, 영상을 다시 찍을 수 있게 됩니다."
라는 의미의 메세지가 표시됩니다. 마우스의 드래그 조작으로 검은 점 한개 한개의 범위을 선택해 나갑니다.
범위 선택을 하고 있는 영역은 monochrome(흑백)으로 표시됩니다. 드래그하고 마우스 버튼을 떼면,
범위 내에 있는 점의 중심에 빨간 십자선이 표시됩니다. 표시된 24개의 모든 점에 이 작업을 합시다.
클릭하는 순서는 정해져 있기 때문에 주의하시기 바랍니다.
하단의 그림에서 청색 문자에 적혀있는 숫자가 클릭하는 순서입니다.  


좌클릭을 하면 화면이 정지합니다.

순서대로 점의 중심을 기록합시다.

  작업 중에는 이렇게 표시됩니다.

 
Marked feature position 1 of 24
Marked feature position 2 of 24
Marked feature position 3 of 24
Marked feature position 4 of 24
Marked feature position 5 of 24

                      .

                      .

                      .


 1-3-4. 모든 점에 대한 작업이 끝나게 되면 아래와 같이 표시됩니다.
"좌클릭으로 특징점을 보존합니다. 우클릭 또는 ESC키로 화면을 다시 찍습니다."
라는 의미이므로, 확실히 점을 찍었다면 한번 더 화면을 좌클릭 합니다.
Marked feature position 24 of 24
-----------
Press mouse button to save feature positions,or press right mouse button or [esc] to discard feature positions & retry grabbing.

 1-3-5. 좌클릭하면, 조금 전에 작업으로 지정한 점의 좌표값이 표시되어 영상의 정지상태가 해제됩니다.
화면에는 "좌클릭으로 다음 영상을 *얻어냅니다.('取り込みます: 거둬 들입니다. 수확합니다'의 의역인데,
뜻이 틀릴지도 모르겠네요.) 우클릭 또는 ESC키로 일그러진(뒤틀린) 상태의 파라미터를 구할 수 있습니다."
라고 나와있지만, Calibration에는 2장 이상의 영상을 필요로 하고 있기 때문에, 여기서 한번 더
1-3-2 ~ 1-3-4의 작업을 반복합니다.
  

-----------
Press mouse button to grab next image,or press right mouse button or [esc] to calculate distortion parameter.

 1-3-6. 두번째 특징점 클릭이 끝나면 화면을 우클릭합니다. 그러면 계산이 실행된 이후, 아래의 메세지와
함께, 점 사이를 빨간색으로 이은 영상이 표시됩니다.
-----------
Checking fit on image 1 of 2.Press mouse button to check fit of next image.
 이 그림과 같이, 대각선과 격자점이 확실하게 교차하고 있는 영상이 표시된다면, OK~.
영상을 좌클릭하면 다음 영상이 표시됩니다.
-----------
Checking fit on image   2 of   2.
Press mouse button to calculate parameter.


 2번째 작업한 영상에서도 대각선과 격자선이 정확히 표시되는 것을 확인할 수 있다면, 영상을 좌클릭합니다.

 1-3-7. 계산이 실행된 이후, 아래의 메세지가 표시된다면 성공입니다.
 "Calibration은 성공했습니다. 파일명을 입력해서 카메라 파라미터를 보존해 주세요"라는 뜻이므로,
 적당한 파일명을(예를 들어, my_camera_para.dat)를 입력하고, 엔터를 누릅니다.
Calibration succeeded. Enter filename to save camera parameter to below.
--------------------------------------
SIZE = 320, 240Distortion factor = 105.000000 81.500000 -30.700000 0.986381750.89434 0.00000 155.00000 0.000000.00000 1999.36684 32.50000 0.000000.00000 0.00000 1.00000 0.00000
--------------------------------------
Filename:

 1-3-8. 카메라 파라미터 파일은 C:\Program Files\ARToolKit\bin 안에 생성됩니다.
 이것으로 Calibration은 종료입니다.

 샘플 프로그램을 이용하고 있는 디폴트 카메라 파라미터 파일은 아래의 폴더의 파일입니다.

 C:\Program Files\ARToolKit\bin\Data\camera_para.dat

 이 파일과 현재 자신이 만든 파일을 옮겨놓으면, 현재 쓰고 있는 개인 카메라로 높은 정밀도를 가진
오버레이 표시가 가능합니다.
===========================================================