KR102314782B1 - 3차원 증강현실 표시 방법 - Google Patents

3차원 증강현실 표시 방법 Download PDF

Info

Publication number
KR102314782B1
KR102314782B1 KR1020190134793A KR20190134793A KR102314782B1 KR 102314782 B1 KR102314782 B1 KR 102314782B1 KR 1020190134793 A KR1020190134793 A KR 1020190134793A KR 20190134793 A KR20190134793 A KR 20190134793A KR 102314782 B1 KR102314782 B1 KR 102314782B1
Authority
KR
South Korea
Prior art keywords
target object
camera
image
pose data
data
Prior art date
Application number
KR1020190134793A
Other languages
English (en)
Other versions
KR20210050321A (ko
Inventor
정영호
허동철
김상욱
Original Assignee
네이버랩스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네이버랩스 주식회사 filed Critical 네이버랩스 주식회사
Priority to KR1020190134793A priority Critical patent/KR102314782B1/ko
Priority to PCT/KR2020/014837 priority patent/WO2021086018A1/ko
Publication of KR20210050321A publication Critical patent/KR20210050321A/ko
Application granted granted Critical
Publication of KR102314782B1 publication Critical patent/KR102314782B1/ko
Priority to US17/656,776 priority patent/US20220215581A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/194Transmission of image signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Abstract

다양한 실시예들에 따라서 서버와 통신하는 컴퓨팅 장치에 의해 수행되는 3차원 증강현실을 표시하는 방법이 개시된다. 3차원 증강현실 표시 방법은 제1 시점에 카메라로 대상 물체를 촬영하여 생성되는 제1 이미지를 상기 서버에 전송하고, 이때의 상기 카메라의 제1 뷰(view) 데이터를 저장하는 단계, 상기 서버로부터 상기 대상 물체의 제1 상대 포즈 데이터를 수신하는 단계, 상기 카메라의 제1 뷰 데이터와 상기 대상 물체의 제1 상대 포즈 데이터에 기초하여, 상기 대상 물체의 포즈 데이터를 추정하는 단계, 제2 시점에 상기 카메라로 상기 대상 물체를 촬영하여 제2 이미지를 생성하고, 이때의 상기 카메라의 제2 뷰 데이터를 생성하는 단계, 상기 대상 물체의 포즈 데이터 및 상기 카메라의 제2 뷰 데이터에 기초하여 상기 대상 물체의 제2 상대 포즈 데이터를 추정하는 단계, 상기 대상 물체의 상기 제2 상대 포즈 데이터에 기초하여 가상 물체의 3차원 이미지를 렌더링하는 단계, 및 상기 제2 이미지 상에 상기 가상 물체의 3차원 이미지를 증강하여 증강 이미지를 생성하는 단계를 포함한다.

Description

3차원 증강현실 표시 방법{apparatus and method of displaying three dimensional augmented reality}
본 개시는 3차원 증강현실 표시 방법 및 프로그램에 관한 것으로서, 더욱 자세하게는 대상 물체 상에 이와 동일한 포즈를 갖는 3차원 가상 물체를 증강한 증강 이미지를 생성하여 표시하는 장치, 방법 및 프로그램에 관한 것이다.
증강현실(augmented reality)은 가상현실(virtual reality)의 한 분야로 실제 환경에 가상 물체를 합성하여 원래의 환경에 존재하는 물체처럼 보이도록 하는 컴퓨터 그래픽 기법이다.
증강현실은 사용자가 현재 보고 있는 실제 환경에 가상 물체를 부가해주기 때문에, 사용자가 실제 환경과 가상 물체를 함께 볼 수 있다. 일반적으로 가상 물체는 실제 환경과 이질감을 갖기 때문에, 정보를 제공하는 용도로 사용되거나, 사진 위에 붙여놓은 스티커와 같이 재미를 제공하는 용도로 활용된다.
사용자는 원근감을 이용하여 2차원 표시 장치에 표시되는 이미지에 대해서도 공간감을 가질 수 있다. 하지만 증강현실에서 부가되는 가상 물체는 2차원으로 표시되어 이질감이 느껴질 수 밖에 없다.
이를 극복하기 위해 3차원 가상 물체를 증강현실에 부가하고자 하는 시도가 있다. 하지만, 실제 환경에서는 사용자의 시선 변화에 따라 3차원 물체가 사용자에게 다르게 보이지만, 증강현실에서 부가되는 3차원 가상 물체를 사용자의 시선 변화에 즉각적으로 반응하여 자연스럽게 변하도록 표시하기는 어렵다. 사용자는 여전히 3차원 가상 물체에 대하여 이질감을 느끼게 된다.
본 개시가 해결하고자 하는 과제는 3차원 가상 물체가 실제 환경과 더욱 자연스럽게 어울릴 수 있도록 실제 환경 내의 대상 물체 상에 이와 동일한 포즈를 갖는 3차원 가상 물체를 증강하여 표시하는 방법 및 프로그램을 제공하는 것이다.
상술한 기술적 과제들을 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면에 따르면, 서버와 통신하는 컴퓨팅 장치에 의해 수행되는 3차원 증강현실 표시 방법은 제1 시점에 카메라로 대상 물체를 촬영하여 생성되는 제1 이미지를 상기 서버에 전송하고, 이때의 상기 카메라의 제1 뷰(view) 데이터를 저장하는 단계, 상기 서버로부터 상기 대상 물체의 제1 상대 포즈 데이터를 수신하는 단계, 상기 카메라의 제1 뷰 데이터와 상기 대상 물체의 제1 상대 포즈 데이터에 기초하여, 상기 대상 물체의 포즈 데이터를 추정하는 단계, 제2 시점에 상기 카메라로 상기 대상 물체를 촬영하여 제2 이미지를 생성하고, 이때의 상기 카메라의 제2 뷰 데이터를 생성하는 단계, 상기 대상 물체의 포즈 데이터 및 상기 카메라의 제2 뷰 데이터에 기초하여 상기 대상 물체의 제2 상대 포즈 데이터를 추정하는 단계, 상기 대상 물체의 상기 제2 상대 포즈 데이터에 기초하여 가상 물체의 3차원 이미지를 렌더링하는 단계, 및 상기 제2 이미지 상에 상기 가상 물체의 3차원 이미지를 증강하여 증강 이미지를 생성하는 단계를 포함한다.
본 개시의 제2 측면에 따르면, 컴퓨팅 장치를 이용하여 3차원 증강현실 표시 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램이 제공된다.
본 개시의 다양한 실시예들에 따르면, 실제 환경 내의 대상 물체 상에 이와 동일한 포즈를 갖는 3차원 가상 물체를 증강하여 사용자에게 표시함으로써, 사용자는 증강현실에 의해 부가되는 3차원 가상 물체에 대한 이질감이 감소될 수 있다.
도 1은 일 실시예에 따른 3차원 증강현실 표시 시스템의 구성을 도시한다.
도 2는 일 실시예에 따른 단말기와 서버의 내부 구성을 도시한다.
도 3은 일 실시예에 따른 단말기 프로세서의 내부 구성을 도시한다.
도 4는 일 실시예에 따른 3차원 증강현실 표시 방법을 설명하기 위한 순서도이다.
도 5는 카메라가 제1 내지 제3 시간(t1-t3)에 이동 및 회전하면서 대상 물체(Object)를 촬영하는 것을 도시한다.
도 6은 카메라에 의해 제1 내지 제3 시간(t1-t3)에 각각 촬영된 대상 물체(Ob1-Ob3)의 제1 내지 제3 이미지들(Image1-Image3)을 도시한다.
도 7은 일 실시예에 따른 3차원 증강현실 표시 방법에 따라 생성되는 가상 물체(VOb1-Vob3)의 가상 이미지들(Aug1-Aug3)을 도시한다.
아래에서는 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 다양한 실시예들을 상세히 설명한다. 그러나 본 개시의 기술적 사상은 다양한 형태로 변형되어 구현될 수 있으므로 본 명세서에서 설명하는 실시예들로 제한되지 않는다. 본 명세서에 개시된 실시예들을 설명함에 있어서 관련된 공지 기술을 구체적으로 설명하는 것이 본 개시의 기술적 사상의 요지를 흐릴 수 있다고 판단되는 경우 그 공지 기술에 대한 구체적인 설명을 생략한다. 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
본 명세서에서 어떤 요소가 다른 요소와 "연결"되어 있다고 기술될 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라 그 중간에 다른 요소를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 어떤 요소가 다른 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 요소 외에 또 다른 요소를 배제하는 것이 아니라 또 다른 요소를 더 포함할 수 있는 것을 의미한다.
일부 실시예들은 기능적인 블록 구성들 및 다양한 처리 단계들로 설명될 수 있다. 이러한 기능 블록들의 일부 또는 전부는 특정 기능을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 본 개시의 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 본 개시의 기능 블록이 수행하는 기능은 복수의 기능 블록에 의해 수행되거나, 본 개시에서 복수의 기능 블록이 수행하는 기능들은 하나의 기능 블록에 의해 수행될 수도 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.
도 1은 일 실시예에 따른 3차원 증강현실 표시 시스템의 구성을 도시한다.
도 1을 참조하면, 3차원 증강현실 표시 시스템은 단말기(101-104), 서버(200), 및 이들을 연결하는 네트워크(Net)를 포함한다.
일 실시예에 따른 3차원 증강현실 표시 시스템은 대상 물체를 촬영한 이미지 상에 대상 물체와 동일한 포즈를 갖도록 렌더링된 가상 물체의 3차원 이미지를 덧붙임으로써 증강이미지를 생성하고 표시할 수 있다.
본 명세서에서, 대상 물체는 카메라로 촬영하는 물체이고, 가상 물체는 카메라로 촬영한 이미지의 대상 물체 상에 덧붙여질 3차원 이미지의 대상이다. 포즈(pose)는 물체의 위치(position)와 배향(orientation)를 포함하는 개념이다. 대상 물체의 포즈는 대상 물체의 위치와 배향을 월드 좌표계 상에 표현한 것으로 이해할 수 있고, 대상 물체의 상대 포즈는 대상 물체의 위치와 배향을 카메라 좌표계 상에 표현한 것으로 이해할 수 있다. 카메라의 포즈는 카메라의 위치와 배향을 월드 좌표계 상에서 표현한 것으로 이해할 수 있다.
월드 좌표계는 지구 중심 좌표계와 같은 절대 좌표계로 이해될 수 있다. 카메라 좌표계는 카메라의 포즈에 의해 정의되는 좌표계로서, 카메라는 카메라 좌표계의 원점에 위치하게 되고, 카메라가 지향하는 방향에 따라 카메라 좌표계의 x, y, z 축이 정의될 수 있다. 본 발명의 용이한 이해를 위해, 오브젝트 좌표계가 사용될 수 있다. 오브젝트 좌표계는 대상 물체의 포즈에 의해 정의되는 좌표계로서, 대상 물체는 오브젝트 좌표계의 원점에 위치하게 되고, 대상 물체의 놓여진 방향 또는 대상 물체에 대해 사용자가 정의한 방향에 의해 오브젝트 좌표계의 x, y, z 축이 정의될 수 있다.
단말기(101-104)는 컴퓨팅 기능을 수행하는 사용자 단말기로서, 단말기(도 2의 100)으로 지칭할 수 있다. 단말기(100)는 예컨대 스마트폰(101), 태블릿 PC(102), 노트북 컴퓨터(103), 및 개인용 컴퓨터(104) 등을 포함할 수 있다. 일 예에 따르면, 단말기(100)는 스마트폰(101), 태블릿 PC(102), 노트북 컴퓨터(103) 등과 같이 카메라, 무선 통신 모듈, 및 입출력 장치를 포함할 수 있다. 다른 예에 따르면, 단말기(100)는 개인용 컴퓨터(104)와 같이 카메라를 직접 포함하지 않고, 카메라(미 도시)와 통신으로 연결될 수 있다. 개인용 컴퓨터(104)는 카메라가 촬영한 이미지 및 카메라의 정보를 네트워크(Net)를 통해 수신할 수 있다. 또 다른 예에 따르면, 단말기(100)는 카메라를 포함하는 개인용 컴퓨터(104)일 수 있다.
아래에서는 단말기(100)가 예컨대 스마트폰(101)과 같이 카메라를 직접 포함하는 것으로 가정하여 설명한다. 하지만, 본 발명의 다른 실시예에 따르면, 단말기(100)는 직접 카메라를 포함하지 않고 카메라와 통신을 통해 실시간으로 데이터를 주고 받을 수 있다.
단말기(100)는 유선 통신 및/또는 무선 통신을 통해 네트워크(Net)에 접속하여 서버(200)와 통신할 수 있다. 단말기(100)는 카메라를 통해 촬영한 대상 물체의 이미지를 서버(200)에 전송하고, 서버(200)로부터 전송한 이미지 내의 대상 물체의 상대 포즈 데이터를 수신할 수 있다.
네트워크(Net)는 단말기(100)와 서버(200)를 통신 가능하게 연결할 수 있다. 예를 들어, 네트워크(Net)는 단말기(100)가 서버(200)에 접속하여 이미지 데이터를 송신하고 상대 포즈 데이터를 수신할 수 있는 접속 경로를 제공한다. 네트워크(Net)는 단말기(100)가 카메라로부터 이미지 데이터 및 카메라의 뷰 데이터를 수신하는 경로를 제공할 수 있다.
네트워크(Net)는 유선 네트워크 및/또는 무선 네트워크를 포함할 수 있다. 예를 들면, 네트워크(Net)는 근거리 네트워크(LAN: Local Area Network), 도시권 네트워크(MAN: Metropolitan Area Network), 광역 네트워크(WAN: Wide Area Network) 등과 같은 다양한 네트워크를 포함할 수 있다. 네트워크(Net)는 월드 와이드 웹(WWW: World Wide Web)을 포함할 수도 있다. 그러나, 본 실시예에 따른 네트워크(Net)는 앞에서 열거된 네트워크에 국한되지 않고, 공지의 이동 통신 네트워크, 공지의 무선 데이터 네트워크, 공지의 전화 네트워크, 공지의 유/무선 텔레비전 네트워크 중 적어도 하나를 포함할 수 있다. 네트워크(Net)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있다.
서버(200)는 네트워크(Net)를 통해 단말기(100)와 통신하며 명령, 코드, 파일, 콘텐트, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 서버(200)는 단말기(100)로부터 대상 물체를 촬영한 이미지를 수신하여, 수신된 이미지로부터 사전에 트레이닝된 학습 모델을 이용하여 대상 물체의 종류, 위치, 및 포즈를 추출할 수 있다. 서버(200)는 네트워크(Net)를 통해 추출된 대상 물체의 상대 포즈 데이터, 위치 데이터, 및 종류 데이터 중 적어도 하나를 단말기(100)에 제공할 수 있다.
단말기(100)는 대상 물체의 상대 포즈 데이터를 기초로 대상 물체와 동일한 포즈를 갖는 가상 물체의 3차원 이미지를 렌더링할 수 있다. 단말기(100)는 가상 물체의 3차원 렌더링을 수행할 수 있는 렌더링 모델을 포함할 수 있다. 렌더링 모델은 복수의 가상 물체들을 렌더링하기 위한 복수의 기초 데이터를 포함할 수 있다. 사용자는 단말기(100)를 통해 복수의 가상 물체들 중에서 증강 이미지에 증강할 가상 물체를 선택할 수 있다.
서버(200)는 단말기(100)에 렌더링 모델을 설치하기 위한 설치 파일을 저장할 수 있으며, 단말기(100)는 서버(200)로부터 설치 파일을 수신하고, 설치 파일이 실행됨으로써 렌더링 모델이 단말기(100)에 설치될 수 있다. 단말기(100)는 다른 방법을 통해 렌더링 모델이 설치될 수도 있다.
단말기(100)는 서버(200)의 학습 모델을 트레이닝하기 위한 대상 물체의 이미지 데이터 및 대상 물체의 상대 포즈 데이터를 생성하여, 서버(200)에 제공할 수 있다. 서버(200)는 단말기(100)로부터 수신되는 대상 물체의 이미지 데이터와 상대 포즈 데이터를 이용하여 학습 모델을 트레이닝 시킬 수 있다. 단말기(100)는 하나의 대상 물체에 대하여 수십 내지 수백 개 정도의 이미지 데이터 및 이때의 상대 포즈 데이터를 생성하여 서버(200)에 제공할 수 있다.
도 2는 일 실시예에 따른 단말기와 서버의 내부 구성을 도시한다.
도 2를 참조하면, 3차원 증강현실 표시 시스템은 예컨대 네트워크(Net)에 접속하는 단말기(100)와 서버(200)를 포함할 수 있다.
단말기(100)는 프로세서(110), 메모리(120), 통신 모듈(130), 버스(140), 입출력 장치(150), 카메라(160), 및 센서(170)를 포함할 수 있다. 다른 실시예에 따르면, 단말기(100)는 센서(170)를 포함하지 않을 수도 있다.
프로세서(110)는 기본적인 산술, 로직 및 입출력 연산을 수행하고, 예컨대 메모리(120)에 저장된 프로그램 코드를 실행할 수 있다.
메모리(120)는 단말기(100)의 프로세서(110)가 판독할 수 있는 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 메모리(120)에는 운영체제와 적어도 하나의 프로그램 또는 어플리케이션 코드가 저장될 수 있다. 메모리(120)에는 다양한 실시예들에 따라서 3차원 증강현실을 표시할 수 있는 프로그램 코드가 저장될 수 있다.
통신 모듈(130)은 네트워크(Net)에 접속하여 서버(200)와 데이터를 주고 받을 수 있다. 예컨대, 통신 모듈(130)은 단말기(100)의 프로세서(110)가 메모리(120)에 저장된 프로그램 코드에 따라 서버(200)에 대상 물체가 촬영된 이미지 데이터를 송신하고 서버(200)로부터 대상 물체의 상대 포즈 데이터를 수신할 수 있다.
버스(140)는 단말기(100)의 프로세서(110), 메모리(120), 통신 모듈(130), 입출력 장치(150), 카메라(160), 및 센서(170)들 중 적어도 일부들 간에 데이터를 주고 받는 경로를 제공할 수 있다.
입출력 장치(150)는 사용자로부터의 입력을 수신하여 프로세서(110)에 전달하고 프로세서(110)로부터 수신된 정보를 사용자에게 출력할 수 있다. 예컨대, 입출력 장치(150)의 입력 장치는 예컨대 카메라(160)를 포함할 수 있다. 그 외에도 입출력 장치(150)는 입력 장치로서, 터치 스크린, 마이크, 버튼, 키보드, 마우스 등을 포함할 수 있다. 입출력 장치(150)는 출력 장치로서, 디스플레이와 같은 영상 표시 장치, 스피커나 이어폰과 같은 음성 출력 장치 등을 포함할 수 있다.
사용자는 입력 장치(150)를 통해 증강 현실로 표시할 가상 물체를 선택할 수 있다. 사용자는 입력 장치(150)를 통해 이미지 내의 대상 물체들 중에서 가상 물체의 3차원 이미지를 증강할 대상 물체를 선택할 수도 있다.
단말기(100)는 본 발명의 실시예들에 따라 생성되는 증강 이미지를 표시할 디스플레이 장치를 포함할 수 있다. 다른 예에 따르면, 네트워크(Net)를 통해 연결되는 별도의 표시 장치에 증강 이미지 데이터를 전송하고, 이 표시 장치가 증강 이미지를 표시할 수도 있다.
카메라(160)는 대상 물체를 촬영하여 대상 물체의 이미지를 생성할 수 있다. 카메라(160)는 대상 물체의 이미지를 버스(140)를 통해 프로세서(110)에 제공할 수 있으며, 프로세서(110)는 통신 모듈(130)를 통해 서버(140)에 대상 물체의 이미지를 전송할 수 있다.
센서(170)는 관성 센서를 포함할 수 있으며, 단말기(100) 또는 카메라(160)의 방향, 속도, 가속도 등의 정보를 감지할 수 있다. 예를 들면, 센서(170)는 3축 가속도 센서 및 3축 자이로 센서를 포함할 수 있다. 단말기(100)는 센서(170)의 센서값을 이용하여 단말기(100) 또는 카메라(160)의 이동 및 회전을 감지할 수 있다.
단말기(100)는 도 2에 도시된 구성요소들 외에 다른 구성요소들을 더 포함할 수 있다. 예를 들면, 단말기(100)는 위치 감지 모듈을 포함할 수 있다. 위치 감지 모듈은 단말기(100)의 현재 위치를 전자적으로 감지할 수 있는 기능 블록일 수 있다. 단말기(100)는 대상 물체의 이미지 외에 단말기의 현재 위치를 서버(200)에 제공함으로써, 서버(200)가 전송받은 이미지에서 대상 물체에 관한 데이터를 추출하기 위해 검색하는 범위를 한정시킬 수도 있다. 예를 들면, 단말기(100)가 의류점에 위치하고 있다는 정보를 서버(200)에 제공한다면, 서버(200)는 대상 물체가 의류에 관한 것으로 판단하여 더욱 정확하게 대상 물체의 종류, 위치 및 상대 포즈 데이터를 추출할 수 있다.
서버(200)는 프로세서(210), 메모리(220), 통신 모듈(230), 버스(240) 및 입출력 인터페이스(250)를 포함할 수 있다.
프로세서(210)는 기본적인 산술, 로직 및 입출력 연산을 수행하고, 예컨대 메모리(220)에 저장된 프로그램 코드, 예컨대, 학습 모델을 실행할 수 있다.
메모리(220)는 서버(200)의 프로세서(210)가 판독할 수 있는 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 메모리(220)에는 운영체제와 적어도 하나의 프로그램 또는 어플리케이션 코드가 저장될 수 있다. 메모리(220)에는 학습 모델을 이용하여 대상 물체의 이미지로부터 대상 물체의 종류, 위치 및 상대 포즈 데이터를 생성하는 방법을 수행하기 위한 프로그램 코드가 저장될 수 있다. 또한, 메모리(220)에는 단말기(100)로부터 수신되는 대상 물체의 이미지 데이터와 상대 포즈 데이터를 이용하여 학습 모델을 트레이닝하기 위한 프로그램 코드가 저장되 될 수 있다.
통신 모듈(230)은 네트워크(Net)에 무선으로 접속하여 단말기(100)로부터 데이터를 수신하고 단말기(100)에 데이터를 송신할 수 있다. 예컨대, 통신 모듈(230)은 단말기(100)로부터 대상 물체의 이미지를 수신하고, 서버(200)의 프로세서(110)가 추출한 대상 물체의 상대 포즈 데이터와 같은 데이터를 단말기(100)로 송신할 수 있다.
버스(240)는 프로세서(210), 메모리(220), 통신 모듈(230) 및 입출력 인터페이스(250) 중 적어도 일부들 간에 데이터를 주고 받는 경로를 제공할 수 있다. 입출력 인터페이스(540)는 입출력 장치와의 인터페이스 수단을 제공할 수 있다.
도 3은 일 실시예에 따른 단말기 프로세서의 내부 구성을 도시한다. 도 4는 일 실시예에 따른 3차원 증강현실 표시 방법을 설명하기 위한 순서도이다. 도 5 내지 7은 일 실시예에 따른 3차원 증강현실 표시 방법을 설명하기 위한 도면이다. 도 5는 카메라(160)가 제1 내지 제3 시간(t1-t3)에 이동 및 회전하면서 대상 물체(Object)를 촬영하는 것을 도시한다. 도 6은 카메라(160)에 의해 제1 내지 제3 시간(t1-t3)에 각각 촬영된 대상 물체(Ob1-Ob3)의 제1 내지 제3 이미지들(Image1-Image3)을 도시한다. 도 7은 일 실시예에 따른 3차원 증강현실 표시 방법에 따라 생성되는 가상 물체(VOb1-Vob3)의 가상 이미지들(Aug1-Aug3)을 도시한다.
도 3 내지 도 7을 참조하면, 단말기(100)의 프로세서(110)는 이미지 생성부(111), 뷰 데이터 관리부(112), 대상 물체의 포즈 데이터 관리부(113), 대상 물체의 상대 포즈 데이터 추정부(114), 가상 물체의 3차원 이미지 렌더링부(115), 및 증강 이미지 생성부(116)를 포함한다. 프로세서(110)는 대상 물체의 위치 추적부(117) 또는 카메라의 포즈 데이터 추정부(118) 중 적어도 하나를 더 포함할 수 있다.
이미지 생성부(111)는 카메라(160)를 이용하여 대상 물체를 촬영하여 이미지를 생성할 수 있다. 카메라(160)는 단말기(100)에 포함될 수 있다. 그러나, 이는 예시적이고 카메라(160)는 단말기(100)와 실시간으로 데이터를 주고받을 수 있도록 통신 가능하게 연결될 수도 있다. 아래에서는 단말기(100)가 카메라(160)를 포함하는 것으로 가정하여 설명하지만, 본 발명은 이러한 예에 한정되지 않는다.
도 5 및 도 6을 참조하면, 제1 시점(t1)에 대상 물체(Object)를 촬영한 이미지는 제1 이미지(Image1), 제2 시점(t2)에 대상 물체(Object)를 촬영한 이미지는 제2 이미지(Image2), 제3 시점(t3)에 대상 물체(Object)를 촬영한 이미지는 제3 이미지(Image3)로 지칭한다.
이미지 생성부(110)에 의해 생성된 이미지들 중 적어도 하나는 통신 모듈(130)을 통해 서버(200)에 전송될 수 있다. 예를 들면, 제1 내지 제3 이미지(Image1-Image3)가 서버(200)에 전송될 수 있다. 다른 예에 따르면, 제1 내지 제3 이미지(Image1-Image3) 중 일부가 서버(200)에 전송될 수 있다. 본 명세서에서는 제1 이미지(Image1)와 제3 이미지(Image3)가 서버(200)에 전송되고, 제2 이미지(Image2)는 서버(200)에 전송하지 않는 것으로 가정한다.
단말기(100)가 서버(200)에 이미지를 전송한 후 서버(200)로부터 상대 포즈 데이터를 수신할 때까지 시간이 필요하다. 이 시간에도 카메라(160) 또는 카메라(160)를 포함하는 단말기(100)는 움직일 수 있으며, 단말기(100)의 움직임에 따라 대상 물체의 상대 포즈 데이터는 변하게 된다. 그러면, 프로세서(110)에 의해 렌더링되는 가상 물체의 3차원 이미지는 대상 물체의 이전 상대 포즈 데이터를 기초로 생성되므로, 증강 이미지에 이질감이 생긴다.
본 발명에 따르면, 단말기(100)는 서버(200)로부터 상대 포즈 데이터를 수신하기 전에도, 서버(200)로부터 이전에 수신한 상대 포즈 데이터를 기초로 새로운 이미지 내의 대상 물체의 상대 포즈 데이터를 추정하고, 이러한대상 물체의 상대 포즈 데이터를 기초로 가상 물체의 3차원 이미지를 렌더링하기 때문에, 증강 이미지의 이질감은 현격히 감소될 수 있다.
제2 시점(t2)은 제1 시점(t1)의 이후이다. 제3 시점(t3)은 제2 시점(t2)의 이후일 수 있다. 하지만, 이는 예시적일 뿐이며, 제3 시점(t3)은 제1 시점(t1)과 제2 시점(t2) 사이일 수도 있다.
제1 내지 제3 시점(t1, t,2 t3) 사이에 카메라(160) 또는 카메라(160)를 포함하는 단말기(100)는 움직일 수 있다. 예를 들면, 제1 내지 제3 시점(t1, t,2 t3) 사이에 카메라(160) 또는 카메라(160)를 포함하는 단말기(100)는 제1 방향으로 제1 크기의 병진 운동, 또는 제2 방향으로 제2 크기의 회전 운동 중 적어도 하나를 할 수 있다.
뷰 데이터 관리부(112)는 카메라(160)가 대상 물체를 촬영한 시점의 카메라(160)의 뷰 데이터를 저장하고 관리할수 있다. 뷰 데이터 관리부(112)는 제1 시점(t1)에 제1 뷰 데이터를 저장하고, 제2 시점(t2)에 제2 뷰 데이터를 저장하고, 제3 시점(t3)에 제3 뷰 데이터를 저장할 수 있다. 뷰 데이터 관리부(112)는 미리 설정된 시간 이전에 저장한 뷰 데이터를 삭제함으로써 뷰 데이터들을 관리할 수 있다.
카메라(160)의 뷰 데이터는 카메라(160)의 포즈와 직접 관련되는 데이터이다. 카메라(160)의 뷰 데이터는 카메라(160)의 포즈에 의해 정의되는 카메라 좌표계 상에서 월드, 즉, 고정된 피사체가 어떻게 이동 및 회전하였는지를 나타내는 뷰 행렬(view matrix)일 수 있다. 다르게 말하자면, 카메라(160)의 뷰 데이터는 월드 좌표계 상의 좌표값을 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들을 의미할 수 있다.
카메라(160)의 움직임에 따라 카메라(160)의 포즈와 이에 의해 정의되는 카메라 좌표계가 변하게 된다. 카메라(160)의 뷰 데이터는 카메라(160)의 움직임에 따라 달라지게 된다.
카메라(160)의 뷰 데이터는 카메라(160)의 포즈 데이터와 역(inverse) 함수의 관계를 가질 수 있다. 카메라(160)의 포즈 데이터는 월드 좌표계 상에서 카메라의 포즈를 나타내는 데이터일 수 있다. 다르게 말하면, 카메라(160)의 포즈 데이터는 카메라 좌표계 상의 좌표값을 월드 좌표계 상으로 변환하는 행렬 또는 이의 원소값들을 의미할 수 있다.
프로세서(110)는 카메라(160)의 뷰 데이터를 기초로 카메라(160)의 포즈 데이터를 산출하거나, 카메라(160)의 포즈 데이터를 기초로 카메라(160)의 뷰 데이터를 산출할 수 있다.
본 명세서에서 카메라(160)의 뷰 데이터와 포즈 데이터는 전술한 의미를 갖는 것으로 이해될 수 있지만, 다른 실시예에 따르면, 포즈 데이터가 뷰 행렬이고, 뷰 데이터가 포즈 데이터의 역 행렬일 수도 있다.
뷰 데이터 관리부(112)는 카메라(160)의 움직임을 감지하고, 카메라(160)의 움직임에 따라 뷰 데이터를 변경 또는 새로 생성할 수 있다.
일 실시예에 뷰 데이터 관리부(112)는 카메라(160)가 촬영한 이미지들의 특징점들이 어떻게 이동하였는지를 기초로 카메라(160)의 움직임을 감지할 수 있다. 예를 들면, 뷰 데이터 관리부(112)는 제1 이미지(Image1) 내의 특징점들과 제2 이미지(Image2) 내의 특징점들이 서로 어떻게 변화하였는지를 감지하고, 이를 기초로 카메라(160)의 병진 운동의 방향 및 크기, 및 카메라(160)의 회전 운동의 방향 및 크기를 추정할 수 있다. 일 예에 따르면, 뷰 데이터 관리부(112)는 비쥬얼 오도메트리(Visual Odometry) 기술을 이용하여 카메라(160)의 뷰 데이터를 생성 및 관리할 수 있다.
다른 실시예에 따르면, 뷰 데이터 관리부(112)는 단말기(100) 내의 센서들(170)의 센서 값들을 기초로 카메라(160)의 뷰 데이터를 생성 및 관리할 수 있다. 센서들(170)은 관성 센서들일 수 있으며, 단말기(100)가 어디로 얼만큼 이동 및 회전하였는지에 대응하는 센서 값들을 출력할 수 있다.
또 다른 실시예에 따르면, 뷰 데이터 관리부(112)는 카메라(160)가 촬영한 이미지들 내의 특징점들의 변화 및 센서들(170)의 센서 값들을 기초로 카메라(160)의 뷰 데이터를 생성 및 관리할 수 있다. 예를 들면, 뷰 데이터 관리부(112)는 비쥬얼 이너셜 오도메트리(Visual Inertial Odometry) 기술을 이용하여 카메라(160)의 뷰 뎅터를 생성 및 관리할 수 있다.
대상 물체의 포즈 데이터 관리부(113)는 서버(200)로부터 대상 물체(Object)의 상대 포즈 데이터를 수신하고, 수신된 대상 물체의 상대 포즈 데이터와 이와 동일한 시점의 카메라의 뷰 데이터에 기초하여 대상 물체의 포즈 데이터를 추정하고, 저장하고, 관리할 수 있다.
예를 들면, 서버(200)로부터 제1 시점(t1)의 대상 물체(Object)의 제1 상대 포즈 데이터와 제1 시점(t1)의 카메라(160)의 제1 뷰 데이터를 기초로, 대상 물체(Object)의 포즈 데이터를 산출하고 저장할 수 있다. 이후, 서버(200)로부터 제3 시점(t3)의 대상 물체(Object)의 제3 상대 포즈 데이터와 제3 시점(t3)의 카메라(160)의 제3 뷰 데이터를 기초로, 대상 물체(Object)의 포즈 데이터를 산출할 수 있다.
제1 시점(t1)에 대해 산출된 대상 물체(Object)의 포즈 데이터(이하, '제1 포즈 데이터'라 함)와 제3 시점(t3)에 대해 산출된 대상 물체(Object)의 포즈 데이터(이하, '제2 포즈 데이터'라 함)는 이론적으로 동일한 값을 가져야 한다. 그러나, 서버(200)의 학습 모델의 부정확성, 또는 카메라(160)의 뷰 데이터의 부정확성 등의 이유로 제1 포즈 데이터와 제2 포즈 데이터가 서로 허용할 수 없는 오차를 가질 수도 있다.
대상 물체의 포즈 데이터 관리부(113)는 제1 포즈 데이터와 제2 포즈 데이터 간의 오차가 기준치를 초과하는 경우, 제2 포즈 데이터를 무시할 수 있다. 반대로, 제1 포즈 데이터와 제2 포즈 데이터 간의 오차가 기준치 내인 경우, 대상 물체의 포즈 데이터 관리부(113)는 제1 포즈 데이터와 제2 포즈 데이터를 기초로 대상 물체의 상대 포즈 데이터 추정부(114)에서 사용하는 포즈 데이터를 갱신할 수 있다. 예를 들면, 대상 물체의 포즈 데이터 관리부(113)는 제1 포즈 데이터와 제2 포즈 데이터에 대하여 평균 또는 가중 평균을 이용하여 대상 물체의 포즈 데이터를 갱신할 수 있다.
대상 물체의 상대 포즈 데이터 추정부(114)는 대상 물체의 포즈 데이터 관리부(113)에서 관리하는 대상 물체의 포즈 데이터와 카메라(160)의 뷰 데이터에 기초하여 대상 물체(Object)의 상대 포즈 데이터를 추정할 수 있다.
다른 예에 따르면, 대상 물체의 상대 포즈 데이터 추정부(114)는 서버(200)로부터 대상 물체(Object)의 상대 포즈 데이터를 수신하고, 이를 대상 물체의 포즈 데이터 관리부(113)로 제공할 수도 있다.
가상 물체의 3차원 이미지 렌더링부(115)는 대상 물체(Object)의 상대 포즈 데이터를 기초로 가상 물체의 3차원 이미지를 렌더링할 수 있다. 가상 물체는 단말기(100)의 사용자에 의해 미리 선택될 수 있다.
증강 이미지 생성부(116)는 가상 물체의 3차원 이미지 렌더링부(115)에서 생성된 가상 물체의 3차원 이미지를 이미지 생성부(111)에서 생성한 이미지의 대상 물체의 위치에 덧붙임으로써 증강 이미지를 생성할 수 있다.
대상 물체의 위치 추적부(117)는 제1 내지 제3 시점들(t1-t3)에서 이미지 생성부(111)에서 생성한 이미지들 상의 대상 물체의 위치를 추적할 수 있다. 예를 들면, 제1 시점(t1)의 제1 이미지(Image1)를 수신한 서버(200)는 제1 이미지(Imgae1) 내의 대상 물체(Object)의 종류 및 위치를 추정하여, 단말기(100)에 제공할 수 있다.
단말기(100)는 제1 이미지(Image1) 내의 대상 물체(Object)의 위치를 기초로 대상 물체(Object)를 추적함으로써 제2 이미지(Image2) 내의 대상 물체(Object)의 위치를 결정할 수 있다. 대상 물체의 위치 추적부(117)는 제1 이미지(Image1)와 제2 이미지(Image2) 내에 특징점들을 추출하고, 이들을 서로 비교함으로써, 제1 이미지(Image1) 내의 대상 물체가 제2 이미지(Image2)에서 어디에 위치하는지를 추적할 수 있다.
카메라의 포즈 데이터 추정부(118)는 카메라(160)의 뷰 데이터에 기초하여 카메라(160)의 포즈 데이터를 추정할 수 있다. 카메라의 포즈 데이터 추정부(118)는 카메라(160)의 뷰 데이터의 역 행렬을 산출함으로써 카메라(160)의 포즈 데이터를 산출할 수 있다.
아래에서는 용이한 이해를 위하여, 대상 물체의 포즈 데이터를 'Mobj wc'로 표현한다. 대상 물체의 포즈 데이터(Mobj wc)는 오브젝트 좌표계 상의 좌표값을 월드 좌표계 상으로 변환하는 행렬 또는 이의 원소값들일 수 있다. 오브젝트 좌표계는 오브젝트(Object)에 의해 정의되는 좌표계로서, 오브젝트(Object)는 오브젝트 좌표계의 원점에 위치할 수 있으며, 오브젝트(Object)에 대해 사용자가 지정한 방향을 기초로 오브젝트 좌표계의 x, y, z축이 결정될 수 있다.
카메라(160)의 뷰 데이터를 'Mv'로 표현한다. 제1 뷰 데이터는 'Mv_1'로 표현하고, 제2 뷰 데이터는 'Mv_2'로 표현하고, 제3 뷰 데이터는 'Mv_3'로 표현한다. 카메라(160)의 뷰 데이터(Mv)는 카메라(160)의 포즈에 의해 정의되는 카메라 좌표계 상에서 월드, 즉, 고정된 피사체가 어떻게 이동 및 회전하였는지를 나타내는 뷰 행렬(view matrix)일 수 있다.
대상 물체의 상대 포즈 데이터를 'Mobj ec'로 표현한다. 상대 포즈 데이터(Mobj ec)는 오브젝트 좌표계 상의 좌표값을 카메라(160)의 포즈에 의해 정의되는 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들일 수 있다.
제1 상대 포즈 데이터는 'Mobj ec_1'로 표현하고, 제2 상대 포즈 데이터는 'Mobj ec_1'로 표현하고, 제3 상대 포즈 데이터는 'Mobj ec_1'로 표현한다.
카메라(160)의 포즈 데이터를 'Mec wc'로 표현한다. 카메라(160)의 포즈 데이터(Mec wc)는 월드 좌표계 상에서 카메라가 어떻게 이동 및 회전했는지를 나타내기 위한 것으로서, 월드 좌표계 상의 좌표값을 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들일 수 있다. 카메라(160)의 포즈 데이터는 'Mv -1'로 표현될 수도 있다.
카메라(160)의 제1 포즈 데이터는 'Mec_1 wc'로 표현하고, 카메라(160)의 제2 포즈 데이터는 'Mec_2 wc'로 표현하고, 카메라(160)의 제3 포즈 데이터는 'Mec_3 wc'로 표현한다.
대상 물체의 포즈 데이터(Mobj wc), 대상 물체의 상대 포즈 데이터(Mobj ec), 및 카메라(160)의 뷰 데이터(Mv)와 포즈 데이터(Mec wc)는 4x4 포즈 행렬(pose matrix)의 형태를 가질 수 있다. 4x4 포즈 행렬은 3x3 회전 행렬(rotation matrix)과 3x1 이동 행렬(translation matrix)을 포함할 수 있다. 예를 들면, 4x4 포즈 행렬은 [ (3x3 회전 행렬), (3x1 이동 행렬); (0 0 0), 1]과 같이 정의될 수 있다.
도 4 내지 도 7을 참조하여, 일 실시예에 따른 3차원 증강현실 표시 방법을 설명한다.
단계(S11)에서, 프로세서(110)는 제1 시점(t1)에 카메라(160)로 대상 물체(Object)를 촬영하여 제1 이미지(도 6의 Image1)를 생성하여, 제1 이미지(Image1)를 서버(200)에 전송할 수 있다. 또한, 프로세서(110)는 제1 이미지(Image1)를 생성한 제1 시점(t1)에서의 카메라의 제1 뷰 데이터(Mv_1)를 저장할 수 있다. 제1 이미지(Image1)는 이미지 생성부(111)에 의해 생성되고, 제1 뷰 데이터(Mv_1)는 뷰 데이터 관리부(112)에 의해 생성될 수 있다(S11).
도 5에는 대상 물체(Object)가 오로지 용이한 이해를 위하여 예시적으로 서로 다른 크기를 갖는 2개의 정육면체가 결합된 구조물인 것으로 도시되어 있다. 하지만, 대상 물체(Object)는 예컨대 상점에서 판매하는 신발, 구두, 안경, 전자제품, 의류, 모자 등 어떠한 물건도 가능하다.
그러나, 서버(200)는 이미지(Image1) 내의 대상 물체(Object)를 인식하고 추출할 수 있는 학습 모델을 포함해야 하며, 학습 모델은 대상 물체(Object)를 인식 및 추출할 수 있도록 사전에 학습되어 있어야 한다. 이를 위하여, 단말기(100)는 대상 물체(Object)를 여러 방향에서 촬영한 이미지들과 이때의 대상 물체(Object)의 상대 포즈 데이터를 서버(200)에 전송하고, 서버(200)는 이들을 기초로 학습 모델을 트레이닝시킬 수 있다.
제1 뷰 데이터(Mv_1)는 뷰 데이터 관리부(112)에서 처음으로 생성한 것일 수 있다. 뷰 데이터 관리부(112)는 제1 이미지(Image1) 또는 관성 센서들(170)의 센서 값들 중 적어도 하나를 기초로 제1 뷰 데이터(Mv_1)를 생성할 수 있다.
제1 뷰 데이터(Mv_1)는 제1 뷰 행렬(Mwc ec_1)로 나타낼 수 있으며, 제1 뷰 행렬(Mwc ec_1)은 월드 좌표계 상의 좌표값을 제1 시점(t1)의 카메라(160)의 포즈에 의해 정의되는 제1 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들로 표현될 수 있다.
단계(S12)에서, 프로세서(110)는 서버(200)로부터 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 수수신할 수 있다. 서버(200)는 사전에 트레이닝된 학습 모델을 이용하여 제1 이미지(Imgae1)로부터 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 출력하도록 구성될 수 있다. 다른 예에 따르면, 서버(200)는 사전에 트레이닝된 학습 모델을 이용하여 제1 이미지(Imgae1)로부터 대상 물체(Object)의 종류(class), 및 대상 물체(Object)의 제1 이미지(Image1)에서의 위치를 출력하도록 구성될 수 있다.
제1 상대 포즈 데이터(Mobj ec_1)는 오브젝트 좌표계 상의 좌표값을 제1 시점(t1)의 카메라(160)의 포즈에 의해 정의되는 제1 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들로 표현될 수 있다.
대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)는 대상 물체의 포즈 데이터 관리부(113) 또는 대상 물체의 상대 포즈 데이터 추정부(114)에 의해 수신될 수 있다.
단계(S13)에서, 프로세서(110)는 카메라(160)의 제1 뷰 데이터(Mv_1)와 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)에 기초하여, 대상 물체(Object)의 포즈 데이터(Mobj wc)를 추정할 수 있다. 대상 물체(Object)의 포즈 데이터(Mobj wc)는 대상 물체의 포즈 데이터 관리부(113)에 의해 추정될 수 있다.
대상 물체(Object)의 포즈 데이터(Mobj wc)는 월드 좌표계 상에서의 대상 물체(Object)의 포즈를 나타낼 수 있으며, 오브젝트 좌표계 상의 좌표값을 월드 좌표계 상으로 변환하는 행렬 또는 이의 원소값들로 표현될 수 있다.
대상 물체의 포즈 데이터 관리부(113)가 대상 물체(Object)의 포즈 데이터(Mobj wc)를 추정하기 전에, 카메라의 포즈 데이터 추정부(118)가 카메라(160)의 제1 뷰 데이터(Mv_1)를 기초로, 월드 좌표계 상에서 제1 시점(t1)의 카메라(160)의 포즈를 나타내는 카메라(160)의 제1 포즈 데이터(Mec_1 wc)를 생성할 수 있다. 카메라의 포즈 데이터 추정부(118)는 카메라(160)의 제1 뷰 데이터(Mv_1)의 역행렬을 산출함으로써 카메라(160)의 제1 포즈 데이터(Mec_1 wc)를 산출할 수 있다.
도 3에서 카메라의 포즈 데이터 추정부(118)가 대상 물체의 포즈 데이터 관리부(113)와 별도의 구성인 것으로 도시되어 있지만, 카메라의 포즈 데이터 추정부(118)는 대상 물체의 포즈 데이터 관리부(113) 내의 일부 기능 블럭일 수도 있다.
대상 물체의 포즈 데이터 관리부(113)는 카메라(160)의 제1 뷰 데이터(Mv_1)를 기초로 생성되는 카메라(160)의 제1 포즈 데이터(Mec_1 wc)에 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 곱함으로써 대상 물체(Object)의 포즈 데이터(Mobj wc)를 산출할 수 있다.
단계(S14)에서, 이미지 생성부(111)는 제2 시점(t2)에 카메라(160)로 대상 물체(object)를 촬영하여 제2 이미지(도 6의 Image2)를 생성하고, 뷰 데이터 관리부(112)는 제2 시점(t2)에 카메라(160)의 제2 뷰 데이터(Mv_2)를 생성할 수 있다. 단계(S14)는 단계(S12)와 단계(S13)의 이후인 것으로 도시되어 있지만, 이는 오로지 용이한 이해를 위한 것이며, 단계(S14)는 단계(S11)와 단계(S12) 사이에, 또는 단계(S12)와 단계(S13) 사이에 수행될 수도 있다.
도 5에 도시된 바와 같이, 제1 시점(t1)과 제2 시점(t2) 사이에 카메라(160)는 움직인다. 카메라(160)의 제2 뷰 데이터(Mv_2)는 카메라(160)의 움직임에 대응하여 카메라(160)의 제1 뷰 데이터(Mv_1)로부터 달라진다.
일 실시예에 따르면, 뷰 데이터 관리부(112)는 제1 시점(t1)과 제2 시점(t2) 사이의 카메라(160)의 움직임(motion)에 대응하여, 병진 운동의 방향과 크기 및 회전 운동의 방향과 크기를 추정할 수 있다. 뷰 데이터 관리부(112)는 카메라(160)의 제1 뷰 데이터(Mv_1), 병진 운동의 방향과 크기, 및 회전 운동의 방향과 크기에 기초하여, 카메라(160)의 제2 뷰 데이터(Mv_2)를 생성할 수 있다.
제2 뷰 데이터(Mv_2)는 제2 뷰 행렬(Mwc ec_2)로 나타낼 수 있으며, 제2 뷰 행렬(Mwc ec_2)은 월드 좌표계 상의 좌표값을 제2 시점(t2)의 카메라(160)의 포즈에 의해 정의되는 제2 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들로 표현될 수 있다.
일 예에 따르면, 뷰 데이터 관리부(112)는 제1 이미지(Image1)에서 제1 특징점들을 추출하고, 제2 이미지(Image2)에서 제2 특징점들을 추출하고, 제1 특징점들과 제2 특징점들 간의 변화를 기초로 병진 운동의 방향과 크기 및 회전 운동의 방향과 크기를 추정할 수 있다. 즉, 뷰 데이터 관리부(112)는 이미지 기반으로 카메라(160)의 움직임의 방향과 크기를 추정할 수 있다.
다른 예에 따르면, 뷰 데이터 관리부(112)는 관성 센서들(170)의 센서 값들을 이용하여 카메라(160)의 움직임의 방향과 크기를 추정할 수 있다.
또 다른 예에 따르면, 뷰 데이터 관리부(112)는 관성 센서들(170)의 센서 값들, 및 제1 특징점들과 제2 특징점들 간의 변화에 기초하여, 병진 운동의 방향과 크기 및 회전 운동의 방향과 크기를 추정할 수 있다. 즉, 뷰 데이터 관리부(112)는 이미지 및 센서 기반으로 카메라(160)의 움직임의 방향과 크기를 추정할 수 있다.
단계(S15)에서, 프로세서(110)는 대상 물체(Object)의 포즈 데이터(Mobj wc) 및 카메라(160)의 제2 뷰 데이터(Mv_2)에 기초하여, 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)를 추정할 수 있다.
제2 상대 포즈 데이터(Mobj ec_2)는 오브젝트 좌표계 상의 좌표값을 제2 시점(t2)의 카메라(160)의 포즈에 의해 정의되는 제2 카메라 좌표계 상으로 변환하는 행렬 또는 이의 원소값들로 표현될 수 있다.
대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)는 제1 카메라 좌표계 상에서 대상 물체(Object)의 포즈를 나타낸 것이며, 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)는 제2 카메라 좌표계 상에서 대상 물체(Object)의 포즈를 나타낸 것이다.
대상 물체의 상대 포즈 데이터 추정부(114)는 카메라(160)의 제2 뷰 데이터(Mv_2)에 대상 물체(Object)의 포즈 데이터(Mobj wc)를 곱함으로써 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)를 추정할 수 있다.
단계(S16)에서, 프로세서(110), 특히, 가상 물체의 3차원 이미지 렌더링부(115)는 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)에 기초하여 가상 물체의 3차원 이미지(도 7의 VOb2)를 렌더링할 수 있다.
단계(S16) 전에 프로세서(110)는 사용자로부터 가상 물체를 선택하는 신호를 수신할 수 있다. 도 7에는 오로지 용이한 이해를 위하여 가상 물체가 컵인 것으로 가정하였다. 프로세서(110)는 서버(200) 또는 다른 서버로부터 가상 물체의 3차원 이미지를 렌더링하기 위한 프로그램 코드를 수신할 수 있다.
도 6의 제2 시점(t2)에 촬영한 제2 이미지(Image2)와 도 7의 제2 증강 이미지(Aug2)를 참조하면, 대상 물체(Ob2)의 포즈와 가상 물체의 3차원 이미지(VOb2)에 도시된 가상 물체의 포즈가 서로 동일하다. 도 6의 제1 이미지(Image1)에 대상 물체(Ob1)의 정면이 도시되고, 도 7의 3차원 이미지(VOb1)가 가상 물체의 정면이 도시된다고 가정한다.
단계(S17)에서, 프로세서(110), 특히, 증강 이미지 생성부(116)는 제2 이미지(도 6의 Image2) 상에 가상 물체의 3차원 이미지(도 7의 VOb2)를 증강하여 제1 증강 이미지(도 7의 Aug2)를 생성할 수 있다. 프로세서(110)는 입출력 장치(150), 특히, 디스플레이 장치에 제1 증강 이미지(Aug2)를 표시할 수 있다.
단계(S12)에서, 서버(200)는 사전에 트레이닝된 학습 모델을 이용하여 제1 이미지(Imgae1)로부터 대상 물체(Object)의 종류(class), 및 대상 물체(Object)의 제1 이미지(Image1)에서의 위치를 생성하여, 프로세서(110)로 전송할 수 있다. 프로세서(110)는 제1 이미지(Imgae1) 내의 대상 물체(Object)의 종류(class), 및 대상 물체(Object)의 제1 이미지(Image1)에서의 제1 위치를 수신할 수 있다.
단계(S17)에서 대상 물체의 위치 추적부(117)는 대상 물체(Object)의 제1 이미지(Image1)에서의 제1 위치를 기초로 제1 이미지(Image1) 내의 대상 물체(Object)를 추적함으로써, 제2 이미지(Image2) 내의 대상 물체(Object)의 제2 위치를 결정할 수 있다. 증강 이미지 생성부(116)는 제2 이미지(Image2) 내의 대상 물체(Object)의 제2 위치에 가상 물체의 3차원 이미지(VOb2)를 부가함으로써, 도 7에 도시되는 제1 증강 이미지(Aug2)를 생성할 수 있다.
증강 이미지 생성부(116)는 제1 이미지(Image1)와 제2 이미지(Image2) 내의 특징점들의 이동 및 변화를 추적함으로써 대상 물체(Object)를 추적할 수 있다.
본 실시예에 따르면, 단계(S12)에서는 프로세서(110)가 서버(200)로부터 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 수신하지만, 단계(S15)에서는 프로세서(110)가 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)를 직접 추정한다.
프로세서(110)가 제1 이미지(Image1)를 서버(200)에 전송한 후, 서버(200)로부터 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 수신하기까지는 시간이 필요하다. 이 시간에도 단말기(100) 및 카메라(160)는 이동 또는 회전할 수 있다. 즉, 카메라(160)의 포즈가 달라지게 되고, 대상 물체(Object)의 상대 포즈 데이터(Mobj ec) 역시 달라지게 된다. 따라서, 제2 시점(t2)에 서버(200)로부터 대상 물체(Object)의 제1 상대 포즈 데이터(Mobj ec_1)를 기초로 가상 물체의 3차원 이미지를 렌더링할 경우, 제2 시점(t2)에 도 7의 증강 이미지(Aug1)를 생성하게 되므로, 대상 물체(Object)의 상대 포즈와 가상 물체의 상대 포즈가 서로 달라 이질감이 발생하게 된다.
본 발명에 따르면, 프로세서(110)는 단말기(100) 또는 카메라(160)의 움직임에 대응하여 카메라(160)의 뷰 데이터(Mv) 또는 포즈 데이터(Mec wc)를 실시간으로 감지하고, 이를 기초로 제2 시점(t2)에는 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)를 자체적으로 추정할 수 있다. 따라서, 제2 시점(t2)에 스스로 추정한 대상 물체(Object)의 제2 상대 포즈 데이터(Mobj ec_2)를 기초로 가상 물체의 3차원 이미지를 렌더링할 경우, 제2 시점(t2)에 도 7의 증강 이미지(Aug2)를 생성하게 되므로, 대상 물체(Object)의 상대 포즈와 가상 물체의 상대 포즈가 서로 동일하므로, 이질감이 상당히 감소할 수 있다.
이후, 단계(S14) 내지 단계(S17)를 반복함으로써, 카메라(160)의 움직임에 대응하는 증강 이미지들이 생성될 수 있다. 다만, 단계(S15)에서 추정되는 대상 물체(Object)의 상대 포즈 데이터(Mobj ec)의 오차가 누적될 수 있다. 이를 방지하기 위하여, 프로세서(110)는 서버(200)로부터 대상 물체(Object)의 상대 포즈 데이터(Mobj ec)를 간헐적으로 수신하고, 이를 기초로 오차를 보상할 수 있다. 일 실시예에 따르면, 프로세서(110)는 서버(200)로부터 수신되는 대상 물체(Object)의 상대 포즈 데이터(Mobj ec)를 기초로 대상 물체(Object)의 포즈 데이터(Mobj wc)를 보상하는 단계를 더 포함할 수 있다.
이 과정을 설명하기 위하여, 단계(S13)에서 추정된 대상 물체(Object)의 포즈 데이터(Mobj wc)를 대상 물체(Object)의 제1 포즈 데이터(Mobj wc_1)라고 한다.
프로세서(110)는 단계(S11)에서와 유사하게 제3 시점(t3)에 카메라(160)로 대상 물체(Object)를 촬영하여 생성되는 제3 이미지(도 6의 Image3)를 서버(200)에 전송하고, 이때의 카메라(160)의 제3 뷰 데이터(Mv_3)를 저장할 수 있다.
프로세서(110)는 단계(S12)에서와 유사하게 서버(200)로부터 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)를 수신할 수 있다.
프로세서(110)는 단계(S13)에서와 유사하게 카메라(160)의 제3 뷰 데이터(Mv_3)와 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)에 기초하여, 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)를 산출할 수 있다.
프로세서(110)는 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)가 대상 물체(Object)의 포즈 데이터(Mobj wc) 또는 이전에 생성된 대상 물체(Object)의 제1 포즈 데이터(Mobj wc_1)에 기초하여 설정되는 정상 범위 내에 속하는지의 여부를 판정할 수 있다.
프로세서(110)는 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)가 정상 범위 내에 속하는 것으로 판정한 경우, 대상 물체(Object)의 제1 포즈 데이터(Mobj wc_1)와 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)에 기초하여, 대상 물체(Object)의 포즈 데이터(Mobj wc)를 갱신할 수 있다. 예를 들면, 대상 물체(Object)의 포즈 데이터(Mobj wc)는 대상 물체(Object)의 제1 포즈 데이터(Mobj wc_1)와 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)의 평균 또는 가중 평균일 수 있다. 예를 들면, 대상 물체(Object)의 포즈 데이터(Mobj wc)는 미리 설정된 기간 동안 산출되고 정상 범위에 속하는 것으로 판정된 대상 물체(Object)의 포즈 데이터(Mobj wc)들을 기초로 산출된 값으로 갱신될 수 있다.
또한, 이 경우, 프로세서(110)는 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)에 기초하여 가상 물체의 3차원 이미지(VOb3)를 렌더링할 수 있다. 이때의 3차원 이미지(VOb3)를 제2 3차원 이미지라 지칭한다. 프로세서(110)는 제3 이미지(Image3) 상에 가상 물체의 3차원 이미지(VOb3)를 증강하여 증강 이미지(Aug3)를 생성할 수 있다.
그러나, 대상 물체(Object)의 제2 포즈 데이터(Mobj wc_2)가 정상 범위 내에 속하지 않는 것으로 판정되는 경우, 프로세서(110)는 대상 물체(Object)의 포즈 데이터(Mobj wc)를 유지하고, 단계(S15)와 유사하게 대상 물체(Object)의 포즈 데이터(Mobj wc) 및 카메라(160)의 제3 뷰 데이터(Mv_3)에 기초하여 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)를 추정할 수 있다. 프로세서(110)는 단계(S16)과 유사하게 앞 단계에서 추정된 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)에 기초하여 가상 물체의 3차원 이미지(VOb3)를 렌더링할 수 있다. 이때의 3차원 이미지(VOb3)를 제3 3차원 이미지라 지칭한다. 서버(200)로부터 수신된 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)와 프로세서(110)에 의해 자체적으로 추정된 대상 물체(Object)의 제3 상대 포즈 데이터(Mobj ec_3)는 서로 다를 수 있으며, 따라서, 제2 3차원 이미지와 제3 3차원 이미지는 서로 다를 수 있다.
프로세서(110)는 제3 이미지(Image3) 상에 가상 물체의 3차원 이미지(VOb3)를 증강하여 증강 이미지(Aug3)를 생성할 수 있다.
이상 설명된 다양한 실시예들은 예시적이며, 서로 구별되어 독립적으로 실시되어야 하는 것은 아니다. 본 명세서에서 설명된 실시예들은 서로 조합된 형태로 실시될 수 있다.
이상 설명된 다양한 실시예들은 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 명세서에서, "부", "모듈" 등은 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다. 예를 들면, "부", "모듈" 등은 소프트웨어 구성 요소들, 객체 지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들에 의해 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (17)

  1. 서버와 통신하는 컴퓨팅 장치에 의해 수행되는 방법에 있어서,
    제1 시점에 카메라로 대상 물체를 촬영하여 생성되는 제1 이미지를 상기 서버에 전송하고, 이때의 상기 카메라의 제1 뷰(view) 데이터를 저장하는 단계;
    상기 서버로부터 상기 대상 물체의 제1 상대 포즈 데이터를 수신하는 단계;
    상기 카메라의 제1 뷰 데이터와 상기 대상 물체의 제1 상대 포즈 데이터에 기초하여, 상기 대상 물체의 포즈 데이터를 추정하는 단계;
    제2 시점에 상기 카메라로 상기 대상 물체를 촬영하여 제2 이미지를 생성하고, 이때의 상기 카메라의 제2 뷰 데이터를 생성하는 단계;
    상기 대상 물체의 포즈 데이터 및 상기 카메라의 제2 뷰 데이터에 기초하여 상기 대상 물체의 제2 상대 포즈 데이터를 추정하는 단계;
    상기 대상 물체의 상기 제2 상대 포즈 데이터에 기초하여 가상 물체의 제1 3차원 이미지를 렌더링하는 단계; 및
    상기 제2 이미지 상에 상기 가상 물체의 제1 3차원 이미지를 증강하여 제1 증강 이미지를 생성하는 단계를 포함하는 3차원 증강현실 표시 방법.
  2. 제1 항에 있어서,
    상기 대상 물체의 제1 상대 포즈 데이터를 수신하는 단계는 상기 서버로부터 상기 제1 이미지 내의 상기 대상 물체의 제1 위치를 수신하는 단계를 포함하고,
    상기 제1 증강 이미지를 생성하는 단계는,
    상기 대상 물체의 상기 제1 위치를 기초로 상기 제1 이미지 내의 상기 대상 물체를 추적하여, 상기 제2 이미지 내의 상기 대상 물체의 제2 위치를 결정하는 단계; 및
    상기 제2 이미지 내의 상기 대상 물체의 상기 제2 위치에 상기 가상 물체의 제1 3차원 이미지를 부가하는 단계를 포함하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  3. 제1 항에 있어서,
    상기 카메라의 제2 뷰 데이터를 생성하는 단계는,
    상기 제1 시점과 상기 제2 시점 사이의 상기 카메라의 움직임(motion)에 대응하여, 병진 운동의 방향과 크기 및 회전 운동의 방향과 크기를 추정하는 단계; 및
    상기 카메라의 제1 뷰 데이터 및 상기 병진 운동의 방향과 크기 및 상기 회전 운동의 방향과 크기에 기초하여, 상기 카메라의 제2 뷰 데이터를 생성하는 단계를 포함하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  4. 제3 항에 있어서,
    상기 병진 운동의 방향과 크기 및 상기 회전 운동의 방향과 크기는 상기 제1 이미지의 특징점들과 상기 제2 이미지 내의 특징점들 간의 변화를 기초로 추정되는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  5. 제3 항에 있어서,
    상기 병진 운동의 방향과 크기 및 상기 회전 운동의 방향과 크기는 상기 제1 이미지의 특징점들과 상기 제2 이미지 내의 특징점들 간의 변화, 및 상기 카메라 내의 관성 센서의 센서 값을 기초로 추정되는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  6. 제1 항에 있어서,
    상기 대상 물체의 포즈 데이터는 상기 대상 물체에 기초하여 정의되는 오브젝트 좌표계 상의 좌표값을 월드 좌표계 상으로 변환하는 행렬인 것을 특징으로 하는 3차원 증강현실 표시 방법.
  7. 제6 항에 있어서,
    상기 카메라의 제1 뷰 데이터는 상기 월드 좌표계 상의 좌표값을 상기 제1 시점의 상기 카메라의 포즈로 정의되는 제1 카메라 좌표계 상으로 변환하는 행렬이고,
    상기 카메라의 제2 뷰 데이터는 상기 월드 좌표계 상의 좌표값을 상기 제2 시점의 상기 카메라의 포즈로 정의되는 제2 카메라 좌표계 상으로 변환하는 행렬인 것을 특징으로 하는 3차원 증강현실 표시 방법.
  8. 제7 항에 있어서,
    상기 대상 물체의 제1 상대 포즈 데이터는 상기 오브젝트 좌표계 상의 좌표값을 상기 제1 카메라 좌표계 상으로 변환하는 행렬이고,
    상기 대상 물체의 제2 상대 포즈 데이터는 상기 오브젝트 좌표계 상의 좌표값을 상기 제2 카메라 좌표계 상으로 변환하는 행렬인 것을 특징으로 하는 3차원 증강현실 표시 방법.
  9. 제8 항에 있어서,
    상기 대상 물체의 포즈 데이터를 추정하는 단계는,
    상기 카메라의 제1 뷰 데이터에 기초하여, 상기 월드 좌표계 상에서 상기 제1 시점의 상기 카메라의 포즈를 나타내는 제1 포즈 데이터를 산출하는 단계; 및
    상기 제1 포즈 데이터에 상기 대상 물체의 제1 상대 포즈 데이터를 곱함으로써 상기 대상 물체의 포즈 데이터를 산출하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  10. 제8 항에 있어서,
    상기 대상 물체의 제2 상대 포즈 데이터는 상기 카메라의 제2 뷰 데이터에 상기 대상 물체의 포즈 데이터를 곱함으로써 산출되는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  11. 제1 항에 있어서,
    상기 카메라의 제1 뷰 데이터와 상기 대상 물체의 제1 상대 포즈 데이터에 기초하여, 상기 대상 물체의 제1 포즈 데이터를 산출하는 단계;
    제3 시점에 상기 카메라로 상기 대상 물체를 촬영하여 생성되는 제3 이미지를 상기 서버에 전송하고, 이때의 상기 카메라의 제3 뷰 데이터를 저장하는 단계;
    상기 서버로부터 상기 대상 물체의 제3 상대 포즈 데이터를 수신하는 단계;
    상기 카메라의 제3 뷰 데이터와 상기 대상 물체의 제3 상대 포즈 데이터에 기초하여, 상기 대상 물체의 제2 포즈 데이터를 산출하는 단계;
    상기 대상 물체의 제2 포즈 데이터가 상기 대상 물체의 포즈 데이터에 기초하여 설정되는 정상 범위 내에 속하는지의 여부를 판정하는 단계; 및
    상기 대상 물체의 제2 포즈 데이터가 상기 정상 범위 내에 속하는 것으로 판정한 경우, 상기 대상 물체의 제1 포즈 데이터와 상기 대상 물체의 제2 포즈 데이터에 기초하여, 상기 대상 물체의 포즈 데이터를 갱신하는 단계를 더 포함하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  12. 제11 항에 있어서,
    상기 대상 물체의 제2 포즈 데이터가 상기 정상 범위 내에 속하는 것으로 판정한 경우,
    상기 대상 물체의 상기 제3 상대 포즈 데이터에 기초하여 상기 가상 물체의 제2 3차원 이미지를 렌더링하는 단계; 및
    상기 제3 이미지 상에 상기 가상 물체의 상기 제2 3차원 이미지를 증강하여 제2 증강 이미지를 생성하는 단계를 더 포함하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  13. 제11 항에 있어서,
    상기 대상 물체의 제2 포즈 데이터가 상기 정상 범위 내에 속하지 않는 것으로 판정한 경우,
    상기 대상 물체의 포즈 데이터를 유지하는 단계;
    상기 대상 물체의 포즈 데이터 및 상기 카메라의 제3 뷰 데이터에 기초하여 상기 대상 물체의 제3 상대 포즈 데이터를 추정하는 단계;
    상기 대상 물체의 상기 추정된 제3 상대 포즈 데이터에 기초하여 상기 가상 물체의 제3 3차원 이미지를 렌더링하는 단계; 및
    상기 제3 이미지 상에 상기 가상 물체의 상기 제3 3차원 이미지를 증강하여 제3 증강 이미지를 생성하는 단계를 더 포함하는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  14. 제1 항에 있어서,
    상기 카메라의 제1 뷰(view) 데이터, 상기 대상 물체의 제1 상대 포즈 데이터 및 상기 대상 물체의 포즈 데이터는 3x3 회전 행렬(rotation matrix)과 3x1 이동 행렬(translation matrix)을 포함하는 4x4 포즈 행렬(pose matrix)의 형태를 갖는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  15. 제1 항에 있어서,
    상기 제1 증강 이미지를 디스플레이에 표시하는 단계를 더 포함하는 3차원 증강현실 표시 방법.
  16. 제1 항에 있어서,
    상기 서버는 사전에 트레이닝된 학습 모델을 이용하여 상기 제1 이미지로부터 상기 대상 물체의 종류, 상기 제1 이미지 내의 위치 및 상기 제1 상대 포즈 데이터를 출력하도록 구성되는 것을 특징으로 하는 3차원 증강현실 표시 방법.
  17. 컴퓨팅 장치를 이용하여 제1항 내지 제15항 중 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
KR1020190134793A 2019-10-28 2019-10-28 3차원 증강현실 표시 방법 KR102314782B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190134793A KR102314782B1 (ko) 2019-10-28 2019-10-28 3차원 증강현실 표시 방법
PCT/KR2020/014837 WO2021086018A1 (ko) 2019-10-28 2020-10-28 3차원 증강현실 표시 방법
US17/656,776 US20220215581A1 (en) 2019-10-28 2022-03-28 Method for displaying three-dimensional augmented reality

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190134793A KR102314782B1 (ko) 2019-10-28 2019-10-28 3차원 증강현실 표시 방법

Publications (2)

Publication Number Publication Date
KR20210050321A KR20210050321A (ko) 2021-05-07
KR102314782B1 true KR102314782B1 (ko) 2021-10-19

Family

ID=75715403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190134793A KR102314782B1 (ko) 2019-10-28 2019-10-28 3차원 증강현실 표시 방법

Country Status (3)

Country Link
US (1) US20220215581A1 (ko)
KR (1) KR102314782B1 (ko)
WO (1) WO2021086018A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102593934B1 (ko) * 2021-11-17 2023-10-26 주식회사 엘지유플러스 증강 현실 글라스를 이용한 증강 현실 보안 키보드 제공 방법 및 그를 위한 장치 및 시스템
KR102561903B1 (ko) * 2022-01-25 2023-08-02 스크린커플스(주) 클라우드 서버를 이용한 ai 기반의 xr 콘텐츠 서비스 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101328759B1 (ko) * 2007-01-22 2013-11-13 또딸 이메르지옹 비디오 스트림 내에서 마커 없는 텍스쳐 기하학적 평면 객체를 실시간으로 자동 추적하는 증강 현실 방법 및 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9508146B2 (en) * 2012-10-31 2016-11-29 The Boeing Company Automated frame of reference calibration for augmented reality
US9524588B2 (en) * 2014-01-24 2016-12-20 Avaya Inc. Enhanced communication between remote participants using augmented and virtual reality
KR101656618B1 (ko) * 2015-01-15 2016-09-09 한양대학교 산학협력단 물리 객체에 대한 증강 현실 제공 방법 및 장치
CN108780228B (zh) * 2016-01-19 2021-04-20 奇跃公司 利用映像的增强现实系统和方法
US10613729B2 (en) * 2016-05-03 2020-04-07 Johnson Controls Technology Company Building and security management system with augmented reality interface
KR20180004568A (ko) * 2016-07-04 2018-01-12 주식회사 케이티 가상 현실 공유 서비스를 제공하는 서버, 방법 및 디바이스

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101328759B1 (ko) * 2007-01-22 2013-11-13 또딸 이메르지옹 비디오 스트림 내에서 마커 없는 텍스쳐 기하학적 평면 객체를 실시간으로 자동 추적하는 증강 현실 방법 및 장치

Also Published As

Publication number Publication date
WO2021086018A1 (ko) 2021-05-06
KR20210050321A (ko) 2021-05-07
US20220215581A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
US11430189B2 (en) Cloud assisted generation of local map data using novel viewpoints
US11481982B2 (en) In situ creation of planar natural feature targets
JP6348574B2 (ja) 総体的カメラ移動およびパノラマカメラ移動を使用した単眼視覚slam
JP6258953B2 (ja) 単眼視覚slamのための高速初期化
KR102612347B1 (ko) 장치 위치 측정을 위한 다중 동기화 통합 모델
JP6996009B2 (ja) 深度ヒントを使用した深度推定モデルの自己教師ありトレーニング
CN113811920A (zh) 分布式姿势估计
CN112074797A (zh) 用于将虚拟对象锚定到物理位置的系统和方法
EP2981945A1 (en) Method and apparatus for determining camera location information and/or camera pose information according to a global coordinate system
US20220215581A1 (en) Method for displaying three-dimensional augmented reality
US20210142511A1 (en) Method of generating 3-dimensional model data
BR112019009494A2 (pt) dispositivo de computação para suportar uma aplicação de realidade aumentada, método de suporte a uma aplicação de realidade aumentada e meio de armazenamento legível por computador
CN109582134B (zh) 信息显示的方法、装置及显示设备
CN117425870A (zh) 虚拟现实中的动态混合现实内容
JP2016194783A (ja) 画像管理システム、通信端末、通信システム、画像管理方法、及びプログラム
KR101909994B1 (ko) 나노블럭을 이용한 3d 증강현실 서비스 제공 방법
CN115131528A (zh) 虚拟现实场景确定方法、装置及系统
WO2021065607A1 (ja) 情報処理装置および方法、並びにプログラム
US10930077B1 (en) Systems and methods for rendering augmented reality mapping data
CN117369677A (zh) 光标位置的确定方法、装置、设备及介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant