증강현실 공간과 Depth 카메라를 응용한 상호작용의 데모 영상.
TOF방식의 Depth카메라에서 넘겨주는 depth값을 마커 기반의 좌표계로 변환하여 가상의 물체와 실제 물체간의 상호작용이 가능하다.
상호작용 주체인 실제 물체 자체를 인식이나 추적하는 것이 아닌 가상 물체의 주변 영역을 검색하는 방법으로 상호작용을 위한 물체의 종류나 모양에 상관없이 상호작용 할 수 있으며 계산량도 적다.
* Markerless AR을 하기 위한 기본단계인 Natural Feature Tracking
FAST Feature와 SURF Descriptor를 수정해 2GHz 노트북에서 최대 3ms까지 나온다.
하지만 최대 성능은... 최대 성능일뿐... 안정성을 높이면 10ms정도 걸리는듯...
모바일 윈도우(스마트 폰이나 PDA)에서 돌리기에는 floating point연산이 많아서 대략 1프레임정도 나오는 수준이지만, floating point연산기가 들어 있는 디바이스에서는 실시간으로 돌아갈지 않을까 생각한다.
Introduction
아직 미흡한 부분이 많고, 실력도 많이 부족하지만, 많은 사람들과 공유한다는 마음보다는 공부해왔던 내용을 정리한다는 마음으로 드디어 전공분야에 대해서 포스팅하기로 마음을 먹었다.
아직 공부해야 하는 내용이 더 많고, 부족한 점도 많지만 최근에 이렇게 정리하게 되면 익히게 되는 것이 더 많다는 사실을 깨닫게 되어서 이렇게 일단 시작해 본다.
(목표는 관련된 내용을 모두 정리할 때 까지 일주일에 2개 이상의 포스팅을 3D Reconstruction내용을 적는 것이지만, 아직은 학생인 관계로... 과제와 프로젝트의 압박과 함께, 시험등이 일로 인해서 늦어질 수도 있으니 혹시라도 (한분이라도 계실지는 모르겠지만...) 기다리시고 계신 분들은 여유를 갖고, 느긋한 마음으로 봐주시기를 바란다.)
지금부터 설명할 내용은 멀티뷰를 기반으로 3D Reconstruction을 위한 방법 및 내용을 설명할 예정이다.
이번에는 3D Reconstruction에 대한 첫번째 포스팅으로, 2차원 영상에 존재하는 3차원 정보에 대해서 소개하고, 앞으로 설명할 멀티뷰기반의 3D Reconstruction방법의 가장 기본적인 원리에 대해서 설명할것이다.
3차원 공간
사람이 3차원 공간을 느끼기위해서 필요한 정보는 무엇일까?
부끄럽지만, 요즘 한장 배우려고 노력중인... 필자가 그린 그림이다. 이 그림을 그리는 방법을 배울때에 느꼈지만, 그림을 잘 그리는 방법은 3차원 공간을 2차원으로 잘 옮기기 위한 방법으로, 관찰이 가장 중요한 것이기도 하지만, 2차원에서 3차원의 정보가 어떻게 표현되는지에 대해서 잘 설명해 주고있다. 2차원에서 3차원의 정보를 표현할 때 필요하고 중요한 정보는 다음과 같다.
1. 원근감 (Perspective : 遠近感)
2. 명암 ( Brightness : 明暗)
3. 그림자 ( Shadow )
1. 원근감 ( Perspective : 遠近感 )
먼저 원근감은 한자 그대로 멀고 가까운 것을 느끼는 정도이다. 2차원에서 3차원처럼 보이게끔 이미지의 안쪽으로 후퇴해 가는 듯한 착각, 즉 이미지에 깊이가 있는 듯한 착각을 일으키게 하는 방법이다. 축소의 원리에 대한 것으로 대상이 일정선을 따라 눈에서 멀어져 가며 사물이 축소되어 보이는 것을 말한다.
2. 명암 ( Brightness : 明暗 )
명암은 물체에 빛이 들어왔을때 빛의 방향에 따라서 물체의 면의 명암의 차이가 생기는 것을 표현하여 3차원처럼 보이게끔 하는 방법이다. 이러한 빛이 대기의 수증기 등에의해서 관찰자로부터 가까이 있는 물체보다 멀리 있는 물체가 흐리게 보이게 된다.
3. 그림자 ( Shadow )
그림자는 앞에서 말한 명암에서 설명한 물체의 면사이에 생기는 밝기의 차이를 의미하는 것이 아닌, 빛에 의해 바닥에 생기는 일반적인 그림자이다. 이러한 그림자는 물체가 바닥위에 놓여있다는것 처럼 보여주는 것을 말한다.
이러한 정보를 사용해서 3D Reconstruction을 하는 다양한 접근 방법도 있지만, 앞으로 소개할 3D Reconstruction방법은 이렇게 2차원상에 그림을 그리는 방법으로는 설명할 수 없는 다른 방법이다. 멀티뷰에서만 얻을 수 있는 정보, 바로 시차이다.
시차 ( Parallax : 視差 )
시차는 두개의 시점(Viewpoint)에서 물체(Object)의 원점을 바라보는 두개의 다른 시선에 의해 물체가 다른 위치에 있는 것 처럼 보이는 것을 말한다. 시차는 두개의 시선사이의 각도로 측정된다.
- Wikipedia : Parallax (A simplified illustration of the parallax of an object against)
- Wikipedia : Parallax (This animation is an example of parallax)
사람의 눈은 서로 다른 위치에 두개가 존재함으로 인해서 발생하는 시차로 물체와의 거리를 보다 정확하게 인지 할 수 있다. 멀티뷰를 사용한 3D Reconstruction 방법도 바로 이러한 시차를 사용하는 방법으로 현실의 물체를 가상의 3D공간으로 재구축 하는 방법이다.
이번 포스팅은 이정도에서 마무리 짓도록 하고, 다음번에는 이러한 시차를 이용한 가장 기본적인 방법으로 두대의 카메라를 이용한 stereo-vision기반의 3D Reconstruction에 대해서 알아 볼 것이다.
얼마전에 CTRC(문화 콘텐츠 기술 연구소) 학부생 연구생으로 선발되어서... 얼마남지 않은 학부생활을 좀더 액티브하게 마무리 할 수 있는 기회가 주어졌다.
과제명은 "확장형 모바일 게임 개발"이지만... 개인적으로 게임 개발을 해보고 싶은 마음은 굴뚝같았으나 실제로 실행은 안해본 관계로... -_-;; 좋은 기회라고 생각한다.
일단 아직은 시작하지 않았지만, 모바일 개발 환경에 대해서 조사한 내용을 정리해보려고 한다.
1. Mobile Phone (in korea)
1.1. 개발환경 : WIPI C-let(C) / WIPI J-let(JAVA)
1.2. IDE환경 : Visual Studio 지원
1.3. Emulator : SDK에서 지원
1.4. 장점 : 국내 휴대폰에 직접 포팅해볼 수 있음, 이통사간 포팅의 부담이 적음
1.5. 단점 : 실제 모든 이통사와 호환되지 않음, 국내 휴대폰만 한정, 낮은 성능, 터치스크린 지원하지 않음, 3D 개발의 어려움
1.6. 기타 : 카메및 기타 장치를 사용하기 위해서는 회사별 SDK 혹은 그 하단의 머신레벨에 접근해야함
1.7. 개발 커뮤니티 : http://cafe.daum.net/MobileCreator
1.8. 개발 기초 강좌 : http://juno.springnote.com/pages/778520.xhtml
2. iPhone & iPod Touch
2.1. 개발환경 : MacOS X (레오파드 10.5.3이상) / iPhone SDK (Object C 기반)
2.2. IDE환경 : Mac기반의 IDE지원
2.3. Emulator : iPhone SDK에서 지원
2.4. 장점 : 다소 높은 성능, 터치 스크린 지원, 3D컨텐츠 개발의 용의 (OpenGL 지원), 진동 및 카메라, 자이로등 기본적으로 제공하는 다양한 하드웨어
2.5. 단점 : 참고할 만한 문서나 자료가 적음, iPhone단말기에만 한정되어있음, 국내 미출시 (올연말에 출시 예정)
2.6. 기타 : iPhone을 개발하기 위해 Intel CPU기반의 Mac이 반듯이 필요함
2.7. 개발 문서 : https://developer.apple.com/iphone/program/
3. PDA Phone
3.1. 개발환경 : WinCE기반 / C++, C#기반
3.2. IDE환경 : Visual Studio 지원
3.3. Emulator : Visual Studio에서 지원
3.4. 장점 : 익숙한 개발환경, 간편한 포팅, 다소 높은 성능
3.5. 단점 : 딱히 없음
3.6. 기타 : 최근 소형화를 통해 일반 핸드폰과 크게 구별되지 않음.
4. Google Android
4.1. 개발환경 : Android기반 /JAVA기반
4.2. IDE환경 : 지원하지 않음
4.3. Emulator : Android Emulator지원
4.4. 장점 : Google이라는 매리트, OpenGL ES지원 Google API지원
4.5. 단점 : 실제 출시된 디바이스가 없음 (국내 출시 불투명), 참고할 문서나 자료가 적음.
4.6. 기타 : SDK업데이트가 잦음 (2~3개월에 1회)
4.7. 개발자 커뮤니티 : http://android-developers.blogspot.com/
5. PSP & NDS
5.1. 개발환경 : Linux기반 (window기반의 cygwin사용) (C++)
5.2. IDE환경 : 지원하지 않음
5.3. Emulator : NDS는 Emulator가 있으나 Homebrew
5.4. 장점 : 높은 성능, OpenGL과 같은 3D개발을 지원, 무선 네트웍 사용가능
5.5. 단점 : 특정 디바이스에 한정된 개발, 정식으로 개발을 지원하지는 않음 (homebrew로 crack을 통해 개발), 개발 문서나 참고할 자료가 다소 적음
5.6. 기타 : 없음
5.7. PSP 개발 사이트 : http://ps2dev.org/psp/Tutorials
5.8. NDS 개발 사이트 : http://www.double.co.nz/nintendo_ds/
5.9. Devkit : http://www.devkitpro.org/
6. June(MS에서 출시한 MP3 Player)
6.1. 개발환경 : XNA 3.0 beta (C#)
6.2. IDE환경 : Visual Studio 2008
6.3. Emulator : 지원함
6.4. 장점 : Mobile로 써는 딱히 없음
6.5. 단점 : 2D만 지원, 인터페이스의 제약이 심함
6.6. 기타 : window기반의 게임 개발을 위한 다양한 소스와 라이브러리, 리소스를 제공해줌 (june은 이제 개발환경 제공하기 시작), XBOX360 개발을 지원할 예정임
6.7. 개발 커뮤니티 : http://creators.xna.com/
7. Iriver MP3 Player
7.1. 개발환경 : Flash / 록박스(www.rockbox.org) 개조 펌웨어
7.2. IDE환경 : 없음 (Flash의 경우 Adobe Flash)
7.3. Emulator : 경우에 따라 다름
7.4. 장점 : Flash의 경우 쉽게 개발할 수 있음
7.5. 단점 : Flash의 경우 제약이 많음, 록박스의 경우 아직 초기 단계라 불안전한 점(고장나면 AS안됨 -_-;)
7.6. 기타 : 없음
7.7. 개발 사이트 : www.rockbox.org/twiki/bin/view/Main/IriverNavigation
결국 찾아본 결과... MP3는 그냥 덤으로 끼워준 플렛폼이니... 패스하고... WIPI는 정말... 하고 싶지 않은 플렛폼이고, iPhone이 가장 욕심나는 플랫폼이다.
개인적으로 Mac에거 개발해본 경험이 없기 때문에... Object C도 공부하고... 개발환경이라는건 이기회로 적응하고 좋을듯 싶으나... 장비 지원에 문제가 있을듯 싶고... PDA는... 훗 -_-; WinCE... 차라리 안드로이드를 하는게 낫겠다.
하지만 최소한 PSP나 NDS정도는 써서 개발 했으면 한다. 더군다나 PSP에서는 이미 개발 경험이 있기 때문에, 프로젝트의 퀄리티도 높일수도 있을듯 싶고, 게임 전용머신이라는것이 생각보다 성능도 괜찮고, 재미도 있는듯 싶다.
일단. 모바일 플렛폼에 대한 조사는 넘겨드렸으니... 잘 말해서 iPhone으로 가자! -_-;
2008/09/29 23:53TRACKBACK FROM Culture contents Technology Research Center
1. Mobile Phone (in korea) 1.1. 개발환경 : WIPI C-let(C) / WIPI J-let(JAVA) 1.2. IDE환경 : Visual Studio 지원 1.3. Emulator : SDK에서 지원 1.4. 장점 : 국내 휴대폰에 직접 포팅해볼 수 있음, 이통사간 포팅의 부담이 적음 1.5. 단점 : 실제 모든 이통사와 호환되지 않음, 국내 휴대폰만 한정, 낮은 성능, 터치스크린 지원하지 않음, 3D 개발의 어려움 1.6..
스테레오 카메라 및 캘리브레이션된 멀티 카메라를 사용해 Multi-coreCPU및 GPU를 활용하여 실시간으로 실제 존재하는 물체의 3D 정보를 생성하며, 이렇게 제작한 실제 존재하는 물체의 정보와가상의 3D 물체, 두 물체간의 인터랙션 및 두 물체를 활용하여 보다 다양하고 높은 현실성을 갖는 증강현실을 구현하며,최종적으로는 사용자의 손을 실시간으로 3D 정보로 계산하여 가상의 3D 물체와 인터랙션을 하며 촉감센서등의 햅틱스 기반 기술을활용한 인터페이스 장갑과 병행하여 가상의 3D 물체와의 인터랙션의 반응 결과를 사용자에게 시각 및 촉각으로 전달하며, 사용자와3D 물체사이의 정보를 기반으로 방향성을 갖는 사운드를 첨가하여 다양한 감각을 만족시키는 증강현실에 대한 연구.
사용기술
기술 분야 : Computer Vision, Image Processing, Computer Graphics, Physical Engine
사용 기술 : Camera Calibration, Hand Detection, Finger Tip Tracking, Stereo Vision, Collision Processing
The translations below need to be checked and inserted above
into the appropriate translation tables, removing any numbers. Numbers
do not necessarily match those in definitions. See instructions at Help:How to check translations.
댓글을 달아 주세요