어쨋든

 

여태 소스분석만 잔뜩하다가 갑자기 산으로 왔다

좋은 정보가 있어서

 

원문 : http://qtboy.egloos.com/2638750 

내 느낌을 더해서 옮겨적겠다

 

증강현실을 처음 구현하고자 할 때 어려움을 느끼게 되는데, ARToolKit을 보고있지만 이걸 보고있어도 이게 통 무슨 소린지 OpenGL을 가지고 놀고있는 듯한 느낌인데 감이 안올 수 있다. 사실 나도 아직까지 확실하게 감을 잡지는 못했다.

 

하지만, 증강현실의 기본에 입각해서 모든 기술을 생각해 보면 전체 구조는 그리 복잡하지 않다.

 

가장 핵심은 웹캠과 OpenGL or DirectX상의 카메라를 일치시키는 것이다.

카메라를 일치시키는 작업에는 두가지가 있는데, 초점거리와 중심점 등 실제 내부 속성을 일치시키고, 웹캠이 실제 공간에서 위치하는 자세정보, 즉 외부 속성을 일치시키면 됩니다

 



1. 내부속성 일치시키기

  기본적으로 카메라 캘리브레이션은 카메라의 5DOF 속성을 알아내는 작업이지만, 이 과정에서 constraints를 부여해서 초점 거리만 구했다면 내부속성을 구하는 일은 어렵지 않다. 아진짜? OpenGL에서 glPerspective()함수를 이용해서 초점거리를 fov(Field of View : 전방시야각)로 환산하여 입력해주면 되기 때문이다. 하지만 5DOF의 내부속성을 일치시키는 것은 만만한 작업이 아닌데, 이를 위해서는 컴퓨터 그래픽스의 그래픽스 파이프라인을 잘 알고 계산식을 유도해 낼 줄 알아야 한다. 이 과정을 통해 5DOF의 내부속성은 4x4 Projection Matrix로 변환되고 glMatrixMode(GL_PROJECTION); glLoadMatrixd(4x4 matrix); 함수를 통해서 일치시킬 수 있다, 이 과정이 부담스럽다면 ARToolkit에 변환시키는 함수들을 참고해보면 된다

 

2.자세정보 일치시키기

  자세정보는 트래킹하고자 하는 타겟의 6DOF 자세(회전을 위한 3DOF, 위치 지정을 위한 3DOF)인데, 두가지 방법이 있다. glLookat() 함수를 이용하여 가상 카메라를 직접 이동시키거나 glMatrixMode(GL_MODELVIEW); glLoadMatrix(4x4 matrix); 함수를 이용하여 카메라는 원점에 고정시키고 대신 가상의 3D 오브젝트를 이동시키는 방법인데, 요고도 이해가 잘 안된답시면 ARToolKit을 참고하자

 

위와 같이 두가지 속성을 일치시킨다면 증강된 영상을 볼 수 있을 것이다.


'Augmented Reality > AR Basics' 카테고리의 다른 글

Camera Calibration with Homography  (0) 2014.06.10
Posted by 긍정왕오킹