ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모바일 장치기반 증강현실 (스크랩)
    정리필요2 2008. 3. 11. 11:00
    모바일 장치기반 증강현실

    증강현실 영상인식 모바일 신촌 비전 3차원




     본 프로젝트는 모바일 장치에서 동작하는 3차원 영상 증강현실을 구현했다.


    [프로젝트 주요기능]


      - 입력되는 영상에서 마커를 인식하여 마커와 카메라 간의 자세를 추정하여 마커위에 3차원의 객체를 정합

      - 기존의 타 연구실에서 데스크톱 환경을 기반으로 수행되어 오던 이러한 3차원 영상 처리 모듈을 임베디드 장치
       에 탑재할 수 있도록 고정 소수점 연산을 구현하고 임베디드 플랫폼을 위한 프로그래밍 최적화 기법을 수행하여
       모바일 장치에서 구동되도록 구현

      - 모바일 장치의 카메라를 애플리케이션 층에서 제어가 가능하도록 인터페이스 제공






    홍병호  호종현  최용하 




      최근 들어 점차 고사양의 휴대형 장치가 출시 되고 있다. 고사양의 프로세서와 고해상도 카메라를 가진 모바일 장치를 위한 소프트웨어가 부족한 현실에 모바일 장치를 위한 새로운 소프트웨어 개발 분야를 제시하고 모바일 환경에서의 영상 증강현실을 구현하기 위한 기반을 마련하고자 모바일 환경에서 동작하는 3차원 영상 증강현실을 구현하였다.

      증강현실이란 실세계에 디지털 정보를 첨가하여 사용자에게 정보를 제공함으로서 실제 관찰하고 있는 사물이나 장소에 대한 부가적인 정보나 의미를 함께 제공하는 것이다. 증강현실의 이러한 특징으로 인해 의학, 교육, 모바일 장치용 게임 분야등 여러 분야에서 연구가 이루어지고 있다.



      

    그림 1. 증강현실을 이용한 모바일 네비게이션

      그림 1은 테그놀로지 리뷰에서 앞으로 떠오를(Emerging) 10대 기술중 하나로 증강현실을 소개한 것으로서 노키아에서 개발에 진행 중인 모바일 장치에서 증강현실을 이용한 네비게이션 시스템이다. 이와같이 증강현실은 앞으로 발전 가능성이 큰 분야로 생각되며 본 프로젝트가 모바일 장치에서 증강현실을 이용한 소프트웨어 개발에 비용을 줄여 줄 수 있다고 판단되어 개발을 하였다.

    사이트 참조 :

     http://www.technoloview.com/read_article.aspx?ch=specialsections&sc=emerging&id=18291


     본 프로젝트에서 구현한 3차원 영상 증강현실 모듈은 그림 1과 같은 흑백 마커를 입력되는 영상에서 인식하여 마커 위에 3D 객체를 투영한다. 데스크톱 환경이 아닌 임베디드 환경에서 이러한  3차원 처리 모듈을 동작시키기 위해서는 다음의 제약사항을 고려해야 한다. 모바일 장치 대부분의 CPU는 부동 소수 유닛 존재하지 않는다. 따라서 부동 소수 연산을 소프트웨어에 의해 처리되며 이는 정수 연산보다 50배 느리다. 따라서 임베디드 환경에서 3차원 영상 처리 모듈을 구현하기 위해서는 최적화 과정이 필요하여 고정 소수점 연산을 구현하여 프레임 처리율을 높이고자 했다. 타겟 플램폼으로 PDA를 사용했기 때문에 PDA의 카메라를 제어하기 위해 DirectShow 기술을 활용하였으며 LCD에 입력된 영상을 출력하고 3D 객체를 표현 하기 위해 OpenGL ES를 이용하였다.

    [그림1] 마커  

     

     본 시스템은 카메라로부터 입력 영상을 가져오는 DirectShow기술을 이용한 렌더 필터 영역, 얻어온 이미지를 처리하여 마커와 카메라간의 자세를 추정하는 자세 추정 영역 ,마지막으로 마커 위에 카메라의 자세에 맞게 3D 객체를 표현하는 렌더링 영역 으로 나눌 수 있다.


                                                                  [그림2] 시스템 아키텍처


    1. 렌더 필터 영역

      - DirectShow기술을 활용하여 구현

      - 영상 처리를 위한 미디어 소스(카메라) 를 접근하는 간편한 인터페이스를 제공하도록 구현

    2. 자세 추정

                                                             [그림3] 3차원 영상 처리 흐름도

    2.1. 영상 형식 변환

      - 카메라 장비에 독립적이기 위하여 카메라로부터 유입된 신호에 따라 내부 처리를 위한 영상으로 변환하는
        작업을 수행

      - 컬러 영상의 경우 내부 처리를 위하여 명암 영상으로 변환 작업 수행.


    2.2. 이진화

      - 이진화 단계에서는 명암도 영상을 이진 영상으로 변환하는 작업을 담당.


    2.3. 마커 인식

      - 이진화 된 이미지를 기반으로 마커를 인식한다.

      - Harris Corner Detector (해리스 극점 검출기) 와 Hough Transform 을 사용

      - 미리 등록된 마커를 템플릿 비교연산을 통하여 해당 객체에 대한 아이디 값을 가져옴.  


    2.4. 렌즈 왜곡 보정

      - 카메라 기하학을 풀고 OpenGL ES 로 해당 변수를 전달하기 전에 이미지의 왜곡을 보정하는 것으로 렌즈
        상수를 2차 다항식으로 모델링 한 데이터를 기반으로 보정.

    2.5. 자세 추정 과정

      - 카메라 캘리브레이션 단계에서 구해낸 내부 파라미터(Intrinsic Parameter) 를 이용하여 외부 파라미터
        (Extrinsic Parameter) 를 구함


    3. 3D 렌더링 영역

      - 3차원 객체를 실제 영상에 표현하기 위하여 OpenGL ES 를 이용한다.

      - Pose Matrix 는 4x4 의 Homogeneous Matrix 로 Extinsic Parameter 의 추정에 의하여 산출 됨.

     

    1. Goal

     임베디드 환경에서 동작이 가능하도록 하고 마커의 패턴에 따라 서로 다른 3D 객체를 표현 가능하게 함으로서 다양한 분야에서 활용될 수 있도록 라이브러리화하는 것이 본 과제의 목표였다.  

    2.Result

    [그림4] 완성 결과 이미지

     

    [그림5] 마커인식을 통한 객체 정합

       위 그림은 입력된 마커에 3D 객체를 투영한 결과 화면이다. 마커의 종류에 따라 서로 다른 객체를 투영하며 본 과제에서 구현한 객체는 3가지이며 인식할 수 있는 마커의 패턴 수는 총 1024개이다. 본 프로젝트에서 구현한 3차원 영상처리 모듈의 처리율은 5frame/sec이다.  

    1. H147FileSinker (Render Filter)

      - DirectShow 프레임워크를 통하여 카메라 영상을 응용 프로그램으로 보내는 렌더 필터를 구현.

      - Renderer와 Sample Grabber의 역할을 동시에 함.

      -

     

                                             [그림6] DirectShow 구조에서 사용하는 Video Capture 과정

    2. 고정 소수 연산

      - IEEE-754 방법에서 소수점 부분을 고정하는 방법을 그림 2와 같이 사용하여 구현.


     

    [그림7] IEEE-754 부동소수점 표현

        

    [그림8] 0.15625 의 IEEE-754식 표현법




    - Hardware

      [HW] Samsung Anycall MITs M4500

    - Software

      [IDE] Visual Studio 2005(MFC, API), MilkShape 3D Modeling Tool
      [LIBRARY] ARtoolkitPlus, OpenGL ES, Direct Show 
      [OS] Windows mobile 5.0




      임베디드 비전 라이브러리와 증강 현실 플랫폼 구축으로 모바일 영상처리 분야의 기반을 마련했다는 데 큰 의미를 두고 있다. 영상 처리에 있어서 실시간성을 요구하고 부가적인 정보를 전달하는 시스템에 사용될 수 있을 것으로 전망한다.


    [추후 개발 사항]


      - 입력되는 영상의 처리 속도 개선

      - 주변환경에 영향을 받지 않는 강건한 영상 인식 알고리즘 개발




     


      위 사진은 UFC에 참가 예선에 참가했을 때 카이스트에서 찍은 사진이다. 비록 예선에서 떨어졌지만 많은 것을 배우고 올 수 있었다. 비록 UFC에서는 좋은 결과를 내기가 어려웠지만 본 프로젝트로 대한민국 소프트웨어 공모전에서 은상을 수상하여 본 프로젝트의 보람을 느낄 수 있었다.

     개발을 하면서 임베디드 환경에서의 소프트웨어 구현은 많은 어려운 점에 직면할 수 있다는 것을 알게 되었다. DirectShow 필터를 제작할 때 기본적으로 제공되는 strmbase.lib 라이브러리는 릴리즈 모드 개발을 지원한다. 따라서 장기간 릴리즈 모드에서 개발하는데 디버깅이 어려운 점이 많았다. 후에 C++ Optimization 옵션을 비 활성화하면 디버깅이 가능하고 각 스택이나 변수의 값도 측정할 수 있다는 것을 알게 되었다. 메모리 할당도 어려운 점이 많았다. 큰 용량의 힙 영역을 할당할 때 크기가 제한적이기 때문에 성공한 값이 반환되더라도 완벽히 할당되었다고 보장할 수는 없었다. 이에 메모리 할당이 성공할 때까지 지연을 주거나 분할해서 할당하는 다양한 시도를 하였다. 또한 DirectShow는 내부적으로 응용 프로그램과 별도의 스레드를 사용하는데 DirectShow 스레드에서 매 영상을 얻게 되고, 이를 응용 프로그램의 스레드로 프레임을 전송해야 텍스처를 실시간으로 생성하는 것이 가능했다. 인터럽트 모드에서 너무 많은 기능을 구현하는 것이 시스템에 큰 부담을 준다는 것을 간과 했다는 것이 큰 시행 착오라는 생각을 한다. 또한 ARToolkitPlus를 분석하는데 있어 많은 어려움이 있었다. 주석이 있는 것도 아니고 관련 문서도 전혀 없는 상황에서 단지 소스코드만을 가지고 적용된 이론을 검증하고 알게 되는 과정이 굉장히 어려웠다. 직접 이론과 관련된 샘플코드들을 작성하고 코드레벨의 비교 분석과 단계별 결과 영상의 차이를 이용하여 해당 알고리즘을 이해하고 본 프로젝트에 적용하였다.






     임베디드 기반의 컴퓨터 비전 라이브러리 개발과제와 협업하여 완성환 과제로서, 증감현실을 한정된 모바일 파워를 통해서도 구현 가능하게 만든 과제이다. 실세계에 디지털 정도를 추가한 본 과제는 모바일이란 환경에서 실시간으로 구현되었다는 점에서 주목할 만하다.


Designed by Tistory.