배워야 할 것들

Photosynth 는 사진을 조합해서 3차원의 효과를 낼 수 있도록 하는 기술이 필요하다.

이런 프로그램을 만들려고 하면 어떤 것들을 알아야 할지 알아보자.

이 분야에 관심이 있어서 들여다 본 사람이라면 한번쯤이 Zisserman과 Hartley 의 "Multiple View Geometry in computer visioin" 이라는 책제목을 들어 봤을 것이다.

하지만 서두르지 말자. 내가 그랬지만 이 책을 먼저 본다는 것은 새로운 개념에 부딪치게 되면서 상당한 시간을 허비하게 될 수도 있다. 물론 기본적인 영상처리기법을 안다고 가정한다면 다른 말이긴 하다.

일반적인 경우를 고려할때, 기본적인 영상처리에 대해 먼저 알고 다음 단계로 넘어가는 것이 좋을 것 같다.

레벨은 차이가 있을 수 있지만, 단계별로 공부해야 할 사항을 정리해 보면 다음과 같다.

1. 영상처리(Image Processing)
   - Convolution 의 이해
   - 이미지 처리 방법의 이해와 코드화하는 방법

2. Corner Detection
  - Edge Detection
  - Corner Detection

3. Line Fitting
  - Hough transform
  - alignment

4. Multiview geometry
  - Camera
  - epipolar geometry
  - SfM

이 정도가 정리되고 코드화 할 수 있다면 기초적인 수준의 Photosynth는 된다고 생각한다.
단 위에서 한가지 빠진 것이 있는데, "SIFT(Scale Invariant Feature Tranform)"이다.

Photosynth는 이미지의 코너를 계산하여 추적하는 부분에 SIFT를 적용하고 있는데, Lowe 교수의 특허가 걸린 기술이다. 이 부분은 코너 검출 부분이 정리되고 난 후 다뤄보도록 하겠다.

오늘은 여기까지...




Photosynth 따라잡기

2007년 TED에서 Blaise Aguera y Arcas 라는 개발자가 사진을 이용해서 투어를 조합하여 마치 어떤 장소에 가 있는 것처럼 체험할 수 있는 Photosynth의 데모를 선보였을때, 놀라움을 금할 수 없었다.

Photosynth 에 관련된 자료를 모아보았고, 100%는 아니겠지만 동일하게 만들어 봐야 겠다는 생각을 해보았다.

이전에도 다루긴 했었지만 TED의 강연을 아래와 같이 붙인다.



혹자는 그런 걸 어디다 적용시킬 데가 있을 것인가 라는 의문을 가지고 있을지 모른다.

그렇게 생각한다면 CES2008 에서 마지막으로 빌게이츠가 보여주었던 Keynote speech를 보기 바란다.



여기에서 빌게이츠는 핸드폰에서 사진을 찍으면 사진에서 인식된 건물의 정보를 이용해 예약을 하거나 하는 모습을 보여준다. 물론 샘플로 만들어 놓은 데모에 불과하지만 그 가능성을 보여주는 대목이라 하겠다.

지금은 photosynth.net 사이트에 가면 photosynth가 본격적인 서비스가 되고 있는 것을 볼 수 있다.

작년부터 Photosynth를 흉내내보기 위한 시도를 위해 준비하고 있었는데, 어느 정도 정리가 된 것같아 블로그에서 소개하고자 한다. 그렇다고 해서 현 수준이 동일하게 되었다고는 볼 수 없고, 1/3 정도 따라 왔다고 본다.

지금까지 정리하면서 더 가까이 다가가 보려고 한다.

Photosynth의 구성을 보자면 아래와 같이 구분된다.[1]

1. Reconstructing Cameras and Sparse Geometry
  - Keypoint Detection and Matching
  - Structure from Motion
  - Geo-Registration
  - Scene Representation

2. Photo Explorer Rendering

3. Photo Explorer Navigation

4. Enhancing Scenes

여기서 이 모든 것을 다 해볼 생각은 아니다. GUI 등의 부분등은 제외하고 이미지를 처리하는 핵심적인 부분에 대해서 파악해보고자 한다.

다음 포스트부터 어떻게 Photosynth를 만들지 하나씩 해보도록 하자.

----------------------------------------------------------------------
[1]Modeling the World from Internet Photo Collections, International Journal of Computer Vision
Photo Tourism 에 대한 논문 내용을 정리내용

Reconstructing Cameras and Sparse Geometry

 Photo tour 시스템은 수집된 각 사진들에 대한 초점길이와 같은 상대적인 위치, 원점, 고유 파라미터에 대한 정확한 정보가 있어야 한다. 일부 상들에 대해서는 기준 좌표계에 대하여 절대적인 위치를 요구하기도 한다. 이런 정보들이 GPS 장비와 같은 전자장치로 이용할 수 있지만, 기존 사진들은 추가적인 정보가 없다. 그러나  디지털 사진파일은 초점거리와 다른 기타 정보가 EXIF 태그 내에 저장되어 있다.

 Photo tour 시스템은 센서나 카메라 자체에 의존하지 않고, 사진이 가지는 정보로부터 계산을 통해 이루어 진다. 우선 각 사진들의 상들에 대한 점들을 검출해 내고, 사진쌍들사이에서 상의 점들을 일치시킨다. 마지막으로 카메라 파라미터를 복구하기 위해 SfM(Structure from Motion) 과정을 반복시키게 된다.

Keypoint detection and matching

 1. 각 사진들의 상에 대한 점들을 찾아낸다.
    SIFT(Scale Invariant Feature Transform)에 대한 논문은 다음과 같다.
   [ LOWE, D. 2004. Distinctive image features from scale-invariant keypoints. ]

 2. 각 사진쌍들에 대한 keypoint descriptor 들을 일치시킨다.
    아래 논문과 같은 근소한 최소 이웃 패키지 방법을 사용했다.
   [ ARYA, S., MOUNT, D. M., NETANYAHU, N. S., SILVERMAN, R.,AND WU, A. Y. 1998. An optimal algorithm for approximate nearest neighbor searching xed dimensions. J. of the ACM 45, 6, 891–923 ]

 3. 각 쌍들에 대한 기본 매트릭스를 추산한다.
   RANSAC 방법을 이용한다.
   [ FISCHLER, M., AND BOLLES, R. 1987. Random sample consensus: a paradigm for model tting with applications to image analysis and automated cartography. Readings in computer vision: issues, problems, principles, and paradigms, 726–740 ]

 4. 각 RANSAC 반복과정에서 후보기본 매트릭스를 계산한다.
    계산에 적용된 8-점 알고리즘은 아래의 책을 참조하면 된다.
  [ HARTLEY, R. I., AND ZISSERMAN, A. 2004. Multiple View Geometry. Cambridge University Press, Cambridge, UK. ]

 5. 기본 매트릭스를 복구하기 위해 일치된 점들을 제거한다.