KR20170078785A - 비디오 통화 데이터 수정 - Google Patents

비디오 통화 데이터 수정 Download PDF

Info

Publication number
KR20170078785A
KR20170078785A KR1020177014728A KR20177014728A KR20170078785A KR 20170078785 A KR20170078785 A KR 20170078785A KR 1020177014728 A KR1020177014728 A KR 1020177014728A KR 20177014728 A KR20177014728 A KR 20177014728A KR 20170078785 A KR20170078785 A KR 20170078785A
Authority
KR
South Korea
Prior art keywords
face
user terminal
user
additional
location
Prior art date
Application number
KR1020177014728A
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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170078785A publication Critical patent/KR20170078785A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • 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/2012Colour editing, changing, or manipulating; Use of colour codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Processing Or Creating Images (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

방법은 수신된 비디오의 디스플레이를 위한 UI를 디스플레이하는 단계; UI 버튼의 선택을 검출하는 단계; 상기 버튼이 선택된 동안 복수의 드로잉(drawing) 입력들 - 각각의 드로잉 입력은 상기 수신된 비디오에서 디스플레이된 사용자의 얼굴의 제1 반쪽면 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하는 단계; 각각의 드로잉 입력에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 추가적인 얼굴 위치는 상기 얼굴 위치와는 대칭적으로 반대임 - 를 결정하는 단계를 포함하고, 각각의 수신된 비디오 프레임에 대해, 본 방법은, 각각의 드로잉 입력에 대해, (i) 알고리즘을 실행하여 상기 프레임에서의 상기 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 비디오에서의 얼굴의 위치를 결정하는 단계; 및 (ii) 상기 이미지 데이터를 상기 얼굴 위치 및 상기 결정된 추가적인 얼굴 위치에 적용하는 단계; 상기 UI에서 수정된 프레임을 디스플레이하는 단계를 포함한다.

Description

비디오 통화 데이터 수정{MODIFYING VIDEO CALL DATA}
본 발명은, 예를 들어, 비디오 통화 동안 디스플레이된 비디오 프레임들 상에서의 드로잉(drawing)에 관한 것이다.
패킷 기반 통신 시스템은 개인 컴퓨터와 같은 디바이스의 사용자로 하여금 인터넷 프로토콜(Internet Protocol; IP)과 같은 패킷 프로토콜을 이용하여 컴퓨터 네트워크에 걸쳐 통신하도록 해준다. 패킷 기반 통신 시스템은 다양한 유형들의 통신 이벤트들을 위해 이용될 수 있다. 구축될 수 있는 통신 이벤트들은 음성 통화, 비디오 통화, 인스턴트 메시징, 음성 메일, 파일 전송, 및 기타 등등을 포함한다. 이러한 시스템들은 종종 고정선 또는 모바일 네트워크들보다 비용이 매우 낮기때문에 사용자에게 이롭다. 이것은 장거리 통신인 경우에 특히 잘 들어맞을 수 있다. 패킷 기반 시스템을 이용하기 위해, 사용자는 각자의 디바이스 상에 클라이언트 소프트웨어를 설치해서 실행시킨다. 클라이언트 소프트웨어는 패킷 기반 연결들뿐만이 아니라, 등록 및 인증과 같은 다른 기능들을 제공한다.
통신 시스템은 디바이스들의 사용자들로 하여금 인터넷과 같은 컴퓨터 네트워크에 걸쳐 통신하도록 해준다. 구축될 수 있는 통신 이벤트들은 음성 통화, 비디오 통화, 인스턴트 메시징, 음성 메일, 파일 전송, 및 기타 등등을 포함한다. 비디오 통화로 인해, 발신자들은 음성 정보에 더하여 상대방의 비디오 이미지들을 바라볼 수 있다. 이것은, 얼굴 표현들이 또한 전달되므로, 당사자들 간에 훨씬 더 자연스러운 통신을 가능하게 함으로써, 비디오 통화를 대면 대화(face-to-face conversation)에 더욱 필적하게 만든다.
사용자가 2차원 클립 아트 효과를 추가하여 사용자 디바이스에서 캡처된 비디오를 수정할 수 있게 해주는 기능을 통신 클라이언트 애플리케이션이 제공하는 것이 알려져 있다. 예를 들어, 사용자는 콧수염 효과를 추가하는 것을 선택할 수 있으며, 애플리케이션은 캡처된 프레임에서 사용자 얼굴의 위치를 검출하고 캡처된 프레임에서 사용자 얼굴의 위치에 의존하여 프레임 내 위치에서 콧수염 효과를 오버레이시킨다. 따라서, 사용자의 얼굴이 캡처된 비디오에서 위치를 변경할 때 콧수염은 2차원적으로 움직인다.
본 발명개시의 실시예들은 비디오 통화 동안 디스플레이된 비디오 프레임들 상에서의 드로잉(drawing)에 관한 것이다. 사용자에 의해 작도된(draw) 드로잉은, 사용자의 얼굴과 함께 드로잉이 3차원적으로 움직이도록, 비디오 프레임들에서 사용자의 얼굴의 지점들 상에 맵핑된다.
본 발명자들은 이 드로잉이 사용자에 의해 손으로 입력됨에 따라, 특히 비디오 프레임들 내에서 사용자의 얼굴이 움직이고 있는 경우, 디스플레이된 비디오 프레임들 상에서 정확하게 작도하는 것이 어렵다는 것을 인식하였다. 이 문제는 사용자가 다른 사용자의 얼굴에 대해 작도하는 경우, 즉 디스플레이된 비디오 프레임들에서 얼굴의 움직임의 양의 제어를 갖지 않을 때 악화된다.
본 발명개시의 제1 양태에 따르면, 통신 네트워크를 통해 적어도 하나의 추가적인 사용자 단말기와 함께 수행되는 비디오 통화 동안에 사용자 단말기에서 구현되는 방법이 제공되고, 상기 방법은: 수신된 비디오 프레임들의 디스플레이를 위한 사용자 인터페이스를 사용자 단말기의 디스플레이 상에서 디스플레이하는 단계; 상기 사용자 단말기의 입력 디바이스를 사용하는 사용자에 의한 상기 사용자 인터페이스에서 디스플레이된 선택가능한 버튼의 선택을 검출하는 단계; 상기 선택가능한 버튼이 선택된 상태에 있는 동안 복수의 드로잉 입력들 - 각각의 드로잉 입력은 수신된 비디오 프레임들에서 디스플레이된 사용자의 얼굴의 제1 반쪽면(side) 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하는 단계; 복수의 드로잉 입력들 각각에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치와는 대칭적으로 반대임 - 를 결정하는 단계를 포함하고, 각각의 수신된 비디오 프레임에 대해, 본 방법은, 복수의 드로잉 입력들 각각에 대해, (i) 상기 사용자 단말기의 프로세서 상에서 얼굴 추적기 알고리즘을 실행하여 상기 비디오 프레임에서의 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 상기 수신된 비디오 프레임에서의 얼굴의 위치를 결정하는 단계; 및 (ii) 이미지 데이터를 상기 얼굴의 제1 반쪽면 상의 얼굴 위치 및 상기 얼굴의 제2 반쪽면 상의 결정된 추가적인 얼굴 위치에 적용함으로써 비디오 프레임을 수정하는 단계; 및 수정된 비디오 프레임을 사용자 인터페이스에서 디스플레이하는 단계를 포함한다.
본 발명개시의 다른 양태에 따르면, 사용자 단말기가 제공되고, 상기 사용자 단말기는: 디스플레이; 입력 디바이스; 사용자 단말기와 적어도 하나의 추가적인 사용자 단말기 간의 비디오 통화 동안 사용자 단말기와 통신 네트워크 간에 비디오 데이터를 송신하고 수신하도록 구성된 네트워크 인터페이스; 상기 비디오 통화 동안에 동작가능한 애플리케이션을 구동시키도록 구성된 프로세서를 포함하며, 상기 프로세서는: 수신된 비디오 프레임들의 디스플레이를 위한 사용자 인터페이스를 사용자 단말기의 디스플레이 상에서 디스플레이하고; 입력 디바이스를 사용하는 사용자에 의한 상기 사용자 인터페이스에서 디스플레이된 선택가능한 버튼의 선택을 검출하고; 상기 선택가능한 버튼이 선택된 상태에 있는 동안 복수의 드로잉 입력들 - 각각의 드로잉 입력은 수신된 비디오 프레임들에서 디스플레이된 사용자의 얼굴의 제1 반쪽면 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하고; 복수의 드로잉 입력들 각각에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치와는 대칭적으로 반대임 - 를 결정하도록 구성되고, 각각의 수신된 비디오 프레임에 대해, 상기 프로세서는 또한, 복수의 드로잉 입력들 각각에 대해, (i) 상기 사용자 단말기의 프로세서 상에서 얼굴 추적기 알고리즘을 실행하여 상기 비디오 프레임에서의 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 상기 수신된 비디오 프레임에서의 얼굴의 위치를 결정하고; (ii) 이미지 데이터를 상기 얼굴의 제1 반쪽면 상의 얼굴 위치 및 상기 얼굴의 제2 반쪽면 상의 결정된 추가적인 얼굴 위치에 적용함으로써 비디오 프레임을 수정하며; 수정된 비디오 프레임을 사용자 인터페이스에서 디스플레이하도록 구성된다.
본 발명개시의 다른 양태에 따르면, 컴퓨터 프로그램 제품이 제공되고, 컴퓨터 프로그램 제품은 컴퓨터로 판독가능한 매체 상에 포함되고, 사용자 단말기와 적어도 하나의 추가적인 사용자 단말기 간의 비디오 통화 동안 사용자 단말기의 프로세서 상에서 실행될 때, 본 명세서에서 설명된 임의의 방법들을 수행하도록 구성된다.
본 요약은 아래의 상세한 설명에서 보다 상세하게 설명되는 개념들의 선택을 단순한 형태로 소개하기 위해 제공된 것이다. 본 요약은 청구된 발명내용의 중요한 특징들 또는 필수적인 특징들을 식별시키려는 의도는 없으며, 또한 청구된 발명내용의 범위를 제한시키려는 의도도 없다.
본 발명개시의 보다 나은 이해를 위해, 그리고 본 발명개시가 실시될 수 있는 방법을 보여주기 위해, 이제부터 다음의 도면들을 예로서 참조할 것이다.
도 1은 통신 시스템을 도시한다.
도 2는 사용자 단말기의 개략도를 도시한다.
도 3은 사용자 단말기 상에서 실행되는 프레임 수정 애플리케이션과 통신 클라이언트 애플리케이션 간의 통신을 도시한다.
도 4는 프레임 수정 애플리케이션에 의해 제공되는 사용자 인터페이스를 도시한다.
도 5는 비디오 데이터를 수정하는 프로세스에 대한 흐름도를 도시한다.
도 6은 캡처된 비디오 프레임에서 얼굴의 지점(point)들을 식별하는 3차원 삼각 메쉬(three-dimensional triangulated mesh)를 도시한다.
도 7은 2차원 텍스처 맵(texture map)을 도시한다.
도 8은 프레임 수정 애플리케이션의 미러 모드(mirror-mode)를 도시한다.
본 발명개시의 실시예들은 단지 예로서만 설명될 뿐이다.
도 1은 사용자 단말기(102)와 연관된 제1 사용자(104)(사용자 A)와 사용자 단말기(108)와 연관된 제2 사용자(110)(사용자 B)를 포함한 통신 시스템(100)을 도시한다. 사용자 단말기들(102, 108)은 통신 시스템(100) 내의 통신 네트워크(106)를 통해 통신할 수 있어서, 사용자들(104, 110)이 통신 네트워크(106)를 통해 서로 통신할 수 있도록 해줄 수 있다. 통신 네트워크(106)는 사용자 단말기(102)와 제2 사용자 단말기(108) 사이에 통신 채널을 제공하는 능력을 갖는 임의의 적절한 네트워크일 수 있다. 예를 들어, 통신 네트워크(106)는 인터넷, 또는 3세대("3G") 모바일 네트워크와 같은, 고속 데이터율 모바일 네트워크와 같은 다른 유형의 네트워크일 수 있다.
대안적인 실시예들에서, 사용자 단말기들은 도 1에서 도시되지 않은 추가적인 매개 네트워크를 통해 통신 네트워크(106)에 연결될 수 있다는 것을 유의한다. 예를 들어, 사용자 단말기(102)가 모바일 디바이스인 경우, 이것은 셀룰러 모바일 네트워크(도 1에서는 미도시됨), 예컨대, GSM 또는 UMTS 네트워크를 통해 통신 네트워크(106)에 연결될 수 있다.
사용자 단말기(102)는, 예컨대, 모바일 폰, 개인 보조 단말기("PDA"), 개인 컴퓨터("PC")(예컨대, Windows™, Mac OS™ 및 Linux™ PC들을 포함함), 태블릿 컴퓨터, 게이밍 디바이스, 또는 통신 네트워크(106)에 연결될 수 있는 다른 임베디드 디바이스일 수 있다. 사용자 단말기(102)는 사용자 A(104)로부터 정보를 수신하고 사용자 A(104)에게 정보를 출력하도록 배열된다.
사용자 단말기(102)는 통신 시스템(100)과 연관된 소프트웨어 제공자에 의해 제공된 통신 클라이언트 애플리케이션(112)을 실행한다. 통신 클라이언트 애플리케이션(112)은 사용자 단말기(102) 내 로컬 프로세서 상에서 실행되는 소프트웨어 프로그램이다. 통신 클라이언트 애플리케이션(112)은, 사용자 단말기(102)가 통신 시스템(100)을 통해 데이터를 송신 및 수신하도록, 사용자 단말기(102)에서 필요한 프로세싱을 수행한다. 사용자 단말기(102)에서 실행되는 통신 클라이언트 애플리케이션(112)은 디지털 인증서들의 프리젠테이션을 통해(예컨대, 사용자(104)가 통신 시스템의 진정한 가입자라는 것을 증명하도록)(이에 대해서는 WO 2005/009019에서 보다 자세하게 기술됨) 통신 시스템을 이용하여 통신하기 위해 인증될 수 있다.
사용자 단말기(108)는 사용자 단말기(102)에 대응할 수 있다. 사용자 단말기(108)는, 로컬 프로세서 상에서, 사용자 단말기(102)에서 실행되는 통신 클라이언트 애플리케이션(112)에 대응하는 통신 클라이언트 애플리케이션(114)을 실행한다. 사용자 A(104)가 네트워크(106)를 통해 통신할 수 있도록 해주기 위해 필요한 프로세싱을 사용자 단말기(102)에서의 통신 클라이언트 애플리케이션(112)이 수행하는 것과 같은 방식으로 사용자 단말기(108)에서의 통신 클라이언트 애플리케이션(114)은 사용자(110)가 네트워크(106)를 통해 통신할 수 있도록 해주기 위해 필요한 프로세싱을 수행한다. 사용자 단말기들(102, 108)은 통신 시스템 내에서의 최종점들이다. 도 1은 명료화를 위해 두 명의 사용자들(104, 110)과 두 개의 사용자 단말기들(102, 108)만을 도시하지만, 본 업계에서 알려진 바와 같이, 더 많은 사용자들과 사용자 디바이스들이 통신 시스템(100) 내에 포함될 수 있으며, 각각의 사용자 디바이스들 상에서 실행되는 각각의 통신 클라이언트들을 이용하여 통신 시스템(100)을 통해 통신할 수 있다.
도 2는 통신 시스템(100)을 통해 통신하기 위해 통신 클라이언트 애플리케이션이 실행되는 사용자 단말기(102)의 상세도를 나타낸다. 사용자 단말기(102)는 중앙 처리 장치("CPU")(202)를 포함하며, 이 중앙 처리 장치("CPU")(202)에는 스크린 또는 터치 스크린과 같은 디스플레이(204), 키패드(206)와 같은 입력 디바이스들, 카메라(208) 및 터치 스크린(204)이 연결된다. 후술되는 실시예들에서, 카메라(208)는 사용자 단말기(102)에 통합되거나, 유선 또는 무선 연결을 통해 사용자 디바이스에 결합되는 종래의 웹캠일 수 있다. 대안적으로, 카메라(208)는 TOF(time of flight) 또는 구조광 카메라와 같은 깊이 인식 카메라일 수 있다. 오디오 출력 디바이스(210)(예컨대, 스피커) 및 오디오 입력 디바이스(212)(예컨대, 마이크로폰)가 CPU(202)에 연결된다. 디스플레이(204), 키패드(206), 카메라(208), 오디오 출력 디바이스(210) 및 오디오 입력 디바이스(212)는 도 2에서 도시된 바와 같이 사용자 단말기(102) 내로 통합될 수 있다. 대안적인 사용자 단말기들에서, 디스플레이(204), 키패드(206), 카메라(208), 오디오 출력 디바이스(210) 및 오디오 입력 디바이스(212) 중 하나 이상은 사용자 단말기(102) 내에 통합되지 않을 수 있으며, 각각의 인터페이스들을 통해 CPU(202)에 연결될 수 있다. 이러한 인터페이스의 일례는 USB 인터페이스이다. CPU(202)는 통신 네트워크(106)와의 통신을 위한 모뎀과 같은 네트워크 인터페이스(224)에 연결된다. 네트워크 인터페이스(224)는 도 2에서 도시된 바와 같이 사용자 단말기들(102) 내에 통합될 수 있다. 대안적인 사용자 단말기들에서, 네트워크 인터페이스(224)는 사용자 단말기(102) 내에 통합되지 않는다. 사용자 단말기(102)는 또한 본 업계에서 알려져 있는 바와 같이 데이터를 저장하기 위한 메모리(226)를 포함한다. 메모리(226)는 ROM과 같은 영구적 메모리일 수 있다. 이와 달리, 메모리(226)는 RAM과 같은 일시적 메모리일 수 있다.
통신 클라이언트 애플리케이션(112)이 메모리(226) 내에 저장되고 CPU(202) 상에서의 실행을 위해 배열되도록, 사용자 단말기(102)에는 통신 클라이언트 애플리케이션(112)이 설치된다. 도 2는 또한 CPU(202) 상에서 실행되는 운영체제("OS")(214)를 나타낸다. OS(214)의 최상부 상에서는 위에서 언급한 통신 클라이언트 애플리케이션(112)을 위한 소프트웨어 스택(216)이 구동 중에 있다. 소프트웨어 스택은 I/O층(218), 클라이언트 엔진층(220) 및 클라이언트 사용자 인터페이스층("UI")(222)을 도시한다. 각각의 층은 특정 기능들을 담당한다. 각각의 층은 보통 두 개의 다른 층들과 통신하기 때문에, 이들은 도 2에서 도시된 바와 같이 스택으로 배열된 것으로서 간주된다. 운영체제(214)는 컴퓨터의 하드웨어 자원들을 관리하고, 네트워크 인터페이스(224)를 통해 통신 네트워크(106)에 오고가는 데이터를 처리한다. I/O층(218)은 오디오 및/또는 비디오 코덱들을 포함하는데, 이 오디오 및/또는 비디오 코덱들은, 유입되는 인코딩된 스트림들을 수신하고 이것들을 스피커(210) 및/또는 디스플레이(204)로의 출력을 위해 적절하게 디코딩하며, 마이크로폰(212) 및/또는 카메라(208)으로부터 비인코딩된 오디오 및/또는 비디오 데이터를 수신하고, 이것들을 통신 시스템(100)의 다른 최종 사용자 단말기들로의 스트림들로서의 전송을 위해 인코딩한다. 클라이언트 엔진층(220)은 서버 기반 또는 P2P 어드레스 검색 및 인증에 의해 통화들 또는 다른 연결들을 구축하는 것과 같이, VoIP 시스템의 연결 관리 기능들을 상술한 바와 같이 처리한다. 클라이언트 엔진은 또한, 본 명세서에서 논의되지 않은 다른 2차적 기능들을 담당할 수 있다. 클라이언트 엔진(220)은 또한 클라이언트 사용자 인터페이스층(222)과 통신한다. 클라이언트 엔진(220)은 클라이언트 사용자 인터페이스층(222)을 제어하여 디스플레이(204) 상에서 디스플레이되는, 통신 클라이언트 애플리케이션(112)의 사용자 인터페이스를 통해 사용자 단말기(102)의 사용자에게 정보를 제공하고 사용자 인터페이스를 통해 사용자 단말기(102)의 사용자로부터 정보를 수신하도록 배열될 수 있다.
프레임 수정 애플리케이션(230)이 또한 OS(214)의 최상부 상에서 실행된다. 실시예들은 별개의 애플리케이션들인 프레임 수정 애플리케이션(230) 및 통신 클라이언트 애플리케이션(112)을 참조하여 이하에서 설명되지만, 이하에서 보다 상세하게 설명되는 프레임 수정 애플리케이션(230)의 기능은 통신 클라이언트 애플리케이션(112)에 통합될 수 있다.
도 3은 프레임 수정 애플리케이션(230)이 통신 클라이언트 애플리케이션(112)과 상호작용하는 방법을 도시한다.
도 3에 도시된 바와 같이, 프레임 수정 애플리케이션(230)은 캡처된 비디오 및 드로잉 명령들을 수신하도록 배열된다. 프레임 수정 애플리케이션(230)은 드로잉 명령들에 따라 캡처된 비디오 프레임들을 수정하고 수정된 비디오 프레임들을 통신 클라이언트 애플리케이션(112)에 공급하도록 배열된다.
후술되는 실시예들에서, 프레임 수정 애플리케이션(230)은 카메라(208)로부터 캡처된 비디오 프레임들을 수신하고, 프레임 수정 애플리케이션(230)은 사용자 A(104)로부터 드로잉 명령들을 수신한다. 사용자 A(104)로부터 수신된 드로잉 명령들에 응답하여 수정된 비디오 프레임들은 네트워크(106)를 통한 사용자 단말기(108)로의 전송을 위해 프레임 수정 애플리케이션(230)으로부터 통신 클라이언트 애플리케이션(112)에 공급된다. 프레임 수정 애플리케이션(230)은 디스플레이(204) 상에 디스플레이되는 정보를 사용자 인터페이스를 통해 사용자 A(104)에게 제공한다.
도 4는 디스플레이(204)의 가용 영역(400)에서 콘텐츠를 디스플레이하는 프레임 수정 애플리케이션(230)을 도시한다. 도 4에서 디스플레이의 가용 영역은 디스플레이 전체이지만, (프레임 수정 애플리케이션(230)에 대해 이용가능한 영역인) 디스플레이의 가용 영역은 디스플레이의 일부부만으로 구성될 수 있으며, 예컨대, 디스플레이의 나머지는 다른 콘텐츠를 디스플레이하기 위해 운영체제 및/또는 운영체제 위에서 실행되는 다른 애플리케이션(들)에 의해 이용된다.
도 4에서 도시된 바와 같이, 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스는 카메라(208)에 의해 캡처된 비디오 데이터를 디스플레이한다(도 4에서, 사용자 A(104)는 카메라(208)를 응시하고 있다).
도 4에서 도시된 바와 같이, 프레임 수정 애플리케이션(230)은 사용자 A(104)가 적절한 입력 디바이스(예를 들어, 마우스, 터치 스크린과 상호작용하는 스타일러스 펜, 또는 터치 스크린과의 직접적인 터치)를 사용하여 선택하기 위한 적어도 하나의 선택가능한 드로잉 툴 버튼(402)을 디스플레이된 캡처된 비디오 위에 오버레이시킬 수 있다. 선택가능한 드로잉 툴 버튼들(402)은 펜 드로잉 툴 버튼(404a), 립스틱 드로잉 툴 버튼(404b), 및 브러시 드로잉 툴 버튼(404c)을 포함할 수 있다. 선택가능한 드로잉 툴 버튼들(402) 중 하나의 선택을 검출한 것에 응답하여, 프레임 수정 애플리케이션(230)은 디스플레이된 캡처된 비디오 위에 색상 팔레트(406)를 오버레이하도록 배열된다. 디스플레이된 캡처된 비디오 위에 오버레이된 색상 팔레트(406)는 선택된 드로잉 툴 버튼과 연관된다. 각각의 색상 팔레트(406)는 사용자 A(104)가 적절한 입력 디바이스를 사용하여 선택하는 적어도 하나의 선택가능한 색상을 포함한다. 도 4는 제1 색상(408a), 제2 색상(408b), 제3 색상(408c), 및 제4 색상(408d)을 포함하는 색상 팔레트(406)를 나타낸다.
드로잉 툴 버튼(404) 및 색상(408)의 선택은 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스에서 디스플레이된 캡처된 비디오 데이터에 대해 사용자 A(104)가 작도할 수 있게 한다. 프레임 수정 애플리케이션(230)은 캡처된 비디오 데이터에서 사용자의 얼굴의 복수의 지점들을 식별하고 사용자가 움직일 때 이들 지점들을 추적하는 3차원 얼굴 추적기 기능을 포함한다. 아래에서 보다 상세하게 설명되는 실시예들에 따라, 드로잉이 사용자의 얼굴과 함께 3차원적으로 움직이도록, 디스플레이된 캡처된 비디오에서 사용자 A의 얼굴 상에 사용자 A(104)에 의해 작도된 드로잉은 얼굴 추적기에 의해 식별된 사용자의 얼굴의 지점들 상에 맵핑된다.
프레임 수정 애플리케이션(230)은 사용자 A(104)가 적절한 입력 디바이스를 사용하여 선택하기 위한 선택가능한 미러 모드 버튼(412)을 디스플레이된 캡처된 비디오 위에 오버레이시킬 수 있다. 선택가능한 미러 모드 버튼(412)의 선택에 응답하여, 선택가능한 미러 모드 버튼(412)은 선택된 상태에 있으며, 프레임 수정 애플리케이션(230)은, 사용자 A(104)가 미러 동작 모드를 떠나기 위해 선택가능한 미러 모드 버튼(412)을 다시 선택할 때까지(그 후 선택가능한 미러 모드 버튼(412)은 비선택된 상태에 있게 된다), 미러 동작 모드에서 동작한다. 미러 모드 버튼(412)의 선택의 검출에 응답하는 프레임 수정 애플리케이션(230)의 동작을 도 5를 참조하여 상세히 설명할 것이다.
이제부터, 비디오 통화가 제1 사용자 단말기(102)와 제2 사용자 단말기(108) 사이에서 수행되는 동안 프레임 수정 애플리케이션(230)에 의해 수행되는 방법의 흐름도(500)를 도시하는 도 5를 참조한다.
프로세스는 프레임 수정 애플리케이션(230)이 비디오 프레임을 수신하는 단계 S502에서 시작한다. 예시적인 실시예에서, 프레임 수정 애플리케이션(230)은 제1 사용자 단말기(102)의 카메라(208)로부터 캡처된 비디오 프레임들을 수신한다.
단계 S504에서, 프레임 수정 애플리케이션(230)은 수신된 비디오 프레임에서 사용자의 얼굴의 위치를 검출한다. 프레임 수정 애플리케이션(230)은 얼굴 추적기 알고리즘을 실행함으로써 단계 S504를 수행할 수 있다. 이 얼굴 추적기 알고리즘은 공지된 능동적 외양 모델(active appearance model; AAM) 접근법을 기반으로 할 수 있다. 얼굴 추적기 알고리즘은 얼굴 특징점들을 2차원으로 추적하고 3차원 삼각 메쉬를 추적된 얼굴 특징점들에 피팅(fit)시킨다. 얼굴 추적기 알고리즘은 사용자의 얼굴에 피팅된 3차원 삼각 메쉬의 각 꼭지점의 3차원 픽셀 좌표들(x, y, z)을 결정한다. 3차원 삼각 메쉬는 복수의 삼각형들을 정의하는 복수의 꼭지점들을 포함한다. 도 6에서는 (비디오 프레임에서 캡처된) 사용자의 얼굴에 피팅된 예시적인 3차원 삼각 메쉬가 도시된다. 3차원 삼각 메쉬의 각 꼭지점의 좌표들은 프레임에서의 꼭지점의 위치를 정의하며, 이는 픽셀 수의 관점에서 정의될 수 있다. 전술한 바와 같이, 카메라(208)는 종래의 카메라 또는 깊이 인식 카메라일 수 있다. 카메라(208)가 깊이 인식 카메라인 경우, 깊이 인식 카메라에 의해 출력된 깊이 정보는 얼굴 추적기 알고리즘에 대한 추가적인 입력으로서 사용되지만, 얼굴 추적기 알고리즘의 출력은 카메라(208)가 종래의 카메라이거나 또는 깊이 인식 카메라인지에 관계없이 동일하다.
단계 S506에서, 프레임 수정 애플리케이션(230)은 사용자 A(104)로부터 드로잉 명령(이와 달리 드로잉 입력이라고 칭함)이 수신되었음을 검출하고, 드로잉 명령은 단계 S502에서 수신된 비디오 프레임에 적용될 수정을 정의한다. 수신된 비디오 프레임들이 선택된 드로잉 툴 버튼(404) 및 색상(408)을 갖고 디스플레이되는, 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스의 영역에서의 사용자 A(104) 드로잉에 응답하여 프레임 수정 애플리케이션(230)은 드로잉 명령을 수신한다. 단계 S506에서, 프레임 수정 애플리케이션(230)은 사용자 A(104)에 의해 제작된 드로잉의 적어도 하나의 픽셀 좌표 세트(x, y)를 결정한다.
프레임 수정 애플리케이션(230)은 3차원 삼각 메쉬의 2차원 표현을 계산하도록 구성된다. 이를 도 7에서 도시된 2차원 텍스처 맵(700)이라고 한다.
3차원 삼각 메쉬의 2차원 표현을 계산하기 위한 다양한 가능한 기술들은 당업자에게 잘 알려져 있으므로 본 명세서에서는 상세히 설명하지 않는다. 하나의 예시적인 방법은 (i) 타원체 상에 3차원 삼각 메쉬를 투영하는 것; 및 (ii) 타원체를 (예컨대, 골 피터스(Gall-Peters) 등적도 투영(equal area map projection)을 사용하여) 2차원으로 투영하는 것을 포함한다.
2차원 텍스처 맵(700)은 복수의 픽셀들 폭이고 복수의 픽셀들 높이인 픽셀 그리드 상에 오버레이된다. 이 픽셀 폭과 픽셀 높이는 픽셀 그리드의 해상도를 정의한다. 픽셀 그리드의 해상도는, 예를 들어, 512×512일 수 있다.(픽셀 그리드의 픽셀 좌표들로서 표현된) UV 좌표들이 2차원 텍스처 맵(700)에서의 위치를 정의하는데 사용된다. 2차원 텍스처 맵(700)에서의 각각의 u, v 픽셀 좌표는 비디오 프레임에서의 대응하는 x, y 픽셀 좌표를 갖는다. 픽셀 그리드의 픽셀 해상도는 상당히 임의적이다. 픽셀 해상도가 너무 작으면, (단계 S522를 참조하여 이하에서 설명되는) 텍스처 맵핑은 수정된 이미지에서 평활화/블러링(smoothing/blurring)을 도입시킬 것이다. 픽셀 해상도가 너무 크면, 텍스처 맵핑과 효과 렌더링이 불필요하게 느려질 것이다. 따라서, 당업자는 수신된 이미지에서의 얼굴의 최대 크기에 대략적으로 대응하는 픽셀 그리드의 픽셀 해상도를 선택하는 것이 적절하다는 것을 알 것이다. 얼굴 메쉬의 u, v 좌표들은 일정하고 얼굴 위치, 표정, 또는 자세에 대해 불변한다. u, v 좌표들은 프로세스(500)가 시작하기 전에 오프라인 사전 계산 단계에서 한 번 계산된다.
단계 S508에서, 프레임 수정 애플리케이션(230)은 3차원 삼각 메쉬의 각각의 삼각형의 텍스처가 2차원 텍스처 맵(700) 내의 대응하는 삼각형에 복사되는 텍스처 맵핑 프로세스를 수행한다. 여기에서 3차원 삼각 메쉬에서의 삼각형의 "텍스처"에 대한 언급은 3차원 삼각 메쉬에서의 특정 삼각형 내의 각각의 픽셀의 색상 값들을 언급하기 위해 사용된다. 픽셀 색상 값은 RGB 색상 모델에 따라 정의될 수 있다.
단계 S510에서, 프레임 수정 애플리케이션(230)은 단계 S504에서 검출된 드로잉의 좌표들(x, y)에 대응하는 u, v 좌표들을 결정한다. 단계 S512에서, 프레임 수정 애플리케이션(230)은 드로잉 커맨드를 (단계 S510에서 결정된) u, v 좌표들의 형태로 효과 정보와 연관맺어서 메모리(226)에 저장한다. u, v 좌표들과 연관지어진 효과 정보는 사용자 A(104)에 의해 선택된 드로잉 툴 버튼(404) 및 색상(408)에 기초하여, u, v 좌표들에서 2차원 텍스처 맵(700)에 적용될 드로잉 수정의 표시를 포함한다. 일부 실시예들에서, 효과 정보는 절대적 색상 값을 포함하지 않는다. 그 대신에, 효과 정보는 선택된 색상(408)에 의존하는 색상 수정 계수를 포함한다. 색삭 수정 계수는 곱셈 항 및 덧셈 항으로 정의된다. 따라서, 원래 색상 값(R, G, B)을 갖는 픽셀은 다음에 따라 새로운 색상 값(R', G', B')을 갖도록 수정되며,
R'=αRR+βR
G'=αGG+βG
B'=αBB+βB
여기서, 3개의 곱셈 항들 αR, αG, αB과, 3개의 덧셈 항들 βR, βG, βB은 적용될 효과를 기술한다. 3개의 곱셈 항들 및 3개의 덧셈 항들의 값들은 미리 구성되며, 선택된 색상(408)에 의존하여 변한다. 이러한 방식으로 색상 수정 계수를 적용함으로써, 픽셀들은 비디오 프레임 내에서 수정되지 않은 픽셀들과 조화되는 방식으로 수정된다. 예를 들어, 카메라(208)가 비디오를 캡처하고 있는 방 안에서의 광 레벨이 변경되면, 색상 수정 계수는 픽셀들이 각자의 원래 색상 값에 기초하여 수정되는 것을 보장한다. 실시예들은 또한 절대적 색상 값을 정의하는 색상(408)으로 확장된다. 저장된 효과 정보는 또한 드로잉 스트로크의 폭에 대한 정보를 포함하는데, 이는 수정될 u, v 좌표들에서의 픽셀을 에워싸는 픽셀 수에 대한 표시를 제공한다. 드로잉 스트로크의 폭은 선택된 드로잉 툴 버튼(404)에 의존한다. 예를 들어, 브러시 드로잉 툴 버튼(404c)이 선택될 때의 드로잉 스트로크의 폭은 립스틱 드로잉 툴 버튼(404b)이 선택될 때의 드로잉 스트로크보다 더 넓을 수 있다. 마찬가지로, 립스틱 드로잉 툴 버튼(404b)이 선택될 때의 드로잉 스트로크의 폭은 펜 드로잉 툴 버튼(404a)이 선택될 때의 드로잉 스트로크보다 더 넓을 수 있다.
단계 S514에서, 프레임 수정 애플리케이션(230)은, 프레임 수정 애플리케이션(230)이 미러 동작 모드로 동작하는 동안 드로잉 명령이 수신되었는지를 결정한다.
단계 S514에서, 프레임 수정 애플리케이션(230)이 미러 동작 모드로 동작하는 동안 드로잉 명령이 수신되었다고 프레임 수정 애플리케이션(230)이 결정하면, 프로세스는 단계 S516으로 진행한다.
(도 7에서 도시된) 얼굴의 중심을 지나가는 수직 대칭축의 양쪽 옆측 중 한쪽 옆측 상의 2차원 텍스처 맵(700)의 일부분이 축의 나머지 다른쪽 옆측 상의 2차원 텍스처 맵(700)의 일부분의 미러 이미지이도록 하는 방식으로 수직 대칭축은 2차원 텍스처 맵(700)을 분할한다는 점에서 2차원 텍스처 맵(700)은 대칭적이다.
단계 S510에서 결정된 u, v 좌표들이 축의 한쪽 옆측 상에 놓이면(즉, 축 자체 상에 있지 않음), 단계 S516에서, 프레임 수정 애플리케이션(230)은 단계 S510에서 결정된 u, v 좌표들과는 (u 방향으로) 대칭적으로 반대인, 2차원 텍스처 맵(700) 내의 위치를 정의하는 미러링된 좌표들 umirror, v를 결정한다.
단계 S518에서, 프레임 수정 애플리케이션(230)은 드로잉 커맨드를 (단계 S516에서 결정된) umirror, v 좌표들의 형태로 효과 정보와 연관맺어서 메모리(226)에 저장한다. umirror, v 좌표들과 연관지어진 효과 정보는 2차원 텍스처 맵(700)에 적용될 드로잉 수정의 표시를 포함하며, 이는 단계 S512에서 u, v 좌표들과 연관맺어서 저장된 것과 동일하다.
실시예들에서, 메모리(226)는 프레임 수정 애플리케이션(230)에 의해 판독될 것이고 2차원 텍스처 맵(700)에 적용될 (상술한) 드로잉 커맨드를 저장하도록 배열된다.
단계 S518에 이어서, 프로세스(500)는 단계 S520로 진행한다. 프로세스(500)는 또한, 단계 S514에서, 프레임 수정 애플리케이션(230)이 미러 동작 모드로 동작하는 동안 드로잉 명령이 수신되지 않았다고 결정되면, 단계 S514로부터 단계 S520으로 진행한다.
단계 S520에서, 프레임 수정 애플리케이션(230)은 메모리(226)에 저장된 모든 드로잉 커맨드들을 검색하고 검색된 드로잉 커맨드들에 따라 2차원 텍스처 맵(700)을 수정한다. 즉, 메모리(226)에 저장된 각각의 u, v 좌표들에 대해, 프레임 수정 애플리케이션(230)은 2차원 텍스처 맵(700)의 u, v 좌표를 그 연관지어진 효과 정보에 따라 수정한다. 마찬가지로, 하나 이상의 umirror, v 좌표들이 메모리(226)에 저장되면, 메모리(226)에 저장된 각각의 umirror, v 좌표들에 대해, 프레임 수정 애플리케이션(230)은 2차원 텍스처 맵(700)의 umirror, v 좌표를 그 연관지어진 효과 정보에 따라 수정한다.
단계 S522에서, 프레임 수정 애플리케이션(230)은 단계 S508에서 수행된 텍스처 맵핑과는 반대인 텍스처 맵핑 프로세스를 수행한다. 단계 S522에서, 2차원 텍스처 맵(700) 내의 각각의 삼각형의 텍스처는 단계 S504에서 결정된 3차원 삼각 메쉬의 대응하는 삼각형에 복사된다. 여기에서 2차원 텍스처 맵(700)에서의 삼각형의 "텍스처"에 대한 언급은 2차원 텍스처 맵(700)에서의 특정 삼각형 내의 각각의 픽셀의 색상 값들을 언급하기 위해 사용된다.
프레임 수정 애플리케이션(230)에 의해 수행되는 단계 S522에 응답하여, 단계 S502에서 수신된 비디오 프레임은 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스에서 수정된 형태로 렌더링된다.
단계 S522는 z 버퍼링을 사용하여 구현될 수 있다. 3차원 삼각 메쉬의 삼각형의 일부분이 3차원 삼각 메쉬의 다른 삼각형의 일부분과 비디오 프레임의 동일한 x, y 픽셀에서 렌더링되어야 한다면, (얼굴 추적기 알고리즘의 출력으로부터 획득된) 이들 일부분들의 깊이들(z 좌표)이 비교되고, 비디오 프레임의 x, y 픽셀은 사용자 단말기(102)의 디스플레이(204)의 뷰어(예를 들어, 사용자 A)에 가장 가까운 삼각형으로부터 자신의 색상을 얻는다. z 버퍼링을 사용하여 단계 S522를 수행하면, 3차원 삼각 메쉬의 하나보다 많은 삼각형에 속하는 x, y 픽셀들이 뷰어(예를 들어, 사용자 A)에 가장 가까운 삼각형으로부터 자신들의 색상을 얻게 되는 것을 보장한다(즉, 더 멀리 떨어져 있는 삼각형(들)은 가장 가까운 삼각형에 의해 가려진다).
z 버퍼링 기술의 대안은, 얼굴 추적기 알고리즘의 출력으로부터 3차원 삼각 메쉬의 각각의 삼각형의 중간점에서의 깊이(z 좌표) 값을 결정하고, 3차원 삼각 메쉬의 모든 삼각형들을 각자의 중간점 z 값에 따라 소팅된(sorted) 리스트로 소팅하는 것이다. 디스플레이(204)의 뷰어로부터 가장 멀리 있는 3차원 삼각 메쉬의 삼각형으로 렌더링을 시작하고, 소팅된 리스트를 통해 작업하여 디스플레이(204)의 뷰어로부터 가장 가까운 3차원 삼각 메쉬의 삼각형의 렌더링으로 마무리함으로써, 이것은 또한 폐색(occlusion)을 올바르게 처리할 것이다.
단계 S524에서, 프레임 수정 애플리케이션(230)은 네트워크 인터페이스(224)를 거쳐서 네트워크(106)를 통해 제2 사용자 단말기(108)로 전송하기 위해 수정된 비디오 프레임을 통신 클라이언트 애플리케이션(112)에 공급한다. 수정된 비디오 프레임은 전송 전에 통신 클라이언트 애플리케이션(112)에 의해 처리(예를 들어, 인코딩 및 패킷화)될 수 있다는 것이 당업자에 의해 인식될 것이다.
프레임 수정 애플리케이션(230)의 기능이 통신 클라이언트 애플리케이션(112)에 통합되는 실시예들에서, 단계 S522에서, 통신은 통신 클라이언트 애플리케이션(112)에 의해 제공된 사용자 인터페이스에서 수정된 비디오 프레임을 렌더링하고, 단계 S524는 수행되지 않는다는 것이 인식될 것이다.
그 후, 프로세스는 단계 S502로 복귀하며, 예시적인 실시예에서, 프레임 수정 애플리케이션(230)은 제1 사용자 단말기(102)의 카메라(208)로부터 다음번째 캡처된 비디오 프레임을 수신한다.
2차원 텍스처 맵(700)은 (비디오 프레임에서) 캡처된 이미지로부터 최신의 새로운 텍스처를 포함해야하기 때문에 각각의 비디오 프레임에 대해 재렌더링되어야 한다(단계 S508). 한편, 드로잉 효과는 별도의 UV 맵(여기서는 "효과 맵"이라고 칭함) 내로 사전 렌더링될 수 있다. 이 "효과 맵"은 사용자가 드로잉 스트로크를 추가하거나 제거할 때까지 일정하게 유지된다. 이 효과 맵은 2차원 텍스처 맵(700) 상에 혼합되어 3차원 삼각 메쉬의 혼합된 2차원 표현을 생성한다. 효과 맵의 해상도를 2차원 텍스처 맵(700)의 해상도와 동일하게 설정함으로써, 이러한 혼합은 3차원 삼각 메쉬의 지식이나 폐색을 필요로 하지 않고서, 간단한 픽셀 단위 루프에서 수행될 수 있다. 3차원 삼각 메쉬의 혼합된 2차원 표현의 u, v 좌표들 각각은 효과 맵이 특정 u, v 좌표에서 수정되지 않는 한 2차원 텍스처 맵(700)의 대응하는 u, v 좌표로부터 텍스처를 취하며, 이 경우 3차원 삼각 메쉬의 혼합된 2차원 표현의 u, v 좌표들은 효과 맵으로부터 텍스처를 취한다.
디스플레이된 비디오 데이터 상에서 사용자 A에 의해 드로잉이 작도되는 동안, 프레임 수정 애플리케이션(230)은 복수의 비디오 프레임들을 수신할 것이라는 것(프로세스(500)는 여러 번 반복할 것이다)이 인식될 것이다. 단계 S504에서 결정된 x, y 픽셀 좌표들은 드로잉의 일부분의 위치를 정의한다. 이는 드로잉을 제작하는 사용자 A에 의한 드로잉 스트로크의 속도 및 프레임 수정 애플리케이션(230)에서 프레임들이 수신되는 레이트에 의존한다. 사용자 A(104)가 드로잉을 완료하면, 프로세스(500)를 반복적으로 수행함으로써, 프레임 수정 애플리케이션은 전체 드로잉의 x, y 픽셀 좌표들을 결정할 것이며, 메모리(226)는 대응하는 u, v 좌표들 및 (미러 모드에 있는 동안 드로잉이 작도된 경우) umirror, v 좌표들을 포함할 것이다.
단계 S506에서, 프레임 수정 애플리케이션(230)은 사용자 A(104)에 의해 제작된, 디스플레이된 프레임에서의 드로잉의 적어도 하나의 픽셀 좌표 세트(x, y)를 결정한다.
도 8은 프레임 수정 애플리케이션이 미러 동작 모드에서 동작하는 동안 지점 P1에서 지점 P2로 커서(802)를 이동시킴으로써 사용자 A(104)가 브러시스트로크(804)를 작도한 후에 프레임 수정 애플리케이션(230)에 의해 제공되는 사용자 인터페이스를 도시한다. 지점 P1에서 지점 P2로의 브러시스트로크가 사용자 A(104)에 의해 작도되는 동안, 프레임 수정 애플리케이션(230)이 카메라(208)로부터 각각의 비디오 프레임을 수신할 때 프로세스(500)가 반복적으로 수행될 것이라는 것을 알 것이다.
전술한 프로세스(500)에 따라, 프레임 수정 애플리케이션(230)은 브러시스트로크(804)의 미러 이미지인 브러시스트로크(806)를 생성한다. 브러시스트로크들(804, 806)로 구성된 드로잉은 캡처된 비디오 데이터에서 얼굴의 피부에 붙여지고, 얼굴과 함께 3차원적으로 움직인다. 예를 들어, 사용자는, 도 8에서 도시된 바와 같이 카메라(208)를 똑바로 응시하는 것 대신에, 자신의 머리를 90도 회전시켜서 머리 옆부분이 카메라(208)쪽을 향하도록 하면, (사용자가 자신의 머리를 시계방향 또는 반시계 방향으로 회전시켰지에 따라) 브로시스트로크들(804, 806) 중 하나만이 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스에서 렌더링될 것이다.
복수의 드로잉들이 사용자 A에 의해 제작될 수 있다는 것을 알 것이다. 프레임 수정 애플리케이션(230)이 미러 동작 모드에 있지 않을 때 제작된 드로잉은 복수의 u, v 좌표들에 의해 메모리(226)에서 식별된다. 프레임 수정 애플리케이션(230)이 미러 동작 모드에 있을 때 제작된 드로잉은 복수의 u, v 좌표들 및 복수의 umirror, v 좌표들에 의해 메모리(226)에서 식별된다.
각각의 드로잉의 u, v 좌표들은 메모리(226)의 큐에 저장되는데, 이 때 가장 최근의 드로잉의 u, v 좌표들은 큐(queue)의 최상단에 저장되고, 가장 오래된 드로잉의 u, v 좌표들은 큐의 맨 아래에 저장된다.
도 4와 도 8에서 도시된 바와 같이, 프레임 수정 애플리케이션(230)은 사용자 A(104)가 적절한 입력 디바이스를 사용하여 선택하기 위한 선택가능한 실행취소 버튼(414)을 디스플레이된 캡처된 비디오 위에 오버레이시킬 수 있다. 선택가능한 실행취소 버튼(414)의 선택을 검출한 것에 응답하여, 프레임 수정 애플리케이션(230)은 메모리(226) 내의 큐의 최상부에 있는 u, v 좌표들을 제거하도록 배열된다. 따라서, 단계 S520이 수행될 때, 사용자 A(104)에 의해 가장 최근에 제작된 드로잉은 더 이상 렌더링되지 않는다(프레임 수정 애플리케이션(230)에 의해 수신된 후속 비디오 프레임들은 이 가장 최근의 드로잉으로 수정되지 않는다).
도 4와 도 8에서 도시된 바와 같이, 프레임 수정 애플리케이션(230)은 사용자 A(104)가 적절한 입력 디바이스를 사용하여 선택하기 위한 선택가능한 신규 드로잉 버튼(416)을 디스플레이된 캡처된 비디오 위에 오버레이시킬 수 있다. 선택가능한 신규 드로잉 버튼(416)의 선택을 검출한 것에 응답하여, 프레임 수정 애플리케이션(230)은 메모리(226) 내의 큐에 저장되어 있던 모든 드로잉들의 u, v 좌표들을 제거하도록 배열된다. 따라서, 그 시점까지 사용자 A(104)에 의해 제작된 모든 드로잉들은 더 이상 프레임 수정 애플리케이션(230)에 의해 렌더링되지 않는다.
도 4와 도 8에서 도시된 바와 같이, 프레임 수정 애플리케이션(230)은 사용자 A(104)가 적절한 입력 디바이스를 사용하여 선택하기 위한 선택가능한 저장 버튼(418)을 디스플레이된 캡처된 비디오 위에 오버레이시킬 수 있다. 선택가능한 저장 버튼(418)의 선택을 검출한 것에 응답하여, 프레임 수정 애플리케이션(230)은 드로잉 파일을 메모리(226)에 저장하도록 배열된다. 저장된 드로잉 파일은 저장 버튼(418)이 선택될 때 메모리(226)에 저장되어 있던 모든 u, v 좌표들(및 그와 연관된 효과 정보) 및 모든 umirror, v 좌표들(및 그와 연관된 효과 정보)를 포함한다. 따라서, 드로잉 파일은 얼굴 형상과 카메라(208)의 해상도 및 유형에 독립적인 포맷으로 저장된다. 이것은 저장된 드로잉 파일들이 통신 시스템(100)의 사용자들 간에 공유될 수 있게 해준다.
제1 사용자 단말기(102)의 카메라(208)로부터 캡처된 비디오 프레임들을 수신하는 프레임 수정 애플리케이션(230)과, 이들 캡처된 비디오 프레임들을 작도하는 사용자 A(104)(사용자 A(104)로부터 수신된 드로잉 명령들)를 참조하여 예시적인 실시예를 설명하였지만, 본 발명개시의 원리들은 이하에서 설명되는 다른 실시예들로 확장된다.
연속성을 위해, 이들 다른 실시예들은 사용자 단말기(102) 상에서 실행되는 프레임 수정 애플리케이션(230)을 참조하여 전술된다.
제1 사용자 단말기의 카메라(208)에 의해 캡처된 비디오 데이터는 사용자 A(104)와 사용자 B(110) 간의 비디오 통화 동안 네트워크(106)를 통해 제2 사용자 단말기(108)로 전송되고, 제2 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)의 사용자 인터페이스에서 디스플레이된다. 다른 실시예에서, 제1 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)에 의해 수신된 (도 3에서 도시된) 캡처된 비디오는 제1 사용자 단말기(102)의 카메라(208)로부터 수신되고, (제2 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)의 사용자 인터페이스에서 디스플레이된) 사용자 A의 얼굴에 대해 사용자 B(110)가 작도한 것에 응답하여 (도 3에서 도시된) 드로잉 명령들이 네트워크(106)를 통해 제2 사용자 단말기(108)로부터 수신된다. 따라서, 이 실시예에서, 사용자 B(110)는 제2 사용자 단말기(108) 상에서 디스플레이된 사용자 A의 얼굴에 대해 작도하고, 이 드로잉은 제1 사용자 단말기(102)의 디스플레이(204) 상에서 렌더링된다.
다른 실시예에서, 제1 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)에 의해 수신된 (도 3에서 도시된) 캡처된 비디오는 네트워크(106)를 통해 제2 사용자 단말기(108)로부터 수신되고(제2 사용자 단말기(108)의 카메라에 의해 캡처됨), (제2 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)의 사용자 인터페이스에서 디스플레이된) 사용자 B의 얼굴에 대해 사용자 B(110)가 작도한 것에 응답하여 (도 3에서 도시된) 드로잉 명령들이 네트워크(106)를 통해 제2 사용자 단말기(108)로부터 수신된다. 따라서, 이 실시예에서, 사용자 B(110)는 제2 사용자 단말기(108) 상에서 디스플레이된 자신의 얼굴에 대해 작도하고, 이 드로잉은 제1 사용자 단말기(102)의 디스플레이(204) 상에서 렌더링된다.
다른 실시예에서, 제1 사용자 단말기(108) 상에서 실행되는 프레임 수정 애플리케이션(230)에 의해 수신된 (도 3에서 도시된) 캡처된 비디오는 네트워크(106)를 통해 제2 사용자 단말기(108)로부터 수신되고(제2 사용자 단말기(108)의 카메라에 의해 캡처됨), 프레임 수정 애플리케이션(230)에 의해 제공된 사용자 인터페이스에서 디스플레이되며, 이들 디스플레이된 비디오 프레임들에 대해 사용자 A(104)가 작도한 것에 응답하여 (도 3에서 도시된) 드로잉 명령들이 사용자 A(104)로부터 수신된다. 따라서, 이 실시예에서, 사용자 A(104)는 제1 사용자 단말기(102) 상에서 디스플레이된 사용자 B의 얼굴에 대해 작도하고, 이 드로잉은 제1 사용자 단말기(102)의 디스플레이(204) 상에서 렌더링된다.
사용자 단말기(102) 상에서 실행되는 프레임 수정 애플리케이션(230)은 전술한 하나 이상의 실시예들에 따라 동작할 수 있다.
입력되는 라이브 비디오의 프레임들에 대해 사용자가 브러시스트로크를 작도하는 것에 의해 드로잉들이 제작되는 것을 참조하여 실시예들을 설명하였지만, 본 발명개시의 실시예들은 입력되는 라이브 비디오의 프레임들로의 사전 계산된 3차원 그래픽 오브젝트의 적용을 포함하는 드로잉 명령으로 확장된다. 예를 들어, 사용자는 모자 그래픽을 얼굴 상에 위치시키는 것을 선택할 수 있으며, 이에 따라 전술한 실시예들에 따라, 모자 그래픽은 3차원 삼각 메쉬의 꼭지점들에 속박되고, 이에 따라 (비디오에서 캡처된) 사용자가 움직일 때 3차원적으로 움직일 것이다.
본 발명개시의 제1 양태를 위에서 설명하였다.
예시적인 실시예에서, 수신된 비디오 프레임에서 얼굴의 위치를 결정하는 단계는 상기 얼굴의 얼굴 특징점들을 2차원으로 식별하는 단계와 추적된 얼굴 특징점들에 3차원 삼각 메쉬를 피팅시키는 단계를 포함하고, 복수의 드로잉 입력들 각각에 대해, 얼굴 위치는 상기 3차원 삼각 메쉬 상의 위치에 대응하며, 상기 결정된 추가적인 얼굴 위치는 상기 3차원 삼각 메쉬 상의 추가적인 위치에 대응한다.
수신된 비디오 프레임 각각을 수정하는 단계는, 3차원 삼각 메쉬의 2차원 표현 상으로 획득된 3차원 삼각 메쉬의 각각의 삼각형의 텍스처들을 맵핑하는 단계; 및 각각의 수신된 드로잉 입력에 대해: 상기 3차원 삼각 메쉬 상의 위치 및 추가적인 위치에 대응하는, 3차원 삼각 메쉬의 2차원 표현에서의 위치 및 추가적인 위치를 결정하는 단계; 이미지 데이터를 3차원 삼각 메쉬의 2차원 표현에서의 결정된 위치 및 결정된 추가적인 위치에 적용시키는 단계; 및 3차원 삼각 메쉬의 2차원 표현의 각각의 삼각형의 텍스처들을 3차원 삼각 메쉬 상에 맵핑하는 단계를 포함할 수 있다.
수신된 비디오 프레임 각각을 수정하는 단계는, 3차원 삼각 메쉬의 제1의 2차원 표현 상으로 3차원 삼각 메쉬의 각각의 삼각형의 텍스처들을 맵핑하는 단계; 및 각각의 수신된 드로잉 입력에 대해: 상기 3차원 삼각 메쉬 상의 위치 및 추가적인 위치에 대응하는, 3차원 삼각 메쉬의 제2의 2차원 표현에서의 위치 및 추가적인 위치를 결정하는 단계; 이미지 데이터를 3차원 삼각 메쉬의 제2의 2차원 표현에서의 결정된 위치 및 결정된 추가적인 위치에 적용시키는 단계; 3차원 삼각 메쉬의 제2의 2차원 표현을 3차원 삼각 메쉬의 제1의 2차원 표현 상으로 혼합시켜 3차원 삼각 메쉬의 혼합된 2차원 표현을 생성하는 단계; 및 3차원 삼각 메쉬의 혼합된 2차원 표현의 각각의 삼각형의 텍스처들을 3차원 삼각 메쉬 상에 맵핑하는 단계를 포함할 수 있다.
본 방법은 사용자 인터페이스에서 적어도 하나의 선택가능한 드로잉 툴 버튼을 디스플레이하는 단계를 더 포함할 수 있다.
적어도 하나의 선택가능한 드로잉 툴 버튼은 펜 드로잉 툴 버튼, 립스틱 드로잉 툴 버튼, 및 브러시 드로잉 툴 버튼 중 하나 또는 그 임의의 조합을 포함할 수 있다.
본 방법은 상기 사용자 단말기의 입력 디바이스를 사용하는 사용자에 의한 적어도 하나의 선택가능한 드로잉 툴 버튼들 중 하나의 선택을 검출하는 것에 응답하여, 선택된 드로잉 툴 버튼과 연관된 복수의 선택가능한 색상들을 디스플레이하는 단계를 더 포함할 수 있다.
이미지 데이터는 선택된 드로잉 툴 버튼 및 선택된 드로잉 툴 버튼과 연관된 복수의 선택가능한 색상들 중 선택된 색상에 기초할 수 있다.
이미지 데이터는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치에서의 적어도 하나의 픽셀에 적용될 색상 수정 계수를 포함할 수 있으며, 색상 수정 계수는 선택된 색상에 기초한다.
색상 수정 계수는, (i) 적어도 하나의 픽셀 각각의 원래 적색 값에 적용될 곱셈 항과 덧셈 항; (ii) 적어도 하나의 픽셀 각각의 원래 녹색 값에 적용될 곱셈 항과 덧셈 항; 및 (iii) 적어도 하나의 픽셀 각각의 원래 청색 값에 적용될 곱셈 항과 덧셈 항을 포함할 수 있다.
이미지 데이터는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치에서의 적어도 하나의 픽셀에 적용될 색상 값을 포함할 수 있으며, 색상 값은 선택된 색상에 기초한다.
본 방법은 복수의 드로잉 입력들 각각에 대해, 상기 사용자 단말기의 메모리에 드로잉 커맨드를 저장하는 단계를 더 포함할 수 있고, 드로잉 커맨드는, 상기 드로잉 입력과 연관된 이미지 데이터, 상기 얼굴의 제1 반쪽면 상의 얼굴 위치의 표시, 및 상기 얼굴의 제2 반쪽면 상의 결정된 추가적인 얼굴 위치의 표시를 포함한다.
비디오 프레임을 수정하는 단계는 상기 메모리에 저장된 모든 드로잉 커맨드들을 검색하는 단계, 및 상기 검색된 드로잉 커맨드들에 따라 비디오 프레임을 수정하는 단계를 포함할 수 있다.
상기 언급된 비디오 프레임들은 상기 사용자 단말기의 카메라로부터 수신될 수 있다.
본 방법은 통신 네트워크를 통해 각각의 수정된 비디오 프레임을 적어도 하나의 추가적인 사용자 단말기에 전송하는 단계를 더 포함할 수 있다.
상기 언급된 비디오 프레임들은 상기 적어도 하나의 추가적인 사용자 단말기로부터 통신 네트워크를 통해 수신될 수 있다.
복수의 드로잉 입력들이 사용자 단말기와 연관된 사용자로부터 수신될 수 있다.
통신 네트워크는 패킷 기반 네트워크일 수 있다.
도 5에서 개별적으로 도시된 단계들은 개별적인 단계들로서 구현될 수 있거나 또는 구현되지 않을 수 있으며, 도시된 순서대로 구현될 수 있거나 또는 구현되지 않을 수 있다.
일반적으로, 여기서 설명된 기능들 중 임의의 기능은 소프트웨어, 펌웨어, 하드웨어(예컨대, 고정된 로직 회로), 또는 이러한 구현예들의 조합을 이용하여 구현될 수 있다. 여기서 이용된 "제어기", "기능", "컴포넌트" 및 "애플리케이션" 용어들은 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현예의 경우, 제어기, 기능, 컴포넌트 또는 애플리케이션은 프로세서(예컨대, CPU 또는 CPU들) 상에서 실행될 때 특정 태스크들을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터로 판독가능한 메모리 디바이스들 내에 저장될 수 있다. 아래에서 설명되는 기술들의 특징들은 플랫폼 독립적인데, 이것은 본 기술들이 다양한 프로세서들을 갖는 다양한 상업적 컴퓨팅 플랫폼들 상에서 구현될 수 있다는 것을 의미한다.
예를 들어, 사용자 단말기들은 또한 사용자 단말기들의 하드웨어가 연산들, 예컨대 프로세서 기능 블록들 등을 수행하게 하는 엔티티(예컨대, 소프트웨어)를 포함할 수 있다. 예를 들어, 사용자 단말기들은 사용자 단말기들, 및 보다 구체적으로는 사용자 단말기들의 운영체제 및 이와 연관된 하드웨어가 연산들을 수행하게 하는 명령어들을 유지하도록 구성될 수 있는 컴퓨터로 판독가능한 매체를 포함할 수 있다. 따라서, 명령어들은 운영체제 및 이와 연관된 하드웨어가 연산들을 수행하도록 구성시키는 기능을 하며, 이렇게 해서, 기능들을 수행하는 운영체제 및 이와 연관된 하드웨어의 변환을 초래시킨다. 명령어들은 다양한 상이한 구성들을 통해서 컴퓨터로 판독가능한 매체에 의해 사용자 단말기들에게 제공될 수 있다.
컴퓨터로 판독가능한 매체의 이러한 한가지 구성은 신호 베어링 매체이며, 이에 따라 네트워크를 통해서와 같이, 명령어들(예컨대, 반송파)을 컴퓨팅 디바이스에게 전송하도록 구성된다. 컴퓨터로 판독가능한 매체는 또한 컴퓨터로 판독가능한 저장 매체로서 구성될 수 있으며, 이에 따라 신호 베어링 매체는 아니다. 컴퓨터로 판독가능한 저장 매체의 예시들에는 RAM(random-access memory), ROM(read-only memory), 광학 디스크, 플래시 메모리, 하드 디스크 메모리, 및 명령어들과 다른 데이터를 저장하기 위한 자기적, 광학적, 및 다른 기술들을 이용할 수 있는 다른 메모리 디바이스들이 포함된다.
본 발명내용은 구조적 특징들 및/또는 방법론적 동작들에 특유적인 용어로 기술되었지만, 첨부된 청구항들에서 정의된 발명내용은 위에서 설명된 이러한 특정한 특징들 또는 동작들로 반드시 제한될 필요는 없다는 것을 이해하여야 한다. 이보다는, 위에서 설명된 특정한 특징들 및 동작들은 청구항들을 구현하는 예시 형태들로서 개시된 것이다.

Claims (15)

  1. 통신 네트워크를 통해 적어도 하나의 추가적인 사용자 단말기와 함께 수행되는 비디오 통화 동안 사용자 단말기에서 구현되는 방법에 있어서,
    수신된 비디오 프레임들의 디스플레이를 위한 사용자 인터페이스를 사용자 단말기의 디스플레이 상에서 디스플레이하는 단계;
    상기 사용자 단말기의 입력 디바이스를 사용하는 사용자에 의한 상기 사용자 인터페이스에서 디스플레이된 선택가능한 버튼의 선택을 검출하는 단계;
    상기 선택가능한 버튼이 선택된 상태에 있는 동안 복수의 드로잉(drawing) 입력들 - 각각의 드로잉 입력은 상기 수신된 비디오 프레임들에서 디스플레이된 사용자의 얼굴의 제1 반쪽면(side) 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하는 단계;
    상기 복수의 드로잉 입력들 각각에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치와는 대칭적으로 반대임 - 를 결정하는 단계
    를 포함하고,
    각각의 수신된 비디오 프레임에 대해, 상기 방법은,
    상기 복수의 드로잉 입력들 각각에 대해, (i) 상기 사용자 단말기의 프로세서 상에서 얼굴 추적기 알고리즘을 실행하여 상기 비디오 프레임에서의 상기 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 상기 수신된 비디오 프레임에서의 상기 얼굴의 위치를 결정하는 단계; 및 (ii) 상기 이미지 데이터를 상기 얼굴의 제1 반쪽면 상의 상기 얼굴 위치 및 상기 얼굴의 제2 반쪽면 상의 상기 결정된 추가적인 얼굴 위치에 적용함으로써 상기 비디오 프레임을 수정하는 단계; 및
    상기 사용자 인터페이스에서 상기 수정된 비디오 프레임을 디스플레이하는 단계
    를 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  2. 제1항에 있어서,
    상기 수신된 비디오 프레임에서 상기 얼굴의 위치를 결정하는 단계는 상기 얼굴의 얼굴 특징점들을 2차원으로 식별하는 단계와 추적된 얼굴 특징점들에 3차원 삼각 메쉬(triangulated mesh)를 피팅(fit)시키는 단계를 포함하고, 상기 복수의 드로잉 입력들 각각에 대해, 상기 얼굴 위치는 상기 3차원 삼각 메쉬 상의 위치에 대응하며, 상기 결정된 추가적인 얼굴 위치는 상기 3차원 삼각 메쉬 상의 추가적인 위치에 대응한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  3. 제2항에 있어서,
    수신된 비디오 프레임 각각을 수정하는 단계는,
    상기 3차원 삼각 메쉬의 2차원 표현 상으로 획득된 상기 3차원 삼각 메쉬의 각각의 삼각형(triangle)의 텍스처(texture)들을 맵핑하는 단계;
    각각의 수신된 드로잉 입력에 대해,
    상기 3차원 삼각 메쉬 상의 상기 위치 및 상기 추가적인 위치에 대응하는, 상기 3차원 삼각 메쉬의 상기 2차원 표현에서의 위치 및 추가적인 위치를 결정하는 단계;
    상기 이미지 데이터를 상기 3차원 삼각 메쉬의 상기 2차원 표현에서의 상기 결정된 위치 및 상기 결정된 추가적인 위치에 적용시키는 단계; 및
    상기 3차원 삼각 메쉬의 상기 2차원 표현의 각각의 삼각형의 텍스처들을 상기 3차원 삼각 메쉬 상에 맵핑하는 단계
    를 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  4. 제2항에 있어서,
    수신된 비디오 프레임 각각을 수정하는 단계는,
    상기 3차원 삼각 메쉬의 제1의 2차원 표현 상으로 상기 3차원 삼각 메쉬의 각각의 삼각형의 텍스처들을 맵핑하는 단계;
    각각의 수신된 드로잉 입력에 대해,
    상기 3차원 삼각 메쉬 상의 상기 위치 및 상기 추가적인 위치에 대응하는, 상기 3차원 삼각 메쉬의 제2의 2차원 표현에서의 위치 및 추가적인 위치를 결정하는 단계;
    상기 이미지 데이터를 상기 3차원 삼각 메쉬의 상기 제2의 2차원 표현에서의 상기 결정된 위치 및 상기 결정된 추가적인 위치에 적용시키는 단계;
    상기 3차원 삼각 메쉬의 상기 제2의 2차원 표현을 상기 3차원 삼각 메쉬의 상기 제1의 2차원 표현 상으로 혼합시켜 상기 3차원 삼각 메쉬의 혼합된 2차원 표현을 생성하는 단계; 및
    상기 3차원 삼각 메쉬의 상기 혼합된 2차원 표현의 각각의 삼각형의 텍스처들을 상기 3차원 삼각 메쉬 상에 맵핑하는 단계
    를 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 사용자 인터페이스에서 적어도 하나의 선택가능한 드로잉 툴 버튼을 디스플레이하는 단계
    를 더 포함하는 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  6. 제5항에 있어서,
    상기 적어도 하나의 선택가능한 드로잉 툴 버튼은 펜 드로잉 툴 버튼, 립스틱 드로잉 툴 버튼, 및 브러시 드로잉 툴 버튼 중 하나 또는 그 임의의 조합을 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 사용자 단말기의 입력 디바이스를 사용하는 사용자에 의한 상기 적어도 하나의 선택가능한 드로잉 툴 버튼들 중 하나의 선택을 검출하는 것에 응답하여, 선택된 드로잉 툴 버튼과 연관된 복수의 선택가능한 색상들을 디스플레이하는 단계를 더 포함하는 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 이미지 데이터는 선택된 드로잉 툴 버튼 및 상기 선택된 드로잉 툴 버튼과 연관된 복수의 선택가능한 색상들 중 선택된 색상에 기초한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  9. 제8항에 있어서,
    상기 이미지 데이터는 상기 얼굴의 제1 반쪽면 상의 상기 얼굴 위치에서의 적어도 하나의 픽셀에 적용될 색상 수정 계수를 포함할 수 있으며, 상기 색상 수정 계수는 상기 선택된 색상에 기초한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  10. 제9항에 있어서,
    상기 색상 수정 계수는, (i) 상기 적어도 하나의 픽셀 각각의 원래 적색 값에 적용될 곱셈 항과 덧셈 항; (ii) 상기 적어도 하나의 픽셀 각각의 원래 녹색 값에 적용될 곱셈 항과 덧셈 항; 및 (iii) 상기 적어도 하나의 픽셀 각각의 원래 청색 값에 적용될 곱셈 항과 덧셈 항을 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 복수의 드로잉 입력들 각각에 대해, 상기 사용자 단말기의 메모리에 드로잉 커맨드(command)를 저장하는 단계를 더 포함하고, 상기 드로잉 커맨드는, 상기 드로잉 입력과 연관된 이미지 데이터, 상기 얼굴의 제1 반쪽면 상의 상기 얼굴 위치의 표시, 및 상기 얼굴의 제2 반쪽면 상의 상기 결정된 추가적인 얼굴 위치의 표시를 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  12. 제11항에 있어서,
    상기 비디오 프레임을 수정하는 단계는 상기 메모리에 저장된 모든 드로잉 커맨드들을 검색하는 단계, 및 상기 검색된 드로잉 커맨드들에 따라 상기 비디오 프레임을 수정하는 단계를 포함한 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    비디오 프레임들이 상기 사용자 단말기의 카메라로부터 수신되며,
    상기 방법은 상기 통신 네트워크를 통해 각각의 수정된 비디오 프레임을 상기 적어도 하나의 추가적인 사용자 단말기에 전송하는 단계를 더 포함하거나, 또는
    비디오 프레임들이 상기 적어도 하나의 추가적인 사용자 단말기로부터 상기 통신 네트워크를 통해 수신되는 것인 비디오 통화 동안 사용자 단말기에서 구현되는 방법.
  14. 사용자 단말기에 있어서,
    디스플레이;
    입력 디바이스;
    사용자 단말기와 적어도 하나의 추가적인 사용자 단말기 간의 비디오 통화 동안 상기 사용자 단말기와 통신 네트워크 간에 비디오 데이터를 송신하고 수신하도록 구성된 네트워크 인터페이스;
    상기 비디오 통화 동안에 동작가능한 애플리케이션을 구동시키도록 구성된 프로세서
    를 포함하며, 상기 프로세서는,
    수신된 비디오 프레임들의 디스플레이를 위한 사용자 인터페이스를 상기 사용자 단말기의 디스플레이 상에서 디스플레이하고;
    상기 입력 디바이스를 사용하는 사용자에 의한 상기 사용자 인터페이스에서 디스플레이된 선택가능한 버튼의 선택을 검출하고;
    상기 선택가능한 버튼이 선택된 상태에 있는 동안 복수의 드로잉 입력들 - 각각의 드로잉 입력은 수신된 비디오 프레임들에서 디스플레이된 사용자의 얼굴의 제1 반쪽면 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하고;
    상기 복수의 드로잉 입력들 각각에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치와는 대칭적으로 반대임 - 를 결정하도록 구성되고,
    각각의 수신된 비디오 프레임에 대해, 상기 프로세서는 또한,
    상기 복수의 드로잉 입력들 각각에 대해, (i) 상기 사용자 단말기의 상기 프로세서 상에서 얼굴 추적기 알고리즘을 실행하여 상기 비디오 프레임에서의 상기 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 상기 수신된 비디오 프레임에서의 상기 얼굴의 위치를 결정하고; (ii) 상기 이미지 데이터를 상기 얼굴의 제1 반쪽면 상의 얼굴 위치 및 상기 얼굴의 제2 반쪽면 상의 결정된 추가적인 얼굴 위치에 적용함으로써 상기 비디오 프레임을 수정하며;
    상기 사용자 인터페이스에서 상기 수정된 비디오 프레임을 디스플레이하도록 구성된 것인 사용자 단말기.
  15. 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은, 컴퓨터로 판독가능한 비일시적 매체 상에 포함되고, 사용자 단말기와 적어도 하나의 추가적인 사용자 단말기 간의 비디오 통화 동안 상기 사용자 단말기의 프로세서 상에서 실행될 때,
    수신된 비디오 프레임들의 디스플레이를 위한 사용자 인터페이스를 상기 사용자 단말기의 디스플레이 상에서 디스플레이하고;
    상기 사용자 단말기의 입력 디바이스를 사용하는 사용자에 의한 상기 사용자 인터페이스에서 디스플레이된 선택가능한 버튼의 선택을 검출하고;
    상기 선택가능한 버튼이 선택된 상태에 있는 동안 복수의 드로잉 입력들 - 각각의 드로잉 입력은 상기 수신된 비디오 프레임들에서 디스플레이된 사용자의 얼굴의 제1 반쪽면 상의 얼굴 위치에서 적용될 이미지 데이터를 정의함 - 을 수신하고;
    상기 복수의 드로잉 입력들 각각에 대해, 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치 - 상기 얼굴의 제2 반쪽면 상의 추가적인 얼굴 위치는 상기 얼굴의 제1 반쪽면 상의 얼굴 위치와는 대칭적으로 반대임 - 를 결정하도록 구성되고,
    각각의 수신된 비디오 프레임에 대해, 상기 컴퓨터 프로그램 제품은 또한, 실행 시,
    상기 복수의 드로잉 입력들 각각에 대해, (i) 상기 사용자 단말기의 상기 프로세서 상에서 얼굴 추적기 알고리즘을 실행하여 상기 비디오 프레임에서의 상기 얼굴 상의 상기 얼굴 위치 및 결정된 추가적인 얼굴 위치의 장소들을 결정함으로써 상기 수신된 비디오 프레임에서의 상기 얼굴의 위치를 결정하고; (ii) 상기 이미지 데이터를 상기 얼굴의 제1 반쪽면 상의 얼굴 위치 및 상기 얼굴의 제2 반쪽면 상의 결정된 추가적인 얼굴 위치에 적용함으로써 상기 비디오 프레임을 수정하며;
    상기 사용자 인터페이스에서 상기 수정된 비디오 프레임을 디스플레이하도록 구성된 것인 컴퓨터 프로그램 제품.
KR1020177014728A 2014-10-31 2015-10-28 비디오 통화 데이터 수정 KR20170078785A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GBGB1419441.9A GB201419441D0 (en) 2014-10-31 2014-10-31 Modifying video call data
GB1419441.9 2014-10-31
US14/596,112 US9445043B2 (en) 2014-10-31 2015-01-13 Modifying video call data
US14/596,112 2015-01-13
PCT/US2015/057681 WO2016069669A2 (en) 2014-10-31 2015-10-28 Modifying video call data

Publications (1)

Publication Number Publication Date
KR20170078785A true KR20170078785A (ko) 2017-07-07

Family

ID=52118527

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177014728A KR20170078785A (ko) 2014-10-31 2015-10-28 비디오 통화 데이터 수정

Country Status (6)

Country Link
US (1) US9445043B2 (ko)
EP (1) EP3198559B1 (ko)
KR (1) KR20170078785A (ko)
CN (1) CN107111427B (ko)
GB (1) GB201419441D0 (ko)
WO (1) WO2016069669A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022131784A1 (ko) * 2020-12-18 2022-06-23 삼성전자 주식회사 증강 현실 콘텐츠를 제공하는 전자 장치 및 방법
WO2022255625A1 (ko) * 2021-06-02 2022-12-08 삼성전자주식회사 영상 통화 중 다양한 커뮤니케이션을 지원하는 전자 장치 및 그의 동작 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150228106A1 (en) * 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
GB201419438D0 (en) * 2014-10-31 2014-12-17 Microsoft Corp Modifying video call data
GB201419441D0 (en) * 2014-10-31 2014-12-17 Microsoft Corp Modifying video call data
US10460493B2 (en) 2015-07-21 2019-10-29 Sony Corporation Information processing apparatus, information processing method, and program
US10559112B2 (en) * 2016-03-11 2020-02-11 Intel Corporation Hybrid mechanism for efficient rendering of graphics images in computing environments
US10586379B2 (en) * 2017-03-08 2020-03-10 Ebay Inc. Integration of 3D models
CN107888845B (zh) * 2017-11-14 2022-10-21 腾讯数码(天津)有限公司 一种视频图像处理方法、装置及终端
US11727656B2 (en) 2018-06-12 2023-08-15 Ebay Inc. Reconstruction of 3D model with immersive experience
CN109769099B (zh) 2019-01-15 2021-01-22 三星电子(中国)研发中心 通话人物异常的检测方法和装置
AU2021202282B2 (en) * 2020-04-21 2022-04-07 Canva Pty Ltd Systems and methods for applying effects to design elements
US11763496B2 (en) * 2021-09-30 2023-09-19 Lemon Inc. Social networking based on asset items

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6283858B1 (en) 1997-02-25 2001-09-04 Bgk International Incorporated Method for manipulating images
US6662210B1 (en) 1997-03-31 2003-12-09 Ncr Corporation Method of remote collaboration system
US7085842B2 (en) * 2001-02-12 2006-08-01 Open Text Corporation Line navigation conferencing system
US9400921B2 (en) * 2001-05-09 2016-07-26 Intel Corporation Method and system using a data-driven model for monocular face tracking
US8009572B2 (en) 2003-07-16 2011-08-30 Skype Limited Peer-to-peer telephone system
US7920725B2 (en) * 2003-09-09 2011-04-05 Fujifilm Corporation Apparatus, method, and program for discriminating subjects
US7762886B2 (en) * 2004-12-07 2010-07-27 United Tote Company Method and apparatus for enhancing a wagering experience using a wagering terminal adaptable to a self-service mode
US7612794B2 (en) 2005-05-25 2009-11-03 Microsoft Corp. System and method for applying digital make-up in video conferencing
US7209577B2 (en) 2005-07-14 2007-04-24 Logitech Europe S.A. Facial feature-localized and global real-time video morphing
US7751599B2 (en) * 2006-08-09 2010-07-06 Arcsoft, Inc. Method for driving virtual facial expressions by automatically detecting facial expressions of a face image
US7836099B2 (en) * 2007-07-31 2010-11-16 Yahoo! Inc. Mail compression scheme with individual message decompressability
KR101513616B1 (ko) * 2007-07-31 2015-04-20 엘지전자 주식회사 이동 단말기 및 그 영상정보 관리방법
US20090202114A1 (en) * 2008-02-13 2009-08-13 Sebastien Morin Live-Action Image Capture
ATE494529T1 (de) * 2008-07-04 2011-01-15 Sick Ivp Ab Kalibrierung eines profilmesssystems
US8413054B2 (en) * 2009-04-13 2013-04-02 Cisco Technology, Inc. Graphical user interface for still image capture from video footage
JP5476955B2 (ja) * 2009-12-04 2014-04-23 ソニー株式会社 画像処理装置および画像処理方法、並びにプログラム
US9699431B2 (en) * 2010-02-10 2017-07-04 Satarii, Inc. Automatic tracking, recording, and teleprompting device using multimedia stream with video and digital slide
CN101959050A (zh) 2010-09-01 2011-01-26 宇龙计算机通信科技(深圳)有限公司 一种视频通话中传递信息的方法、系统及移动终端
JP5502706B2 (ja) * 2010-11-18 2014-05-28 ルネサスエレクトロニクス株式会社 映像処理装置及び映像処理方法
US9588951B2 (en) 2010-12-06 2017-03-07 Smart Technologies Ulc Annotation method and system for conferencing
US20120210261A1 (en) 2011-02-11 2012-08-16 Apple Inc. Systems, methods, and computer-readable media for changing graphical object input tools
US8698873B2 (en) 2011-03-07 2014-04-15 Ricoh Company, Ltd. Video conferencing with shared drawing
US20120236105A1 (en) 2011-03-14 2012-09-20 Motorola Mobility, Inc. Method and apparatus for morphing a user during a video call
US8767034B2 (en) 2011-12-01 2014-07-01 Tangome, Inc. Augmenting a video conference
US9088426B2 (en) 2011-12-13 2015-07-21 Google Inc. Processing media streams during a multi-user video conference
US9357174B2 (en) * 2012-04-09 2016-05-31 Intel Corporation System and method for avatar management and selection
KR101434728B1 (ko) 2012-05-15 2014-08-29 조현근 영상 통화 시스템에서의 영상 통화 중 드로잉 협업 방법
KR101989016B1 (ko) * 2012-08-29 2019-06-13 삼성전자주식회사 전자장치에서 영상통화중 파일 전송 방법 및 장치
CN102903265A (zh) 2012-09-19 2013-01-30 河南智游网络技术有限公司 一种课堂教学自动记录的方法
US9143823B2 (en) 2012-10-01 2015-09-22 Google Inc. Providing suggestions for optimizing videos to video owners
US20140181910A1 (en) * 2012-12-21 2014-06-26 Jim Fingal Systems and methods for enabling parental controls based on user engagement with a media device
US20140198177A1 (en) * 2013-01-15 2014-07-17 International Business Machines Corporation Realtime photo retouching of live video
US20140258863A1 (en) * 2013-03-11 2014-09-11 United Video Properties, Inc. Systems and methods for browsing streaming content from the viewer's video library
US9251405B2 (en) * 2013-06-20 2016-02-02 Elwha Llc Systems and methods for enhancement of facial expressions
US20150189355A1 (en) * 2013-12-26 2015-07-02 United Video Properties, Inc. Systems and methods for printing three-dimensional objects as a reward
US9560254B2 (en) * 2013-12-30 2017-01-31 Google Technology Holdings LLC Method and apparatus for activating a hardware feature of an electronic device
GB2524473A (en) * 2014-02-28 2015-09-30 Microsoft Technology Licensing Llc Controlling a computing-based device using gestures
US20160019420A1 (en) * 2014-07-15 2016-01-21 Qualcomm Incorporated Multispectral eye analysis for identity authentication
GB201419441D0 (en) * 2014-10-31 2014-12-17 Microsoft Corp Modifying video call data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022131784A1 (ko) * 2020-12-18 2022-06-23 삼성전자 주식회사 증강 현실 콘텐츠를 제공하는 전자 장치 및 방법
WO2022255625A1 (ko) * 2021-06-02 2022-12-08 삼성전자주식회사 영상 통화 중 다양한 커뮤니케이션을 지원하는 전자 장치 및 그의 동작 방법

Also Published As

Publication number Publication date
GB201419441D0 (en) 2014-12-17
WO2016069669A2 (en) 2016-05-06
EP3198559B1 (en) 2019-03-20
US9445043B2 (en) 2016-09-13
WO2016069669A3 (en) 2016-09-01
US20160127682A1 (en) 2016-05-05
CN107111427A (zh) 2017-08-29
EP3198559A2 (en) 2017-08-02
CN107111427B (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
US10750121B2 (en) Modifying images from a camera
EP3198559B1 (en) Modifying video call data
JP6638892B2 (ja) 画像及び深度データを用いて3次元(3d)人物顔面モデルを発生させるための仮想現実ベースの装置及び方法
US11303850B2 (en) Communication using interactive avatars
US9936165B2 (en) System and method for avatar creation and synchronization
CN112042182B (zh) 通过面部表情操纵远程化身
KR101768532B1 (ko) 증강 현실을 이용한 화상 통화 시스템 및 방법
CN108353127A (zh) 基于深度相机的图像稳定
US20230419497A1 (en) Whole body segmentation
US20230069614A1 (en) High-definition real-time view synthesis
CN105528142A (zh) 一种3d动画聊天方法
CN117546460A (zh) 3d图像数据流的交互式处理
CN117999115A (zh) 为多用户通信会话对准扫描环境
Chen et al. Stereo camera system and its application in networked virtual environment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application