KR20190089091A - 자동화된 3차원 모델 생성 - Google Patents

자동화된 3차원 모델 생성 Download PDF

Info

Publication number
KR20190089091A
KR20190089091A KR1020197021230A KR20197021230A KR20190089091A KR 20190089091 A KR20190089091 A KR 20190089091A KR 1020197021230 A KR1020197021230 A KR 1020197021230A KR 20197021230 A KR20197021230 A KR 20197021230A KR 20190089091 A KR20190089091 A KR 20190089091A
Authority
KR
South Korea
Prior art keywords
set
position
object
tracking points
component
Prior art date
Application number
KR1020197021230A
Other languages
English (en)
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
Priority to US201562139009P priority Critical
Priority to US62/139,009 priority
Priority to US15/080,367 priority
Priority to US15/080,367 priority patent/US9852543B2/en
Application filed by 오비어스 엔지니어링 리미티드 filed Critical 오비어스 엔지니어링 리미티드
Priority to PCT/US2016/024325 priority patent/WO2016160606A1/en
Publication of KR20190089091A publication Critical patent/KR20190089091A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object or an image, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06KRECOGNITION OF DATA; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K9/00Methods or arrangements for reading or recognising printed or written characters or for recognising patterns, e.g. fingerprints
    • G06K9/00201Recognising three-dimensional objects, e.g. using range or tactile information
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06KRECOGNITION OF DATA; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K9/00Methods or arrangements for reading or recognising printed or written characters or for recognising patterns, e.g. fingerprints
    • G06K9/00221Acquiring or recognising human faces, facial parts, facial sketches, facial expressions
    • G06K9/00228Detection; Localisation; Normalisation
    • G06K9/00261Detection; Localisation; Normalisation using comparisons between temporally consecutive images
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06KRECOGNITION OF DATA; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K9/00Methods or arrangements for reading or recognising printed or written characters or for recognising patterns, e.g. fingerprints
    • G06K9/00885Biometric patterns not provided for under G06K9/00006, G06K9/00154, G06K9/00335, G06K9/00362, G06K9/00597; Biometric specific functions not specific to the kind of biometric
    • G06K9/00912Interactive means for assisting the user in correctly positioning the object of interest
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/08Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/30196Human being; Person
    • G06T2207/30201Face

Abstract

다양한 예시적인 실시예들에서, 3차원(3D) 모델들의 생성 및 조작을 위한 시스템 및 방법들이 제시된다. 시스템 및 방법들은 이미지 포착 디바이스의 시야를 포함하는 인터페이스 프레임을 제시시킨다. 시스템들 및 방법들은 인터페이스 프레임 내에서 관심 객체를 검출하고, 관심 객체에 대한 이동 명령어를 생성하며, 관심 객체의 제1 위치 변화 및 제2 위치 변화를 검출한다. 시스템들 및 방법들은 제1 위치 변화 및 제2 위치 변화에 기초하여 관심 객체의 3D 모델을 생성한다.

Description

자동화된 3차원 모델 생성{AUTOMATED THREE DIMENSIONAL MODEL GENERATION}

우선권 주장

본 출원은 2015년 3월 27일자로 출원된 미국 가특허 출원 제62/139,009호의 우선권의 이익을 주장하는, 2016년 3월 24일자로 출원된 미국 특허 출원 제15/080,367호의 우선권의 이익을 주장하며, 이 미국 출원들 각각의 우선권의 이익이 이로써 청구되고, 이 미국 출원들 각각이 참조에 의해 그 전체가 본원에서 원용된다.

기술분야

본 개시내용의 실시예들은 일반적으로 3차원 모델 생성에 관한 것이며, 보다 상세하게는 이미지 포착 디바이스에 대한 모델링될 객체의 지시된 이동에 기초하여 3차원 모델들을 생성하는 것에 관한 것이지만, 이들로 제한되지 않는다.

종래에는, 3차원 모델들을 생성하는 시스템들 및 방법들이 모델의 의도된 수신자로부터 원격지에 위치된 제3자 시스템들이다. 3차원 모델들의 생성은 종종 모델 생성에 앞서 포착된 정적 이미지들의 세트들을 이용한다. 3차원 이미지들을 생성하는 시스템들 및 방법들은 3차원 모델들을 생성하고 애니메이트(animate)하기 위해 계산 집약적 연산들을 종종 수행한다.

첨부된 도면의 다양한 도면들은 본 개시내용의 예시적인 실시예들을 나타낸 것에 불과하며 그의 범주를 제한하는 것으로 간주될 수 없다.
도 1은 일부 예시적인 실시예들에 따른, 네트워크화된 시스템을 나타낸 블록도.
도 2는 다양한 실시예들에 따른, 예시적인 모델 생성 시스템의 블록도.
도 3은 다양한 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3차원 모델들을 생성하는 예시적인 방법을 나타낸 플로차트.
도 4a는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 4b는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 5는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 6은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 7은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 8은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 9는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 10은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 11은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 12는 다양한 실시예들에 따른, 3차원 모델을 나타낸 예시적인 인터페이스 다이어그램.
도 13은 다양한 실시예들에 따른, 3차원 모델을 나타낸 예시적인 인터페이스 다이어그램.
도 14는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 15는 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 16은 다양한 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3차원 모델들을 생성하는 예시적인 방법을 나타낸 플로차트.
도 17은 다양한 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3차원 모델들을 생성하는 예시적인 방법을 나타낸 플로차트.
도 18은 다양한 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3차원 모델들을 생성하는 예시적인 방법을 나타낸 플로차트.
도 19는 다양한 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3차원 모델들을 생성하는 예시적인 방법을 나타낸 플로차트.
도 20은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 21은 다양한 실시예들에 따른, 모델 생성 시스템의 사용자 인터페이스 화면을 나타낸 예시적인 인터페이스 다이어그램.
도 22는 일부 예시적인 실시예들에 따른, 머신 상에 설치될 수 있는 소프트웨어 아키텍처의 일 예를 나타낸 블록도.
도 23은 예시적인 실시예에 따른, 머신으로 하여금 본원에서 논의되는 방법들 중 임의의 하나 이상의 방법들을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템의 형태의 머신의 개략적 표현을 나타낸 도면.
본원에 제공되는 제목들은 편의를 위한 것에 불과하며, 사용되는 용어들의 범주 또는 의미에 꼭 영향을 주는 것은 아니다.

이하의 설명은 본 개시내용의 예시적인 실시예들을 구현하는 시스템들, 방법들, 기법들, 명령어 시퀀스들, 및 컴퓨팅 머신 프로그램 제품들을 포함한다. 이하의 설명에서, 설명의 목적상, 발명 요지의 다양한 실시예들의 이해를 제공하기 위해 다수의 구체적인 상세들이 기재되어 있다. 그렇지만, 발명 요지의 실시예들이 이 구체적인 상세들 없이도 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게는 명백할 것이다. 일반적으로, 널리 공지된 명령어 인스턴스들, 프로토콜들, 구조들, 및 기법들이 꼭 상세히 나타내어져 있지는 않다.

본원에 기술되는 시스템들 및 방법들은 미숙련된 개인이, 하나 이상의 이미지 포착 디바이스들(예컨대, 카메라들)이 부착된, 컴퓨팅 디바이스(예컨대, 스마트폰 또는 태블릿)를 사용하여, 다른 사람들의 도움없이, 객체의 피팅된 정규 3차원(3D) 메시 모델(fitted canonical three dimensional (3D) mesh model)을 생성할 수 있게 한다. 일부 실시예들에서, 객체는 개인의 얼굴, 손, 팔, 다리, 또는 다른 신체 부위; 식별된 유형의 객체(예컨대, 자동차, 컵, 소파, 책상, 또는 다른 정의된 객체)일 수 있다. 이 시스템들 및 방법들은, 비디오 게임들, 가상 현실 환경들, 및 상거래 플랫폼들과 같은, 3D 그래픽을 포함하거나 디스플레이하는 다른 소프트웨어 프로그램들 및 컴퓨팅 시스템들에서 3D 얼굴 모델들이 가져오기(import), 시각화(visualize), 및/또는 조작될 수 있게 한다. 3D 얼굴 모델들은 제품들, 서비스들, 경험들, 게임 플레이, 그래픽 콘텐츠, 식별, 및 데이터 분석의 개인화를 위해 사용될 수 있다.

일부 실시예들에서, 본원에 기술되는 시스템들 및 방법들은 최종 사용자 애플리케이션(end-user application, EUA)의 전부 또는 일부를 형성할 수 있다. EUA는 미숙련된 최종 사용자들이, 컴퓨터, 랩톱, IPAD, 스마트폰, 태블릿 컴퓨터, 또는 사용자에게 이용가능한 임의의 다른 모바일 컴퓨팅 디바이스(이에 국한되지 않음)와 같은, 하나 이상의 카메라들이 부착되어 있는 컴퓨팅 디바이스 상에서 EUA를 개시할 수 있게 하는 사용자 인터페이스 요소들을 포함하는 소프트웨어 프로그램일 수 있다. 일부 실시예들에서, EUA는 독립형 프로그램일 수 있다. EUA는 또한 다른 소프트웨어 프로그램의 일부이거나 그 내에 포함(embed)되어 있을 수 있다.

EUA는, 다른 사람들의 도움없이, 미숙련된 사용자가 그 자신의 얼굴의 피팅된 정규 3D 메시 모델을 생성할 수 있게 한다. EUA는 깊이 맵들을 생성하는 것, 3D 모델들을 생성하기 위해 깊이 맵들을 융합하는 것, 객체 메시 피팅, 모델 검토, 및 데이터 전송을 위해 이하에서 기술되는 하나 이상의 컴포넌트들을 포함할 수 있다. 3D 데이터 포착, 모델 생성, 및 완성된 모델 데이터 전송을 제공하는 EUA 컴포넌트들이 이하에서 상세히 기술된다. 이 컴포넌트들은 카메라(들)로부터의 원시 데이터를 조작하여 카메라의 시야 내의 객체들(예컨대, 얼굴들)의 표면 모델들을 생성하고, 표면 모델들을 정규 메시에 피팅하며, 결과를 디바이스에 로컬적으로 저장하고 임의로 이를 데이터 저장 플랫폼에게 전송한다.

본원에 개시된 시스템들 및 방법들은 EUA가 이미지들의 세트의 포착 이전에 조건들이 모델링하기에 적합한지를 결정할 수 있게 할 수 있다. 예를 들어, EUA는 카메라 노출 및/또는 ISO(International Standards Organization) 감도가 증가하거나 미리 결정된 문턱값을 초과하는 것에 기초하여 환경이 너무 어두운지를 검출할 수 있다. 이미지의 과다 노출 영역(over-exposed area)들을 피하기 위해 픽셀 강도들이 허용 범위들 내로 있도록 보장하는 것과 같은 부가의 검사들이 또한 수행될 수 있다. 시스템 또는 EUA가 현재 포착 조건(current capture condition)들이 부적당하다고 결정하면, 사용자에게 조건들을 개선시키라고 지시하는 메시지가 사용자에게 제공된다.

일부 실시예들에서, 포착을 준비하기 위해, EUA는 카메라에 대해 사용자의 얼굴을 정렬시키라고 사용자에게 지시하는 메시지를 생성할 수 있다. 메시지가 다양한 방식들로 제공될 수 있다. 어떤 경우에, 메시지가 시각적으로(visually) 제공된다. EUA는 카메라 이미지가 정렬 가이드(alignment guide)와 함께 모바일 컴퓨팅 디바이스의 화면 상에 제시(presentation)할 수 있다. 얼굴이 가이드에 따라 위치되면 EUA는 메시지를 생성할 수 있다. 사용자가 가이드에 따라 사용자의 얼굴을 정확하게 위치시켰다는 것을 확인하기 위해 얼굴 검출이 사용될 수 있다. 일부 실시예들에서, 메시지가 청각적으로(audibly) 제공된다. EUA는 카메라에 대해 사용자의 얼굴을 어떻게 위치시킬지를 나타내는 명령어들을 포함하는 오디오(예컨대, 모바일 컴퓨팅 디바이스의 오디오 디바이스 또는 스피커를 통해 재생되는 음성)를 생성하고 제시할 수 있다. 사용자의 얼굴의 현재 위치를 결정하기 위해 얼굴 검출이 사용할 수 있고, 사용자의 얼굴의 현재 위치는 이어서 적절한 위치결정(proper positioning)(예컨대, "더 가깝게 이동", "약간 왼쪽으로 이동" 또는 "더 아래로 이동")을 위한 명령어들을 발행하는 데 사용될 수 있다.

EUA가 얼굴이 정렬된 것을 검출한 후에, 본 개시내용의 시스템들 및 방법들은 포착 및 모델링 프로세스들을 자동으로 개시한다. 어떤 경우에, 포착 및 모델링 프로세스가 수동으로 개시될 수 있다. 어느 경우든지, 본 개시내용의 시스템들 및 방법들은, 신호를 받으면, 이미지들의 세트를 포착하고 사용자의 얼굴에 대한 카메라의 3D 포즈(3D pose)를 실시간으로 추적하기 위해 포착 컴포넌트 또는 컴포넌트들의 세트를 개시한다. 추적된 포즈 및 이미지들의 세트에 기초하여, 본 개시내용의 시스템들 및 방법들은 카메라 또는 객체(예컨대, 사용자의 얼굴)를, 카메라가 객체의 모든 측면들을 관찰하도록 하는, 위치들 내로 이동시키는 것을 안내하는 메시지들(예컨대, 시각적, 오디오, 또는 햅틱 피드백)을 생성한다. 예를 들어, 객체가 사용자의 얼굴인 경우, 메시지들은, 얼굴, 이마, 턱, 목, 및 얼굴의 다른 측면들을 포착하기 위해, 얼굴 및/또는 이미지 포착 디바이스의 이동을 지시할 수 있다. 일부 실시예들에서, 메시지들은 객체의 이미지를 포착하는 이미지 포착 디바이스의 이동을 지시할 수 있다. 예를 들어, 객체가 자동차, 책상, 또는 다른 객체인 경우, 메시지들은 객체에 대해 이미지 포착 디바이스를 이동시키는 것을 지시할 수 있다. EUA는 객체의 3D 모델이 구성될 수 있도록 사용자가 객체의 모든 관련 영역들(예컨대, 사용자의 얼굴)을 포착했다는 것을 보장하기 위해 피드백을 제공할 수 있다. EUA는 또한 스캔된 데이터 포착에서의 잠재적 문제점들을 나타내는 메시지들 또는 경고들을 생성한다. 예를 들어, EUA는 카메라를 움직이거나 머리를 너무 빨리 돌리는 것에 의해 야기된 움직임 블러(motion blur)를 나타내는 메시지들 또는 경고들을 생성할 수 있다.

일부 실시예들에서, 3D 모델링을 위해 이미지들의 세트를 포착하는 모바일 컴퓨팅 디바이스의 카메라는 후방 카메라(rear camera)이다. 후방 카메라는 디스플레이 디바이스의 반대쪽에 있는 모바일 컴퓨팅 디바이스의 측면 상에 위치될 수 있다. EUA에 의해 디스플레이되는 시각적 피드백(예컨대, 경고들 및 메시지들)은, 사용자가 거울 앞에 서 있는 경우, 사용자가 화면 상의 명령어들을 읽고 따를 수 있도록 거울 형태로 디스플레이될 수 있다.

도 1을 참조하면, 상위 레벨 클라이언트-서버 기반 네트워크 아키텍처(100)의 예시적인 실시예가 도시되어 있다. 네트워크화된 시스템(102)은, 네트워크 기반 모델 생성 시스템의 예시적인 형태들에서, 서버측 기능을, 네트워크(104)(예컨대, 인터넷 또는 WAN(wide area network))를 통해, 하나 이상의 클라이언트 디바이스들(110)에게 제공한다. 도 1은, 예를 들어, 클라이언트 디바이스(110) 상에서 실행 중인 웹 클라이언트(112)(예컨대, 미국 워싱턴주 레드몬드 소재의 Microsoft® Corporation에 의해 개발된 INTERNET EXPLORER® 브라우저와 같은, 브라우저), 애플리케이션(114), 및 프로그램 기반 클라이언트(programmatic client)(116)를 예시하고 있다.

클라이언트 디바이스(110)는 휴대폰들, 데스크톱 컴퓨터들, 랩톱들, PDA(personal digital assistant)들, 스마트폰들, 태블릿들, 울트라북(ultra book)들, 넷북(netbook)들, 랩톱들, 멀티-프로세서 시스템들, 마이크로프로세서 기반 또는 프로그래밍가능 소비자 전자제품들, 게임 콘솔들, 셋톱 박스들, 또는 사용자가 네트워크화된 시스템(102)에 액세스하기 위해 이용할 수 있는 임의의 다른 통신 디바이스를 포함할 수 있지만, 이들로 제한되지 않는다. 일부 실시예들에서, 클라이언트 디바이스(110)는 (예컨대, 사용자 인터페이스들의 형태로) 정보를 디스플레이하는 디스플레이 컴포넌트(도시되지 않음)를 포함할 수 있다. 추가의 실시예들에서, 클라이언트 디바이스(110)는 터치 스크린, 가속도계, 자이로스코프, 카메라, 마이크로폰, GPS(global positioning system) 디바이스, 기타 중 하나 이상을 포함할 수 있다.

클라이언트 디바이스(110)는 이미지들을 포착하고 이미지 및 모델링 데이터를 네트워크를 통해 전송하는 데 사용되는 사용자의 디바이스일 수 있다. 하나 이상의 사용자들(106)은 사람, 머신, 또는 클라이언트 디바이스(110)와 상호작용하는 다른 수단일 수 있다. 실시예들에서, 사용자(106)는 네트워크 아키텍처(100)의 일부가 아니지만, 클라이언트 디바이스(110) 또는 다른 수단을 통해 네트워크 아키텍처(100)와 상호작용할 수 있다. 예를 들어, 네트워크(104)의 하나 이상의 부분들은 애드혹 네트워크, 인트라넷, 엑스트라넷, VPN(virtual private network), LAN(local area network), WLAN(wireless LAN), WAN, WWAN(wireless WAN), MAN(metropolitan area network), 인터넷의 일부분, PSTN(Public Switched Telephone Network)의 일부분, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크들의 조합일 수 있다. 클라이언트 디바이스들(110) 각각은, 웹 브라우저, 메시징 애플리케이션, 전자 메일(이메일) 애플리케이션 등(이들로 제한되지 않음)과 같은 하나 이상의 애플리케이션들("앱들"이라고도 지칭됨)을 포함할 수 있다.

하나 이상의 사용자들(106)은 사람, 머신, 또는 클라이언트 디바이스(110)와 상호작용하는 다른 수단일 수 있다. 예시적인 실시예들에서, 사용자(106)는 네트워크 아키텍처(100)의 일부가 아니지만, 클라이언트 디바이스(110) 또는 다른 수단을 통해 네트워크 아키텍처(100)와 상호작용할 수 있다. 예를 들어, 사용자는 클라이언트 디바이스(110)에게 입력(예컨대, 터치 스크린 입력 또는 영숫자 입력)을 제공하고, 입력은 네트워크(104)를 통해 네트워크화된 시스템(102)에게 전달된다. 이 경우에, 네트워크화된 시스템(102)은, 사용자로부터 입력을 수신하는 것에 응답하여, 사용자에게 제시될 정보를 네트워크(104)를 통해 클라이언트 디바이스(110)에게 전달한다. 이러한 방식으로, 사용자는 클라이언트 디바이스(110)를 사용하여 네트워크화된 시스템(102)과 상호작용할 수 있다.

API(application program interface) 서버(120)와 웹 서버(122)는, 각각, 하나 이상의 애플리케이션 서버들(140)에 결합되어 프로그램 기반 인터페이스 및 웹 인터페이스를 제공한다. 애플리케이션 서버들(140)은 하나 이상의 게시 시스템(publication system)들(142) 및 모델 생성 시스템들(150)을 호스팅할 수 있으며, 이들 각각은 하나 이상의 컴포넌트들 또는 애플리케이션들을 포함할 수 있고, 이들 각각은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로서 구현될 수 있다. 애플리케이션 서버들(140)은, 차례로, 하나 이상의 정보 저장 리포지토리들 또는 데이터베이스(들)(126)에의 액세스를 용이하게 하는 하나 이상의 데이터베이스 서버들(124)에 결합되는 것으로 도시되어 있다. 예시적인 실시예에서, 데이터베이스들(126)은 게시 시스템(142)에 포스팅(post)될 정보(예컨대, 게시물들 또는 리스팅(listing)들)를 저장하는 저장 디바이스들이다. 예시적인 실시예들에 따르면, 데이터베이스들(126)은 또한 객체 데이터, 이력 데이터, 및 3D 모델 데이터를 저장할 수 있다.

어떤 경우에, 데이터베이스 및 데이터베이스 서버는 클라이언트 디바이스(110) 내에서 생성된 3D 모델들에 대한 데이터 저장 플랫폼으로서 기능할 수 있다. 데이터베이스 서버(124)는 모델을 데이터베이스(126)에 업로드한 각각의 최종 사용자(예컨대, 사용자(106))에 관한 정보를 저장할 수 있다. 각각의 사용자에 관한 포착되고 유지되는 정보는 이름, 이메일 주소, 패스워드, 및 데이터베이스 서버(124)에 의해 요청될 수 있는 임의의 부가의 위치 또는 식별 데이터를 포함할 수 있지만, 이들로 제한되지 않는다. 데이터베이스 서버(124) 또는 데이터베이스(126)에 저장된 각각의 모델은 그것을 생성한 최종 사용자(106)와 연관될 수 있거나 최종 사용자(106) 생성자(creator)에 의해 액세스 권한을 부여받은 임의의 제3자와 연관될 수 있다. 비즈니스 및 시스템 분석을 위해 각각의 얼굴 모델에 대한, 다운로드들의 횟수 및 발신자(originator)들(이들로 제한되지 않음)과 같은, 메타데이터가 또한 포착되고 유지된다.

일부 실시예들에서, API 서버(120)는 제3자 데이터 액세스 인터페이스(third party data access interface, TPDAI)를 포함한다. TPDAI는 허가된 제3자 프로그램들 및 시스템들이 사용자(106)를 대신하여 데이터베이스 서버(124) 또는 데이터베이스(126) 내의 모델들에 액세스할 수 있게 하는 API 프로토콜이다. TPDAI는 제3자 프로그램들 및 시스템들이 모델을 다운로드하거나 다른 방식으로 모델에 액세스하기 위해 사용자(106)의 액세스 자격증명들에 대해 인증할 수 있게 한다. TPDAI 요청들은 또한 데이터베이스 서버(124)가 그 요청이 데이터베이스 서버(124)의 허가된 사용자(106)로부터 발신되었다는 것을 보장할 수 있게 하는 유효 액세스 토큰을 포함할 수 있다. 유효 액세스 토큰은 또한 최종 사용자 애플리케이션이 제3자 시스템별 사용 볼륨(volume of usage)을 추적할 수 있게 하는 것은 물론, 부가의 추적 및 관리 동작들을 가능하게 한다. 제3자 프로그램들 또는 시스템들로부터의 요청들에 응답하여, 제3자 프로그램들 또는 시스템들에게 전송되는 모델 데이터는 3D 그래픽을 포함하거나 디스플레이하는 소프트웨어 프로그램들 또는 물리적 컴포넌트들 및 컴퓨팅 시스템들에서 모델을 가져오기, 시각화, 또는 조작하는 요소들 전부를 포함할 수 있다.

그에 부가하여, 제3자 서버(들)(130) 상에서 실행 중인, 제3자 애플리케이션(132)이 API 서버(114)에 의해 제공되는 프로그램 기반 인터페이스를 통해 네트워크화된 시스템(102)에의 프로그램 기반 액세스를 갖는 것으로 도시되어 있다. 예를 들어, 제3자 애플리케이션(132)은, 네트워크화된 시스템(102)으로부터 검색된 정보를 이용하여, 제3자에 의해 호스팅되는 웹사이트 상의 하나 이상의 특징들 또는 기능들을 지원한다.

게시 시스템(142)은 네트워크화된 시스템(102)에 액세스하는 사용자들(106)에게 다수의 게시, 보관(archival), 및 데이터 저장 기능들 및 서비스들을 제공할 수 있다. 예를 들어, 게시 시스템(142)은 객체 데이터, 3D 모델 데이터, 2.5 차원 모델 데이터, 그리고 생성된 모델들 및 모델들의 하나 이상의 플랫폼들 또는 프로그램들에의 적용들에 관련된 다른 데이터를 수집, 게시, 및 저장할 수 있다. 게시 시스템(142)은 객체 데이터, 이미지 데이터, 및 이동 데이터에 기초하여 3D 모델들을 생성하는 것을 가능하게 하기 위해 객체 데이터, 이미지 데이터, 및 모델 데이터를 내부 데이터베이스 또는 공개적으로 이용가능한 데이터베이스에 게시할 수 있다. 일부 실시예들에서, 게시 시스템(142)은 데이터베이스(126) 내의 객체 데이터를 검색, 수정, 및 프로비저닝하기 위해 하나 이상의 제3자 서버들 또는 데이터베이스들(예컨대, 제3자 서버(130))에 액세스한다.

모델 생성 시스템(150)은 다양한 모델 생성 및 조작 기능들은 물론, 객체들, 명령어들, 이미지 및 모델 편집 효과들, 그리고 모델 수정의 그래픽 표현들을 생성하는 기능들을 수행하기 위해 동작가능한 기능을 제공할 수 있다. 예를 들어, 모델 생성 시스템(150)은 클라이언트 디바이스(110)와 연관되거나 그에 결합된 이미지 포착 디바이스에 의해 제공된 이미지 데이터에 기초하여 객체들, 신체 부위들, 또는 장면들의 3D 모델들을 생성한다. 3D 모델들이 객체 또는 얼굴의 이동, 또는 이미지 포착 디바이스의 이동에 기초하여 생성될 수 있다. 일부 예시적인 실시예들에서, 모델 생성 시스템(150)은 제3자 프로그램들 또는 시스템들에 의한 사용을 위해 3D 모델링 데이터에 액세스하거나 그를 제공하기 위해 게시 시스템들(142)과 통신한다.

게다가, 도 1에 도시된 클라이언트-서버 기반 네트워크 아키텍처(100)가 클라이언트-서버 아키텍처를 이용하지만, 본 발명 요지가 물론 이러한 아키텍처로 제한되지 않으며, 분산형 또는 피어-투-피어(peer-to-peer) 아키텍처 시스템에서 똑같이 잘 적용될 수 있다. 다양한 게시 시스템(142) 및 모델 생성 시스템(150)이 또한, 네트워킹 능력들을 꼭 갖는 것은 아닌, 독립형 소프트웨어 프로그램들로서 구현될 수 있다.

웹 클라이언트(112)는 웹 서버(122)에 의해 지원되는 웹 인터페이스들을 통해 다양한 게시 및 모델 생성 시스템들(142 및 150)에 액세스할 수 있다. 이와 유사하게, 프로그램 기반 클라이언트(116)는 API 서버(120)에 의해 제공되는 프로그램 기반 인터페이스를 통해 게시 및 모델 생성 시스템들(142 및 150)에 의해 제공되는 다양한 서비스들 및 기능들에 액세스한다.

그에 부가하여, 제3자 서버(들)(130) 상에서 실행 중인, 제3자 애플리케이션(들)(132)이 API 서버(120)에 의해 제공되는 프로그램 기반 인터페이스를 통해 네트워크화된 시스템(102)에의 프로그램 기반 액세스를 갖는 것으로 도시되어 있다. 예를 들어, 제3자 애플리케이션(132)은, 네트워크화된 시스템(102)으로부터 검색된 정보를 이용하여, 제3자에 의해 호스팅되는 웹사이트 상의 하나 이상의 특징들 또는 기능들을 지원할 수 있다. 제3자 웹사이트는, 예를 들어, 네트워크화된 시스템(102)의 관련 애플리케이션들에 의해 지원되는 하나 이상의 판촉, 시장, 데이터 리포지토리, 회사 상호작용, 또는 객체 추적 기능들을 제공할 수 있다.

도 2는 일부 예시적인 실시예들에 따른, 모델 생성 시스템(150)의 컴포넌트들을 나타낸 블록도이다. 모델 생성 시스템(150)은, 모두가 (예컨대, 버스, 공유 메모리, 또는 스위치를 통해) 서로 통신하도록 구성된, 프레젠테이션 컴포넌트(presentation component)(210), 검출 컴포넌트(220), 통지 컴포넌트(230), 위치 컴포넌트(240), 모델링 컴포넌트(250), 및 모델 검토 컴포넌트(260)를 포함하는 것으로 도시되어 있다. 본원에 기술되는 컴포넌트들 중 임의의 하나 이상의 컴포넌트들은 하드웨어(예컨대, 머신의 하나 이상의 프로세서들) 또는 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다. 예를 들어, 본원에 기술되는 임의의 컴포넌트는 (예컨대, 머신의 하나 이상의 프로세서들 중의) 프로세서를 그 컴포넌트의 설계 목적인 동작들을 수행하도록 구성할 수 있다. 더욱이, 이 컴포넌트들 중 임의의 2개 이상의 컴포넌트들이 단일 컴포넌트로 결합될 수 있고, 단일 컴포넌트에 대해 본원에 기술되는 기능들이 다수의 컴포넌트들 간에 세분될 수 있다.

프레젠테이션 컴포넌트(210)는 검출 컴포넌트(220), 통지 컴포넌트(230), 위치 컴포넌트(240), 및 모델 검토 컴포넌트 (260)에 의해 생성된 사용자 인터페이스 및 사용자 인터페이스 요소들을 제시한다. 프레젠테이션 컴포넌트(210)는 또한 모델링 컴포넌트(250)에 의해 생성된 3D 모델들을 제시한다. 일부 실시예들에서, 프레젠테이션 컴포넌트(210)는 디스플레이 디바이스를 통해 클라이언트 디바이스(110)에 사용자 인터페이스들 및 사용자 인터페이스 요소들을 렌더링하는 것에 의해 제시한다. 프레젠테이션 컴포넌트(210)는 본원에 기술되는 다른 컴포넌트들 중 하나 이상과 협력하여 동작할 수 있다.

검출 컴포넌트(220)는 클라이언트 디바이스(110)와 연관된 이미지 포착 디바이스의 시야 내에서 관심 객체들을 검출한다. 어떤 경우에, 검출 컴포넌트(220)는 관심 객체들 및 디스플레이 디바이스 상에 제시된 그래픽 사용자 인터페이스 요소 내에서의 관심 객체들의 위치를 검출한다.

통지 컴포넌트(230)는 클라이언트 디바이스(110)에 의해 수신된 상호작용들, 선택들, 이동들, 및 동작들에 기초하여 사용자 인터페이스 요소들, 선택가능 사용자 인터페이스 요소들, 및 명령어 세트(instruction set)들을 생성한다. 일부 실시예들에서, 통지 컴포넌트(230)는 본원에 기술되는 다른 컴포넌트들 중 하나 이상에 의해 수행되는 동작들 및 동작들의 완료 상태에 기초하여 적절한 사용자 인터페이스 요소, 명령어 세트, 또는 이들의 조합을 결정한다.

위치 컴포넌트(240)는, 관심 객체가 이미지 포착 디바이스의 시야 내에 적절하게 위치되면, 관심 객체의 위치 변화들을 검출한다. 위치 컴포넌트(240)는 클라이언트 디바이스(110)에 대해 관심 객체를 이동시키는 것 또는 관심 객체에 대해 클라이언트 디바이스(110)를 이동시키는 것을 지시하기 위해 통지 컴포넌트(230)와 협력할 수 있다.

모델링 컴포넌트(250)는 이미지 포착 디바이스로부터 수신된 이미지 프레임들의 세트 또는 비디오 및 통지 컴포넌트(230)에 의해 생성된 명령어들에 대응하는 관심 객체 또는 이미지 포착 디바이스의 이동으로부터 3D 모델들을 생성한다. 어떤 경우에, 모델링 컴포넌트(250)는 3D 모델을 포함하는 이미지와 함께 3D 모델을 생성한다.

모델 검토 컴포넌트(260)는 3D 모델에 대한 가능한 수정들을 나타내는 사용자 인터페이스 요소들을 생성하기 위해 프레젠테이션 컴포넌트(210)와 협력할 수 있다. 어떤 경우에, 모델 검토 컴포넌트(260)는 사용자 인터페이스 디바이스로부터 수정 입력을 수신하고, 모델링 컴포넌트(250)로 하여금 입력에 기초하여 수정된 모델을 생성하게 한다.

도 3은 일부 예시적인 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3D 모델들을 생성하는 방법(300)을 수행함에 있어서의 모델 생성 시스템(150)의 동작들의 플로차트이다. 방법(300)에서의 동작들은 본원에 기술되는 컴포넌트들을 사용하여 모델 생성 시스템(150)에 의해 수행될 수 있다.

어떤 경우에, 방법(300)의 개시 이전에, 모델 생성 시스템(150)은 개시 명령어를 수신할 수 있다. 모델 생성 시스템(150)은 모바일 컴퓨팅 디바이스(예컨대, 클라이언트 디바이스(110)), 모바일 디바이스, 태블릿, 인터넷 컴퓨터, 휴대폰, 또는 비디오를 포착하는 능력을 갖는 다른 디바이스와 연관된 하나 이상의 이미지 포착 디바이스들 상에서 최종 사용자 애플리케이션을 개시할 수 있다. 모델 생성 시스템(150)은 새로운 포착 세션을 시작하는 개시 선택을 수신한다. 포착 세션의 개시는 이미지 포착 디바이스 또는 이미지 포착 디바이스들로 하여금 비디오 포착을 시작하게 하거나 이미지 포착 디바이스와 연관된 하나 이상의 모듈들 또는 컴포넌트들에 액세스하는 것에 의해 비디오 포착이 시작되게 할 수 있다.

동작(310)에서, 프레젠테이션 컴포넌트(210)는 모바일 컴퓨팅 디바이스의 이미지 포착 디바이스의 시야(field of view)의 그래픽 렌더링을 포함하는 그래픽 사용자 인터페이스 프레임을 제시한다. 그래픽 사용자 인터페이스 프레임이 모바일 컴퓨팅 디바이스의 이미지 포착 디바이스의 시야의 콘텐츠의 렌더링 상에 제시되는 오버레이로서 생성될 수 있다. 예를 들어, 도 4a에 도시된 바와 같이, 그래픽 사용자 인터페이스 프레임(410)은 모바일 컴퓨팅 디바이스의 2개 이상의 이미지 포착 디바이스들 중에서 선택하도록 구성된 하나 이상의 선택가능 사용자 인터페이스 요소들(420)을 포함할 수 있다. 그래픽 사용자 인터페이스 프레임은 또한 EUA의 동작에 대한 메시지들, 경고들, 또는 명령어들로서 동작하는 통지 인터페이스 요소들(430)을 포함할 수 있다.

도 4a에 도시된 바와 같이, 그래픽 사용자 인터페이스 프레임(410)은 이미지 포착 디바이스의 시야 및 예상되는 객체에 기초한 크기 및 형상으로 되어 있는 가시 프레이밍 요소(visible framing element)(440)로 구성될 수 있다. 도 4에서, 가시 프레이밍 요소(440)는 얼굴을 둘러싸는 크기 및 형상으로 되어 있다. 가시 프레이밍 요소(440)는 이미지 포착 디바이스의 시야 내에 위치된 타원(oval)으로서 표현된다. 타원은 타원 내에 위치되고 타원의 미리 결정된 부분을 차지하는 얼굴이 3D 모델의 스캐닝 및 생성을 위해 적절히 위치되도록 하는 크기로 되어 있을 수 있다. 가시 프레이밍 요소가 타원으로서 도시되어 있지만, 가시 프레이밍 요소(440)가 모델링될 객체의 치수(예컨대, 크기 및 형상)에 기초하여 구성된 다른 적당한 형상들(예컨대, 정사각형, 직사각형, 원, 또는 다각형)일 수 있다.

하나 이상의 선택가능 사용자 인터페이스 요소들(420)은 디스플레이의 일부분 상에서 가시 프레이밍 요소(440) 밖에 위치될 수 있다. 도 4a에 도시된 바와 같이, 하나 이상의 선택가능 사용자 인터페이스 요소들(420)은 디스플레이의 하부 부분에서 가시 프레이밍 요소(440) 및 이미지 포착 디바이스의 시야의 렌더링 아래에 위치될 수 있다. 하나 이상의 선택가능 사용자 인터페이스 요소들(420)은 단일의 사용자 인터페이스 요소일 수 있고, 그의 선택은 모바일 컴퓨팅 디바이스로 하여금 제1 이미지 포착 디바이스와 제2 이미지 포착 디바이스 간에 토글하게 한다.

어떤 경우에, 제1 이미지 포착 디바이스와 제2 이미지 포착 디바이스 간의 토글링은 프레젠테이션 컴포넌트(210)로 하여금 가시 프레이밍 요소(440)에서의 변화들을 렌더링하게 할 수 있다. 예를 들어, 도 4a 및 도 4b에 도시된 바와 같이, 넓은 시야 내의 장면 또는 객체들의 포착 및 모델링을 위한 제1 이미지 포착 디바이스(예컨대, 후방 카메라(rear facing camera))와 얼굴의 포착 및 모델링을 위한 제2 이미지 포착 디바이스(예컨대, 전방 카메라(front facing camera)) 간에 토글하기 의해 선택가능 사용자 인터페이스 요소(420)가 선택가능할 수 있다. 선택가능 사용자 인터페이스 요소(420)가, 도 4a에 도시된 바와 같이, 얼굴을 모델링하기 위해 제1 이미지 포착 디바이스로 토글될 때, 가시 프레이밍 요소(440)(예컨대, 프레이밍 요소(440A))는 시야 내에 묘사되는 얼굴을 프레이밍하기 위한 타원 또는 다른 적당한 형상일 수 있다. 도 4b에 도시된 바와 같이, 선택가능 사용자 인터페이스 요소(420)가 장면을 모델링하기 위해 제2 이미지 포착 디바이스로 토글될 때, 가시 프레이밍 요소(440)(예컨대, 프레이밍 요소(440B))는 직사각형일 수 있고 가시 프레이밍 요소(440A)와 상이한 시야의 부분을 포함할 수 있다.

하나 이상의 선택가능 사용자 인터페이스 요소들(420)은 사용자 인터페이스 요소들의 세트를 포함할 수 있다. 사용자 인터페이스 요소들의 세트는 EUA의 이미지 포착의 하나 이상의 양태들을 구성하도록 선택가능할 수 있다. 예를 들어, 사용자 인터페이스 요소는 이미지 포착 디바이스, 이미지 포착 특성(예컨대, 플래시), 이미지 가져오기(예컨대, 이전에 포착된 이미지를 검색하는 것), 또는 취소를 선택할 수 있다. 취소 요소의 선택은 이미지 포착 모드를 중단시키고 프레젠테이션 컴포넌트(210)로 하여금 메뉴 또는 다른 그래픽 사용자 인터페이스 화면을 렌더링하게 할 수 있다.

통지 인터페이스 요소(430)는 이미지 포착 디바이스, 가시 프레이밍 요소(440), 또는 EUA 중 하나 이상과 상호작용하기 위한 명령어들을 포함할 수 있다. 예를 들어, 도 4a에 도시된 바와 같이, 통지 인터페이스 요소(430)는, 얼굴이 가시 프레이밍 요소(440) 내에 위치되도록, "얼굴을 영역 내에 들어가게 아래로 맞추세요"라고 사용자에게 지시한다.

동작(320)에서, 검출 컴포넌트(220)는 그래픽 사용자 인터페이스 프레임 및 이미지 포착 디바이스의 시야 내에서 관심 객체를 검출한다. 예를 들어, EUA가 얼굴을 모델링하기 위한 모드에 있는 경우, 검출 컴포넌트(220)는 그래픽 사용자 인터페이스 프레임 및 시야 내의 얼굴을 검출할 수 있다. 일부 실시예들에서, 검출 컴포넌트(220)는 선택가능 사용자 인터페이스 요소(420)에 의해 토글되는 주어진 포착 모드와 연관된 미리 결정된 검출 알고리즘들로 구성된다. 예를 들어, 선택가능 사용자 인터페이스 요소(420)가 얼굴 쪽에 있는 제2 위치로 토글되는 경우, 검출 컴포넌트(220)는 Viola-Jones 검출 알고리즘과 같은 얼굴 검출 알고리즘을 실행하도록 구성될 수 있다. 어떤 경우에, 검출 컴포넌트(220)는 동작(320)의 개시 시에 검출 알고리즘을 동적으로 선택한다. 검출 알고리즘을 동적으로 선택하기 위해, 검출 컴포넌트는 객체 검출 알고리즘들의 세트로 구성될 수 있다. 예를 들어, 객체 검출 알고리즘들은 에지 검출 알고리즘들, 점 검출 알고리즘들, 형상 검출 알고리즘들, 객체 인식 알고리즘들, 얼굴 검출 알고리즘들, 또는 시야 내의 관심 객체들을 식별하는 임의의 다른 적당한 알고리즘들 또는 프로세스들의 세트를 포함할 수 있다. 검출 컴포넌트(220)는 시야 내의 객체에 대해 객체 유형이 식별될 때까지 객체 검출 알고리즘들 중 하나 이상을 실행할 수 있다. 예를 들어, 검출 컴포넌트(220)는 객체 검출 알고리즘들의 세트 중의 객체 검출 알고리즘이 객체의 유형(예컨대, 분류)을 식별할 때까지 미리 결정된 또는 랜덤한 순서로 객체 검출 알고리즘들을 단계별로 수행할 수 있다.

검출 컴포넌트(220)는 하나 이상의 검출 방법들을 이용하여 관심 객체를 검출할 수 있다. 예를 들어, 검출 컴포넌트(220)는 하나 이상의 에지 검출 동작들, 점 검출 동작들, 또는 얼굴 검출 동작들을 사용할 수 있다. 객체 검출 동작들은 선택가능 사용자 인터페이스 요소(420)의 위치에 기초하여 선택될 수 있다. 선택가능 사용자 인터페이스 요소가 장면을 포착 및 모델링하기 위해 위치되는 경우, 검출 컴포넌트(220)는 객체 인식을 위해 점 검출 동작들 또는 에지 검출 동작들을 선택할 수 있다. 선택가능 사용자 인터페이스 요소가 얼굴을 포착 및 모델링하기 위해 위치되는 경우, 검출 컴포넌트(220)는 시야 내에서 얼굴을 검출하기 위해 얼굴 검출 동작들을 선택 및 이용할 수 있다.

동작(330)에서, 통지 컴포넌트(230)는 이미지 포착 디바이스의 시야 내에서 객체의 이동을 지시하는 이동 명령어를 생성한다. 모델링될 객체가 장면인 경우, 통지 컴포넌트(230)는 이미지 포착 디바이스 또는 모바일 컴퓨팅 디바이스의 이동을 지시하는 이동 명령어를 생성할 수 있다. 모델링될 객체가 얼굴인 경우에, 통지 컴포넌트(230)는 얼굴의 이동을 지시하는 이동 명령어를 생성한다.

도 4a, 도 5, 및 도 6에 도시된 바와 같이, 검출 컴포넌트(220)가 얼굴을 검출하는 경우, 통지 컴포넌트(230)는 먼저 얼굴을 가시 프레이밍 요소 내에 위치시키기 위해 이동들을 지시하는 이동 명령어들을 포함하는 이동 요소들을 생성할 수 있다. 예를 들어, 통지 컴포넌트(230)는 먼저 도 5에 도시된 바와 같이 "얼굴을 더 가깝게 이동시키세요"라는 명령어를 포함하는 제1 이동 요소를 생성할 수 있다. 검출 컴포넌트(220)가, 스캐닝 및 모델링을 위해 얼굴을 적절하게 위치시키지 않고, 시야 내에서의 얼굴의 이동을 검출한 것에 기초하여, 통지 컴포넌트(230)는 도 5와 도 4a 사이를 왔다갔다하면서, 제1 이동 요소 및 제2 이동 요소에 대한 이동 명령어를 변경할 수 있다. 도 4a에 도시된 바와 같이, 제2 이동 요소는 "얼굴을 아래 영역 내에 들어가게 맞추세요"라는 명령어를 포함한다.

검출 컴포넌트(220)가 가시 프레이밍 요소(440) 내에서 얼굴을 검출하면, 통지 컴포넌트(230)는 제3 이동 요소를 생성할 수 있다. 제3 이동 요소는 초점 요소(focus element)로서 구성된 사용자 요소일 수 있다. 초점 요소는 눈의 시선을 지향시키도록 구성되고 배치된다. 초점 요소는 모바일 컴퓨팅 디바이스의 이미지 포착 디바이스에 근접하여 배치될 수 있다. 예를 들어, 도시된 바와 같이, 초점 요소는 디스플레이 디바이스 상의 그래픽 사용자 인터페이스 내에 그리고 모바일 컴퓨팅 디바이스의 이미지 포착 디바이스 아래에 배치된다. 어떤 경우에, 제3 이동 요소는 도 6에 도시된 바와 같이 "가만히 있으세요"라는 명령어를 포함한다. 제3 이동 요소에 부가하여, 통지 컴포넌트(230)는 포즈 요소를 생성할 수 있다. 도 6에서, 포즈 요소는 제3 이동 요소와 분리되어 있고, 제3 이동 요소의 명령어와 상이한 이동 또는 포즈를 지시할 수 있다. 도시된 바와 같이, 포즈 요소는 "이 점을 보세요(Watch the dot)"라는 명령어를 포함하고, 지시된 포즈를 시각적으로 지시하는 방향 요소(directional element)를 포함한다. 포즈 요소 명령어는 이미지 포착 디바이스에 근접한 위치에 눈을 정렬시키기 위해 초점 요소에 시선을 고정시키라고 사용자에게 지시할 수 있다. 시선이 초점 요소에 지향되고 초점 요소가 얼굴과 함께 움직일 때, 모델 생성 시스템(150)은 이미지들을 포착하고 눈의 동공 및 홍채를 중심으로 하는 3D 모델을 생성할 수 있다.

동작(340)에서, 위치 컴포넌트(240)는 이미지 포착 디바이스의 시야 내에서의 객체(예컨대, 얼굴)의 제1 위치 변화를 검출한다. 객체의 제1 위치 변화를 검출할 때, 위치 컴포넌트(240)는 이미지 포착 디바이스로 하여금 제1 위치 변화가 있는지 이미지 데이터를 포착하게 한다. 어떤 경우에, 센서 데이터가 이미지 데이터에 부가하여 검출되고 제1 위치 변화를 나타내는 경우, 위치 컴포넌트(240)는 센서 데이터를 포착할 수 있다.

일부 실시예들에서, 입력 데이터는 이미지 포착 디바이스로부터 획득된 원시 이미지 프레임들은 물론, 모바일 컴퓨팅 디바이스와 연관된 센서들로부터, 가속도계 데이터 및 자이로스코프 데이터와 같은, 센서 데이터를 포함할 수 있다. 후속하는 3D 재구성(예컨대, 모델링) 스테이지들에 적절한 입력 데이터를 제공하기 위해, 위치 컴포넌트(240) 및 검출 컴포넌트(220)는 카메라에 의해 관측될 목표 3D 포즈들의 세트를 명시한다. 포착 동안, 검출 컴포넌트(220) 및 위치 컴포넌트(240)는 카메라의 현재 3D 포즈를 모니터링하고, 객체에 대한 이미지 포착 디바이스의 3D 포즈를 추적한다.

일부 실시예들에서, 얼굴의 제1 위치 변화는 예상 위치 변화이다. 예상 위치 변화는 제1 초기 위치 및 제1 최종 위치를 포함할 수 있다. 제1 위치 변화는 또한 중간 위치들의 제1 세트를 포함할 수 있다. 제1 초기 위치, 중간 위치들의 제1 세트, 및 제1 최종 위치 각각은 얼굴의 제1 측면과 연관될 수 있으며, 여기서 모델 생성 시스템(150)은 이미지 포착 디바이스에 의해 포착된 얼굴들을 모델링하도록 구성된다.

가시 프레이밍 요소(440) 내에서 얼굴을 검출할 때, 검출 컴포넌트(220)는 이미지 포착 및 모델링 동작들을 개시할 수 있다. 도 7에 도시된 바와 같이, 이미지 포착 동작들의 개시는 통지 컴포넌트(230)로 하여금 얼굴(예컨대, 시야 내의 객체)의 위치 변화를 위한 명령어들(720)을 포함하는 위치 요소(710)를 생성하게 할 수 있다. 도 7에서, 위치 요소(710)는 제1 위치 변화를 지시하는 제1 위치 요소(730)일 수 있다. 제1 위치 요소(730)는 제1 시작 위치(740) 및 제1 종료 위치(750)를 포함할 수 있다. 예를 들어, 위치 요소는 "머리를 오른쪽으로 천천히 돌리세요"라는 명령어들(720)을 포함할 수 있다.

도 8에 도시된 바와 같이, 동작(340)에서 검출된 제1 위치 변화 동안, 위치 컴포넌트(240)는 시야 내에서의 객체(예컨대, 얼굴)의 움직임을 계속하여 모니터링(예컨대, 추적)한다. 위치 컴포넌트(240)는 움직임을 나타내는 데이터의 일부분을 통지 컴포넌트(230)에게 전달할 수 있다. 통지 컴포넌트(230)는 움직임 데이터에 기초하여 실시간으로 그래픽 사용자 인터페이스를 계속하여 수정할 수 있다. 도 8에서, 통지 컴포넌트(230)는 위치 요소(710)를 계속하여 조정하거나 수정한다. 통지 컴포넌트(230)는 시야 내에서의 객체의 현재 위치 및 객체에 대해 검출된 이동 거리(distance of travel)에 비례하여 제1 위치 요소(730)를 이동시키는 것에 의해 위치 요소(710)를 수정할 수 있다. 제1 위치 요소(730)는 제1 시작 위치(740)와 제1 종료 위치(750) 사이에서 거리를 이동할 수 있다. 거리에 따른 제1 위치 요소(730)의 위치는 시작 위치와 예상된 종료 위치 사이에서 객체에서 검출된 움직임의 양에 비례할 수 있다.

동작(350)에서, 위치 컴포넌트(240)는 이미지 포착 디바이스의 시야 내에서의 객체(예컨대, 얼굴)의 제2 위치 변화를 검출한다. 객체의 제2 위치 변화는, 동작(340)에서 기술된, 객체의 제1 위치 변화의 궤적과 유사하거나 동일한 궤적에 있을 수 있다. 제2 위치 변화를 검출할 때, 위치 컴포넌트(240)는 이미지 포착 디바이스로 하여금 제2 위치 변화를 나타내는 이미지 데이터를 포착하게 한다. 어떤 경우에, 앞서 기술된 바와 같이, 위치 컴포넌트(240)는, 이미지 데이터에 부가하여, 제2 위치 변화를 나타내는 센서 데이터를 포착한다.

어떤 경우에, 얼굴의 제2 위치 변화는 예상 위치 변화이다. 예상 위치 변화는 제2 초기 위치 및 제2 최종 위치를 포함할 수 있다. 일부 실시예들에서, 제2 위치 변화는 중간 위치들의 제2 세트를 포함한다. 제2 초기 위치, 중간 위치들의 제2 세트, 및 제2 최종 위치 각각은 얼굴의 제2 측면과 연관될 수 있으며, 여기서 모델 생성 시스템(150)은 이미지 포착 디바이스에 의해 포착된 얼굴들을 모델링하도록 구성된다.

도 9 내지 도 11에 도시된 바와 같이, 제1 위치 변화의 완료 시에, 통지 컴포넌트(230)는 객체(예컨대, 얼굴)의 제2 위치 변화에 대한 명령어들(920)을 포함하는 위치 요소(910)를 생성한다. 도 9에서, 위치 요소(910)는 제2 시작 위치(940) 및 제2 종료 위치(950)를 포함하는 제2 위치 요소(930)이다. 도시된 바와 같이, 위치 요소(910)는 제2 위치 변화의 예상된 방향을 나타내는 "머리를 왼쪽으로 천천히 돌리세요"라는 명령어들(920)을 포함할 수 있다. 어떤 경우에, 제1 위치 변화와 제2 위치 변화가 매끄러운 움직임(fluid motion)을 형성하게 연결(link)되도록, 제2 시작 위치(940)가 제1 종료 위치(750)에 또는 그에 근접하여 위치될 수 있다. 도 9 내지 도 11에 도시된 바와 같이, 통지 컴포넌트(230)는 위치 컴포넌트(240)에 의해 검출된 제2 위치 변화를 모니터링하고, 제2 위치 변화의 초기 위치와 제2 위치 변화의 예상된 종료 사이에서 객체(예컨대, 얼굴)의 위치를 비례적으로 표현하기 위해, 위치 요소(910)를 계속하여 수정할 수 있다.

제1 위치 변화 및 제2 위치 변화에 응답하여 이미지 및 센서 데이터를 포착하는 것으로 기술되어 있지만, 위치 컴포넌트(240)가 이미지들의 스트림(예컨대, 이미지 프레임들의 세트), 그리고 제1 위치 변화, 제2 위치 변화, 및 제1 위치 변화와 제2 위치 변화 사이의 이동을 나타내는 센서 데이터를 포착할 수 있다는 것을 잘 알 것이다. 어떤 경우에, 이하에서 보다 상세히 설명될 것인 바와 같이, 제1 위치 변화, 제2 위치 변화, 및 (예컨대, 제1 위치 변화와 제2 위치 변화를 따라 있는) 하나 이상의 중간 위치 변화들이 객체의 3D 모델을 생성하는 데 사용되는 이미지들의 스트림 내에서 키 프레임(key frame)들로서 식별될 수 있다

일부 실시예들에서, 위치 컴포넌트(240)는 단일 스위핑 움직임(sweeping motion)에서 제1 위치 변화 및 제2 위치 변화를 검출한다. 예를 들어, 모델 생성 시스템(150)이 얼굴을 포착 및 모델링하는 경우에, 얼굴이 초기에, 얼굴의 프로파일이 시야 내에 있도록, 위치될 수 있다. 어떤 경우에, 위치 컴포넌트(240)는 단일의 위치 변화를 2개 이상의 평면들에 걸친 회전으로서 검출한다. 예를 들어, 단일의 위치 변화는 우측 프로파일, 좌측 프로파일, 이마의 최상부(uppermost part), 및 턱(chin) 또는 턱(jaw)의 아래쪽을 노출시키는 얼굴의 회전일 수 있다. 위치 컴포넌트(240)는, 위치의 변화 시에, 앞서 기술된 동작(340)을 수행할 수 있다. 얼굴이 중심선(center-line)을 통과할 때, 위치 컴포넌트(240)는 동작(350)을 수행할 수 있다. 일부 실시예들에서, 위치 컴포넌트(240)는 2개 초과의 위치 변화들을 검출한다. 예를 들어, 위치 컴포넌트(240)는 중심 위치로부터 오른쪽으로 회전하는 얼굴의 제1 위치 변화, 중심 위치로부터 또는 우측 프로파일 위치로부터 왼쪽으로 회전하는 얼굴의 제2 위치 변화, 중심 위치로부터 아래쪽으로 회전하는 얼굴의 제3 위치 변화, 및 중심 위치로부터 또는 아래쪽 위치로부터 위쪽으로 회전하는 얼굴의 제4 위치 변화를 검출할 수 있다.

얼굴 형태의 관심 객체에 대한 데이터를 포착하는 것과 관련하여 기술되어 있지만, 본 방법들 및 시스템들이 얼굴들 또는 인체 부위들 이외의 장면들 및 객체들의 포착 및 차원 모델링(dimensional modeling)을 가능하게 한다는 것을 잘 알 것이다.

동작(360)에서, 모델링 컴포넌트(250)는 객체(예컨대, 얼굴)의 3D 모델을 생성한다. 3D 모델은 제1 위치 변화 및 제2 위치 변화로부터 포착된 이미지 데이터에 기초하여 생성될 수 있다. 이하에서 보다 상세히 설명될 것인 바와 같이, 3D 모델은 객체 상에서 또는 객체 주위에서 검출된 추적 점(tracking point)들에 대한 개개의 키 프레임들 및 궤적들에 기초하여 생성될 수 있다.

제2 위치 변화의 완료 이후에, 통지 컴포넌트(230)는 처리 요소를 생성한다. 처리 요소는 제2 위치 변화의 종료 위치의 모호한 표현(obscured representation)과 함께 제공될 수 있다. 처리 요소는 객체의 3D 모델을 생성하는 모델링 컴포넌트(250)의 표현으로서 렌더링될 수 있다. 프레젠테이션 컴포넌트(210)는 3D 모델의 생성에 대응하는 기간 동안 (예컨대, 원, 모래시계, 또는 디스플레이 디바이스의 일부분을 가로질러 스위프(sweep)하는 요소 주위에서 이동하는 애니메이트된 점 광(point of light)을 렌더링함으로써) 처리 요소를 제시할 수 있다.

모델링 컴포넌트(250)가, 도 12 및 도 13에 도시된 바와 같이, 객체의 3D 모델을 생성하면, 프레젠테이션 컴포넌트(210)는 분리된 인터페이스(1210)에서 3D 모델을 렌더링할 수 있다. 일부 실시예들에서, 분리된 인터페이스(1210)는 이미지 데이터 내에 포착된 배경 없이 상호작용적 표현(interactive representation)으로 3D 모델(1220)을 포함한다. 상호작용적 표현은 3D 모델(1220)과의 상호작용을 가능하게 하기 위해 모바일 컴퓨팅 디바이스의 하나 이상의 센서들에 링크될 수 있다. 도 12 및 도 13에 도시된 바와 같이, 모바일 컴퓨팅 디바이스의 이동은 움직임 센서(예컨대, 자이로스코프 또는 가속도계) 내에서 검출되고 3D 모델(1220)의 대표적인 조작(representative manipulation)을 야기한다. 예를 들어, 모바일 컴퓨팅 디바이스가 왼쪽으로 이동하는 것은, 움직임 센서 및 프레젠테이션 컴포넌트 (210)에 의해, 관찰자에 대한 3D 모델(1220)의 좌측면을 노출시키는 3D 모델(1220)의 회전으로 변환될 수 있다. 모바일 컴퓨팅 디바이스의 우측면, 상부 측면(upper side), 또는 하부 측면(lower side)을 이동시키는 것은, 움직임 센서 및 프레젠테이션 컴포넌트(210)에 의해, 각각, 관찰자에 대한 3D 모델(1220)의 우측면, 상단 측면(top side), 또는 하단 측면(bottom side)을 노출시키는 3D 모델(1220)의 회전으로 변환될 수 있다.

일부 실시예들에서, 도 12 및 도 13에서의 3D 모델의 제시는, 3D 모델이 생성된 것에 응답하여, 모델 검토 컴포넌트(260)에 의해 개시될 수 있다. 모델 검토 컴포넌트(260)는 얼굴 포착 세션으로부터 얻어진 3D 모델의 검토를 가능하게 할 수 있다. 어떤 경우에, 모델 검토 컴포넌트(260)는 3D 모델을 조작, 수정, 그리고 그와 상호작용하기 위해 하나 이상의 사용자 인터페이스 요소들을 생성한다. 모델링 컴포넌트(250)는 스캔 및 포착 세션에서 다수의 모델들을 생성할 수 있다. 각각의 포착 및 생성된 모델은 디바이스 상에 로컬적으로 존재하는 디지털 저장 디바이스(예컨대, 모바일 컴퓨팅 디바이스와 연관된 비일시적 프로세서 판독가능 저장 매체)에 저장될 수 있다. 사용자는 주어진 3D 모델을 폐기하거나, 나중의 검색 및/또는 다른 애플리케이션들, 모바일 디바이스들, 또는 컴퓨팅 시스템들에의 배포(deployment)를 위해, 로컬 디지털 저장소로부터, 스캔 포착 디바이스의 외부에 있는, 데이터 저장소 플랫폼에게 전송하기로 할 수 있다.

모델 검토 컴포넌트(260)는, 프레젠테이션 컴포넌트(210)와 협력하여, 도 14 및 도 15에 도시된 바와 같이, 검토 인터페이스(1410)를 제시할 수 있다. 검토 인터페이스(1410)는 하나 이상의 검토 요소들(1420)(예컨대, 제1, 제2, 및 제3 검토 요소들(1430, 1440, 및 1450))을 포함할 수 있다. 하나 이상의 검토 요소들(1420)은 미리 정의된 수정 옵션들의 세트 내에서 3D 모델의 수정을 가능하게 한다. 도 14 및 도 15에 도시된 바와 같이, 제1 검토 요소(1430)는 하나 이상의 컬러 필터들, 색상 효과(color effect)들, 색 온도 필터들, 그리고 3D 모델의 색상, 샤프니스(sharpness), 틴트(tint), 채도(saturation), 또는 색조(hue) 중 하나 이상을 수정하도록 구성된 다른 필터들, 효과들 및 색상 값 조정들의 선택을 가능하게 한다. 어떤 경우에, 제1 검토 요소(1430)의 선택은 모델 검토 컴포넌트(260) 및 프레젠테이션 컴포넌트(210)로 하여금 효과 요소들을 생성하고 제시하게 한다. 효과 요소들은 지정된 인터페이스 요소에 대응하는 효과로 렌더링된 3D 모델의 축소판(thumbnail) 또는 미리보기(preview)를 포함할 수 있다.

도 15에 도시된 바와 같이, 제2 검토 요소(1440)의 선택은 모델 검토 컴포넌트(260) 및 프레젠테이션 컴포넌트(210)로 하여금 깊이 조정 요소(1510)를 생성하게 한다. 깊이 조정 요소(1510)의 이동은 모델 검토 컴포넌트(260) 및 모델링 컴포넌트(250)로 하여금 3D 모델의 깊이를 수정하게 한다. 예를 들어, 도 15에 도시된 바와 같이, 깊이 조정 요소(1510)가 사용자에 대해 왼쪽으로 이동하는 것은 모델링 컴포넌트(250) 및 프레젠테이션 컴포넌트(210)로 하여금 3D 모델을 비교적 더 얕은 깊이로 렌더링하게 한다. 깊이 조정 요소(1510)가 사용자에 대해 오른쪽으로 이동하는 것은 모델링 컴포넌트(250) 및 프레젠테이션 컴포넌트(210)로 하여금 3D 모델을 비교적 더 깊은 깊이로 렌더링하게 한다.

제3 검토 요소(1450)의 선택은 3D 모델을 포함하는 렌더링된 이미지 내에서 초점(point of focus)의 수정을 가능하게 함으로써 3D 모델의 겉보기 피사계 심도(apparent depth of field)의 조정을 가능하게 한다. 일부 실시예들에서, 제3 검토 요소(1450)의 선택 시에, 통지 컴포넌트(230) 및 프레젠테이션 컴포넌트(210)는 렌더링된 이미지 및 3D 모델과 상호작용하라는 명령어를 생성하고 제시한다. 예를 들어, 명령어는 원하는 초점에서 터치스크린 인터페이스를 탭핑(tapping)하는 것에 의해 초점의 수정이 수행된다는 것을 나타낼 수 있다. 렌더링된 이미지 및 3D 모델의 한 부분의 선택을 수신할 시에, 모델 검토 컴포넌트(260) 및 모델링 컴포넌트(250)는 선택된 지점 그리고 선택된 지점을 미리 결정된 근접거리(proximity) 내에 포함하는 렌더링된 이미지 및 3D 모델의 한 부분의 초점 레벨(level of focus)을 수정한다.

도 16은 일부 예시적인 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3D 모델들을 생성하는 방법(1600)의 동작들을 수행함에 있어서의 모델 생성 시스템(150)의 동작들의 플로차트이다. 도 16에 도시된 동작들은, 본원에 기술되는 컴포넌트들을 사용하여, 모델 생성 시스템(150)에 의해 수행될 수 있다. 도 16에 도시된 바와 같이, 일부 실시예들에서, 방법(1600)은 앞서 기술된 방법(300)의 일부로서 또는 그의 서브동작들로서 수행될 수 있다.

동작(1610)에서, 검출 컴포넌트(220)는 이미지 포착 디바이스의 시야 내에서 얼굴 상의 얼굴 추적 점(facial tracking point)들의 세트를 식별한다. 일부 실시예들에서, 얼굴 추적 점들의 세트의 식별은 이미지 포착 이전의 대략적 얼굴 검출(rough face detection)일 수 있다. 대략적 얼굴 검출은 객체(예컨대, 얼굴)가 시야 내에 제대로 정렬되어 있는지를 식별하기 위해 수행된다. 얼굴 추적 점들의 세트는 시간의 경과에 따라 추적하기에 적당한 이미지 포착 디바이스로부터의 이미지들 중 하나 이상의 이미지들 내의 픽셀들일 수 있다. 각각의 참조 키 프레임(reference key frame)에 대해 이 점들을 생성하기 위해 포착 동안 참조 키 프레임이 업데이트될 때마다 동작(1610) 또는 유사한 프로세스가 수행될 수 있다.

어떤 경우에, 얼굴 추적 점들의 세트는 얼굴의 형상, 눈썹, 입, 코, 눈, 및 다른 적당한 특징 점(feature point)들을 정의하는 점들과 같은 얼굴의 특징 점들이다. 얼굴 추적 점들의 세트는 초기에 참조 이미지(reference image)에서의 사용자의 얼굴 상에서 검출된 2차원 관심 점(interest point)들일 수 있다. 관심 점들은 관심 점 검출 알고리즘(interest point detection algorithm)을 사용하여 검출될 수 있다. 어떤 경우에, 관심 점들은 FAST(Features from Accelerated Segment Test), AGAST(Adaptive and Generic Corner Detection Based on the Accelerated Segment Test), Harris, Shi-Tomasi, 및 기타와 같은 표준의 관심 점 검출 알고리즘들을 사용하여 검출된다. 일부 실시예들에서, 관심 점들의 보다 균일한 분포를 구축하기 위해, 얼굴을 포함할 것으로 예상되는 시야 또는 이미지의 영역(예컨대, 가시 프레이밍 요소 내에 있는 시야 또는 이미지의 부분)이 그리드로 분할될 수 있다. Harris, Shi-Tomasi, 또는 기타와 같은 관심 점 스코어링 함수(interest point scoring function)에 따라 그리드(grid)의 각각의 그리드 셀(grid cell)에 대해 관심 점이 결정될 수 있다. 다수의 스케일 관심 점(scale interest point)들을 식별하기 위해 이미지 데이터에 대해 상이한 스케일들에서, 그리드 셀들에 대한 관심 점들을 결정하는 프로세스가 반복될 수 있다.

일부 실시예들에서, 동작(340)에서의 제1 위치 변화 그리고 동작(350)에서의 제2 위치 변화 중 하나 이상을 검출한 것에 응답하여, 통지 컴포넌트(230)는 그래픽 사용자 인터페이스 프레임 내의 얼굴 상에 얼굴 추적 점들의 세트의 그래픽 표현들을 생성한다. 도 7에 도시된 바와 같이, 프레젠테이션 컴포넌트(210)는 제1 위치 변화 및 제2 위치 변화를 검출하는 지속기간 동안 얼굴 상에 얼굴 추적 점들의 세트의 그래픽 표현들을 제시시킨다.

동작(1620)에서, 위치 컴포넌트(240)는 얼굴 추적 점들의 세트가 제1 위치들의 세트를 갖는 제1 키 프레임을 식별한다. 얼굴이 목표 포즈(target pose)에 충분히 가까울 때, 검출 컴포넌트(220) 및 위치 컴포넌트(240)는 카메라 프레임과 연관된 정보를 차후 처리를 위한 키 프레임으로서 기록한다. 키 프레임은 모바일 스캔 데이터 포착 디바이스와 연관된 가속도계 및/또는 자이로스코프로부터의 센서 데이터와 같은 임의의 센서 데이터, 카메라의 추정된 3D 포즈, 및 사용자의 얼굴 상의 관심 점들의 2D 측정들의 세트와 함께 카메라 이미지로 이루어져 있다.

동작(1630)에서, 위치 컴포넌트(240)는 제1 위치들의 세트로부터 하나 이상의 얼굴 추적 점들의 위치 변화를 결정한다. 관심 점들이 식별된 후에, 위치 컴포넌트(240)는 이미지 포착 디바이스로부터 수신된 후속 이미지 프레임들에서 시간의 경과에 따라 각각의 관심 점의 2차원 위치를 추적할 수 있다. 위치 컴포넌트(240)에 의한 이러한 추적은 하나 이상의 얼굴 추적 점들의 위치 변화를 검출하는 것에 응답하여, 또는 동작들(340 및 350)에, 각각, 기술된 바와 같이, 제1 위치 변화 또는 제2 위치 변화에 응답하여 수행될 수 있다. 일부 실시예들에서, 위치 컴포넌트(240)는 Kanade-Lucas-Tomasi 추적과 같은 적당한 추적 알고리즘을 사용하여 각각의 관심 점의 2차원 위치를 추적할 수 있다.

일부 실시예들에서, 동작(1630)은 하나 이상의 서브동작들에 의해 수행된다. 동작(1632)에서, 하나 이상의 얼굴 추적 점들의 위치 변화의 개시에 응답하여, 위치 컴포넌트(240)는 하나 이상의 얼굴 추적 점들 각각에 대한 궤적을 식별한다. 궤적은 주어진 얼굴 추적 점의 초기 위치로부터 멀어지는 쪽으로 연장되는 2차원 벡터로서 식별될 수 있다. 얼굴 추적 점들의 초기 위치가 키 프레임인 경우, 벡터는 초기 위치와 시간의 경과에 따른 이동 방향을 나타내는 후속 위치 사이에서 연장될 수 있다.

객체가 이동할 때, 궤적들이 추적되고 길이가 증가한다. 객체가 얼굴인 실시예들에서, 얼굴이 이미지 포착 디바이스에 대해 회전될 때, 궤적들이 길이가 증가함에 따라 위치 컴포넌트(240)는 하나 이상의 얼굴 추적 점들의 궤적들을 추적한다. 다수의 이미지 프레임들에 걸쳐 하나 이상의 얼굴 추적 점들을 추적하는 것에 기초하여, 이미지 포착 디바이스에 의해 포착된 이미지 데이터로부터의 초기 이미지 프레임에 대해 각각의 연속적인 이미지 프레임에 따라 궤적들이 증가할 수 있다.

동작(1634)에서, 위치 컴포넌트(240)는 하나 이상의 얼굴 추적 점들의 궤적들의 평균 길이를 결정한다. 궤적들의 평균 길이는 하나 이상의 얼굴 추적 점들 각각에 대한 초기 위치와 후속 위치 사이에서 연장되는 벡터의 거리에 기초하여 결정될 수 있다. 하나 이상의 얼굴 추적 점들 각각과 연관된 거리는 이어서 하나 이상의 얼굴 추적 점들에 걸쳐 평균될 수 있다. 하나 이상의 얼굴 추적 점들에 대한 거리들을 평균하는 것은 잘못된 트랙들에 대한 강건성(robustness)을 제공하기 위해 메디안 궤적 길이(median trajectory length)를 계산하는 것에 의해 수행될 수 있다.

동작(1636)에서, 위치 컴포넌트(240)는 평균 길이가 궤적 문턱값을 초과한다고 결정한다. 궤적들의 평균 길이가 앞서 기술된 위치 요소의 명령어들에 의해 표시된 방향에서 궤적 문턱값을 초과하면, 위치 컴포넌트(240)는, 이하에서 기술되는 바와 같이, 이미지 포착 디바이스에 대한 목표 3D 포즈를 식별하고 키 프레임을 기록할 수 있다.

어떤 경우에, 궤적 문턱값은 초기 위치와 예상된 최종 위치 사이에서 얼굴 추적 점들에 의해 이동된 평균 거리의 미리 결정된 세그먼트일 수 있다. 궤적 문턱값은 이미지 포착 및 모델링 동작들의 개시 이전에 결정될 수 있다. 어떤 경우에, 궤적 문턱값은 모델 생성 시스템(150)의 구성 프로세스 동안에 결정될 수 있다. 일부 실시예들에서, 궤적 문턱값은 모델링되는 객체에 기초하여 경험적으로(heuristically) 결정될 수 있다. 어떤 경우에, 궤적 문턱값은 이미지 폭의 일부분으로서 결정된다. 예를 들어, 궤적 문턱값은 이미지 폭 또는 이미지 포착 디바이스의 시야의 0.5% 내지 10%와 동일한 거리일 수 있다.

동작(1640)에서, 위치 변화에 기초하여, 위치 컴포넌트(240)는 하나 이상의 얼굴 추적 점들이 제2 위치를 갖는 제2 키 프레임을 식별한다. 제2 키 프레임은 하나 이상의 얼굴 추적 점들이 예상된 위치(예컨대, 제2 위치)로부터 미리 결정된 근접거리 내에 있는 것에 기초하여 결정될 수 있다. 위치 컴포넌트(240)가 평균 길이가 궤적 문턱값을 초과한다고 결정하는 실시예들에서, 동작(1636)에서와 같이, 평균 길이가 궤적 문턱값을 초과한다는 결정에 기초하여 제2 키 프레임이 식별될 수 있다.

일부 실시예들에서, 초기 키 프레임으로부터 제2 키 프레임(예컨대, 새로운 키 프레임)까지 지속되는(예컨대, 연장되는) 궤적들을 갖는 하나 이상의 얼굴 추적 점들은 초기 키 프레임 및 제2 키 프레임 둘 다에서의 측정들을 기록하는 데 사용된다. 지속적 측정들은 키 프레임에서의 특정의 관심 점의 관측된 2차원 위치를 명시할 수 있다. 처음 2개의 키 프레임들에 대해 이미지 포착 디바이스의 가정된 3D 포즈들을 사용하여, 관심 점들의 3D 위치들의 초기 추정치가 각각의 관심 점과 연관된 2개의 측정들을 삼각측량(triangulate)하는 것에 의해 계산된다.

키 프레임 포즈들 및 3D 관심 점 위치들의 초기 추정치들을 사용하여, 위치 컴포넌트(240)는 제2 키 프레임의 포즈는 물론 관심 점들의 3D 위치들을 미세조정(refine)하기 위해 번들 조정(bundle adjustment)을 수행할 수 있다. 번들 조정 동안, 키 프레임들에서의 관심 점들의 재투영 오차(reprojection error)를 이론적으로 최소화하는 방식으로 3D 키 프레임 포즈들 및 3D 관심 점 위치들을 함께(jointly) 최적화하기 위해 강건한 비선형 최소 제곱 최적화가 수행될 수 있다. 재투영 오차는 키 프레임들에서의 관심 점들의 2차원 투영된 위치들과 관측된 실제 2차원 측정들 간의 거리로서 정의될 수 있다.

도 17은 일부 예시적인 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3D 모델들을 생성 및 조작하는 방법(1700)의 동작들을 수행함에 있어서의 모델 생성 시스템(150)의 동작들의 플로차트이다. 도 17에 도시된 동작들은, 본원에 기술되는 컴포넌트들을 사용하여, 모델 생성 시스템(150)에 의해 수행될 수 있다. 일부 실시예들에서, 도 17에 도시된 바와 같이, 방법(1700)은 앞서 기술된 방법(300)의 일부로서 또는 그의 서브동작들로서 수행될 수 있다.

동작(1710)에서, 위치 컴포넌트(240)는 궤적들을 따라 하나 이상의 얼굴 추적 점들의 하나 이상의 위치 변화들에 기초하여 하나 이상의 후속 키 프레임들을 식별한다. 하나 이상의 후속 키 프레임들은 도 16과 관련하여 기술된 제1 키 프레임 및 제2 키 프레임과 유사하게 또는 그와 동일하게 결정될 수 있다. 일부 실시예들에서, 위치 컴포넌트(240)에 의해 식별된 후속 키 프레임들의 수는 객체에 기초하여 미리 결정될 수 있다. 예를 들어, 객체가 얼굴인 경우, 얼굴은 얼굴 추적 점들의 세트에 대한 초기 위치와 최종 위치 사이의 거리에 대응하는 예상된 움직임 범위(예컨대, 목의 회전(turn))를 가질 수 있다. 얼굴의 주어진 측면에 대한 후속 키 프레임들의 수를 결정하기 위해 초기 위치와 최종 위치 사이의 거리가 똑같게 분할될 수 있다.

어떤 경우에, 가장 새로운 키 프레임(예컨대, 가장 최근에 생성된 제2 키 프레임 또는 후속 키 프레임)이 현재 참조 키 프레임(current reference key frame)으로서 사용될 수 있다. 위치 컴포넌트(240)는 참조 키 프레임에서의 각각의 기존 측정에 대한 트랙들을 초기화한다. 새로운 트랙들이 또한 앞서 기술된 동일한 관심 점 검출 방법을 사용하여 초기화될 수 있다. 새로운 트랙들이 기존 트랙들로부터 소정 거리만큼 떨어진 관심 점들에서 초기화될 수 있다.

동작(1720)에서, 제1 키 프레임, 제2 키 프레임, 및 하나 이상의 후속 키 프레임들에 기초하여, 위치 컴포넌트(240)는 모바일 컴퓨팅 디바이스의 상대 3D 위치 추정치(relative 3D position estimate)들의 세트를 생성한다. 상대 위치 추정치들의 세트는 모델링되는 객체(예컨대, 얼굴)에 대한 모바일 컴퓨팅 디바이스의 상대 위치를 나타낼 수 있다. 위치 컴포넌트(240)는 각각의 키 프레임(예컨대, 제1 키 프레임, 제2 키 프레임, 및 하나 이상의 후속 키 프레임들)의 상대 위치 추정치들의 세트의 상대 위치 추정치를 생성할 수 있다. 상대 위치 추정치들의 세트는 이전 프레임으로부터의 3D 카메라 포즈 추정치를 사용하여 현재 이미지 프레임에서 추적되고 있지 않는 알려진 3D 위치들을 갖는 관심 점들의 식별을 가능하게 할 수 있다. 이 발견 동작은 2개의 프레임들 사이에서 손실된 관심 점들을 재포착(recapture)하는 것을 가능하게 할 수 있다.

어떤 경우에, 상대 위치 추정치들의 세트는 키 프레임들을 식별하는 데 사용될 수 있다. 이 경우에, 현재 프레임의 상대 위치 추정치가 다음 목표 상대 위치 추정치와 비교될 수 있다. 상대 위치 추정치가 다음 목표 상대 위치 추정치로부터 미리 결정된 근접거리 내에 들어갈 때, 위치 컴포넌트(240)는 새로운 키 프레임을 식별하고 목표 상대 위치 추정치에 근접한 상대 위치 추정치와 함께 현재 이미지 프레임을 사용하여 새로운 키 프레임을 기록한다. 새로운 키 프레임 내의 각각의 추적된 관심 점에 대한 측정들이 기록될 수 있다. 이전에 3D 위치들을 갖지 않았던 관심 점들(예컨대, 가장 최근의 키 프레임에서의 새로 식별된 관심 점들)에 대해, 참조 키 프레임과 새로운 키 프레임 사이의 에피폴라 제약조건(epipolar constraint)의 충족을 보장하기 위해 트랙들(예컨대, 각각의 새로운 관심 점에 대한 궤적)이 필터링될 수 있다. 에피폴라 제약조건을 충족시키는 트랙들이 참조 키 프레임(예컨대, 이전에 식별된 키 프레임)과 새로운 키 프레임 둘 다에서의 측정들을 생성하는 데 사용될 수 있다. 연관된 관심 점들의 3D 위치들이 기준 키 프레임 및 새로운 키 프레임에서의 측정들 간의 삼각측량(triangulation)을 사용하여 초기화될 수 있다.

일부 실시예들에서, 새로운 키 프레임을 식별한 후에, 새로운 키 프레임을 포함하여 그 이전에 식별된 키 프레임들에 대해 하나 이상의 조정 프로세스들이 수행될 수 있다. 하나 이상의 조정 프로세스들은, 앞서 기술된 바와 같이, 번들 조정일 수 있다. 번들 조정은 키 프레임 상대 3D 위치들 및 관심 점들의 3D 위치들의 추정치들을 개선시키거나 미세조정할 수 있다. 새로운 키 프레임이 기록될 때마다, 새로운 키 프레임을 포함하여 그 이전의 모든 키 프레임 포즈들 및 3D 관심 점 위치들의 추정치들을 함께 미세조정하기 위해 번들 조정이 수행될 수 있다.

동작(1730)에서, 제1 키 프레임, 제2 키 프레임, 하나 이상의 후속 키 프레임들, 및 상대 위치 추정치들의 세트에 기초하여, 모델링 컴포넌트(250)는 깊이 맵(depth map)들의 세트를 생성한다. 일부 실시예들에서, 상대 깊이 맵들의 세트는 각각의 키 프레임에 대한 깊이 맵을 포함한다. 키 프레임들의 세트 및 3D 관심 점들(예컨대, 얼굴 추적 점들 및 궤적들)이 주어지면, 모델링 컴포넌트(250)는 다시점 스테레오(multi-view stereo) 기법들을 사용하여 키 프레임들 중 하나 이상에 대한 2.5 차원 깊이 맵들을 생성한다.

일부 실시예들에서, 깊이 맵 추정은 평면-스위프 스테레오(plane-sweep stereo)에 의해 수행된다. 이 실시예들에서, 참조 키 프레임의 이미지 프레임과 하나 이상의 다른 키 프레임들의 하나 이상의 다른 이미지 프레임들 사이의 사진 일관성(photo consistency)이 깊이 맵에서의 각각의 픽셀에 대해 미리 결정된 수의 이산 깊이(discrete depth)들에서 계산된다. 시점들 사이의 최상의 사진 일관성을 생성하는 각각의 깊이 맵 픽셀에 대한 깊이를 선택하는 것에 의해 최종 깊이 맵이 생성될 수 있다.

어떤 경우에, 깊이 맵들의 세트를 생성하기 전에, 모델링 컴포넌트(250)는 키 프레임들에 대한 이미지 프레임들을 전처리(preprocess)한다. 전처리는 텍스처(texture) 및 휘도(luminance) 둘 다를 인코딩하는 이미지 프레임들의 표현을 생성할 수 있다. 주어진 픽셀에 대해, 모델링 컴포넌트(250)는 픽셀 주위의 5x5 패치(patch)를 샘플링한다. 모델링 컴포넌트(250)는 각각의 비중심 픽셀(non-central pixel)의 휘도를 패치의 평균 휘도와 비교함으로써 24-비트 이진 서명(binary signature)을 계산한다. 적색, 녹색, 청색, 알파(RGBA) 텍스처에 저장되고 GPU(graphics processing unit) 상에서의 단일 텍스처 룩업(texture lookup)으로 샘플링될 수 있는 32-비트 값을 제공하기 위해, 휘도와 평균 휘도의 비교가 중심 픽셀(central pixel)의 8-비트 휘도와 결합된다. 모델링 컴포넌트(250)는 이진 서명 상에서의 해밍 거리(Hamming distance)와 휘도 상에서의 유클리드 거리(Euclidian distance)를 조합하는 것에 의해 2개의 이러한 값들 사이의 사진 일관성을 계산할 수 있다.

강건한 사진 일관성 값들을 생성하기 위해 이웃하는 픽셀들로부터 사진 일관성 값들이 풀링(pool)될 수 있다. 예를 들어, 모델링 컴포넌트(250)는 주어진 깊이에서 3x3 패치 내의 이웃하는 픽셀들로부터 사진 일관성 값들을 풀링할 수 있다. 강건한 사진 일관성 값들이 평면 스위프(plane-sweep) 동안 결정될 수 있다. 일부 실시예들에서, 모델링 컴포넌트(250)는 2 패스 평면 스위프 스테레오(two pass plane-sweep stereo)를 생성한다. 이 경우에, 모델링 컴포넌트(250)는, 앞서 기술된 바와 같이, 제1 패스 평면 스위프를 사용하여 깊이 맵을 생성한다. 제1 패스는 이어서 이전에 생성된 깊이 맵 주위의 보다 작은 깊이 범위에 걸쳐 모델링 컴포넌트(250)에 의한 후속 평면 스위프를 위한 시작점으로서 사용될 수 있다. 후속 평면 스위프는 깊이 맵에서의 각각의 픽셀에 대한 깊이 범위를 수정할 수 있다.

일부 실시예들에서, 주어진 키 프레임에서의 3D 관심 점들의 측정들은 깊이 맵 생성을 안내하는 데 사용될 수 있다. 모델링 컴포넌트(250)는 깊이 맵 생성 동안 선택된 영역들에 대한 초기화 또는 제약조건들을 제공할 수 있다. 깊이 맵들이 또한 노이즈를 감소시키기 위해 후처리(post-process)될 수 있다. 모델링 컴포넌트(250)에 의한 후처리는 키 프레임들 사이의 일관성 검사(consistency check)들을 포함할 수 있다. 모델링 컴포넌트(250)의 후처리 동작들은 메디안 필터링(median filtering), 양방향 필터링(bilateral filtering), 노이즈 제거(de-noising)에 기초한 총 변동(total variation), 및 깊이 맵 값들을 형성하는 키 프레임들 사이의 조건부 랜덤 필드 라벨링(conditional random field labeling)을 추가로 포함할 수 있다.

어떤 경우에, 동작(1730)은 서브동작들의 세트를 포함한다. 깊이 맵들의 세트를 생성함에 있어서 모델링 컴포넌트(250)에 의해 생성된 각각의 깊이 맵에 대해 동작(1730)의 서브동작들이 수행될 수 있다. 동작(1732)에서, 모델링 컴포넌트(250)는 제1 분해능을 갖는 제1 깊이 맵을 생성한다.

동작(1734)에서, 모델링 컴포넌트(250)는 제2 분해능을 갖는 제2 깊이 맵을 생성한다. 어떤 경우에, 제2 분해능은 제1 깊이 맵의 제1 분해능보다 더 높은 분해능이다. 일부 실시예들에서, 모델링 컴포넌트(250)는 2개 초과의 깊이 맵들을 생성할 수 있다. 모델링 컴포넌트(250)는 미리 결정된 횟수만큼, 미리 결정된 분해능에 도달할 때까지, 또는 임의의 적당한 분해능을 위한 임의의 반복 횟수만큼, 점점 더 높은 분해능을 갖는 깊이 맵들을 생성할 수 있다.

도 18은 일부 예시적인 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3D 모델들을 생성 및 조작하는 방법(1800)의 동작들을 수행함에 있어서의 모델 생성 시스템(150)의 동작들의 플로차트이다. 도 18에 도시된 동작들은, 본원에 기술되는 컴포넌트들을 사용하여, 모델 생성 시스템(150)에 의해 수행될 수 있다. 일부 실시예들에서, 도 18에 도시된 바와 같이, 방법(1800)은 앞서 기술된 방법(1700)의 일부로서 또는 그의 서브동작들로서 수행될 수 있다.

동작(1810)에서, 모델링 컴포넌트(250)는 얼굴의 3D 모델을 생성하기 위해 깊이 맵들의 세트를 융합시킨다. 어떤 경우에, 모델링 컴포넌트(250)는 2.5 차원 깊이 맵들을 객체(예컨대, 얼굴)의 단일 3D 표면 모델로 결합시킨다.

동작(1820)에서, 모델링 컴포넌트(250)는 얼굴의 3D 모델에 대한 체적 3D 그리드(volumetric 3D grid)를 정의한다. 깊이 맵들을 결합시킴에 있어서, 모델링 컴포넌트(250)는 체적 3D 그리드에 걸쳐 TSDF(truncated signed distance function)를 정의한다. 개별적인 동작들로 기술되어 있지만, 어떤 경우에, TSDF를 갖는 체적 3D 그리드가 깊이 맵들을 단일 3D 모델로 융합시키기 위한 단일 접근법이도록 동작들(1810 및 1820)이 단일 동작에서 수행된다.

동작(1830)에서, 모델링 컴포넌트(250)는 체적 3D 그리드 내에 3D 모델의 3D 표면을 표현한다. 그리드에서의 각각의 요소(예컨대, 복셀(voxel))는 3D 표면의 내부 또는 외부로서 식별되고, -1과 1 사이의 스칼라 값으로서 저장된다. 값의 부호는 복셀이 3D 표면의 내부에 또는 외부에 있는지를 정의한다. 3D 표면은 양수 값들과 음수 값들 사이의 경계에 의해 암시적으로 정의될 수 있다.

일부 실시예들에서, 각각의 키 프레임에 대해 생성된 깊이 맵들은 3D 모델의 표면의 추정치를 제공할 수 있다. 모델링 컴포넌트(250)는 깊이 맵들을 체적 3D 그리드에 걸친 시점 특정 TSDF(view specific TSDF)로 변환할 수 있다. 체적 3D 그리드에서의 각각의 복셀에서 TSDF 값들의 히스토그램을 누적하기 위해 각각의 깊이 맵의 TSDF가 집계될 수 있다. TSDF 값들의 히스토그램은 생성된 깊이 맵들에 따른 추정치들의 요약으로서 기능한다. 모델링 컴포넌트(250)는 평탄도(smoothness)를 증진시키기 위해 히스토그램 데이터와 정규화 전략(regularization strategy) 둘 다를 고려하는 각각의 복셀에서의 단일 TSDF 값을 추정하기 위해 TSDF 값들의 히스토그램에 대해 이론적 최적화를 수행할 수 있다. 일부 실시예들에서, 모델링 컴포넌트(250)는 L1 데이터 항(L1 data term) 및 총 변동 정규화(total variation regularization)를 사용하고, 그 결과 노이즈가 많은 깊이 맵 데이터에 강건한 표면이 얻어진다. 게다가, 표면은 평탄하고 작은 고립 표면 영역(isolated surface region)들을 최소화한다. 이 최적화 접근법은 또한 GPU 구현에 적당하여, 최적화 작업을 실제로 효율적이도록 만든다. 어떤 경우에, 최적화된 TSDF에 의해 정의된 표면은 마칭 큐브(marching cubes) 또는 Bloomenthal의 방법과 같은 암시적 표면 다각형화 알고리즘을 사용하여 다각형 표면 메시(polygonal surface mesh)로 변환될 수 있다.

어떤 경우에, 깊이 맵들은 조밀 깊이 맵(dense depth map)들일 수 있고 모델의 3D 표면을 메시로서 표현할 수 있다. 3D 표면은 푸아송(Poisson) 표면 재구성 동작들을 사용하여 구성될 수 있다.

도 19는 일부 예시적인 실시예들에 따른, 그래픽 사용자 인터페이스 내에서 3D 모델들을 생성 및 조작하는 방법(1900)의 동작들을 수행함에 있어서의 모델 생성 시스템(150)의 동작들의 플로차트이다. 도 19에 도시된 동작들은, 본원에 기술되는 컴포넌트들을 사용하여, 모델 생성 시스템(150)에 의해 수행될 수 있다. 일부 실시예들에서, 도 19에 도시된 바와 같이, 방법(1900)은 앞서 기술된 방법(1800)의 일부로서 또는 그의 서브동작들로서 수행될 수 있다.

동작(1910)에서, 모델링 컴포넌트(250)는 얼굴 메시(facial mesh)를 식별한다. 얼굴 메시는 다각형들의 세트 및 다각형들의 세트를 연결시키는 정점들의 세트를 포함할 수 있다. 정점들의 세트는 얼굴 추적 점들의 세트를 나타낼 수 있다. 일부 실시예들에서, 얼굴 메시는 고정된 수의 정점들 및 다각형면(polygonal face)들을 포함한다. 이 메시에서의 특정 정점들 및 면(face)들은 "코끝", "입의 왼쪽 가장자리", "왼쪽 눈의 내부", 및 다른 적당한 특징들과 같은 특정의 얼굴 특징들에 대응하는 것으로서 라벨링되어 있을 수 있다. 이 특징들은 키 프레임 이미지들 중 일부 또는 전부에 수동 또는 자동으로 표시(mark)될 수 있다.

동작(1920)에서, 모델링 컴포넌트(250)는 얼굴의 3D 모델을 피팅(fit)하기 위해 얼굴 메시의 하나 이상의 부분들을 변형(deform)시킨다. 모델링 컴포넌트(250)는 폴리곤들의 세트의 2개 이상의 폴리곤들을 연결시키는 하나 이상의 정점들을 이동시키는 것에 의해 얼굴 메시를 변형시킬 수 있다. 하나 이상의 정점들이 앞서 기술된 동작(1820)에서 정의된 체적 3D 그리드 내의 얼굴 추적 점들의 세트의 하나 이상의 얼굴 추적 점들의 위치에 대응하도록 이동될 수 있다.

일부 실시예들에서, 얼굴 메시의 부분들을 변형시키는 것은 모델링 컴포넌트(250)에 의해 최적화로서 수행될 수 있다. 변형은 하나 이상의 제약조건들에 따라 얼굴 메시에서의 정점들의 위치들을 조정한다. 예를 들어, 얼굴 메시의 표면은, 표면이 깊이 맵들로부터 생성된 3D 모델의 표면으로부터 미리 결정된 근접거리 내에 있도록, 변형될 수 있다. 어떤 경우에, 얼굴 메시 정점들(예컨대, 얼굴 랜드마크 표현들)이 3D 모델 상의 얼굴 추적 점들(예컨대, 관심 점들)에 근접한 키 프레임들의 이미지 프레임들 내에 투영되도록 변형된다. 얼굴 메시는 또한 얼굴의 전체적 형상이 3D 모델 및 얼굴 메시 내에서 보존되도록 수정될 수 있다. 일부 실시예들에서, 얼굴 메시는 UV 맵을 포함한다. UV 맵은 얼굴의 텍스처 맵이 키 프레임들의 이미지 프레임들을 피팅된 얼굴 메시 상에 투영하는 것에 의해 구성될 수 있게 할 수 있다.

일부 실시예들에서, 3D 모델의 생성 후에, 모델 생성 시스템(150)은 3D 모델을 데이터 저장 플랫폼(예컨대, 네트워크화된 시스템(102))에 전송할 수 있다. 스캔 이미지 데이터를 포착하는 데 사용되는 디바이스는, 모바일 컴퓨팅 디바이스(예컨대, 클라이언트 디바이스(110))와 같은, 최종 사용자 애플리케이션과 연관된다. 최종 사용자 애플리케이션은 3D 모델 데이터를 네트워크(104)를 통해 네트워크화된 시스템(102)에 전송하라고 모델 생성 시스템(150)에 지시한다. 모델 생성 시스템(150)은 또한 클라이언트 디바이스(110) 상의 최종 사용자 애플리케이션에 의한 사용을 위해 네트워크화된 시스템(102)으로부터 3D 얼굴 모델 데이터를 검색할 수 있다. 어떤 경우에, 3D 모델을 생성하기 위한 데이터 전부가 또한 전송될 수 있어, 모델 재구성 프로세스가 향후에(at a future time) 또는 보다 강력한 컴퓨팅 장비, 컴퓨터 아키텍처(예컨대, 비제한적 예에서, 클라우드 서버 또는 클라우드 네트워크 내에서), 또는 컴퓨팅 방법들을 사용하여 수행될 수 있게 한다. 3D 모델 데이터는 본원에서 추가로 논의되지 않을 공지된 인코딩, 최적화 또는 다른 데이터 전송 기법들을 통해 전송 시간을 최소화하기 위해 전송을 위해 최적화될 수 있다. 데이터는 최종 사용자(106) 또는 최종 사용자(106)를 대신하여 허가된 제3자에 의해 향후에 용이하게 검색될 수 있기 위해 최종 사용자(106)와 연관된 하나 이상의 계정 식별자(account identifier)들에 링크될 수 있다.

일부 실시예들에서, 모델 생성 시스템(150)은 또한 최종 사용자 애플리케이션을 채우기(populate) 위해 최종 사용자의 3D 모델 데이터를 검색할 수 있다. 최종 사용자(106)가 네트워크화된 시스템(102)에게 송신되는 하나 이상의 얼굴 모델들을 포착하는 데 사용된 클라이언트 디바이스(110)와는 별개인 제2 디바이스 상에 최종 사용자 애플리케이션을 설치하면, 모델 생성 시스템(150)은 식별된 모델 데이터를 검색할 수 있다. 모델 데이터의 검색 시에, 모델 생성 시스템(150)은 검색된 모델을 제시할 수 있거나 검색된 얼굴 모델을 제2 디바이스 상에서 조작하기 위해 얼굴 데이터에 액세스할 수 있다.

3D 모델들에 부가하여, 모델 생성 시스템(150)은 2.5 차원 모델들을 생성할 수 있다. 어떤 경우에, 2.5D 모델들은 시야 내의 지정된 객체들의 3D 모델들과 결합하여 생성될 수 있다. 도 20 및 도 21에 도시된 바와 같이, 검출 컴포넌트(220)는 이미지 포착 디바이스의 시야 내의 장면 내에서 객체 또는 관심 점들을 검출할 수 있다. 통지 컴포넌트(230)는 장면의 다중 각도들의 포착을 가능하게 하기 위해 클라이언트 디바이스(110)의 이동을 나타내는 사용자 인터페이스 요소들 및 명령어들을 생성할 수 있다. 도시된 바와 같이, 어떤 경우에, 명령어들은 단일 방향에서의 이동을 나타낸다. 일부 실시예들에서, 명령어들은 복수의 방향들에서의 이동을 나타낸다.

위치 컴포넌트(240)는 장면 내에서 식별된 하나 이상의 관심 점들에 대한 클라이언트 디바이스(110)의 위치 변화들을 검출할 수 있다. 모델링 컴포넌트(250)는 장면의 3D 또는 2.5D 모델을 생성할 수 있다. 모델링 컴포넌트(250)가 2.5D 모델을 생성하는 경우에, 2.5D 모델은 시야에 대해 생성된 단일 깊이 맵일 수 있다. 도 20 및 도 21과 관련하여 기술되는 동작들은, 방법(300) 및 앞서 기술된 다른 방법들에서 기술된 바와 같은, 관심 객체 또는 얼굴과 관련하여 기술된 동작들과 유사하게 또는 그와 동일하게 수행될 수 있다.

장면에 대한 모델이 객체에 대한 3D 모델과 함께 생성되는 실시예들에서, 장면에 대한 모델은 객체에 대한 3D 모델과 동시에 또는 그와 별도로 생성될 수 있다. 예를 들어, 통지 컴포넌트(230)에 의해 생성된 명령어는 객체와 장면이 정적 위치에 있는 동안 클라이언트 디바이스(110)를 하나 이상의 방향들로 이동시키라고 지시할 수 있다. 일부 실시예들에서, 모델 생성 시스템(150)은, 객체의 이동 대신에 이미지 포착 디바이스의 이동을 사용하여, 앞서 기술된 바와 같이, 시야 내의 객체를 식별 및 포착할 수 있다. 모델 생성 시스템(150)은 이어서 장면을 포착할 수 있다. 모델 생성 시스템(150)은 이어서 객체의 3D 모델 및 객체에 대한 배경으로서의 장면의 2.5D 모델을 생성할 수 있다.

어떤 경우에, 모델 생성 시스템(150)은 관심 객체의 이동을 사용하여 방법(300)에서 기술된 바와 같이 시야 내의 객체를 식별 및 포착한다. 관심 객체의 포착 이후에, 통지 컴포넌트(230)는 클라이언트 디바이스(110)의 이동에 대한 명령어들을 생성하고 장면을 포착할 수 있다. 모델 생성 시스템(150)은 관심 객체의 3D 모델 및 관심 객체 후방의 배경에서의 장면의 2.5D 모델을 개별적으로 생성할 수 있다.

다양한 예시적인 실시예들에 따르면, 본원에 기술되는 방법들 중 하나 이상의 방법들은 모바일 컴퓨팅 디바이스 또는 이미지 포착 디바이스의 안내된 이동에 기초한 3D 모델들의 생성 및 조작을 용이하게 할 수 있다. 3D 모델들을 생성하고 수정하는 방법들은 3D 모델을 포착 및 생성하기 위해 객체의 적당한 이동에 관련된 모델링 파라미터들을 자동으로 결정한다. 방법들은 추가로 3D 모델들의 적절한 생성을 보장하기 위해 사용자 상호작용을 안내하고 정정하도록 구성된 명령어 세트들 및 사용자 인터페이스 요소들을 자동으로 생성한다. 그에 따라, 본원에 기술되는 방법들 중 하나 이상의 방법들은 기반 모델링 데이터(underlying modeling data)를 제3자 모델링 프로그램 또는 조직에게 전송하지 않고 사용자가 객체들, 얼굴들 및 장면들의 명확하고 정확한 3D 모델들을 생성할 수 있게 하는 효과를 가질 수 있다. 게다가, 본원에 기술되는 방법들은 3D 모델들을 생성하는 데 필요한 시간, 비용 및 컴퓨팅 자원들을 감소시키는 효과를 가질 수 있다. 본원에 기술되는 방법들은 또한 제3자 시스템들 또는 제품들에의 직접 통합을 위해 완성된 3D 모델들의 렌더링 및 전송을 가능하게 할 수 있다.

컴포넌트들 및 로직

특정 실시예들이 본원에서 로직 또는 다수의 컴포넌트들 또는 메커니즘들을 포함하는 것으로서 기술된다. 컴포넌트들은 소프트웨어 컴포넌트들(예컨대, 머신 판독가능 매체 상에 구현된 코드) 또는 하드웨어 컴포넌트들 중 하나를 구성할 수 있다. "하드웨어 컴포넌트"는 특정 동작들을 수행할 수 있는 유형적 유닛(tangible unit)이고, 특정 물리적 방식으로 구성되거나 배열될 수 있다. 다양한 예시적인 실시예들에서, 하나 이상의 컴퓨터 시스템들(예컨대, 독립형 컴퓨터 시스템, 클라이언트 컴퓨터 시스템, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 컴포넌트들(예컨대, 프로세서 또는 일군의 프로세서들)은 본원에 기술되는 바와 같이 특정 동작들을 수행하기 위해 동작하는 하드웨어 컴포넌트로서 소프트웨어(예컨대, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.

일부 실시예들에서, 하드웨어 컴포넌트는 기계적으로, 전자적으로, 또는 이들의 임의의 적당한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 컴포넌트는 특정 동작들을 수행하도록 영구적으로 구성된 전용 회로부 또는 로직을 포함할 수 있다. 예를 들어, 하드웨어 컴포넌트는, FPGA(Field-Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은, 특수 목적 프로세서일 수 있다. 하드웨어 컴포넌트는 또한 특정 동작들을 수행하기 위해 소프트웨어에 의해 일시적으로 구성되는 프로그래밍가능 로직 또는 회로부를 포함할 수 있다. 예를 들어, 하드웨어 컴포넌트는 범용 프로세서 또는 다른 프로그래밍가능 프로세서에 의해 실행되는 소프트웨어를 포함할 수 있다. 이러한 소프트웨어에 의해 구성되면, 하드웨어 컴포넌트들은 구성된 기능들을 수행하도록 독자적으로 맞춤화된(uniquely tailored) 특정 머신들(또는 머신의 특정 컴포넌트들)이 되고 더 이상 범용 프로세서들이 아니다. 하드웨어 컴포넌트를 기계적으로, 전용의 영구적으로 구성된 회로부에, 또는 일시적으로 구성된 회로부(예컨대, 소프트웨어에 의해 구성됨)에 구현하기로 하는 결정이 비용 및 시간 고려사항들에 의해 주도될 수 있다는 것을 잘 알 것이다.

그에 따라, "하드웨어 컴포넌트"라는 문구는, 엔티티가 특정의 방식으로 동작하도록 또는 본원에 기술되는 특정 동작들을 수행하도록 물리적으로 구성되든, 영구적으로 구성(예컨대, 하드와이어링)되든 또는 일시적으로 구성(예컨대, 프로그래밍)되든 간에, 유형적 엔티티를 포함하는 것으로 이해되어야 한다. 본원에서 사용되는 바와 같이, "하드웨어 구현 컴포넌트"는 하드웨어 컴포넌트를 지칭한다. 하드웨어 컴포넌트들이 일시적으로 구성(예컨대, 프로그래밍)되는 실시예들을 생각할 때, 하드웨어 컴포넌트들 각각이 임의의 하나의 시간 인스턴스에서 구성 또는 인스턴스화될 필요는 없다. 예를 들어, 하드웨어 컴포넌트가 특수 목적 프로세서가 되도록 소프트웨어에 의해 구성된 범용 프로세서를 포함하는 경우에, 범용 프로세서는 상이한 때에 (예컨대, 상이한 하드웨어 컴포넌트들을 포함하는) 각각 상이한 특수 목적 프로세서들로서 구성될 수 있다. 소프트웨어는 그에 따라, 예를 들어, 하나의 시간 인스턴스에서는 특정의 하드웨어 컴포넌트를 구성하고 상이한 시간 인스턴스에서는 상이한 하드웨어 컴포넌트를 구성하도록 특정의 프로세서 또는 프로세서들을 구성한다.

하드웨어 컴포넌트들은 다른 하드웨어 컴포넌트들에게 정보를 제공하고 그들로부터 정보를 수신할 수 있다. 그에 따라, 기술된 하드웨어 컴포넌트들은 통신가능하게 결합되어 있는 것으로 간주될 수 있다. 다수의 하드웨어 컴포넌트들이 동시에 존재하는 경우에, 하드웨어 컴포넌트들 중 2개 이상 간의 또는 그들 사이의 (예컨대, 적절한 회로들 및 버스들을 통한) 신호 전송을 통해 통신이 달성될 수 있다. 다수의 하드웨어 컴포넌트들이 상이한 때에 구성되거나 인스턴스화되는 실시예들에서, 이러한 하드웨어 컴포넌트들 간의 통신은, 예를 들어, 다수의 하드웨어 컴포넌트들이 액세스할 수 있는 메모리 구조물들 내의 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 컴포넌트는 동작을 수행하고, 그에 통신가능하게 결합되는 메모리 디바이스에 그 동작의 출력을 저장할 수 있다. 추가의 하드웨어 컴포넌트는 이어서, 추후에, 저장된 출력을 검색 및 처리하기 위해 메모리 디바이스에 액세스할 수 있다. 하드웨어 컴포넌트들은 또한 입력 또는 출력 디바이스들과 통신을 개시할 수 있고, 자원(예컨대, 정보의 컬렉션)을 처리할 수 있다.

본원에 기술되는 예시적인 방법들의 다양한 동작들이 관련 동작들을 수행하도록 (예컨대, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성되는 하나 이상의 프로세서들에 의해, 적어도 부분적으로, 수행될 수 있다. 일시적으로 또는 영구적으로 구성되든 간에, 이러한 프로세서들은 본원에 기술되는 하나 이상의 동작들 또는 기능들을 수행하도록 동작하는 프로세서 구현 컴포넌트들을 구성할 수 있다. 본원에서 사용되는 바와 같이, "프로세서 구현 컴포넌트"는 하나 이상의 프로세서들을 사용하여 구현된 하드웨어 컴포넌트를 지칭한다.

이와 유사하게, 본원에 기술되는 방법들은 적어도 부분적으로 프로세서 구현될(processor-implemented) 수 있고, 특정의 프로세서 또는 프로세서들은 하드웨어의 일 예이다. 예를 들어, 방법의 동작들 중 적어도 일부가 하나 이상의 프로세서들 또는 프로세서 구현 컴포넌트들에 의해 수행될 수 있다. 더욱이 하나 이상의 프로세서들은 또한 "클라우드 컴퓨팅" 환경에서 또는 "Saas(software as a service)"로서 관련 동작들의 수행을 지원하도록 동작할 수 있다. 예를 들어, 동작들 중 적어도 일부는 (프로세서들을 포함하는 머신들의 예들로서) 일군의 컴퓨터들에 의해 수행될 수 있고, 이 동작들은 네트워크(예컨대, 인터넷)를 통해 그리고 하나 이상의 적절한 인터페이스들(예컨대, API들)을 통해 액세스가능하다.

동작들 중 일부의 수행이, 단일 머신 내에 존재할 뿐만 아니라 다수의 머신들에 걸쳐 설치되어 있는, 프로세서들 간에 분산될 수 있다. 일부 예시적인 실시예들에서, 프로세서들 또는 프로세서-구현 컴포넌트들은 단일의 지리적 위치에(예컨대, 가정 환경, 사무실 환경, 또는 서버 팜(server farm) 내에) 위치될 수 있다. 다른 예시적인 실시예들에서, 프로세서들 또는 프로세서 구현 컴포넌트들이 다수의 지리적 위치들에 걸쳐 분산될 수 있다.

머신 및 소프트웨어 아키텍처

도 2 내지 도 21과 관련하여 기술된 컴포넌트들, 방법들, 애플리케이션들 등은 일부 실시예들에서 머신 및 관련 소프트웨어 아키텍처와 관련하여 구현된다. 다양한 실시예들에서, 앞서 기술된 컴포넌트들, 방법들, 애플리케이션들 등은, 네트워크에 걸쳐 분산되고 네트워크를 통해 통신하는, 복수의 머신들, 및 하나 이상의 관련 소프트웨어 아키텍처들과 관련하여 구현된다. 이하의 섹션들은 개시된 실시예들에서 사용하기에 적당한 대표적인 소프트웨어 아키텍처(들) 및 머신(예컨대, 하드웨어) 아키텍처를 기술한다.

소프트웨어 아키텍처들은, 하드웨어 아키텍처들과 함께, 특정 목적들에 따라 맞춤화된 디바이스들 및 머신들을 생성하는 데 사용된다. 예를 들어, 특정의 소프트웨어 아키텍처와 결합된 특정의 하드웨어 아키텍처는, 휴대폰, 태블릿 디바이스 등과 같은, 모바일 디바이스를 생성할 것이다. 약간 상이한 하드웨어 및 소프트웨어 아키텍처는 "사물 인터넷(internet of things)"에서 사용하기 위한 스마트 디바이스(smart device)를 생성할 수 있지만, 또 다른 조합은 클라우드 컴퓨팅 아키텍처 내에서 사용하기 위한 서버 컴퓨터를 생성한다. 본 기술분야의 통상의 기술자가 본원에 포함된 개시내용과 상이한 상황들에서 본 실시예들을 어떻게 구현해야 하는지를 쉽게 이해할 수 있기 때문에, 이러한 소프트웨어 및 하드웨어 아키텍처들의 모든 조합들이 여기에 다 제시되지는 않는다.

소프트웨어 아키텍처

도 22는 본원에 기술되는 다양한 하드웨어 아키텍처들과 함께 사용될 수 있는 대표적인 소프트웨어 아키텍처(2202)를 나타내는 블록도(2200)이다. 도 22는 소프트웨어 아키텍처의 비제한적 예에 불과하고 많은 다른 아키텍처들이 본원에 기술되는 기능을 용이하게 하기 위해 구현될 수 있다는 것을 이해할 것이다. 소프트웨어 아키텍처(2202)는, 그 중에서도 특히, 프로세서(2310), 메모리(2330), 및 입출력(I/O) 컴포넌트들(2350)을 포함하는 도 23의 머신(2300)과 같은 하드웨어 상에서 실행될 수 있다. 대표적인 하드웨어 계층(2204)이 예시되어 있으며, 예를 들어, 도 22의 블록도(2200)에 의해 표현된 머신을 나타낼 수 있다. 대표적인 하드웨어 계층(2204)은 관련 실행가능 명령어들(2208)을 갖는 하나 이상의 처리 유닛들(2206)을 포함한다. 실행가능 명령어들(2208)은, 도 2 내지 도 21의 방법들, 컴포넌트들 등의 구현을 포함하는, 소프트웨어 아키텍처(2202)의 실행가능 명령어들을 나타낸다. 하드웨어 계층(2204)은 또한, 실행가능 명령어들(2208)을 역시 갖는, 메모리 및/또는 저장 컴포넌트들(2210)을 포함한다. 하드웨어 계층(2204)은 또한, 머신(2300)의 일부로서 예시된 다른 하드웨어와 같은, 하드웨어 계층(2204)의 임의의 다른 하드웨어를 나타내는 2212로 표시된 바와 같은 다른 하드웨어를 포함할 수 있다.

도 22의 예시적인 아키텍처에서, 소프트웨어 아키텍처(2202)는, 각각의 계층이 특정의 기능을 제공하는, 계층들의 스택(stack)으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(2202)는 운영 체제(2214), 라이브러리들(2216), 프레임워크들/미들웨어(2218), 애플리케이션들(2220), 및 프레젠테이션 계층(presentation layer)(2244)과 같은 계층들을 포함할 수 있다. 동작 중에, 계층들 내의 애플리케이션들(2220) 및/또는 다른 컴포넌트들은 소프트웨어 스택을 통해 API 호출(API call)들(2224)을 호출(invoke)하고 API 호출들(2224)에 응답하여 메시지들(2226)로서 예시된 응답, 반환 값(returned value)들 등을 수신할 수 있다. 예시된 계층들은 본질적으로 대표적인 것이며 소프트웨어 아키텍처들 모두가 모든 계층들을 갖는 것은 아니다. 예를 들어, 일부 모바일 또는 특수 목적 운영 체제들은 프레임워크들/미들웨어 계층(2218)을 제공하지 않을 수 있는 반면, 다른 것들은 이러한 계층을 제공할 수 있다. 다른 소프트웨어 아키텍처들은 부가의 또는 상이한 계층들을 포함할 수 있다.

운영 체제(2214)는 하드웨어 자원들을 관리하고 공통 서비스들을 제공할 수 있다. 운영 체제(2214)는, 예를 들어, 커널(2228), 서비스들(2230), 및 드라이버들(2232)을 포함할 수 있다. 커널(2228)은 하드웨어와 다른 소프트웨어 계층들 사이의 추상화 계층(abstraction layer)으로서 기능할 수 있다. 예를 들어, 커널(2228)은 메모리 관리, 프로세서 관리(예컨대, 스케줄링), 컴포넌트 관리, 네트워킹, 보안 설정 등을 맡고 있을 수 있다. 서비스들(2230)은 다른 소프트웨어 계층들에 대한 다른 공통 서비스들을 제공할 수 있다. 드라이버들(2232)은 기반 하드웨어(underlying hardware)를 제어하거나 그와 인터페이싱하는 일을 맡고 있을 수 있다. 예를 들어, 드라이버들(2232)은 하드웨어 구성에 따라 디스플레이 드라이버들, 카메라 드라이버들, Bluetooth® 드라이버들, 플래시 메모리 드라이버들, 직렬 통신 드라이버들(예컨대, USB(Universal Serial Bus) 드라이버들), Wi-Fi® 드라이버들, 오디오 드라이버들, 전력 관리 드라이버들 등을 포함할 수 있다.

라이브러리들(2216)은 애플리케이션들(2220) 및/또는 다른 컴포넌트들 및/또는 계층들에 의해 이용될 수 있는 공통 인프라스트럭처를 제공할 수 있다. 라이브러리들(2216)은 전형적으로 다른 소프트웨어 컴포넌트들이 기반 운영 체제(underlying operating system)(2214) 기능(예컨대, 커널(2228), 서비스들(2230) 및/또는 드라이버들(2232))과 직접 인터페이싱하는 것보다 더 용이한 방식으로 작업들을 수행할 수 있게 하는 기능을 제공한다. 라이브러리들(2216)은 메모리 할당 함수(memory allocation function)들, 문자열 조작 함수(string manipulation function)들, 수학 함수(mathematic function)들 등과 같은 함수들을 제공할 수 있는 시스템 (2234) 라이브러리들(예컨대, C 표준 라이브러리)를 포함할 수 있다. 또한, 라이브러리들(2216)은 미디어 라이브러리들(예컨대, MPEG4(Moving Pictures Experts Group 4), H.264, MP3, AAC(Advanced Audio Coding), AMR(Adaptive Multi-Rate), JPEG(Joint Photographic Experts Group), PNG(Portable Network Graphics)와 같은 다양한 미디어 포맷의 제시 및 조작을 지원하는 라이브러리들)과 같은 API 라이브러리들(2236), 그래픽 라이브러리들(예컨대, 그래픽 콘텐츠에서의 2차원들 및 3차원들을 디스플레이 상에 렌더링하는 데 사용될 수 있는 OpenGL 프레임워크), 데이터베이스 라이브러리들(예컨대, 다양한 관계형 데이터베이스 함수들을 제공할 수 있는 SQLite), 웹 라이브러리들(예컨대, 웹 브라우징 기능을 제공할 수 있는 WebKit) 등을 포함할 수 있다. 라이브러리들(2216)은 또한 많은 다른 API들을 애플리케이션들(2220) 및 다른 소프트웨어 컴포넌트들에게 제공하기 위해 매우 다양한 기타 라이브러리들(2238)을 포함할 수 있다.

프레임워크들(2218)(때로는 미들웨어라고도 지칭됨)은 애플리케이션들(2220) 및/또는 다른 소프트웨어 컴포넌트들에 의해 이용될 수 있는 상위 레벨 공통 인프라스트럭처를 제공할 수 있다. 예를 들어, 프레임워크들(2218)은 다양한 그래픽 사용자 인터페이스 기능들, 상위 레벨 자원 관리, 상위 레벨 위치 서비스들 등을 제공할 수 있다. 프레임워크들(2218)은 애플리케이션들(2220) 및/또는 다른 소프트웨어 컴포넌트들에 의해 이용될 수 있는 광범위한 다른 API들을 제공할 수 있으며, 이들 중 일부는 특정의 운영 체제 또는 플랫폼에 전유(specific)될 수 있다. 일부 예시적인 실시예들에서, 모델 생성 컴포넌트들(2219)(예컨대, 모델 생성 시스템(150)의 하나 이상의 컴포넌트들)은 미들웨어/프레임워크들(2218) 내에서 적어도 부분적으로 구현될 수 있다. 예를 들어, 어떤 경우에, 그래픽 및 비-그래픽 사용자 인터페이스 기능들을 제공하는 프레젠테이션 컴포넌트(210)의 적어도 일부분은 미들웨어/프레임워크들(2218)에서 구현될 수 있다. 이와 유사하게, 일부 예시적인 실시예들에서, 프레젠테이션 컴포넌트(210), 통지 컴포넌트(230), 모델링 컴포넌트(250), 및 모델 검토 컴포넌트(260) 중 하나 이상의 컴포넌트들의 부분들은 미들웨어/프레임워크들(2218)에서 구현될 수 있다.

애플리케이션들(2220)은 빌트인 애플리케이션(built-in application)들(2240), 제3자 애플리케이션들(2242), 및/또는 모델 생성 컴포넌트들(2243)(예컨대, 모델 생성 시스템(150)의 컴포넌트들 중 하나 이상의 컴포넌트들의 사용자 대면 부분(user facing portion)들)을 포함한다. 대표적인 빌트인 애플리케이션들(2240)의 예들은 연락처 애플리케이션, 브라우저 애플리케이션, 북 리더 애플리케이션(book reader application), 위치 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션, 및/또는 게임 애플리케이션을 포함할 수 있지만, 이들로 제한되지 않는다. 제3자 애플리케이션들(2242)은 빌트인 애플리케이션들은 물론 아주 다양한 다른 애플리케이션들 중 임의의 것을 포함할 수 있다. 특정 예에서, 제3자 애플리케이션(2242)(예컨대, 특정의 플랫폼의 벤더 이외의 엔티티에 의해 Android™ 또는 iOS™ SDK(software development kit)를 사용하여 개발된 애플리케이션)은 iOS™, Android™, Windows® Phone, 또는 다른 모바일 운영 체제들과 같은 모바일 운영 체제 상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(2242)은 본원에 기술되는 기능을 용이하게 하기 위해 운영 체제(2214)와 같은 모바일 운영 체제에 의해 제공되는 API 호출들(2224)을 호출할 수 있다. 다양한 예시적인 실시예들에서, 모델 생성 컴포넌트들(2243)의 사용자 대면 부분들은 도 2와 관련하여 기술된 하나 이상의 컴포넌트들 또는 컴포넌트들의 부분들을 포함할 수 있다. 예를 들어, 어떤 경우에, 사용자 인터페이스 요소들(예컨대, 데이터 입력 및 데이터 출력 기능들)과 연관된 프레젠테이션 컴포넌트(210), 검출 컴포넌트(220), 통지 컴포넌트(230), 위치 컴포넌트(240), 모델링 컴포넌트(250), 및 모델 검토 컴포넌트(260)의 부분들이 애플리케이션의 형태로 구현될 수 있다.

애플리케이션들(2220)은 시스템의 사용자들과 상호작용하는 사용자 인터페이스들을 생성하기 위해 빌트인 운영 체제 기능(built in operating system function)들(예컨대, 커널(2228), 서비스들(2230), 및/또는 드라이버들(2232)), 라이브러리들(예컨대, 시스템(2234), API들(2236), 및 기타 라이브러리들(2238)), 프레임워크들/미들웨어(2218)를 이용할 수 있다. 대안적으로 또는 그에 부가하여, 일부 시스템들에서, 사용자와의 상호작용들은, 프레젠테이션 계층(2244)과 같은, 프레젠테이션 계층을 통해 이루어질 수 있다. 이 시스템들에서, 애플리케이션/컴포넌트 "로직"은 사용자와 상호작용하는 애플리케이션/컴포넌트의 양태들과 분리될 수 있다.

일부 소프트웨어 아키텍처들은 가상 머신들을 이용한다. 도 22의 예에서, 이것은 가상 머신(2248)에 의해 예시되어 있다. 가상 머신은 애플리케이션들/컴포넌트들이 하드웨어 머신(예를 들어, 도 23의 머신 등) 상에서 실행되고 있는 것처럼 실행될 수 있는 소프트웨어 환경을 생성한다. 가상 머신은 호스트 운영 체제(도 22에서의 운영 체제(2214))에 의해 호스팅되고, 전형적으로, 항상은 아니지만, 가상 머신의 동작은 물론 호스트 운영 체제(즉, 운영 체제(2214))와의 인터페이스를 관리하는 가상 머신 모니터(virtual machine monitor)(2246)를 갖는다. 운영 체제(2250), 라이브러리들(2252), 프레임워크들/미들웨어(2254), 애플리케이션들(2256) 및/또는 프레젠테이션 계층(2258)과 같은 소프트웨어 아키텍처가 가상 머신 내에서 실행된다. 가상 머신(2248) 내에서 실행되는 이 소프트웨어 아키텍처 계층들은 이전에 기술된 대응하는 계층들과 동일할 수도 있거나 상이할 수 있다.

예시적인 머신 아키텍처 및 머신 판독가능 매체

도 23은 머신 판독가능 매체(예컨대, 비일시적 머신 판독가능 저장 매체)로부터 명령어들(예컨대, 프로세서 실행가능 명령어들)을 판독하고 본원에서 논의되는 방법들 중 임의의 하나 이상의 방법들을 수행할 수 있는, 일부 예시적인 실시예들에 따른, 머신(2300)의 컴포넌트들을 예시한 블록도이다. 구체적으로, 도 23은 컴퓨터 시스템의 예시적인 형태의 머신(2300)의 개략적 표현을 도시하고 있으며, 그 내에서 머신(2300)으로 하여금 본원에서 논의되는 방법들 중 임의의 하나 이상의 방법들을 수행하게 하기 위한 명령어들(2316)(예컨대, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 또는 다른 실행가능 코드)이 실행될 수 있다. 예를 들어, 명령어들은 머신으로 하여금 도 3 및 도 16 내지 도 19의 흐름도들을 실행하게 할 수 있다. 그에 부가하여 또는 대안적으로, 명령어들은 도 2 내지 도 21의 프레젠테이션 컴포넌트(210), 검출 컴포넌트(220), 통지 컴포넌트(230), 위치 컴포넌트(240), 모델링 컴포넌트(250), 및 모델 검토 컴포넌트(260) 등을 구현할 수 있다. 명령어들은 프로그래밍되지 않은 일반 머신을 기술되고 예시된 기능들을 기술된 방식으로 수행하도록 프로그래밍된 특정의 머신으로 변환한다.

대안의 실시예들에서, 머신(2300)은 독립형 디바이스로서 동작하거나, 네트워크화된 시스템에서의 다른 머신들에 결합(예컨대, 네트워크로 연결)될 수 있다. 네트워크화된 배포(networked deployment)에서, 머신(2300)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신으로서, 또는 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(2300)은 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스, 엔터테인먼트 미디어 시스템, 웹 어플라이언스(web appliance), 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(2300)에 의해 취해질 동작들을 명시하는 명령어들(2316)을, 순차적으로 또는 다른 방식으로, 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이들로 제한되지 않는다. 일부 예시적인 실시예들에서, 네트워크화된 배포에서, 하나 이상의 머신들이 앞서 기술된 컴포넌트들의 적어도 일부분을 구현할 수 있다. 머신(2300)과 상호작용하는 하나 이상의 머신들은 PDA, 엔터테인먼트 미디어 시스템, 셀룰러 전화(cellular telephone), 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예컨대, 스마트 워치(smart watch)), 스마트 홈 디바이스(예컨대, 스마트 어플라이언스(smart appliance)), 및 다른 스마트 디바이스들을 포함할 수 있지만, 이들로 제한되지 않는다. 게다가, 단일 머신(2300)만이 예시되어 있지만, "머신"이라는 용어는 또한 본원에서 논의되는 방법들 중 임의의 하나 이상의 방법들을 수행하기 위해 명령어들(2316)을 개별적으로 또는 공동으로 실행하는 머신들(2300)의 컬렉션을 포함하는 것으로 보아야 한다.

머신(2300)은 버스(2302) 등을 통해 서로 통신하도록 구성될 수 있는 프로세서(2310), 메모리(2330), 및 I/O 컴포넌트들(2350)을 포함할 수 있다. 예시적인 실시예에서, 프로세서들(2310)(예컨대, CPU(Central Processing Unit)), RISC(Reduced Instruction Set Computing) 프로세서, CISC(Complex Instruction Set Computing) 프로세서, GPU, DSP(Digital Signal Processor), ASIC, RFIC(Radio-Frequency Integrated Circuit), 다른 프로세서, 또는 이들의 임의의 적절한 조합)은, 예를 들어, 명령어들(2316)을 실행할 수 있는 프로세서(2312) 및 프로세서(2314)를 포함할 수 있다. "프로세서"라는 용어는 명령어들을 동시에 실행할 수 있는 2개 이상의 독립적 프로세서들(때때로 "코어들"이라고 지칭됨)을 포함할 수 있는 다중-코어 프로세서(multi-core processor)를 포함하는 것으로 의도되어 있다. 도 23이 다수의 프로세서들을 도시하고 있지만, 머신(2300)은 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예컨대, 멀티코어 프로세스), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.

메모리/저장소(2330)는, 메인 메모리, 또는 다른 메모리 저장소와 같은, 메모리(2332) 및 저장 유닛(2336) - 둘 다 버스(2302) 등을 통해 프로세서들(2310)에 의해 액세스가능함 - 을 포함할 수 있다. 저장 유닛(2336) 및 메모리(2332)는 본원에 기술되는 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들(2316)을 저장한다. 명령어들(2316)은 또한, 머신(2300)에 의한 그들의 실행 동안, 메모리(2332) 내에, 저장 유닛(2336) 내에, 프로세서들(2310) 중 적어도 하나 내에(예컨대, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합으로 존재할 수 있다. 그에 따라, 메모리(2332), 저장 유닛(2336), 및 프로세서들(2310)의 메모리는 머신 판독가능 매체의 예들이다.

본원에서 사용되는 바와 같이, "머신 판독가능 매체"는 명령어들 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 디바이스를 의미하며, RAM(random-access memory), ROM(read-only memory), 버퍼 메모리, 플래시 메모리, 광학 매체, 자기 매체, 캐시 메모리, 다른 유형들의 저장소(예컨대, EEPROM(Erasable Programmable Read-Only Memory)) 및/또는 이들의 임의의 적당한 조합을 포함할 수 있지만, 이들로 제한되지 않는다. "머신 판독가능 매체"라는 용어는 명령어들(2316)을 저장할 수 있는 단일 매체 또는 다수의 매체들(예컨대, 중앙집중형 또는 분산형 데이터베이스, 또는 관련 캐시들 및 서버들)을 포함하는 것으로 보아야 한다. "머신 판독가능 매체"라는 용어는 또한, 명령어들이, 머신(2300)의 하나 이상의 프로세서들(예컨대, 프로세서들(2310))에 의해 실행될 때, 머신(2300)으로 하여금 본원에 기술되는 방법들 중 임의의 하나 이상의 방법들을 수행하게 하도록, 머신(예컨대, 머신(2300))에 의해 실행하기 위한 명령어들(예컨대, 명령어들(2316))을 저장할 수 있는 임의의 매체 또는 다수의 매체들의 조합을 포함하는 것으로 보아야 한다. 그에 따라, "머신 판독가능 매체"는 단일 저장 장치 또는 디바이스는 물론, 다수의 저장 장치들 또는 디바이스들을 포함하는 "클라우드 기반" 저장소 시스템(storage system)들 또는 저장소 네트워크(storage network)들을 지칭한다. "머신 판독가능 매체"라는 용어는 신호들 자체를 배제한다.

I/O 컴포넌트들(2350)은 입력을 수신하고, 출력을 제공하며, 출력을 생성하고, 정보를 전송하며, 정보를 교환하고, 측정들을 포착하는 등을 위한 매우 다양한 컴포넌트들을 포함할 수 있다. 특정의 머신에 포함되는 특정 I/O 컴포넌트들(2350)은 머신의 유형에 의존할 것이다. 예를 들어, 휴대폰들과 같은 휴대용 머신들은 터치 입력 디바이스 또는 다른 이러한 입력 메커니즘들을 포함할 가능성이 있을 것인 반면, 헤드리스 서버 머신(headless server machine)은 이러한 터치 입력 디바이스를 포함하지 않을 가능성이 있을 것이다. I/O 컴포넌트들(2350)이 도 23에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있다는 것을 알 것이다. I/O 컴포넌트들(2350)은 단지 이하의 논의를 간략화하기 위해 기능에 따라 그룹화되어 있고, 그룹화는 결코 제한하는 것이 아니다. 다양한 예시적인 실시예들에서, I/O 컴포넌트들(2350)은 출력 컴포넌트들(2352) 및 입력 컴포넌트들(2354)을 포함할 수 있다. 출력 컴포넌트들(2352)은 비주얼 컴포넌트들(예컨대, PDP(plasma display panel), LED(light emitting diode) 디스플레이, LCD(liquid crystal display), 프로젝터, 또는 CRT(cathode ray tube)와 같은 디스플레이), 음향 컴포넌트들(예컨대, 스피커들), 햅틱 컴포넌트들(예컨대, 진동 모터, 저항 메커니즘들), 다른 신호 생성기들 등을 포함할 수 있다. 입력 컴포넌트들(2354)는 영숫자 입력 컴포넌트들(예컨대, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-옵티컬 키보드(photo-optical keyboard), 또는 다른 영숫자 입력 컴포넌트들), 포인트 기반 입력 컴포넌트들(예컨대, 마우스, 터치패드, 트랙볼, 움직임 센서, 또는 다른 포인팅 기구), 촉각 입력 컴포넌트들(예컨대, 물리적 버튼, 터치들 또는 터치 제스처들의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 다른 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예컨대, 마이크로폰) 등을 포함할 수 있다.

추가의 예시적인 실시예들에서, I/O 컴포넌트들(2350)은, 매우 다양한 다른 컴포넌트들 중에서, 생체측정 컴포넌트(biometric component)들(2356), 움직임 컴포넌트들(2358), 환경 컴포넌트들(2360), 또는 위치 컴포넌트(position component)들(2362)을 포함할 수 있다. 예를 들어, 생체측정 컴포넌트들(2356)는 표현들(예컨대, 손 표현(hand expression)들, 얼굴 표현(facial expression)들, 음성 표현(vocal expression)들, 보디 제스처(body gesture)들, 또는 눈 추적)을 검출하는, 생체신호(biosignal)들(예컨대, 혈압, 심박수, 체온, 발한(perspiration) 또는 뇌파)을 측정하는, 사람을 식별하는(예컨대, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌파 기반 식별(electroencephalogram based identification)), 기타를 하는 컴포넌트들을 포함할 수 있다. 움직임 컴포넌트들(2358)은 가속도 센서 컴포넌트들(예컨대, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예컨대, 자이로스코프) 등을 포함할 수 있다. 환경 컴포넌트들(2360)은, 예를 들어, 조명 센서 컴포넌트들(예컨대, 광도계), 온도 센서 컴포넌트들(예컨대, 주변 온도를 검출하는 하나 이상의 온도계들), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예컨대, 기압계), 음향 센서 컴포넌트들(예컨대, 배경 잡음을 검출하는 하나 이상의 마이크로폰들), 근접 센서 컴포넌트들(예컨대, 근방의 객체들을 검출하는 적외선 센서들), 가스 센서들(예컨대, 안전을 위해 유해 가스들의 농도들을 검출하거나 대기 중의 오염물질들을 측정하는 가스 검출 센서들), 또는 주변 물리적 환경에 대응하는 표시들, 측정들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함할 수 있다. 위치 컴포넌트들(2362)은 위치 센서 컴포넌트(location sensor component)들(예컨대, GPS 수신기 컴포넌트), 고도 센서 컴포넌트들(예컨대, 기압 - 이로부터 고도가 도출될 수 있음 - 을 검출하는 고도계들 또는 기압계들), 배향 센서 컴포넌트들(예컨대, 자력계들) 등을 포함할 수 있다.

통신은 매우 다양한 기술들을 사용하여 구현될 수 있다. I/O 컴포넌트들(2350)은 커플링(coupling)(2382) 및 커플링(2372)을 통해, 각각, 머신(2300)을 네트워크(2380) 또는 디바이스들(2370)에 결합시키기 위해 동작가능한 통신 컴포넌트들(2364)을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(2364)은 네트워크(2380)와 인터페이싱하기 위한 네트워크 인터페이스 컴포넌트 또는 다른 적당한 디바이스를 포함할 수 있다. 추가의 예들에서, 통신 컴포넌트들(2364)는 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, 근거리 무선 통신(NFC) 컴포넌트들, Bluetooth® 컴포넌트들(예컨대, Bluetooth® Low Energy), Wi-Fi® 컴포넌트들, 및 다른 모달리티(modality)들을 통해 통신을 제공하는 다른 통신 컴포넌트들을 포함할 수 있다. 디바이스들(2370)은 다른 머신 또는 매우 다양한 주변 디바이스들 중 임의의 것(예컨대, USB를 통해 결합된 주변 디바이스)일 수 있다.

더욱이, 통신 컴포넌트들(2364)은 식별자들을 검출할 수 있거나 식별자들을 검출하기 위해 동작가능한 컴포넌트들을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(2364)은 RFID(Radio Frequency Identification) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들(예컨대, UPC(Universal Product Code) 바코드와 같은 1차원 바코드들, QR(Quick Response) 코드, Aztec 코드, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D 바코드와 같은 다차원 바코드, 및 다른 광학 코드들을 검출하는 광학 센서), 또는 음향 검출 컴포넌트들(예컨대, 태깅된 오디오 신호(tagged audio signal)들을 식별하는 마이크로폰들)을 포함할 수 있다. 그에 부가하여, IP(Internet Protocol) 지리적 위치(geo-location)를 통한 위치, Wi-Fi® 신호 삼각측량을 통한 위치, 특정의 위치를 표시할 수 있는 NFC 비콘 신호를 검출하는 것을 통한 위치 등과 같은 다양한 정보가 통신 컴포넌트들(2364)을 통해 도출될 수 있다.

전송 매체

다양한 예시적인 실시예들에서, 네트워크(2380)의 하나 이상의 부분들은 애드혹 네트워크, 인트라넷, 엑스트라넷, VPN, LAN, WLAN, WAN, WWAN, MAN, 인터넷, 인터넷의 일부분, PSTN의 일부분, POTS(plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크들의 조합일 수 있다. 예를 들어, 네트워크(2380) 또는 네트워크(2380)의 일부분은 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(2382)은 CDMA(Code Division Multiple Access) 연결, GSM(Global System for Mobile communications) 연결, 또는 다른 유형의 셀룰러 또는 무선 커플링을 포함할 수 있다. 이 예에서, 커플링(2382)은 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G, 4G(fourth generation) 무선 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준을 비롯한 3GPP(third Generation Partnership Project), 다양한 표준화 기구(standard setting organization)들에 의해 정의된 다른 표준들, 다른 장거리(long range) 프로토콜들, 또는 다른 데이터 전송 기술와 같은, 다양한 유형의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.

명령어들(2316)은 네트워크 인터페이스 디바이스(예컨대, 통신 컴포넌트들(2364)에 포함된 네트워크 인터페이스 컴포넌트)를 통해 전송 매체를 사용하여 그리고 다수의 널리 공지된 전송 프로토콜들(예컨대, HTTP(hypertext transfer protocol)) 중 임의의 것을 이용하여 네트워크(2380)를 거쳐 전송 또는 수신될 수 있다. 이와 유사하게, 명령어들(2316)은 디바이스들(2370)에 대한 커플링(2372)(예컨대, 피어-투-피어 커플링)을 통해 전송 매체를 사용하여 전송 또는 수신될 수 있다. "전송 매체"라는 용어는 머신(2300)에 의해 실행하기 위한 명령어들(2316)을 저장하거나, 인코딩하거나, 담고 있을 수 있고 이러한 소프트웨어의 전달을 용이하게 하는 디지털 또는 아날로그 통신 신호들 또는 다른 무형적 매체(intangible medium)를 포함하는 임의의 무형적 매체를 포함하는 것으로 보아야 한다.

언어

본 명세서 전체에 걸쳐, 복수형 인스턴스(plural instance)들은 단일 인스턴스로서 기술된 컴포넌트들, 동작들 또는 구조들을 구현할 수 있다. 하나 이상의 방법들의 개개의 동작들이 개별적인 동작들로서 예시되고 기술되어 있지만, 개개의 동작들 중 하나 이상이 동시에 수행될 수 있으며, 동작들이 예시된 순서대로 수행될 필요는 없다. 예시적인 구성들에서 개별적인 컴포넌트들로서 제시된 구조들 및 기능은 결합된 구조 또는 컴포넌트로 구현될 수 있다. 이와 유사하게, 단일 컴포넌트로서 제시된 구조들 및 기능이 개별적인 컴포넌트들로서 구현될 수 있다. 이들 및 다른 변형들, 수정들, 부가들, 및 개선들은 본원에서의 발명 요지의 범주 내에 있다.

본 발명 요지의 개요가 특정 예시적인 실시예들을 참조하여 기술되어 있지만, 본 개시내용의 실시예들의 보다 넓은 범주를 벗어나지 않으면서 이 실시예들에 대해 다양한 수정들 및 변경들이 이루어질 수 있다. 본 발명 요지의 이러한 실시예들은 본원에서, 개별적으로 또는 전체적으로, 단지 편의상 그리고, 하나 초과의 발명 또는 발명 개념이 실제로 개시되어 있더라도, 본 출원의 범주를 임의의 단일의 개시내용 또는 발명 개념으로 자발적으로 제한하려고 의도함이 없이 "발명"이라는 용어에 의해 지칭될 수 있다.

본 기술분야의 통상의 기술자가 개시된 교시내용을 실시할 수 있게 하기 위해 본원에 예시된 실시예들이 충분히 상세히 기술되어 있다. 본 개시내용의 범주를 벗어나지 않고 구조적 및 논리적 치환들 및 변경들이 이루어질 수 있도록, 다른 실시예들이 사용되고 그 실시예들로부터 도출될 수 있다. 따라서, 발명을 실시하기 위한 구체적인 내용이 제한하는 의미로 해석되어서는 안되고, 다양한 실시예들의 범주는, 첨부된 청구항들의 자격을 가지는 등가물들의 전체 범주와 함께, 첨부된 청구항들에 의해서만 한정된다.

본원에서 사용되는 바와 같이, "또는(or)"이라는 용어는 포함적 또는 배타적 의미로 해석될 수 있다. 더욱이, 본원에서 단일 인스턴스로서 기술되는 자원들, 동작들, 또는 구조들에 대해 복수형 인스턴스들이 제공될 수 있다. 그에 부가하여, 다양한 자원들, 동작들, 컴포넌트들, 엔진들, 및 데이터 저장소들 간의 경계들은 얼마간 임의적이며, 특정의 동작들은 특정 예시적인 구성들과 관련하여 예시되어 있다. 기능의 다른 할당들이 생각되고 본 개시내용의 다양한 실시예들의 범주 내에 속할 수 있다. 일반적으로, 예시적인 구성들에서 개별적인 자원들로서 제시된 구조들 및 기능이 결합된 구조 또는 자원으로서 구현될 수 있다. 이와 유사하게, 단일 자원으로서 제시된 구조들 및 기능이 개별적인 자원들로서 구현될 수 있다. 이들 및 다른 변형들, 수정들, 부가들, 및 개선들은 첨부된 청구항들에 의해 나타내어지는 본 개시내용의 실시예들의 범주 내에 속한다. 그에 따라, 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 방법으로서,
    모바일 컴퓨팅 디바이스의 이미지 포착 디바이스의 시야(field of view) 내에서 객체를 검출하는 단계;
    상기 이미지 포착 디바이스의 상기 시야 내에서 시작 위치에 대한 상기 객체의 제1 위치 변화 및 제2 위치 변화에 각각 대응하는 제1 및 제2 키 프레임을 식별하는 단계;
    상기 식별된 제1 및 제2 키 프레임에 기초하여 제1 및 제2 분해능을 각각 갖는 제1 및 제2 깊이 맵을 생성하는 단계; 및
    상기 제1 및 제2 깊이 맵에 기초하여 상기 객체의 3차원 모델을 생성하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 객체는 얼굴을 포함하고,
    상기 방법은,
    상기 얼굴 상의 얼굴 추적 점들의 세트(set of facial tracking points)를 식별하는 단계;
    상기 제1 위치 변화 및 상기 제2 위치 변화 중 하나 이상을 검출한 것에 응답하여, 그래픽 사용자 인터페이스 프레임 내의 상기 얼굴 상에 상기 얼굴 추적 점들의 세트의 그래픽 표현들을 생성하는 단계; 및
    상기 제1 위치 변화 및 상기 제2 위치 변화를 검출하는 지속기간 동안 상기 얼굴 상에 상기 얼굴 추적 점들의 세트의 상기 그래픽 표현들을 제시시키는 단계
    를 추가로 포함하는 방법.
  3. 제1항에 있어서,
    상기 제1 위치 변화는 제1 초기 위치 및 제1 최종 위치를 갖는 예상 위치 변화이고,
    상기 제1 위치 변화는 중간 위치들의 제1 세트를 가지며,
    상기 제1 초기 위치, 상기 중간 위치들의 제1 세트, 및 상기 제1 최종 위치는 상기 객체의 제1 측면과 연관되어 있는, 방법.
  4. 제3항에 있어서,
    상기 제2 위치 변화는 제2 초기 위치 및 제2 최종 위치를 갖는 예상 위치 변화이고,
    상기 제2 위치 변화는 중간 위치들의 제2 세트를 가지며,
    상기 제2 초기 위치, 상기 중간 위치들의 제2 세트, 및 상기 제2 최종 위치는 상기 객체의 상기 제1 측면의 반대쪽에 있는 상기 얼굴의 제2 측면과 연관되어 있는, 방법.
  5. 제1항에 있어서,
    상기 이미지 포착 디바이스의 상기 시야 내에서 상기 객체 상의 추적 점들의 세트를 식별하는 단계;
    상기 추적 점들의 세트가 제1 위치들의 세트를 갖는 상기 제1 키 프레임을 식별하는 단계;
    상기 제1 위치들의 세트로부터 상기 추적 점들의 세트의 하나 이상의 추적 점들의 위치 변화를 결정하는 단계; 및
    상기 위치 변화에 기초하여, 상기 하나 이상의 추적 점들이 제2 위치를 갖는 상기 제2 키 프레임을 식별하는 단계를 추가로 포함하는 방법.
  6. 제5항에 있어서,
    상기 하나 이상의 추적 점들의 상기 위치 변화를 결정하는 단계는:
    상기 하나 이상의 추적 점들의 상기 위치 변화의 개시에 응답하여, 상기 하나 이상의 추적 점들 각각에 대한 궤적을 식별하는 단계;
    상기 하나 이상의 추적 점들의 상기 궤적들의 평균 길이를 결정하는 단계; 및
    상기 평균 길이가 궤적 문턱값을 초과한다고 결정하는 단계를 추가로 포함하는, 방법.
  7. 제6항에 있어서,
    상기 제2 키 프레임은 상기 평균 길이가 상기 궤적 문턱값을 초과한다고 결정한 것에 기초하여 식별되는, 방법.
  8. 제6항에 있어서,
    상기 궤적들을 따라 상기 하나 이상의 추적 점들의 하나 이상의 위치 변화들에 기초하여 하나 이상의 후속 키 프레임들을 식별하는 단계; 및
    상기 제1 키 프레임, 상기 제2 키 프레임, 및 상기 하나 이상의 후속 키 프레임들에 기초하여, 상기 객체에 대한 상기 모바일 컴퓨팅 디바이스의 상대 위치 추정치들의 세트를 생성하는 단계 - 상기 상대 위치 추정치들의 세트 중의 상대 위치 추정치가 각각의 키 프레임에 대해 생성됨 -
    를 추가로 포함하는 방법.
  9. 제8항에 있어서,
    상기 제1 키 프레임, 상기 제2 키 프레임, 상기 하나 이상의 후속 키 프레임들, 및 상기 상대 위치 추정치들의 세트에 기초하여, 각각의 키 프레임에 대한 깊이 맵을 포함하는 깊이 맵들의 세트를 생성하는 단계를 추가로 포함하는 방법.
  10. 제9항에 있어서,
    상기 객체의 상기 3차원 모델을 생성하기 위하여 상기 깊이 맵들의 세트를 융합하는 단계;
    상기 객체의 상기 3차원 모델에 대한 체적 3D 그리드(volumetric three-dimensional grid)를 정의하는 단계; 및
    상기 3차원 모델의 3D 표면을 표현하는 단계
    를 추가로 포함하는 방법.
  11. 제10항에 있어서,
    폴리곤들의 세트 및 상기 폴리곤들의 세트를 연결시키는 정점들의 세트를 갖는 메시를 식별하는 단계 - 상기 정점들의 세트는 상기 추적 점들의 세트를 나타냄 -; 및
    상기 폴리곤들의 세트의 2개 이상의 폴리곤들을 연결시키는 하나 이상의 정점들을 이동시킴으로써 상기 3차원 모델을 피팅(fit)하기 위해 상기 메시의 하나 이상의 부분들을 변형시키는 단계
    를 추가로 포함하는 방법.
  12. 제1항에 있어서,
    상기 제2 깊이 맵의 상기 제2 분해능은 상기 제1 깊이 맵의 상기 제1 분해능보다 더 큰, 방법.
  13. 시스템으로서,
    하나 이상의 프로세서들;
    상기 하나 이상의 프로세서들에 동작가능하게 결합된(operative coupled) 이미지 포착 디바이스; 및
    상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 프로세서 실행가능 명령어들을 저장하는 비일시적 프로세서 판독가능 저장 매체
    를 포함하고, 상기 동작들은:
    모바일 컴퓨팅 디바이스의 이미지 포착 디바이스의 시야 내에서 객체를 검출하는 동작;
    상기 이미지 포착 디바이스의 상기 시야 내에서 시작 위치에 대한 상기 객체의 제1 및 제2 위치 변화에 각각 대응하는 제1 및 제2 키 프레임을 식별하는 동작;
    상기 식별된 제1 및 제2 키 프레임에 기초하여 제1 및 제2 분해능을 각각 갖는 제1 및 제2 깊이 맵을 생성하는 동작; 및
    상기 제1 및 제2 깊이 맵에 기초하여 상기 객체의 3차원 모델을 생성하는 동작
    을 포함하는, 시스템.
  14. 제13항에 있어서,
    상기 동작들은,
    상기 이미지 포착 디바이스의 상기 시야 내에서 상기 객체 상의 추적 점들의 세트를 식별하는 동작;
    상기 추적 점들의 세트가 제1 위치들의 세트를 갖는 상기 제1 키 프레임을 식별하는 동작;
    상기 제1 위치들의 세트로부터 상기 추적 점들의 세트의 하나 이상의 추적 점들의 위치 변화를 결정하는 동작; 및
    상기 위치 변화에 기초하여, 상기 하나 이상의 추적 점들이 제2 위치를 갖는 제2 키 프레임을 식별하는 동작
    을 추가로 포함하는, 시스템.
  15. 제14항에 있어서,
    상기 동작들은,
    상기 하나 이상의 추적 점들의 상기 위치 변화의 개시에 응답하여, 상기 하나 이상의 추적 점들 각각에 대한 궤적을 식별하는 동작;
    상기 하나 이상의 추적 점들의 상기 궤적들의 평균 길이를 결정하는 동작; 및
    상기 평균 길이가 궤적 문턱값을 초과한다고 결정하는 동작
    을 추가로 포함하는, 시스템.
  16. 제15항에 있어서,
    상기 동작들은:
    상기 궤적들을 따라 상기 하나 이상의 추적 점들의 하나 이상의 위치 변화들에 기초하여 하나 이상의 후속 키 프레임들을 식별하는 동작;
    상기 제1 키 프레임, 상기 제2 키 프레임, 및 상기 하나 이상의 후속 키 프레임들에 기초하여, 상기 객체에 대한 상기 모바일 컴퓨팅 디바이스의 상대 위치 추정치들의 세트를 생성하는 동작 - 상기 상대 위치 추정치들의 세트 중의 상대 위치 추정치가 각각의 키 프레임에 대해 생성됨 -; 및
    상기 제1 키 프레임, 상기 제2 키 프레임, 상기 하나 이상의 후속 키 프레임들, 및 상기 상대 위치 추정치들의 세트에 기초하여, 각각의 키 프레임에 대한 깊이 맵을 포함하는 깊이 맵들의 세트를 생성하는 동작
    을 추가로 포함하는, 시스템.
  17. 제16항에 있어서,
    상기 동작들은:
    상기 객체의 상기 3차원 모델을 생성하기 위해 상기 깊이 맵들의 세트를 융합시키는 동작;
    상기 객체의 상기 3차원 모델에 대한 체적 3차원 그리드를 정의하는 동작; 및
    상기 3차원 모델의 3차원 표면을 표현하는 동작
    을 추가로 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 동작들은:
    폴리곤들의 세트 및 상기 폴리곤들의 세트를 연결시키는 정점들의 세트를 갖는 메시를 식별하는 동작 - 상기 정점들의 세트는 상기 추적 점들의 세트를 나타냄 -; 및
    상기 폴리곤들의 세트의 2개 이상의 폴리곤들을 연결시키는 하나 이상의 정점들을 이동시킴으로써 상기 3차원 모델을 피팅하기 위해 상기 메시의 하나 이상의 부분들을 변형시키는 동작
    을 추가로 포함하는, 시스템.
  19. 모바일 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 상기 모바일 컴퓨팅 디바이스로 하여금 동작들을 수행하게 하는 프로세서 실행가능 명령어들을 저장하는 비일시적 프로세서 판독가능 저장 매체로서,
    상기 동작들은:
    모바일 컴퓨팅 디바이스의 이미지 포착 디바이스의 시야 내에서 객체를 검출하는 동작;
    상기 이미지 포착 디바이스의 상기 시야 내에서 시작 위치에 대한 상기 객체의 제1 위치 변화 및 제2 위치 변화에 각각 대응하는 제1 및 제2 키 프레임을 식별하는 동작;
    상기 식별된 제1 및 제2 키 프레임에 기초하여 제1 및 제2 분해능을 각각 갖는 제1 및 제2 깊이 맵을 생성하는 동작; 및
    상기 제1 및 제2 깊이 맵에 기초하여 상기 객체의 3차원 모델을 생성하는 동작
    을 포함하는, 비일시적 프로세서 판독가능 저장 매체.
  20. 제19항에 있어서,
    상기 제1 및 제2 키 프레임을 식별하는 동작은:
    상기 이미지 포착 디바이스의 상기 시야 내에서 상기 객체 상의 추적 점들의 세트를 식별하는 동작;
    상기 추적 점들의 세트가 제1 위치들의 세트를 갖는 상기 제1 키 프레임을 식별하는 동작;
    상기 제1 위치들의 세트로부터 상기 추적 점들의 세트의 하나 이상의 추적 점들의 위치 변화를 결정하는 동작; 및
    상기 위치 변화에 기초하여, 상기 하나 이상의 추적 점들이 제2 위치를 갖는 상기 제2 키 프레임을 식별하는 동작
    을 추가로 포함하는, 비일시적 프로세서 판독가능 저장 매체.
KR1020197021230A 2015-03-27 2016-03-25 자동화된 3차원 모델 생성 KR20190089091A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US201562139009P true 2015-03-27 2015-03-27
US62/139,009 2015-03-27
US15/080,367 2016-03-24
US15/080,367 US9852543B2 (en) 2015-03-27 2016-03-24 Automated three dimensional model generation
PCT/US2016/024325 WO2016160606A1 (en) 2015-03-27 2016-03-25 Automated three dimensional model generation

Publications (1)

Publication Number Publication Date
KR20190089091A true KR20190089091A (ko) 2019-07-29

Family

ID=56976689

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177031117A KR102003813B1 (ko) 2015-03-27 2016-03-25 자동화된 3차원 모델 생성
KR1020197021230A KR20190089091A (ko) 2015-03-27 2016-03-25 자동화된 3차원 모델 생성

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177031117A KR102003813B1 (ko) 2015-03-27 2016-03-25 자동화된 3차원 모델 생성

Country Status (5)

Country Link
US (2) US9852543B2 (ko)
EP (1) EP3274916A1 (ko)
KR (2) KR102003813B1 (ko)
CN (1) CN108012559A (ko)
WO (1) WO2016160606A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2928174A1 (en) 2014-03-31 2015-10-07 Open Text S.A. A method and device for capturing a document
US10254831B2 (en) * 2014-04-08 2019-04-09 Umoove Services Ltd. System and method for detecting a gaze of a viewer
US20160232399A1 (en) * 2014-04-08 2016-08-11 Umoove Services Ltd. System and method of detecting a gaze of a viewer
GB2546016B (en) 2014-06-20 2018-11-28 Velo3D Inc Apparatuses, systems and methods for three-dimensional printing
US9852543B2 (en) 2015-03-27 2017-12-26 Snap Inc. Automated three dimensional model generation
US20170013246A1 (en) * 2015-07-09 2017-01-12 Doubleme, Inc. HoloPortal and HoloCloud System and Method of Operation
US10338811B2 (en) * 2015-08-06 2019-07-02 Atomic Shapes Oy User interface for three-dimensional modelling
US10360718B2 (en) * 2015-08-14 2019-07-23 Samsung Electronics Co., Ltd. Method and apparatus for constructing three dimensional model of object
JP2018535121A (ja) 2015-11-06 2018-11-29 ヴェロ・スリー・ディー・インコーポレイテッド 熟達した3次元印刷
EP3386662A4 (en) 2015-12-10 2019-11-13 Velo3D Inc Skillful three-dimensional printing
US10434573B2 (en) 2016-02-18 2019-10-08 Velo3D, Inc. Accurate three-dimensional printing
USD809557S1 (en) * 2016-06-03 2018-02-06 Samsung Electronics Co., Ltd. Display screen or portion thereof with transitional graphical user interface
US10286452B2 (en) 2016-06-29 2019-05-14 Velo3D, Inc. Three-dimensional printing and three-dimensional printers
WO2018067801A1 (en) * 2016-10-05 2018-04-12 Magic Leap, Inc. Surface modeling systems and methods
US10255720B1 (en) * 2016-10-13 2019-04-09 Bentley Systems, Incorporated Hybrid mesh from 2.5D and 3D point data
USD836654S1 (en) * 2016-10-28 2018-12-25 General Electric Company Display screen or portion thereof with graphical user interface
US10369629B2 (en) 2017-03-02 2019-08-06 Veo3D, Inc. Three-dimensional printing of three-dimensional objects
US20180281282A1 (en) 2017-03-28 2018-10-04 Velo3D, Inc. Material manipulation in three-dimensional printing
WO2019045713A1 (en) * 2017-08-31 2019-03-07 Sony Mobile Communications Inc. Methods for guiding a user when performing a three dimensional scan and related mobile devices and computer program products
US10272525B1 (en) 2017-12-27 2019-04-30 Velo3D, Inc. Three-dimensional printing systems and methods of their use
WO2019190142A1 (en) * 2018-03-29 2019-10-03 Samsung Electronics Co., Ltd. Method and device for processing image
US20190339847A1 (en) 2018-05-07 2019-11-07 Apple Inc. Avatar creation user interface
US10375313B1 (en) 2018-05-07 2019-08-06 Apple Inc. Creative camera

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978773A (en) 1995-06-20 1999-11-02 Neomedia Technologies, Inc. System and method for using an ordinary article of commerce to access a remote computer
EP0814611B1 (de) 1996-06-17 2002-08-28 Siemens Aktiengesellschaft Kommunikationssystem und Verfahren zur Aufnahme und Verwaltung digitaler Bilder
US7173651B1 (en) 1998-06-02 2007-02-06 Knowles Andrew T Apparatus and system for prompt digital photo delivery and archival
US6807290B2 (en) 2000-03-09 2004-10-19 Microsoft Corporation Rapid computer modeling of faces for animation
US6505123B1 (en) 2000-07-24 2003-01-07 Weatherbank, Inc. Interactive weather advisory system
US7103211B1 (en) 2001-09-04 2006-09-05 Geometrix, Inc. Method and apparatus for generating 3D face models from one camera
US7411493B2 (en) 2003-03-01 2008-08-12 User-Centric Ip, L.P. User-centric event reporting
US7535890B2 (en) 2003-12-18 2009-05-19 Ayalogic, Inc. System and method for instant VoIP messaging
US8332475B2 (en) 2005-08-22 2012-12-11 Triplay Communications Ltd. Messaging system and method
US8285006B2 (en) * 2007-04-13 2012-10-09 Mira Electronics Co., Ltd. Human face recognition and user interface system for digital camera and video camera
USRE47534E1 (en) 2007-04-23 2019-07-23 Ramot At Tel Aviv University Ltd. System, method and a computer readable medium for providing an output image
US20100098702A1 (en) 2008-09-16 2010-04-22 Longgui Wang Method of treating androgen independent prostate cancer
WO2011101784A1 (en) 2010-02-16 2011-08-25 Tigertext Inc. A messaging system apparatuses circuits and methods of operation thereof
JP5564384B2 (ja) * 2010-09-28 2014-07-30 任天堂株式会社 画像生成プログラム、撮像装置、撮像システム、及び画像生成方法
US8711206B2 (en) * 2011-01-31 2014-04-29 Microsoft Corporation Mobile camera localization using depth maps
KR101262164B1 (ko) * 2011-10-04 2013-05-14 강원대학교산학협력단 저 해상도 깊이 맵으로부터 고 해상도 깊이 맵을 생성하는 방법 및 이를 기록한 기록매체
DE102011054658A1 (de) * 2011-10-20 2013-04-25 Bioid Ag Verfahren zur Unterscheidung zwischen einem realen Gesicht und einer zweidimensionalen Abbildung des Gesichts in einem biometrischen Erfassungsprozess
US20130286161A1 (en) 2012-04-25 2013-10-31 Futurewei Technologies, Inc. Three-dimensional face recognition for mobile devices
US20130335416A1 (en) 2012-05-23 2013-12-19 1-800 Contacts, Inc. Systems and methods for generating a 3-d model of a virtual try-on product
US9501140B2 (en) * 2012-11-05 2016-11-22 Onysus Software Ltd Method and apparatus for developing and playing natural user interface applications
CA2863124A1 (en) 2014-01-03 2015-07-03 Investel Capital Corporation User content sharing system and method with automated external content integration
US9779508B2 (en) * 2014-03-26 2017-10-03 Microsoft Technology Licensing, Llc Real-time three-dimensional reconstruction of a scene from a single camera
US9715903B2 (en) * 2014-06-16 2017-07-25 Qualcomm Incorporated Detection of action frames of a video stream
US9852543B2 (en) 2015-03-27 2017-12-26 Snap Inc. Automated three dimensional model generation

Also Published As

Publication number Publication date
EP3274916A1 (en) 2018-01-31
KR102003813B1 (ko) 2019-10-01
CN108012559A (zh) 2018-05-08
WO2016160606A1 (en) 2016-10-06
KR20180015120A (ko) 2018-02-12
US20180075651A1 (en) 2018-03-15
US20160284123A1 (en) 2016-09-29
US9852543B2 (en) 2017-12-26
US10198859B2 (en) 2019-02-05

Similar Documents

Publication Publication Date Title
US8861841B2 (en) Building a three-dimensional composite scene
US8861800B2 (en) Rapid 3D face reconstruction from a 2D image and methods using such rapid 3D face reconstruction
KR101788499B1 (ko) 이미징 디바이스에서의 사진 구도 및 포지션 안내
US10068373B2 (en) Electronic device for providing map information
US9224237B2 (en) Simulating three-dimensional views using planes of content
US20170206707A1 (en) Virtual reality analytics platform
JP5833772B2 (ja) 実世界オブジェクトの3dモデルおよび正しい縮尺のメタデータをキャプチャし移動させるための方法およびシステム
KR20150050486A (ko) 화상처리장치, 화상처리방법 및 프로그램
US9030408B2 (en) Multiple sensor gesture recognition
US9398210B2 (en) Methods and systems for dealing with perspective distortion in connection with smartphone cameras
US20140225985A1 (en) Handheld portable optical scanner and method of using
EP2992508B1 (en) Diminished and mediated reality effects from reconstruction
US10102680B2 (en) Image based tracking in augmented reality systems
EP2842075A1 (en) Three-dimensional face recognition for mobile devices
US9332243B2 (en) Handheld portable optical scanner and method of using
KR101775591B1 (ko) 데이터베이스 생성의 목적을 위한 대화식 및 자동 3-d 오브젝트 스캐닝 방법
US9424461B1 (en) Object recognition for three-dimensional bodies
CN104238739A (zh) 基于眼睛跟踪的可见度提高方法和电子装置
CN107430697A (zh) 用于光学条形码的定制功能图案
US20160150217A1 (en) Systems and methods for 3d capturing of objects and motion sequences using multiple range and rgb cameras
US9870636B2 (en) Method for sharing emotions through the creation of three dimensional avatars and their interaction
US9898844B2 (en) Augmented reality content adapted to changes in real world space geometry
US20180012330A1 (en) Dynamic Multi-View Interactive Digital Media Representation Lock Screen
US8660362B2 (en) Combined depth filtering and super resolution
US20150085076A1 (en) Approaches for simulating three-dimensional views

Legal Events

Date Code Title Description
A107 Divisional application of patent