Scientia Conditorium

[컴퓨터 비전][번역] 원근 카메라(Perspective Camera) - Interactive Tour 본문

인공지능/컴퓨터 비전

[컴퓨터 비전][번역] 원근 카메라(Perspective Camera) - Interactive Tour

크썸 2024. 9. 23. 02:11

원문 : https://ksimek.github.io/2012/08/13/introduction/ 

 

The Perspective Camera - An Interactive Tour ←

The Perspective Camera - An Interactive Tour August 13, 2012 Is your company looking to hire a software engineer in computer vision? Let's talk! I'm approaching the end of my PhD and am considering positions starting Fall 2015. Check out the contact page f

ksimek.github.io


The "1st and Ten" system, one of the first successful applications of augmented reality in sports.

 

1998년 9월 27일, 신시내티 벵골스와 볼티모어 레이븐스의 평범한 미식축구 경기 도중 그라운드에 노란색 선이 나타났습니다. 이 선은 카메라의 위치와 그라운드 모양을 실시간으로 분석한 컴퓨터가 경기장에 얇은 노란색 띠를 겹쳐서 표시한 것이었습니다. 이 선은 다음 퍼스트 다운(first-down)의 위치를 표시한 것이지만, 야구의 컴퓨터 투구 분석부터 테니스의 자동 라인 심판에 이르기까지 라이브 스포츠에서 컴퓨터 비전의 새로운 시대가 시작되었음을 알리는 신호탄이기도 합니다.

 

2006년, 마이크로소프트와 워싱턴 대학의 연구원들은 플리커(Flickr)에서 "트레비 분수와 로마"를 검색하여 얻은 이미지만을 사용하여 로바의 트레비 분수 3D 투어를 자동으로 생성했습니다.

 

2007년, 카네기 멜론 박사 과정 학생인 Johnny Lee는 40달러짜리 닌텐도 Wii 마우스를 해킹하여 인상적인 헤드 트래킹 가상 현실 인터페이스를 개발했습니다.

 

2010년, 마이크로소프트는 가격이 10배에 달하는 경쟁사의 기능에 필적하는 소비자용 스테레오 카메라인 Kinect를 출시하여 게임과 컴퓨터 비전 세계를 계속 뒤흔들고 있습니다.

 

이 모든 기술의 공통점은 무엇일까요? 모두 2D 이미지 픽셀이 표현하는 3D 세계와 어떻게 연관되어 있는지에 대한 정확한 이해가 필요하다는 것입니다. 다시 말해, 이 모든 기술은 강력한 카메라 모델에 달려있습니다. 이 글은 컴퓨터 비전에서 가장 중요한 카메라 모델 중 하나인 핀홀(Pinhole) 투시 카메라를 살펴보는 시리즈 기사의 첫 번째 글입니다.

먼저 원근 카메라(Perspective Camera)를 분해하여 각 부분이 3D 장면의 렌더링에 어떤 영향을 미치는지 살펴보겠습니다. 그런 다음 보정된 카메라를 OpenGL로 가져와 가상 물체를 실제 이미지로 렌더링하는 방법을 설명합니다. 마지막으로 원근 카메라를 사용하여 가상 현실 시스템에서 스테레오 렌더링과 헤드 트래킹(head-tracking)으로 렌더링을 구현하는 방법을 보여드리겠습니다.

 

이 시리즈는 여러 훌륭한 교과서에서 제공하는 보다 엄격한 내용을 보충하기 위한 것입니다. 교과서에서 일반적으로 제공하지 않는 대화형 데모, 실행 가능한 코드, 구현에 대한 실용적인 조언을 제공하는 데 중점을 두겠습니다. 독자가 3D 그래픽과 OpenGL에 대한 기본적인 이해와 컴퓨터 비전에 대한 배경 지식이 있다고 가정하겠습니다. 즉, 동질 좌표(Homogeneous coordinates)나 카메라 행렬(Camera Matrix)에 대해 들어본 적이 없다면 컴퓨터 비전 입문서부터 시작하는 것이 좋습니다. 수학적 표기법과 규칙(예: 열 벡터, 오른손 좌표계 등)을 차용한 Hartley와 Zisserman의 컴퓨터 비전을 위한 다중 시점 기하학을 적극 추천합니다.

 

 

기술 요구 사항(Technical Requirements)

이 글의 방정식은 MathJax를 사용하여 만들었기(typeset) 때문에 JacaScript를 비활성화했거나 구형 브라우저를 사용하는 경우 표시되지 않습니다.(IE 5 사용자에게는 죄송합니다) 모든 것이 정상적으로 작동하면 아래에 행렬이 표시됩니다.

(이 블로그에서는 MathJax를 사용하지 않고 그림 파일로 첨부하여 표기하고 있습니다.)

 

3D 대화형(인터랙티브) 데모는 three.js 로 제공하는데, 이 데모는 자바스크립트가 필요하며 WebGL을 지원하는 브라우저를 선호합니다.(최신 버전의 파이어폭스와 마찬가지로 구글 크롬도 잘 작동합니다.) 구형 브라우저는 canva를 사용하여 렌더링하므로 느리게 실행되고 보기 흉하며 사용자에게 심한 모욕을 줄 수 있습니다. 하지만 잘 작동할 것입니다. 아래에 두 개의 구가 보이면 정상적으로 작동하고 있는 것입니다.

 

<추가 예정>

Perspective Camera Toy ← (ksimek.github.io)

 

목차(Table of Contents)

아래는 이 시리즈의 모든 글 목록입니다. 새 글이 게시되면 이 목록에 추가되므로 언제든지 이 페이지로 돌아와 최신 목록을 확인할 수 있습니다.

  • 카메라 행렬 분석하기, Part 1: 내재적/외재적 분해(Intrinsic/Extrinsic Decomposition)
  • 카메라 행렬 분석하기, Part 2: 외재적 행렬(Extrinsic Matrix)
  • OpenGL에서 보정된 카메라 시뮬레이션 - part 1, part 2
  • 카메라 행렬 분석하기, Part 3 : 내재적 행렬(Intrinsic Matrix)
  • 보정된 카메라를 사용한 스테레오 렌더링
  • 보정된 카메라를 사용한 헤드 트래킹 디스플레이

재밌게 읽으세요!(Happy reading!)