KR20210010517A - 자세 교정 - Google Patents

자세 교정 Download PDF

Info

Publication number
KR20210010517A
KR20210010517A KR1020207035826A KR20207035826A KR20210010517A KR 20210010517 A KR20210010517 A KR 20210010517A KR 1020207035826 A KR1020207035826 A KR 1020207035826A KR 20207035826 A KR20207035826 A KR 20207035826A KR 20210010517 A KR20210010517 A KR 20210010517A
Authority
KR
South Korea
Prior art keywords
face
video
frames
foreground portion
background
Prior art date
Application number
KR1020207035826A
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 KR20210010517A publication Critical patent/KR20210010517A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation
    • G06V40/166Detection; Localisation; Normalisation using acquisition arrangements
    • G06K9/00255
    • G06K9/22
    • G06T5/002
    • G06T5/006
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/10Image acquisition
    • G06V10/17Image acquisition using hand-held instruments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20068Projection on vertical or horizontal image axis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)
  • Geometry (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

일부 구현들은 모바일 디바이스에 의해 캡처된 비디오 이미지들의 자세 교정을 위한 컴퓨터 구현 방법, 컴퓨터 판독 가능 매체 및/또는 시스템을 포함할 수 있다.

Description

자세 교정
[0001] 간혹, 사용자가 비디오 통화에서 모바일 디바이스(예컨대, 휴대 전화, 태블릿 등)를 사용하고 있을 때, 사용자는 모바일 디바이스가 사용자의 이미지를 부적절한 각도, 예컨대 사용자의 이미지를 사용자의 표정을 보기에 최적이 아닌 각도, 얼굴 왜곡이 있는 이미지를 생성하는 각도 등으로 캡처하도록 사용자의 얼굴에 대한 각도로 모바일 디바이스를 잡거나 배치할 수 있다. 예를 들어, 휴대 전화가 위를 향한 각도로 사용자의 얼굴 쪽을 가리키게 되는 방식으로 사용자가 전화를 위쪽으로 향하게 잡을 수 있으며, 이는 (예컨대, 턱과 코 아래에서부터 위쪽을 바라보는) 최적이 아닌 각도로 사용자를 캡처할 수 있고, 사용자의 얼굴이 왜곡된 것처럼 보이게 하거나 마치 사용자가 통화 중에 다른 참가자들과 마주하고 있지 않고 눈맞춤을 놓친 것 같을 수 있게 보이게 할 수 있다. 추가로, 사용자의 손이 흔들릴 수 있고 비디오 통화를 위해 캡처되는 이미지에 지터를 발생시킬 수 있다.
[0002] 본 명세서에서 제공되는 배경 설명은 일반적으로 본 개시내용의 맥락을 제시하는 것을 목적으로 한다. 현재 지명된 발명자들의 작업은, 이 배경 섹션뿐만 아니라, 출원 시에 종래 기술로서 달리 한정할 수 없는 설명의 양상들에서 설명되는 한도까지, 명확하게도 묵시적으로도 본 개시내용에 대한 종래 기술로서 인정되지 않는다.
[0003] 일부 구현들은 일반적으로 모바일 디바이스의 비디오 통화에 관한 것으로, 특히 모바일 디바이스에 의해 캡처된 비디오 이미지들의 자세 교정에 관한 것이다.
[0004] 일부 구현들은 사용자 디바이스와 연관된 깊이 카메라를 사용하여 사용자의 얼굴 자세 및 눈의 시선을 캡처하고 얼굴 자세의 얼굴 자세 교정 및 안정화를 수행하는 것을 포함한다.
[0005] 일부 구현들은 컴퓨터 구현 방법을 포함할 수 있다. 이 방법은 복수의 프레임들을 포함하는 비디오를 수신하는 단계 ― 비디오는 제1 시점(point of view)으로 물리적 카메라에 의해 캡처되고, 비디오는 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―, 및 비디오 내에서 얼굴을 검출하는 단계를 포함할 수 있으며, 여기서 얼굴은 비디오의 하나 이상의 프레임들의 전경 부분 내에 있다.
[0006] 이 방법은 또한, 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 복수의 프레임들의 전경 부분을 결정하는 단계, 및 제1 시점과는 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 단계를 포함할 수 있다. 이 방법은 가상 카메라에 기초하여 전경 부분의 투영 행렬(projection matrix)을 획득하는 단계 ― 투영 행렬은 제2 시점에 대응함 ―, 및 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 단계를 더 포함할 수 있다.
[0007] 이 방법은 또한, 비디오를 캡처하는 데 사용된 물리적 카메라의 렌즈 효과를 감소시키도록 전경 부분의 투영 행렬을 조정하는 단계를 포함할 수 있다. 일부 구현들에서, 얼굴을 검출하는 단계는 배경 평면으로부터 얼굴을 추출하는 단계를 포함할 수 있으며, 여기서 배경 평면은 깊이 정보에 기초하여 결정된다. 이 방법은 또한, 제2 시점으로 가상 카메라를 향하도록 배경 평면을 회전시키는 단계를 포함할 수 있다.
[0008] 일부 구현들에서, 전경 부분을 결정하는 단계는 얼굴 및 배경을 검출하는 단계는 포함할 수 있고, 검출하는 단계는 배경으로부터 얼굴의 전경 부분을 돌출시키는 단계를 포함할 수 있다. 일부 구현들에서, 돌출시키는 단계는 깊이 정보에 기반한 얼굴 깊이를 검출하는 단계, 프레임들 내에서 얼굴의 외측 에지의 깊이를 결정하는 단계, 및 얼굴의 외측 에지의 깊이 및 얼굴의 외측 에지 너머의 깊이들에 있는 프레임들의 부분들을 포함하도록 배경을 설정하는 단계를 포함할 수 있다.
[0009] 이 방법은 또한, 배경을 흐림(blur) 처리하는 단계를 포함할 수 있다. 이 방법은 비디오의 깊이 정보의 시간 이력을 결정하는 단계를 더 포함할 수 있다. 이 방법은 또한, 재투영의 연속성을 유지하고 재투영되는 얼굴 앞에서 움직이는 일시적 객체들에 응답하지 않도록 비디오의 깊이 정보의 시간 이력을 사용하여 비디오 재투영의 히스테리시스를 제공하는 단계를 포함할 수 있으며, 일시적 객체들은 임계 시간 기간 미만 동안 재투영되는 얼굴 앞에 있다.
[0010] 일부 구현들은 비-일시적 컴퓨터 판독 가능 매체에 결합된 하나 이상의 프로세서들을 포함하는 시스템을 포함할 수 있으며, 비-일시적 컴퓨터 판독 가능 매체 상에는 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 소프트웨어 명령들이 저장된다. 동작들은 복수의 프레임들을 포함하는 비디오를 수신하는 동작 ― 비디오는 제1 시점으로 물리적 카메라에 의해 캡처되고, 비디오는 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―, 및 비디오 내에서 얼굴을 검출하는 동작을 포함할 수 있으며, 여기서 얼굴은 비디오의 하나 이상의 프레임들의 전경 부분 내에 있다.
[0011] 동작들은 또한, 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 복수의 프레임들의 전경 부분을 결정하는 동작, 및 제1 시점과는 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 동작을 포함할 수 있다. 동작들은 가상 카메라에 기초하여 전경 부분의 투영 행렬을 획득하는 동작 ― 투영 행렬은 제2 시점에 대응함 ―, 및 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 동작을 더 포함할 수 있다. 동작들은 수정된 비디오의 수정된 전경 부분을 안정화하는 동작을 또한 포함할 수 있다.
[0012] 동작들은 비디오를 캡처하는 데 사용된 물리적 카메라의 렌즈 효과를 감소시키도록 전경 부분의 투영 행렬을 조정하는 동작을 더 포함할 수 있다. 일부 구현들에서, 얼굴을 검출하는 동작은 배경 평면으로부터 얼굴을 추출하는 동작을 포함하며, 여기서 배경 평면은 깊이 정보에 기초하여 결정된다.
[0013] 동작들은 또한, 제2 시점으로 가상 카메라를 향하도록 배경 평면을 회전시키는 동작을 포함할 수 있다. 일부 구현들에서, 전경 부분을 결정하는 동작은 얼굴 및 배경을 검출하는 동작을 포함하고, 검출하는 동작은 배경으로부터 얼굴의 전경 부분을 돌출시키는 동작을 포함한다. 일부 구현들에서, 돌출시키는 동작은 깊이 정보에 기반한 얼굴 깊이를 검출하는 동작, 프레임들 내에서 얼굴의 외측 에지의 깊이를 결정하는 동작, 및 얼굴의 외측 에지의 깊이 및 얼굴의 외측 에지 너머의 깊이들에 있는 프레임들의 부분들을 포함하도록 배경을 설정하는 동작을 포함할 수 있다.
[0014] 동작들은 또한, 배경을 흐림 처리하는 동작을 포함할 수 있다. 동작들은 비디오의 깊이 정보의 시간 이력을 결정하는 동작을 더 포함할 수 있다. 동작들은 또한, 재투영의 연속성을 유지하고 재투영되는 얼굴 앞에서 움직이는 일시적 객체들에 응답하지 않도록 비디오의 깊이 정보의 시간 이력을 사용하여 비디오 재투영의 히스테리시스를 제공하는 동작을 포함할 수 있으며, 일시적 객체들은 임계 시간 기간 미만 동안 재투영되는 얼굴 앞에 있다.
[0015] 일부 구현들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 소프트웨어 명령들이 저장된 비-일시적 컴퓨터 판독 가능 매체를 포함할 수 있다. 동작들은 복수의 프레임들을 포함하는 비디오를 수신하는 동작 ― 비디오는 제1 시점으로 물리적 카메라에 의해 캡처되고, 비디오는 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―, 및 비디오 내에서 얼굴을 검출하는 동작을 포함할 수 있으며, 여기서 얼굴은 비디오의 하나 이상의 프레임들의 전경 부분 내에 있다. 동작들은 또한, 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 복수의 프레임들의 전경 부분을 결정하는 동작, 및 제1 시점과는 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 동작을 포함할 수 있다.
[0016] 동작들은 가상 카메라에 기초하여 전경 부분의 투영 행렬을 획득하는 동작 ― 투영 행렬은 제2 시점에 대응함 ―, 및 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 동작을 더 포함할 수 있다. 동작들은 수정된 비디오의 수정된 전경 부분을 안정화하는 동작을 또한 포함할 수 있다. 일부 구현들에서, 전경 부분을 결정하는 동작은 얼굴 및 배경을 검출하는 동작을 포함할 수 있고, 여기서 검출하는 동작은 배경으로부터 얼굴의 전경 부분을 돌출시키는 동작을 포함한다.
[0017] 도 1은 예시적인 사용자 디바이스가 비디오 통화를 수행하는 데 사용되고 있으며, 사용자 디바이스가 더 낮은 품질의 비디오를 생성할 수 있는 각도로 사용자를 캡처하는 것을 도시하는 도면이다.
[0018] 도 2는 예시적인 사용자 디바이스가 비디오 통화를 수행하는 데 사용되고 있으며, 사용자 디바이스가 낮은 품질의 비디오를 생성할 수 있는 각도로 사용자를 캡처하고 일부 구현들에 따라 더 높은 품질의 비디오를 생성하도록 사용자의 자세를 교정하는 데 가상 시점이 사용되는 것을 도시하는 도면이다.
[0019] 도 3은 더 낮은 품질의 비디오를 생성할 수 있는 각도로 비디오가 캡처된 비디오 통화를 도시하는 예시적인 사용자 디바이스의 도면이다.
[0020] 도 4는 교정된 자세 및 더 높은 품질의 비디오를 생성하도록 비디오가 재투영된 비디오 통화를 도시하는 예시적인 사용자 디바이스의 도면이다.
[0021] 도 5는 일부 구현들에 따른 자세 교정을 위한 예시적인 방법의 흐름도이다.
[0022] 도 6은 일부 구현들에 따른 자세 교정을 위한 예시적인 방법의 흐름도이다.
[0023] 도 7은 일부 구현들에 따른 자세 교정을 위해 구성된 예시적인 컴퓨팅 디바이스의 도면이다.
[0024] 일부 구현들은 비디오 통화 또는 회의 시에 사용자 자세를 수정 또는 교정하기 위한 방법들 및 시스템들을 포함한다. 사용자들은 더 낮은 품질의 비디오를 생성할 수 있는 각도로 카메라를 사용하여 비디오 통화에 참여하고 있거나 통화 중 어떤 순간에 이러한 각도로 움직이고 있을 수 있다. 예를 들어, 사용자가 자신들의 휴대 전화를 어떻게 들고 있는지에 따라 사용자는 비디오를 올려다보고 있는 것처럼 보일 수 있다. 대부분의 비디오 통화 디바이스들, 예컨대 스마트폰들, 랩톱들, 태블릿들 등은 현재, 디바이스 최상단에 카메라를 포함한다. 이러한 배치는 종종 비디오 통화에 최적이 아닌 이미지들을 생성한다. 구현에 의한 자세 교정에 적합한 이미지들은 사진들, 시네마그래프들 및 다른 애니메이션 이미지들, 비디오들 등과 같은 단일 이미지들을 포함할 수 있다.
[0025] 일부 구현들은 사용자가 (예컨대, 카메라를 직접 향하는 등) 교정된 자세를 생성하는 각도인 것으로 보이도록 가상 시점(point of view)(또는 가상 카메라 각도)을 사용하여 사용자의 비디오 이미지를 재투영함으로써 조정된 비디오 통화 참석을 생성할 수 있다. 일부 구현들은 또한 (예컨대, 큰 코 효과를 제거하기 위한) 카메라 왜곡에 대한 교정, (예컨대, 사용자 손 움직임에 의해 야기되는) 지터 효과의 감소 등을 포함할 수 있다.
[0026] 비디오 프레임들로부터 컬러 및 깊이 정보를 캡처함으로써, 구현은 전경에 대한 깊이를 돌출시킬 수 있다. 시스템은 디바이스의 물리적 카메라와는 다른 각도로(예컨대, 다른 사람들이 사용자를 직접 보고 있는 효과를 주도록 위로) 가상 카메라를 배치할 수 있다.
[0027] 일부 구현들은 세 가지 주요 동작들: 1) 프레임 내 얼굴 검출; 2) 자세 교정; 및 3) 시선 교정을 포함할 수 있다. 일부 구현들에서, 프레임 내 얼굴 검출은 (각자의 소유자들의 상표들인 ARKit 또는 ARCore와 같은) 프레임 내에서 얼굴의 포지션 및 얼굴 자세 각도(예컨대, 3D 오일러 각도)를 제공하는 기술을 사용하는 것을 포함할 수 있다. 자세 각도는 카메라에 대한 얼굴의 각도를 포함할 수 있다(예컨대, 똑바로 보는 것은 0, 0, 0이고, 얼굴이 축들 중 하나를 중심으로 회전되면, 해당 축에 대응하는 각도가 3D 오일러 각도에서 변경됨). 포지션은 컬러 이미지 내의 x, y 포지션이며, 이 포지션으로부터 디바이스가 디바이스에 대한 포지션(예컨대, x, y, z 포지션)을 결정할 수 있다. 프레임에 추가 패딩이 추가되어 버퍼를 제공할 수 있다. 사용자의 얼굴이 카메라에 대한 임계(또는 안전) 각도 범위(예컨대, x 축 또는 y 축을 중심으로 약 + 또는 -20도) 내에 있을 때마다, 시스템은 본 명세서에서 설명되는 자세 교정을 위한 기술들이 가장 효과적일 가능성이 있게 비디오의 프레임 내에 사용자의 얼굴이 포지셔닝됨을 나타내는 높은 신뢰도 값을 반환한다. 사용자의 얼굴의 이미지가 패딩 영역에 있다면, 신뢰도가 더 낮고(예컨대, 사용자의 얼굴 포지션을 고려하면, 본 명세서에서 설명되는 자세 교정 기술들이 효과적으로 작동하지 않을 수 있음을 나타냄) 패딩 영역 내의 얼굴의 부분이 증가할수록 신뢰도가 감소한다. 사용자가 허용 가능한 범위(예컨대, 프레임 및/또는 패딩) 밖에 있다면, 신뢰도 없음(또는 0 또는 0에 가까운 신뢰도 값)이 반환된다.
[0028] 프레임 내 얼굴 검출에 기초하여 사용자에 대한 신뢰도, 이유 또는 기준 및/또는 안내가 제공될 수 있다. 위에서 논의한 바와 같이, 신뢰도는 비디오 또는 다른 이미지의 프레임 내에서 주어진 얼굴 포지션에 자세 교정 기술이 효과적으로 적용될 수 있는 신뢰 레벨을 나타낸다. 이유 또는 기준은 신뢰 점수가 낮을 수 있는 이유(예컨대, 경계에 너무 가까운 얼굴 등)의 표시를 포함할 수 있다. 안내는 낮은 신뢰 점수를 야기한 문제를 정정할 것을 사용자에게 지시하는 데 도움이 되도록 시스템에 의해 (예컨대, 그래픽 사용자 인터페이스를 통해) 제공되는 표시를 포함할 수 있다. 예를 들어, 신뢰도가 낮다면, 이유가 결정될 수 있고 그 이유에 기반한 피드백(예컨대, 더 낮은 신뢰도에 따라 투명도를 높이는 검은 그늘 또는 프레임으로 다시 돌아오도록 사용자에게 지시하는 작은 화살표 등)이 사용자에게 제공되어, 사용자에게 비디오 캡처를 변경하여 신뢰도를 높이도록 안내하는 것을 도울 수 있다.
[0029] 이미지 캡처 디바이스가 깊이 데이터, 예를 들어 깊이 센서 또는 디바이스의 다른 하드웨어를 사용하여 캡처된 실시간 깊이 데이터를 제공할 때, 구현들은 얼굴 자세와 함께 이러한 데이터를 고려할 수 있다. 카메라 RGB 피드는 카메라 전방에 수직인 평면(예컨대, 카메라의 렌즈로부터 카메라가 캡처하고 있는 피사체를 향해 전방 방향으로 가리키는 벡터)으로 표현될 수 있으며 시각 절두체(view frustum)를 채우도록 늘어난다. 일부 구현들에서, 자세 교정은 세 가지 동작들: 배경 검출, 돌출 및 회전을 포함할 수 있다.
[0030] 일부 구현들에서, 배경 검출은 배경을 검출 또는 결정하기 위해 깊이 데이터를 사용하는 것을 포함할 수 있다. 라이브 깊이 프레임들을 사용하는 배경 검출에는 두 가지 주요 기술 문제들: 잡음 및 블리딩(bleeding) 효과(예컨대, 에지들 근처의 누락 데이터로 인한 후광과 같은 아티팩트)가 있다. 일부 구현들은, 소벨(Sobel) 필터를 적용하여, 배경으로 취급될 수 있는 영역들의 에지들을 검출함으로써 블리딩 효과 문제에 대한 솔루션을 제공한다. 공간적 또는 시간적 잡음과 같은 잡음 문제를 해결하기 위해, 평활화 알고리즘이 사용될 수 있다.
[0031] 주어진 지점이 배경인지 아니면 전경인지의 신뢰도를 정의하는(이에 따라 전경 부분의 에지들 주변에서의 페이드 효과에 사용될 수 있는 정보를 제공하는) 범위(예컨대, [0, 1])의 값을 반환하는 상기 기능을 위해 셰이더(shader)가 구현될 수 있다. 셰이더는 효율을 달성하기 위해 CPU 대신 GPU 상에서 실행되는 픽셀별 분류기를 포함할 수 있다. 셰이더는 입력으로서 컬러 이미지를 수신하고 출력 이미지로서 전경/배경 마스크를 생성한다(예컨대, 빨강 = 전경 및 검정 = 배경 등). 다른 셰이더는 컬러 이미지, 깊이 이미지, 전경/배경 마스크 및/또는 카메라 내부들(예컨대, 카메라의 초점 거리 및 다른 카메라 파라미터들 또는 설정들)을 입력으로서 사용하여 자세 교정을 수행한다.
[0032] 일부 구현들은 하나 이상의 비디오 프레임들(또는 다른 이미지들)의 적어도 일부의 돌출 및 회전을 포함할 수 있다. 돌출 및 회전은 평활화된 디스패리티(disparity) 맵 데이터를 사용하는 것을 포함할 수 있다. 디스패리티 맵 데이터가 (카메라 평면 표현에서) 이미지의 전경 부분에 적용되어 전경 픽셀들을 카메라에 더 가깝게 이동시킬 수 있다. 디스패리티 맵은 깊이 데이터를 나타내는(예컨대, 디바이스 카메라에서 한 지점까지의 거리를 나타내는) 다른 방법이다.
[0033] 일부 구현들에서, 하나 이상의 프레임들에서(예컨대, 첫 번째 프레임에서) 얼굴 평면에 수직이 되도록 가상 카메라 포지션이 업데이트된다. 가상 카메라 포지션을 업데이트하는 것은 카메라의 전방 벡터를 얼굴 앵커의 전방 벡터의 반대가 되도록 설정하는 것을 포함할 수 있다. 얼굴 앵커는 얼굴 검출 중에 계산된 얼굴 포지션 및 얼굴 회전 각도를 포함한다. 일부 구현들에서, 카메라의 투영 행렬은, 디바이스가 움직일 때마다 이루어지며 의도적인 얼굴 움직임들을 상쇄시키지 않기 위해 얼굴 자세와 "정면 자세" 간의 현재 델타를 고려하는 계산을 사용하여 이미지 평면의 4개의 에지들을 통과하도록 업데이트될 수 있다. 일부 구현들에서, 투영 행렬은 전경 픽셀들에 대해 유지될 수 있고, 배경 픽셀들에 대한 투영은 계산 시간을 줄이기 위해 스킵될 수 있으며, 주의할 점은 전경 픽셀들이 가시적이라는 것이다. 전경이 배경을 가린 다음 확대되어, 얼굴 회전에 의해 생성된 임의의 갭들을 커버하도록, 전경이 확대되어 배경과의 임의의 불완전한 일치들을 숨길 수 있다.
[0034] 일부 구현들은 배경 처리들을 포함할 수 있다. 일부 구현들에서, 배경 처리들은 회전으로 인해 늘어날 수 있는 배경을 조정하는 것을 포함할 수 있다. 배경이 산만한 모양을 갖지 않도록, 배경에 흐림(blur)효과가 사용될 수 있다.
[0035] 본 명세서에서 제공되는 시스템들 및 방법들은 어떤 종래의 비디오 통화 시스템들 및 방법들의 하나 이상의 결함들을 극복할 수 있다. 예를 들어, 어떤 종래의 비디오 통화 시스템은 낮은 품질의 비디오 캡처의 원인이 될 수 있는 카메라 각도를 검출, 교정 또는 조정하는 능력을 제공하지 않을 수 있거나 과장된 특징들 및/또는 움직임 효과들과 같은 다른 문제들을 비디오 프레임들에 일으킬 수 있다. 디지털 카메라들, 내장 카메라들을 가진 전화기들, 카메라들을 가진 웨어러블 디바이스들, 머리 장착형 디바이스들, 태블릿들, 개인용 컴퓨터들 등과 같은 디지털 이미지 캡처 디바이스들의 손쉬운 이용 가능성으로 인해, 사용자들은 빈번하게 비디오를 캡처 또는 송신할 수 있다.
[0036] 본 명세서에서 설명되는 예시적인 시스템들 및 방법들은 비디오들 또는 다른 이미지들의 자동 자세 교정을 사용자들에게 제공하기 위한 종래의 비디오 캡처 시스템들의 결함들 중 하나 이상을 극복할 수 있다. 일부 종래 시스템들의 기술 문제는, 이러한 시스템들이 이미지 분석 및 대응하는 신뢰 점수들을 기반으로 자세들을 검출 및 교정하지 못한다는 점일 수 있다. 개시되는 청구 대상은 비디오들 또는 다른 이미지들의 자세들을 교정하고 그리고/또는 다른 비디오 또는 이미지 문제들을 자동으로 교정하기 위한 특정 기술들에 관한 것이다. 개시되는 청구 대상의 일부 구현들은 앞서 언급한 기술 문제들 중 하나 이상에 대한 솔루션을 제공한다. 예를 들어, 비디오를 재투영함으로써, 일부 구현들은 카메라 각도에 관계없이 고품질 비디오를 가능하게 한다.
[0037] 본 명세서에서는 비디오들이 청구 대상을 설명하기 위한 예들로서 사용된다. 개시되는 청구 대상의 구현에 다른 타입들의 이미지들이 사용될 수 있다. 이미지는 정적 이미지(예컨대, 움직임이 없는 단일 프레임), 애니메이션 이미지, (예컨대, 복수의 프레임들을 갖는) 비디오 등일 수 있다. 예를 들어, 정적 이미지는 하나 이상의 객체들을 묘사할 수 있는 한편, 애니메이션 이미지는 이미지 내에서 변경되는 하나 이상의 객체들(예컨대, 닫힌 상태와 열린 상태 간에 전환되는 눈들과 함께 얼굴을 캡처하는 라이브 사진, 입이 웃지 않는 포지션에서 웃는 포지션으로 움직이는 얼굴 등)을 묘사할 수 있다. 비디오는 하나 이상의 사람들 또는 객체들을 묘사하는 복수의 프레임들을 포함할 수 있다. 자세 교정은 임의의 타입의 이미지에 대해 제공될 수 있으며, 동일한 그리고/또는 서로 다른 타입들의 이미지들의 그룹을 포함할 수 있다.
[0038] 도 1은 사용자 디바이스(104)를 사용하여 비디오 통화를 수행하는 예시적인 사용자(102)를 도시하는 도면이다. 사용자 디바이스(104)는 도 3에 도시된 예시적인 더 낮은 품질의 비디오 프레임과 같은 더 낮은 품질의 비디오를 생성할 수 있는 각도로 사용자의 비디오를 캡처하고 있는 사용자의 얼굴에 대한 각도에 있다.
[0039] 사용자(102)의 얼굴에 대한 사용자 디바이스(104)의 각도로 인해, 카메라에서부터 사용자의 머리의 최상단까지의 제1 거리(106)는 사용자 디바이스(104)의 카메라에서부터 사용자(102) 얼굴의 최하단까지의 제2 거리(108)와 다르다(예컨대, 더 길다). 사용자 디바이스(104)의 위를 향한 각도로 인한 거리들(106, 108)의 차이의 결과는 고품질 비디오를 제공하지 않을 수 있는(예컨대, 왜곡 등을 발생시킬 수 있는) 자세(예컨대, 도 3의 디바이스(302) 상에 도시된 것과 같음)를 생성한다.
[0040] 더 낮은 품질의 비디오를 생성할 수 있는 각도의 자세 외에도, (예컨대, 사용자(102)에 의한 손 움직임 또는 지터로 인한) 움직임 효과들 및 사용자 디바이스(104)의 렌즈로 인한 이미지 효과들(예컨대, 큰 코 효과)과 같은 다른 문제들이 비디오에 도입될 수 있다. 이러한 문제들은 사용자 디바이스 상의(예컨대, 디바이스의 최상단의) 카메라의 물리적 배치로 인해 그리고 휴대 전화들 또는 웨어러블 디바이스들, 예컨대 스마트워치 또는 다른 디바이스와 같은 사용자 디바이스들을 잡기 위한 일반적인 자세로 인해 발생할 수 있는데, 여기서 전화(또는 다른 디바이스)를 잡고 있는 손은 사용자의 얼굴에 대해 아래를 향한 각도에 있다. 이미지들의 전경 부분들의 왜곡(예컨대, 더 낮은 품질의 비디오(304)를 생성할 수 있는 각도로 캡처된 자세)뿐만 아니라, 카메라 각도는 또한 왜곡되는 배경(306)을 야기할 수 있다.
[0041] 도 2는 예시적인 사용자 디바이스(104)가 비디오 통화를 수행하는 데 사용되고 있으며, 사용자 디바이스(104)가 더 낮은 품질의 비디오를 생성할 수 있는 각도(예컨대, 106과 108의 차이)로 사용자(102)를 캡처하는 것을 도시하는 도면이다. 도 2는 또한 사용자(102)의 이미지를 재투영하고 사용자의 자세를 교정하는 데 사용되는 가상 시점(202)을 도시한다. 가상 시점(202)은 일반적으로 사용자(102)의 얼굴 평면에 평행하고(또는 적어도, 사용자 디바이스(104)보다 얼굴 평면에 평행한 평행선에 더 가깝고), 가상 시점(202)으로부터 사용자(102)의 얼굴의 최상단까지의 제1 거리(204)가 가상 시점(202)으로부터 사용자(102)의 얼굴의 최하단까지의 제2 거리(206)와 거의 동일하게 된다. 가상 시점은 도 4에 도시된 바와 같이 조정된 자세(404)를 생성하기 위해 본 명세서에서 설명되는 바와 같이 비디오에서 사용자의 얼굴을 재투영하는 데 사용될 수 있다. 도 4에서, 재투영된 비디오를 수신하는 디바이스(402)는 사용자의 조정된 자세(404) 및 도 3의 회전되지 않은 배경(306)에 비해 왜곡을 줄이기 위해 회전된 배경(406)을 포함한다. 가상 시점(202)은 얼굴 앞에 있다(예컨대, 디바이스에서부터 얼굴까지 동일한 거리를 갖지만, 사용자의 얼굴 바로 앞에 있도록 회전됨).
[0042] 각각의 사용자 디바이스(또는 클라이언트 디바이스)는 임의의 타입의 전자 디바이스, 예컨대 데스크톱 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 디바이스, 카메라, 휴대 전화, 스마트폰, 태블릿 컴퓨터, 텔레비전, TV 셋톱 박스 또는 엔터테인먼트 디바이스, 웨어러블 디바이스들(예컨대, 디스플레이 안경 또는 고글, 머리 장착형 디스플레이(HMD: head-mounted display), 손목 시계, 헤드셋, 암밴드, 주얼리 등), 가상 현실(VR: virtual reality) 및/또는 증강 현실(AR: augmented reality) 지원 디바이스들, PDA(personal digital assistant), 미디어 플레이어, 게임 디바이스 등일 수 있다. 일부 클라이언트 디바이스들은 또한 데이터베이스 또는 다른 저장소와 유사한 로컬 데이터베이스를 가질 수 있다. 다른 구현들에서, 네트워크 환경(100)은 도시된 모든 컴포넌트들을 갖지는 않을 수 있고 그리고/또는 본 명세서에서 설명되는 것들 대신에 또는 그 이외에 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다.
[0043] 사용자 인터페이스는 이미지들, 이미지 합성들, 데이터 및 다른 콘텐츠뿐만 아니라 통신들, 개인 정보 설정들, 알림들, 및 클라이언트 디바이스 상의 다른 데이터의 디스플레이를 활성화할 수 있다. 이러한 인터페이스는 클라이언트 디바이스 상의 소프트웨어, 서버 디바이스 상의 소프트웨어, 및/또는 서버 디바이스 상에서 실행되는 서버 소프트웨어와 클라이언트 소프트웨어의 조합, 예컨대 서버 시스템과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는 클라이언트 디바이스 또는 서버 디바이스의 디스플레이 디바이스, 예컨대 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현들에서, 서버 시스템 상에서 실행되는 애플리케이션 프로그램들은 클라이언트 디바이스와 통신하여 클라이언트 디바이스에서 사용자 입력을 수신할 수 있고 클라이언트 디바이스에서 시각적 데이터, 오디오 데이터 등과 같은 데이터를 출력할 수 있다.
[0044] 일부 구현들에서, 하나 이상의 클라이언트 디바이스들 및/또는 서버 시스템은 자세 교정을 제공할 수 있다. 자세 교정은 시스템(예컨대, 클라이언트 디바이스 또는 서버 디바이스)이 캡처 문제들이 있는 비디오들에 대한 자세 교정을 자동으로 제공하게 할 수 있으며, 그 일부 예들이 본 명세서에서 설명된다. 자세 교정 시스템들 및 방법들은 교정된 비디오를 수신하는 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이되는 하나 이상의 연관된 사용자 인터페이스(들)에 교정된 비디오를 제공할 수 있다. 본 명세서에서 설명되는 하나 이상의 특징들, 이를테면 이미지 관리 애플리케이션들, 브라우저들, 통신 애플리케이션들 등과 함께 다른 애플리케이션들이 또한 사용될 수 있다.
[0045] 본 명세서에서 설명되는 특징들의 다양한 구현들은 임의의 타입의 시스템 및/또는 서비스를 사용할 수 있다. 예를 들어, 소셜 네트워킹 서비스들, 이미지 수집 및 공유 서비스들, 보조 메시징 서비스들 또는 (예컨대, 인터넷에 접속된) 다른 네트워크된 서비스들은 클라이언트 및 서버 디바이스들에 의해 액세스되는 하나 이상의 설명되는 특징들을 포함할 수 있다. 임의의 타입의 전자 디바이스는 본 명세서에서 설명되는 특징들을 사용할 수 있다. 일부 구현들은 컴퓨터 네트워크들로부터 접속이 끊긴 또는 컴퓨터 네트워크들에 간헐적으로 접속되는 클라이언트 또는 서버 디바이스들 상에서 본 명세서에서 설명되는 하나 이상의 특징들을 제공할 수 있다. 일부 예들에서, 디스플레이 디바이스를 포함하거나 그에 접속된 클라이언트 디바이스는 클라이언트 디바이스에 로컬인(예컨대, 통신 네트워크를 통해 접속되지 않은) 저장 디바이스들 상에 저장된 이미지들을 검사하고 디스플레이할 수 있으며, 사용자에게 보일 수 있는, 본 명세서에서 설명되는 특징들 및 결과들을 제공할 수 있다.
[0046] 도 5는 일부 구현들에 따른 자세 교정을 위한 예시적인 방법(500)의 흐름도이다. 일부 구현들에서, 방법(500)은 예를 들어 클라이언트 디바이스, 하나 이상의 서버 디바이스들, 및/또는 서버 디바이스(들)와 클라이언트 디바이스(들) 모두에서 구현될 수 있다. 설명되는 예들에서, 구현 시스템은 하나 이상의 디지털 하드웨어 프로세서들 또는 처리 회로("프로세서들") 및 하나 이상의 저장 디바이스들을 포함한다. 일부 구현들에서, 하나 이상의 클라이언트 디바이스들 및/또는 서버 디바이스들의 서로 다른 컴포넌트들은 방법(500)의 서로 다른 블록들 또는 다른 부분들을 수행할 수 있다.
[0047] 일부 구현들은 사용자 입력에 기초하여 방법(500)을 시작할 수 있다. 사용자는 예를 들어, 디스플레이된 사용자 인터페이스로부터 방법(500)의 시작을 선택했을 수 있다. 일부 구현들에서, 방법(500) 또는 이 방법의 부분들은 사용자 입력을 통해 사용자에 의한 안내에 따라 수행될 수 있다.
[0048] 일부 구현들에서, 방법(500) 또는 이 방법의 부분들은 디바이스에 의해 자동으로 시작될 수 있다. 예를 들어, 방법(또는 이 방법의 부분들)은 하나 이상의 특정 이벤트들 또는 조건들의 발생에 기초하여 수행될 수 있다. 예를 들어, 이러한 이벤트들 또는 조건들은 더 낮은 품질의 비디오를 생성할 수 있는 카메라 각도를 갖는 사용자 참여 비디오 통화 및/또는 디바이스 구현 방법(500)의 설정들에서 지정될 수 있는 하나 이상의 다른 이벤트들 또는 조건들의 발생을 포함할 수 있다.
[0049] 블록(502)에서, 방법(500)의 구현에서 사용자 데이터를 사용하도록 사용자 동의(예컨대, 사용자 승인)가 얻어졌는지 여부가 확인된다. 예를 들어, 사용자 데이터는 사용자 비디오 또는 이미지들을 포함할 수 있다. 본 명세서에서 설명되는 방법들의 하나 이상의 블록들은 (예컨대, 얼굴 검출 및/또는 자세 교정을 위해) 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다. 블록(502)은 공유 제안 프레임워크의 일부로서 그리고/또는 기능적 이미지 아카이빙 제안 프레임워크 레벨에서 제공된 동의를 검증하기 위해 수행될 수 있으며, 그에 따라 블록들(504 이상)은 기능적 이미지 아카이빙 제안 프레임워크 레벨에서 기능적 이미지 아카이빙 제안들을 수행하기 위한 사용자 동의가 얻어진 경우에만 호출될 것이다. 방법(500)에서 사용자 데이터가 사용될 수 있는 관련 사용자들로부터 사용자 동의가 얻어진다면, 블록(504)에서 본 명세서의 방법들의 블록들이 그러한 블록들에 대해 설명되는 바와 같이 사용자 데이터의 가능한 용도에 따라 구현될 수 있다고 결정되고, 방법은 블록(506)으로 이어진다. 사용자 동의가 얻어지지 않았다면, 블록(506)에서 사용자 데이터의 사용 없이 블록들이 구현되어야 한다고 결정되고, 방법은 블록(506)으로 이어진다. 일부 구현들에서, 사용자 동의가 얻어지지 않았다면, 방법(500)의 나머지가 수행되지 않고, 그리고/또는 사용자 데이터를 필요로 하는 특정 블록들이 수행되지 않는다.
[0050] 508에서, 비디오 프레임 내의 얼굴 포지션이 결정된다. 얼굴 포지션을 결정하는 것은 복수의 프레임들을 포함하는 비디오를 수신하는 것을 포함할 수 있으며, 이 비디오는 제1 시점으로 물리적 카메라(예컨대, 디바이스(104) 내의 카메라)에 의해 캡처된다. 일부 구현들에서, 비디오는 복수의 프레임들 중 하나 이상에 대한 깊이 정보를 포함할 수 있다. 얼굴 포지션을 결정하는 것은 또한 비디오 내에서 얼굴을 검출하는 것을 포함할 수 있으며, 여기서 얼굴은 비디오의 하나 이상의 프레임들의 전경 부분 내에 있다. 일부 구현들에서, 얼굴들의 검출을 위한 공지된 기술들을 사용하여 얼굴 검출이 수행될 수 있다. 처리는 510으로 이어진다.
[0051] 510에서, 자세 교정이 수행된다. 자세 교정은 조정된 얼굴 자세를 생성하도록 그리고/또는 렌즈 효과들 또는 다른 이미지 왜곡들을 줄이도록 비디오 내에서 얼굴 및/또는 배경을 재투영하는 것을 포함할 수 있다. 자세 교정은 도 6과 관련하여 아래에서 상세히 설명된다. 처리는 512로 이어진다.
[0052] 512에서, 자세 교정된 비디오에 대해 선택적으로 시선 교정이 수행된다. 시선 교정은 504에서 적용된 자세 교정에 대응하도록 비디오 내에서 얼굴의 눈 부분을 변경하는 것을 포함할 수 있다. 처리는 514로 이어진다.
[0053] 514에서, 자세 교정된 얼굴이 선택적으로 안정화된다. 안정화는 얼굴 자세를 안정화하기 위한 변환으로서 사용자 디바이스의 움직임에 기반한 역변환을 적용하는 것을 포함할 수 있다. 예를 들어, 안정화는 사용자 디바이스 움직임만을 고려하고 비디오의 서로 다른 프레임들 간의 얼굴의 움직임은 고려하지 않을 수 있다.
[0054] 일부 구현들에서는, 블록들(502-514)이 수행될 수 있다. 다른 구현들에서는, 블록들(502-514)의 서브세트가 수행될 수 있다. 예를 들어, 블록들(508, 510)이 수행된다. 다른 구현에서는, 블록들(508, 510, 514)이 수행된다. 또 다른 구현에서는, 블록들(508, 510, 512)이 수행된다. 앞서 설명한 구현들에서, 블록들은 다른 순서(예컨대, 510 및 508; 514, 510 및 508; 또는 512, 510 및 508 등)로 수행될 수 있다.
[0055] 안정화는 또한, 비디오의 깊이 정보의 시간 이력(예컨대, 주어진 시간 기간에 걸쳐 캡처된 서로 다른 비디오 프레임들로 캡처된 깊이 정보의 시계열)을 결정하고, 비디오 재투영을 위한 히스테리시스(또는 정해진 지연)를 제공하는 데 깊이 정보의 시간 이력을 사용하는 것을 포함할 수 있다. 히스테리시스는 자세 교정 방법이 재투영되는 얼굴 앞에서 움직이는 임의의 일시적 객체들에 응답(예컨대, 재투영에 포함)하지 않도록 재투영의 연속성을 유지하는 데 사용될 수 있다. 예를 들어, 얼굴 앞에서 움직이는 일시적 객체들(예컨대, 사용자의 손 또는 다른 객체)은 임계 시간 기간 미만 동안 검출 또는 재투영되는 객체들을 포함할 수 있다. 비디오 재투영의 히스테리시스에 의해 제공되는 지연은 재투영된 비디오가 재투영되는 얼굴 앞이나 근처를 지나가는 일시적 객체에 의해 중단되지 않도록 일시적 객체들을 재투영에서 제외하기에 충분할 수 있다(예컨대, 임계 시간 기간보다 크거나 같을 수 있다).
[0056] 도 5에서는, 다양한 블록들(예컨대, 블록들(502-514))이 순차적으로 수행되는 것으로 예시된다. 그러나 이러한 블록들은 특정 실시예들에 맞도록 편리하게 재배열될 수 있고 이러한 블록들 또는 이들의 부분들이 일부 실시예들에서는 동시에 수행될 수 있다고 인식될 것이다. 일부 예들에서는 다양한 블록들이 제거되고, 추가 블록들로 분할되고, 그리고/또는 다른 블록들과 조합될 수 있다고 또한 인식될 것이다.
[0057] 도 6은 일부 구현들에 따른 자세 교정을 위한 예시적인 방법(600)의 흐름도이다. 일부 구현들에서, 방법(600)은 예를 들어 클라이언트 디바이스, 하나 이상의 서버 디바이스들, 및/또는 서버 디바이스(들)와 클라이언트 디바이스(들) 모두에서 구현될 수 있다. 설명되는 예들에서, 구현 시스템은 하나 이상의 디지털 하드웨어 프로세서들 또는 처리 회로("프로세서들") 및 하나 이상의 저장 디바이스들을 포함한다. 일부 구현들에서, 하나 이상의 클라이언트 디바이스들 및/또는 서버 디바이스들의 서로 다른 컴포넌트들은 방법(600)의 서로 다른 블록들 또는 다른 부분들을 수행할 수 있다.
[0058] 일부 구현들은 사용자 입력에 기초하여 방법(600)을 시작할 수 있다. 사용자는 예를 들어, 디스플레이된 사용자 인터페이스로부터 방법(600)의 시작을 선택했을 수 있다. 일부 구현들에서, 방법(600) 또는 그 부분들은 사용자 입력을 통해 사용자에 의한 안내에 따라 수행될 수 있다.
[0059] 일부 구현들에서, 방법(600) 또는 이 방법의 부분들은 디바이스에 의해 자동으로 시작될 수 있다. 예를 들어, 방법(또는 이 방법의 부분들)은 하나 이상의 특정 이벤트들 또는 조건들의 발생에 기초하여 수행될 수 있다. 예를 들어, 이러한 이벤트들 또는 조건들은 더 낮은 품질의 비디오를 생성할 수 있는 카메라 각도를 갖는 사용자 참여 비디오 통화 및/또는 디바이스 구현 방법(600)의 설정들에서 지정될 수 있는 하나 이상의 다른 이벤트들 또는 조건들의 발생을 포함할 수 있다.
[0060] 블록(602)에서, 방법(600)의 구현에서 사용자 데이터를 사용하도록 사용자 동의(예컨대, 사용자 승인)가 얻어졌는지 여부가 확인된다. 예를 들어, 사용자 데이터는 사용자 비디오 또는 이미지들을 포함할 수 있다. 본 명세서에서 설명되는 방법들의 하나 이상의 블록들은 (예컨대, 얼굴 검출 및/또는 자세 교정을 위해) 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다. 블록(602)은 공유 제안 프레임워크의 일부로서 그리고/또는 기능적 이미지 아카이빙 제안 프레임워크 레벨에서 제공된 동의를 검증하기 위해 수행될 수 있으며, 그에 따라 블록들(604 이상)은 기능적 이미지 아카이빙 제안 프레임워크 레벨에서 기능적 이미지 아카이빙 제안들을 수행하기 위한 사용자 동의가 얻어진 경우에만 호출될 것이다. 방법(600)에서 사용자 데이터가 사용될 수 있는 관련 사용자들로부터 사용자 동의가 얻어진다면, 블록(604)에서 본 명세서의 방법들의 블록들이 그러한 블록들에 대해 설명되는 바와 같이 사용자 데이터의 가능한 용도에 따라 구현될 수 있다고 결정되고, 방법은 블록(606)으로 이어진다. 사용자 동의가 얻어지지 않았다면, 블록(606)에서 사용자 데이터의 사용 없이 블록들이 구현되어야 한다고 결정되고, 방법은 블록(606)으로 이어진다. 일부 구현들에서, 사용자 동의가 얻어지지 않았다면, 방법(600)의 나머지가 수행되지 않고, 그리고/또는 사용자 데이터를 필요로 하는 특정 블록들이 수행되지 않는다.
[0061] 608에서, 비디오 또는 비디오의 부분이 수신되는데, 여기서 비디오는 복수의 프레임들을 포함한다. 비디오는 제1 시점으로 물리적 카메라(예컨대, 디바이스(104) 내의 카메라)에 의해 캡처될 수 있다. 비디오는 하나 이상의 다른 디바이스들로 송신하기 위해 사용자 디바이스에 의해 캡처되는 라이브 비디오를 포함할 수 있다. 비디오의 하나 이상의 프레임들이 처음에 수신된 다음, 하나 이상의 추가 비디오 프레임들이 수신될 수 있다. 캡처되는 비디오의 프레임 단위로 자세 교정이 수행될 수 있다. 일부 구현들에서, 비디오 프레임들 중 하나 이상은 깊이 정보를 포함한다. 깊이 센서로부터 깊이 맵 및 디스패리티 맵 데이터가 획득될 수 있다. 깊이 센서는 임의의 적절한 깊이 센서일 수 있다. 비디오 내에서 얼굴이 검출될 수 있으며, 얼굴은 왜곡 또는 일반적으로 보다 낮은 품질의 비디오를 야기하고 있을 수 있는 각도로 캡처된 자세를 포함할 수 있다. 위에서 논의한 바와 같이, 얼굴 검출(예컨대, 얼굴 자세 각도)에서 회전에 의해 있는 그대로의 자세가 결정될 수 있다. 일부 구현들에서, 시스템은 의도적인 머리 회전(예컨대, 고개를 끄덕이는 것 등)을 검출할 수 있고 의도적인 회전에 대해서는 교정하지 않을 수 있다. 얼굴 자세 및 깊이 정보는 실시간 또는 거의 실시간으로 캡처될 수 있다. 처리는 610으로 이어진다.
[0062] 610에서, 비디오 프레임의 전경 부분 및 배경 부분이 결정된다. 예를 들어, 일부 구현들은 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 복수의 프레임들의 전경 부분을 결정하는 것을 포함할 수 있다. 전경 부분 및 배경 부분을 결정하는 것은 또한, 에지들을 검출하기 위해 소벨 필터(또는 다른 에지 검출 기술)를 적용하는 것을 포함할 수 있다. 에지들은 배경 또는 전경일 수 있다. 일부 구현들에서는, 다음의 두 가지 문제들을 해결하기 위해 비-에지들에 비해 더 강력한 평활화 동작이 전경 및 배경을 포함할 수 있는 에지들에 적용될 수 있다: 1) 깊이 데이터가 울퉁불퉁한 맵이고 다양한 깊이 지점들 간의 더 매끄러운 연결을 만드는 데 도움이 되도록 평활화가 필요하고; 그리고 2) 에지들 주변의 더 나은 혼합을 돕도록 에지들에서 더 강력한 평활화가 필요한데, 여기서 깊이 데이터는 신뢰할 수 없고 에지들에서 임의의 아티팩트들을 줄이도록 더 강력하게 평활화된다.
[0063] 일부 구현들에서, 얼굴을 검출하는 것은 배경 평면으로부터 얼굴을 추출하는 것을 포함할 수 있으며, 여기서 배경 평면은 깊이 정보에 기초하여 결정된다. 일부 구현들에서, 얼굴은 비디오의 하나 이상의 프레임들의 전경 부분 내에 있을 수 있다. 일부 구현들에서, 전경 부분을 결정하는 것은 얼굴 및 배경을 검출하는 것을 포함할 수 있고, 여기서 검출하는 것은 배경으로부터 얼굴의 전경 부분을 돌출시키는 것을 포함한다.
[0064] 일부 구현들에서, 얼굴 및 배경을 검출하는 것은 깊이 정보에 기반한 얼굴 깊이를 포함할 수 있는 돌출을 검출하는 것, 프레임들 내에서 얼굴의 외측 에지의 깊이를 결정하는 것, 그리고 얼굴의 외측 에지의 깊이 및 얼굴의 외측 에지 너머의 깊이들에 있는 프레임들의 부분들을 포함하도록 배경을 설정하는 것을 포함할 수 있다. 처리는 612로 이어진다.
[0065] 612에서, 공간적 또는 시간적 잡음과 같은 잡음이 제거된다. 예를 들어, 일부 구현들에서는, 비디오 프레임들(또는 이미지들) 중 하나 이상에서 공간적 및/또는 시간적 잡음을 제거하기 위해 평활화 알고리즘이 적용될 수 있다. 처리는 614로 이어진다.
[0066] 614에서, 전경/배경 부분 및 배경 부분이 선택적으로 식별되고 셰이더를 사용하여 라벨링된다. 예를 들어, 사용자 디바이스는 이미지의 한 지점을 배경 부분 또는 전경 부분으로 정의하도록 (예컨대, 예를 들어 [0, 1] 범위의) 값을 반환하는 셰이더 기술을 구현할 수 있다. 일부 구현들에서, 단계(614)는 셰이더(및 GPU)에 의해 구현될 수 있고, 608은 CPU에 의해 구현될 수 있다. 처리는 616으로 이어진다.
[0067] 616에서, 디스패리티 맵이 적용된다. 예를 들어, 일부 구현들에서, 카메라 평면 표현(예컨대, 얼굴 자세가 향하고 있는 카메라 평면)을 식별하기 위해 디스패리티 맵 데이터가 이미지의 전경 부분에 적용된다. 처리는 618로 이어진다.
[0068] 618에서는, 616에서 결정된 카메라 평면이 회전된다. 예를 들어, 카메라 평면은 제1 배향(예컨대, 카메라에 의해 캡처되는 하나의 원본)에서 제2 배향(예컨대, 카메라가 얼굴 바로 앞에 있는 것처럼 보이도록 카메라 평면과 얼굴 평면이 일반적으로 평행한 가상 카메라 배향)으로 회전될 수 있다. 일부 구현들에서, 회전은 얼굴 자세의 전방 벡터에 반대되도록 카메라의 전방 벡터를 설정하는 것을 포함할 수 있다. 회전은 또한, 제2 시점으로 가상 카메라를 향하도록 배경 평면을 회전시키는 것을 포함할 수 있다. 얼굴 추적기는 디바이스 좌표 공간 또는 가상 카메라 좌표 공간과는 다를 수 있는 좌표 공간에서 비디오 또는 이미지의 주어진 프레임에 대한 변환(예컨대, 포지션 및 얼굴 자세 각도 또는 회전)을 제공한다. 먼저, 변환으로부터 각도 및 2-D 포지션이 계산된다. 각도는 임의의 좌표계로 전달 가능하다. 투영 행렬이 변환에 적용되어 2-D 이미지에서 얼굴이 어디에 있는지를 결정한다. 이것은 디바이스 좌표들에서 사용할 수 있는 포지션 및 회전을 제공한다. 실제 각도 또는 한계 각도(예컨대, 20도) 중 더 작은 각도가 전방 벡터의 각각의 축에 적용된다. 다음에, 얼굴 전방 벡터, 예컨대 얼굴이 바라보고 있는 벡터를 얻기 위해 회전을 전방(예컨대, 0, 0, 1)과 곱함으로써 얼굴 전방 벡터가 결정된다. 가상 카메라 포지션을 계산하기 위해, 시스템은 카메라와 얼굴 간의 현재 거리를 계산하고 얼굴 포지션과 곱하고 거리와 얼굴 전방의 곱을 더할 수 있다. 카메라 가상 포지션 그리고 카메라가 얼굴 전방의 반대쪽을 봐야 한다는 것을 알면, 뷰 변환이 계산될 수 있다. 뷰 변환은 (예컨대, 중력에 기반한) 상향 방향 및 (예컨대, 카메라 위치로부터 얼굴 전방 벡터 반대쪽의 얼굴을 향한) 전방 방향에 기초하여 계산될 수 있다. 상향 및 전방의 외적을 취하면 왼쪽 벡터가 생성된다. 그 다음, 뷰 변환은 전방, 왼쪽 및 포지션에 기초하여 결정될 수 있다. 처리는 620으로 이어진다.
[0069] 620에서, 카메라 평면 회전에 기초하여 하나 이상의 비디오 프레임들의 투영 행렬이 업데이트(혹은 재투영)된다. 예를 들어, 뷰 변환은 투영, 컬러 이미지, 깊이 이미지, 카메라 내부 및 전경 배경 맵과 함께 렌더러 셰이더에 제공될 수 있다. 모든 각각의 전경 픽셀에 대해, 포지션이 계산되고 투영 행렬이 적용되어 이미지의 전경 픽셀들을 재투영하고 자세를 교정한다. 배경 픽셀들은 전경이 배경을 가리는 것을 허용하도록 더 높은 Z 값으로 원본 이미지(또는 프레임)와 동일한 2-D 포지션에 적용된다. 처리는 622로 이어진다.
[0070] 622에서, 재투영된 이미지는 선택적으로 조정되고, 배경은 선택적으로 흐림 처리된다. 예를 들어, 이미지 평면은 얼굴 자세의 전체 뷰를 커버하도록 늘어날 수 있고, 배경은 (예컨대, 회전 중에 왜곡되었을 수 있는 배경에 대한 강조를 줄이기 위해) 흐림 처리될 수 있다. 일부 구현들에서, 전경은 임의의 갭들(예컨대, 회전에 의해 생성된 빈 영역들)을 커버하기 위해 확대될 수 있다. 일부 구현들에서, 카메라의 투영 행렬을 업데이트하는 것은 이미지 평면의 4개의 에지들을 통과하도록 비디오 프레임을 재투영하는 것을 포함할 수 있다.
[0071] 도 6에서는, 다양한 블록들(예컨대, 블록들(602-622))이 순차적으로 수행되는 것으로 예시된다. 그러나 이러한 블록들은 특정 실시예들에 맞도록 편리하게 재배열될 수 있고 이러한 블록들 또는 이들의 부분들이 일부 실시예들에서는 동시에 수행될 수 있다고 인식될 것이다. 일부 예들에서는 다양한 블록들이 제거되고, 추가 블록들로 분할되고, 그리고/또는 다른 블록들과 조합될 수 있다고 또한 인식될 것이다.
[0072] 앞서 언급한 바와 같이, 방법(500 또는 600)의 경우, 방법들(500 또는 600) 중 하나 또는 둘 다의 구현에서 사용자 데이터(예컨대, 비디오들)를 사용하도록 사용자의 동의(예컨대, 사용자 승인)가 얻어졌는지 여부가 확인될 수 있다. 예를 들어, 사용자 데이터는 사용자 선호도들, 사용자 비디오들, 사용자 이미지들 등을 포함할 수 있다. 본 명세서에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 이러한 사용자 데이터를 사용할 수 있다. 예를 들어, 하나 이상의 블록들은 자세 교정의 일부로서 수행될 수 있어, 이러한 블록들 및 계속되는 블록들은 자세 교정을 수행하기 위한 사용자 동의가 얻어진 경우에만 호출될 것이다. 이 방법에서 사용자 데이터가 사용될 수 있는 관련 사용자들로부터 사용자 동의가 얻어진다면, 본 명세서의 방법들의 블록들이 그러한 블록들에 대해 설명되는 바와 같이 사용자 데이터의 가능한 용도에 따라 구현될 수 있다고 결정된다. 사용자 동의가 얻어지지 않았다면, 방법 전체가 수행되지 않을 수 있고, 그리고/또는 사용자 데이터를 필요로 하는 특정 블록들이 수행되지 않을 수 있다.
[0073] 일부 구현들은 사용자 디바이스에서 프레임별로 비디오 프레임을 처리할 수 있으며, 비디오 통화 서비스로 전송되는 프레임에 자세 교정을 적용할 수 있다. 따라서 본 명세서에서 설명되는 기술은 오류, 중단들 또는 간섭으로 비디오 통화에 영향을 받지 않을 수 있는 자세 교정을 제공한다. 일부 구현들에서, 사용자의 깊이 이미지는 사용자의 자세 교정을 수행하는 것을 돕는 데 그리고 사용자 디바이스에 의해 획득된 깊이 맵이 숨겨진 영역들 또는 갭들을 가질 수 있는 임의의 영역들을 채우는 데 사용될 수 있다.
[0074] 일부 구현들은 사용자의 얼굴을 잠시 가리는 객체들을 무시하고, 이력 데이터를 사용하여 얼굴이 어디에 있을지를 예측하고, 예측에 기초하여 자세 교정을 수행한 다음, 객체가 움직일 때 정상 자세 교정 동작 기능으로 복원할 수 있다. 일부 구현들에서, 객체가 사용자의 얼굴 앞에 있을 때, 자세 교정은 교정을 페이드 아웃할 수 있으며 이력 데이터에 의존하지 않을 수 있다.
[0075] 일부 구현들에서, 깊이 이미지는 부동 소수점 값들의 벡터를 포함할 수 있고, 돌출부(원래의 또는 가상 카메라)가 포지션 및 배향(전방, 위로 및 뒤로)의 매핑을 포함하는 큐브로 카메라의 콘(cone)들을 매핑하는 4×4 행렬을 포함할 수 있다.
[0076] 일부 구현들에서, 비디오 프레임들에 2개 이상의 얼굴들이 존재하는 경우, 구현은 2명의(또는 그 이상의) 사용자들을 분리하고 2개의(또는 그 이상의) 전경들로 취급하도록 구성될 수 있다. 일부 구현들에서, 2명의(또는 그 이상의) 사용자들이 검출된다면, 자세 교정이 취소될 수 있다.
[0077] 일부 구현들에서, 얼굴 위의 객체들은 본 명세서에서 설명되는 자세 교정 기술에 의해 수용될 수 있다. 예를 들어, 안경과 모자들이 취급될 수 있다. 이론상, 얼굴 위의 또는 앞의 임의의 객체가 자세 교정에 대한 문제가 될 수 있다. 사용자의 얼굴 위의 객체들은 깊이 데이터의 더 큰 평활화에 의해 처리될 수 있으며, 구멍들(예컨대, 가려지지만 교정 후에는 보일 얼굴의 영역들)이 검출된다면, 시스템은 자세 교정을 취소한다. 자세 교정을 취소하는 것은 적용되는 교정의 양을 줄이는 것을 포함할 수 있다. 예를 들어, 최대 한계는 처음에 20도일 수 있다. 자세 교정을 취소하기 위해, 20도는 점진적으로 0도로 감소된다. 효과를 매끄럽게 다시 적용하기 위해, 0도가 점진적으로 20도로 다시 증가될 수 있다.
[0078] 일부 구현들에서, 시스템은 (예컨대, 비디오 통화 중에 디바이스의 움직임을 보상하도록) 디바이스의 움직임에 기초하여 교정 각도를 조정할 수 있다. 일부 구현들에서, 구멍들(예컨대, 가려지지만 교정 후에는 보일 얼굴의 영역들)이 검출된다면, 자세 교정이 적용되지 않는다. 구현들은 보안 카메라들 또는 다른 카메라들에서 자세들을 교정하는 데 사용될 수 있다. 일부 구현들은 통화의 다른 편 사용자를 기반으로 시차 효과를 생성하는 데 사용될 수 있다.
[0079] 도 7은 본 명세서에서 설명되는 하나 이상의 특징들을 구현하는 데 사용될 수 있는 예시적인 디바이스(700)의 블록도이다. 일례로, 디바이스(700)는 사용자 디바이스, 예컨대 도 1, 도 3 및 도 4에 각각 도시된 사용자 디바이스들(104, 302, 402)을 구현하는 데 사용될 수 있다. 대안으로, 디바이스(700)는 서버 디바이스를 구현할 수 있다. 일부 구현들에서, 디바이스(700)는 클라이언트 디바이스, 서버 디바이스, 또는 이들의 조합을 구현하는 데 사용될 수 있다. 디바이스(700)는 앞서 설명한 시스템들 및/또는 방법들 중 하나 이상을 구현하기 위한 임의의 적합한 컴퓨터 시스템, 서버, 또는 다른 전자 또는 하드웨어 디바이스일 수 있다.
[0080] 본 명세서에서 설명되는 하나 이상의 방법들(예컨대, 500 및/또는 600)은 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예컨대, 휴대 전화, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목 시계, 암밴드, 주얼리, 모자, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 머리 장착형 디스플레이 등), 랩톱 컴퓨터 등) 상에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다.
[0081] 일례로, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예컨대 (클라이언트 디바이스인) 모바일 컴퓨팅 디바이스가 서버 디바이스에 사용자 입력 데이터를 전송하고 서버로부터 출력할(예컨대, 디스플레이할) 최종 출력 데이터를 수신한다. 다른 예에서, 모든 계산들은 모바일 컴퓨팅 디바이스 상의 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 다른 예에서, 계산들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들 간에 분할될 수 있다.
[0082] 일부 구현들에서, 디바이스(700)는 프로세서(702), 메모리(704) 및 I/O 인터페이스(706)를 포함한다. 프로세서(702)는 프로그램 코드를 실행하여 디바이스(400)의 기본 동작들을 제어하는 하나 이상의 프로세서들 및/또는 처리 회로들일 수 있다. "프로세서"는 데이터, 신호들 또는 다른 정보를 처리하는 임의의 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 (예컨대, 단일 코어, 듀얼 코어 또는 멀티 코어 구성인) 하나 이상의 코어들을 갖는 범용 CPU(central processing unit)를 가진 시스템, (예컨대, 다중 프로세서 구성인) 다수의 처리 유닛들, GPU(graphics processing unit), FPGA(field-programmable gate array), ASIC(application-specific integrated circuit), CPLD(complex programmable logic device), 기능을 달성하기 위한 전용 회로, 신경망 모델 기반 처리를 구현하기 위한 특수 목적 프로세서, 신경 회로들, 행렬 계산들(예컨대, 행렬 곱셈)에 최적화된 프로세서들, 또는 다른 시스템들을 포함할 수 있다.
[0083] 일부 구현들에서, 프로세서(702)는 신경망 처리를 구현하는 하나 이상의 보조 프로세서(co-processor)들을 포함할 수 있다. 일부 구현들에서, 프로세서(702)는 데이터를 처리하여 확률적인 출력을 생성하는 프로세서일 수 있는데, 예컨대 프로세서(702)에 의해 생성된 출력은 부정확할 수 있거나 예상된 출력으로부터의 범위 내에서 정확할 수 있다. 처리는 특정 지리적 위치로 제한될 필요가 없거나 일시적인 제한들을 가질 필요가 없다. 예를 들어, 프로세서는 "실시간", "오프라인", "배치(batch) 모드" 등으로 자신의 기능들을 수행할 수 있다. 처리의 부분들은 서로 다른 시점들에 그리고 서로 다른 위치들에서 서로 다른(또는 동일한) 처리 시스템들에 의해 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
[0084] 메모리(704)는 통상적으로 프로세서(702)에 의한 액세스를 위해 디바이스(700)에 제공되고, 프로세서에 의해 실행할 명령들을 저장하는 데 적합하고 프로세서(702)와 분리되어 위치되며 그리고/또는 그와 통합되는 임의의 적절한 프로세서 판독 가능 저장 매체, 이를테면 RAM(random access memory), ROM(read-only memory), EEPROM(Electrically Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(704)는 운영 시스템(708), 자세 교정 애플리케이션(730), 다른 애플리케이션들(712) 및 애플리케이션 데이터(714)를 포함하여 프로세서(702)에 의해 디바이스(700) 상에서 작동하는 소프트웨어를 저장할 수 있다. 다른 애플리케이션들(712)은 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 알림 엔진, 소셜 네트워킹 엔진 등과 같은 애플리케이션들을 포함할 수 있다. 일부 구현들에서, 자세 교정 애플리케이션(730) 및 다른 애플리케이션들(712)은 각각, 프로세서(702)가 본 명세서에서 설명되는 기능들, 예컨대 도 5 및/또는 도 6의 방법들의 일부 또는 전부를 수행할 수 있게 하는 명령들을 포함할 수 있다. 메모리(704) 내의 임의의 소프트웨어는 대안으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독 가능 매체 상에 저장될 수 있다. 메모리(704) 및 임의의 다른 타입의 저장소(자기 디스크, 광 디스크, 자기 테이프 또는 다른 유형 미디어)는 "저장소" 또는 "저장 디바이스들"로 간주될 수 있다.
[0085] I/O 인터페이스(706)는 디바이스(700)를 다른 시스템들 및 디바이스들과 인터페이스하는 것을 가능하게 하기 위한 기능들을 제공할 수 있다. 인터페이스된 디바이스들은 디바이스(700)의 일부로서 포함될 수 있거나 별개이며 디바이스(700)와 통신할 수 있다. 예컨대, 네트워크 통신 디바이스들, 저장 디바이스들 및 입력/출력 디바이스들은 I/O 인터페이스(706)를 통해 통신할 수 있다. 일부 구현들에서, I/O 인터페이스는 인터페이스 디바이스들, 이를테면 입력 디바이스들(키보드, 포인팅 디바이스, 터치 스크린, 마이크로폰, 카메라, 스캐너, 센서들 등) 및/또는 출력 디바이스들(디스플레이 디바이스들, 스피커 디바이스들, 프린터들, 모터들 등)에 접속될 수 있다.
[0086] (앞서 논의한 바와 같이) I/O 인터페이스(706)를 접속할 수 있는 인터페이스된 디바이스들의 일부 예들은 하나 이상의 디스플레이 디바이스들(720), 하나 이상의 카메라들(722) 및 하나 이상의 데이터 저장소들(738)을 포함할 수 있다. 디스플레이 디바이스들(720)은 본 명세서에서 설명되는 바와 같이 콘텐츠, 예컨대 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있다. 디스플레이 디바이스(720)는 로컬 접속들(예컨대, 디스플레이 버스)을 통해 그리고/또는 네트워크화된 접속들을 통해 디바이스(700)에 접속될 수 있으며, 임의의 적합한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(720)는 임의의 적합한 디스플레이 디바이스, 이를테면 LCD, LED, 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 디바이스를 포함할 수 있다. 예컨대, 디스플레이 디바이스(720)는 모바일 디바이스 상에 제공된 평면 디스플레이 스크린, 고글 또는 헤드셋 디바이스 내에 제공된 다수의 디스플레이 스크린들, 또는 컴퓨터 디바이스에 대한 모니터 스크린일 수 있다. 카메라 디바이스(들)(722)는 이미지들 및/또는 이미지로 캡처되는 장면에 대한 깊이 정보(예컨대, 깊이 정보는 카메라에서부터 픽셀(들)로 표현되는 객체까지의 거리를 나타내는, 각각의 픽셀(또는 픽셀들의 그룹)에 대한 값을 포함할 수 있음)를 캡처하기 위한 하나 이상의 카메라들(또는 이미지 캡처 디바이스들)을 포함할 수 있다.
[0087] I/O 인터페이스(706)는 다른 입력 및 출력 디바이스들에 인터페이스할 수 있다. 일부 예들은 이미지들을 캡처할 수 있는 하나 이상의 카메라들을 포함한다. 일부 구현들은 (예컨대, 캡처된 이미지들, 보이스 커맨드들 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스들, 또는 다른 입력 및 출력 디바이스들을 제공할 수 있다.
[0088] 예시의 편의상, 도 7은 프로세서(702), 메모리(704), I/O 인터페이스(706) 및 소프트웨어 블록들(708, 712, 730) 각각에 대한 하나의 블록을 도시한다. 이러한 블록들은 하나 이상의 프로세서들 또는 처리 회로들, 운영 시스템들, 메모리들, I/O 인터페이스들, 애플리케이션들 및/또는 소프트웨어 모듈들을 나타낼 수 있다. 다른 구현들에서, 디바이스(700)는 도시된 모든 컴포넌트들을 갖지는 않을 수 있고 그리고/또는 본 명세서에 도시된 것들 대신에 또는 그 이외에 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 일부 컴포넌트들은 본 명세서의 일부 구현들에서 설명된 바와 같이 블록들 및 동작들을 수행하는 것으로 설명되지만, 디바이스(700), 유사한 시스템들, 또는 이러한 시스템과 연관된 임의의 적합한 프로세서 또는 프로세서들의 임의의 적합한 컴포넌트 또는 컴포넌트들의 조합이 설명된 블록들 및 동작들을 수행할 수 있다.
[0089] 예들로서 위에서 언급한 휴대용 디바이스들 외에도, 다른 구현들은 더 높게 장착될 수 있고 사용자 위의 각도로부터 자세를 생성할 수 있는 회의실 카메라들을 포함할 수 있다. 일부 구현들은 카메라에 대해 옆을 향한 각도로 앉아 있는 사용자들(예컨대, 왜곡이 위/아래 각도들이 아닌 왼쪽/오른쪽 각도들에 의해 발생하는 경우)에 대한 자세 교정을 포함할 수 있다. 일부 구현들은 사용자의 얼굴에 너무 가까이 유지되는 카메라들에 대한 자세 교정을 포함할 수 있다.
[0090] 일부 구현들에서, 발신 또는 착신 측이 자세 교정을 켜거나 끌 수 있거나, 자세 교정이 수행될 것을 요청할 수 있다. 일부 구현들에서, 자세 교정은 다른 이유들로, 예컨대 배터리 수명, 프로세서 성능 등으로 인해 수동으로 또는 자동으로 꺼질 수 있다.
[0091] 본 명세서에서 설명되는 하나 이상의 방법들(예컨대, 방법(500 또는 600))은 컴퓨터 프로그램 명령들 또는 코드에 의해 구현될 수 있으며, 이는 컴퓨터 상에서 실행될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서들(예컨대, 마이크로프로세서들 또는 다른 처리 회로)에 의해 구현될 수 있고, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 제거 가능한 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강성 자기 디스크, 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함하는 비-일시적 컴퓨터 판독 가능 매체(예컨대, 저장 매체), 예컨대 자기, 광, 전자기 또는 반도체 저장 매체를 포함하는 컴퓨터 프로그램 제품에 저장될 수 있다. 프로그램 명령들은 또한 예를 들어, 서버(예컨대, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 SaaS(software as a service)의 형태로 전자 신호에 포함되고 그러한 전자 신호로서 제공될 수 있다. 대안으로, 하나 이상의 방법들은 하드웨어(로직 게이트들 등)로 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그래밍 가능 프로세서들(예컨대, FPGA(Field-Programmable Gate Array), 복합 프로그래밍 가능 로직 디바이스), 범용 프로세서들, 그래픽 프로세서들, ASIC(Application Specific Integrated Circuit)들 등일 수 있다. 하나 이상의 방법들은 시스템 상에서 실행중인 애플리케이션의 일부 또는 컴포넌트로서, 또는 다른 애플리케이션들 및 운영 시스템과 함께 실행중인 애플리케이션 또는 소프트웨어로서 수행될 수 있다.
[0092] 본 명세서에서 설명되는 하나 이상의 방법들은 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스(예컨대, 휴대 전화, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목 시계, 암밴드, 주얼리, 모자, 고글, 안경 등), 랩톱 컴퓨터 등) 상에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 일례로, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예컨대 (클라이언트 디바이스인) 모바일 컴퓨팅 디바이스가 서버 디바이스에 사용자 입력 데이터를 전송하고 서버로부터 출력할(예컨대, 디스플레이할) 최종 출력 데이터를 수신한다. 다른 예에서, 모든 계산들은 모바일 컴퓨팅 디바이스 상의 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 다른 예에서, 계산들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들 간에 분할될 수 있다.
[0093] 설명은 그 특정 구현들과 관련하여 설명되었지만, 이러한 특정 구현들은 단지 예시일 뿐이며 제한이 아니다. 예들에 예시된 개념들은 다른 예들 및 구현들에 적용될 수 있다.
[0094] 교정된 자세를 생성하는 특성으로 인해, 본 명세서에서 논의되는 구현들은 비디오들, 이미지들 등과 같은 사용자 데이터에 대한 액세스를 요구할 수 있다. 본 명세서에서 논의되는 특정 구현들이 사용자들에 관한 개인 정보(예컨대, 사용자 비디오 또는 이미지 데이터)를 수집 또는 사용할 수 있는 상황들에서, 사용자들에게는 개인 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 그리고 사용자에 관한 정보가 어떻게 수집되고, 저장되고 사용되는지를 제어할 하나 이상의 기회들이 제공된다. 즉, 본 명세서에서 논의된 시스템들 및 방법들은 구체적으로 관련 사용자들로부터 그렇게 하도록 명시적인 승인을 받으면 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 또한, 특정 데이터는 저장되거나 사용되기 전에 하나 이상의 방식들로 처리될 수 있어, 개인 식별 가능 정보가 제거된다 (예컨대, 공유 제안 시스템은 이름 또는 사용자 이름과 같은 개인 식별 가능 정보 이외의 특징들로 중요한 사람들을 익명으로 식별할 수 있다). 일례로, 개인 식별 가능 정보가 결정될 수 없도록 사용자의 아이덴티티가 처리될 수 있다. 다른 예로서, 사용자의 특정 위치가 결정될 수 없도록 사용자의 지리적 위치 또는 사용자 이미지들과 연관된 위치가 더 넓은 지역으로 일반화될 수 있다.
[0095] 본 개시내용에 설명된 기능 블록들, 동작들, 특징들, 방법들, 디바이스들 및 시스템들은 당해 기술분야에서 통상의 지식을 가진 자들에게 공지되는 바와 같이 시스템들, 디바이스들 및 기능 블록들의 상이한 조합들로 통합되거나 분할될 수 있다는 점에 주목한다. 임의의 적합한 프로그래밍 언어 및 프로그래밍 기법들이 특정 구현들의 루틴들을 구현하는 데 사용될 수 있다. 상이한, 예컨대 절차적 또는 객체 지향 프로그래밍 기법들이 이용될 수 있다. 루틴들은 단일 처리 디바이스 또는 다수의 프로세서들 상에서 실행될 수 있다. 단계들, 동작들 또는 계산들이 특정 순서로 제공될 수 있지만, 순서는 상이한 특정 구현들에서 변경될 수 있다. 일부 구현들에서, 본 명세서에서 순차적으로 도시된 다수의 단계들 또는 동작들이 동시에 수행될 수 있다.

Claims (20)

  1. 복수의 프레임들을 포함하는 비디오를 수신하는 단계 ― 상기 비디오는 제1 시점(point of view)으로 물리적 카메라에 의해 캡처되고, 상기 비디오는 상기 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―;
    상기 비디오 내에서 얼굴을 검출하는 단계 ― 상기 얼굴은 상기 복수의 프레임들의 전경 부분 내에 있음 ―;
    상기 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 상기 복수의 프레임들의 전경 부분을 결정하는 단계;
    상기 제1 시점과 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 단계;
    상기 가상 카메라에 기초하여 상기 전경 부분의 투영 행렬(projection matrix)을 획득하는 단계 ― 상기 투영 행렬은 상기 제2 시점에 대응함 ―; 및
    상기 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 비디오를 캡처하는 데 사용된 상기 물리적 카메라의 렌즈 효과를 감소시키도록 상기 전경 부분의 투영 행렬을 조정하는 단계를 더 포함하는,
    방법.
  3. 제1항에 있어서,
    상기 얼굴을 검출하는 단계는 배경 평면으로부터 상기 얼굴을 추출하는 단계를 포함하고, 상기 배경 평면은 상기 깊이 정보에 기초하여 결정되는,
    방법.
  4. 제3항에 있어서,
    상기 제2 시점으로 상기 가상 카메라를 향하도록 상기 배경 평면을 회전시키는 단계를 더 포함하는,
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 전경 부분을 결정하는 단계는 상기 얼굴 및 배경을 검출하는 단계를 포함하고,
    상기 검출하는 단계는 상기 배경으로부터 상기 얼굴의 전경 부분을 돌출시키는 단계를 포함하는,
    방법.
  6. 제5항에 있어서,
    상기 얼굴 및 상기 배경을 검출하는 단계는,
    상기 깊이 정보에 기초하여 얼굴 깊이를 검출하는 단계;
    상기 프레임들 내에서 상기 얼굴의 외측 에지의 깊이를 결정하는 단계; 및
    상기 얼굴의 외측 에지의 깊이 및 상기 얼굴의 외측 에지 너머의 깊이들에 있는 상기 프레임들의 부분들을 포함하도록 상기 배경을 설정하는 단계를 포함하는,
    방법.
  7. 제6항에 있어서,
    상기 배경을 흐림(blur) 처리하는 단계를 더 포함하는,
    방법.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 비디오 내에서 상기 얼굴을 검출하는 단계는 하나 이상의 축들에 대한 상기 얼굴의 각도를 결정하는 단계를 포함하고,
    상기 결정하는 단계, 상기 포지셔닝하는 단계, 상기 획득하는 단계 및 상기 생성하는 단계는 상기 하나 이상의 축들에 대한 상기 얼굴의 각도가 임계 범위 내에 있는 경우에 수행되는,
    방법.
  9. 제8항에 있어서,
    상기 비디오의 깊이 정보의 시간 이력(temporal history)을 결정하는 단계; 및
    상기 비디오의 깊이 정보의 시간 이력을 사용하여 비디오 재투영(re-projection)의 히스테리시스(hysteresis)를 수행하는 단계를 더 포함하고,
    상기 히스테리시스는 재투영의 연속성을 유지하고 재투영되는 상기 얼굴 앞에서 움직이는 일시적 객체들에 응답하지 않도록 수행되고, 상기 일시적 객체들은 임계 시간 기간 미만 동안 상기 재투영되는 얼굴 앞에 있는,
    방법.
  10. 소프트웨어 명령들이 저장된 비-일시적 컴퓨터 판독 가능 매체에 결합된 하나 이상의 프로세서들을 포함하는 시스템으로서,
    상기 소프트웨어 명령들은 상기 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금:
    복수의 프레임들을 포함하는 비디오를 수신하는 동작 ― 상기 비디오는 제1 시점으로 물리적 카메라에 의해 캡처되고, 상기 비디오는 상기 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―;
    상기 비디오 내에서 얼굴을 검출하는 동작 ― 상기 얼굴은 상기 비디오의 복수의 프레임들의 전경 부분 내에 있음 ―;
    상기 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 상기 복수의 프레임들의 전경 부분을 결정하는 동작;
    상기 제1 시점과는 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 동작;
    상기 가상 카메라에 기초하여 상기 전경 부분의 투영 행렬을 획득하는 동작 ― 상기 투영 행렬은 상기 제2 시점에 대응함 ―;
    상기 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 동작; 및
    상기 수정된 비디오의 수정된 전경 부분을 안정화하는 동작을 포함하는 동작들을 수행하게 하는,
    시스템.
  11. 제10항에 있어서,
    상기 동작들은 상기 비디오를 캡처하는 데 사용된 상기 물리적 카메라의 렌즈 효과를 감소시키도록 상기 전경 부분의 투영 행렬을 조정하는 동작을 더 포함하는,
    시스템.
  12. 제10항에 있어서,
    상기 얼굴을 검출하는 동작은 배경 평면으로부터 상기 얼굴을 추출하는 동작을 포함하고, 상기 배경 평면은 상기 깊이 정보에 기초하여 결정되는,
    시스템.
  13. 제12항에 있어서,
    상기 동작들은 상기 제2 시점으로 상기 가상 카메라를 향하도록 상기 배경 평면을 회전시키는 동작을 더 포함하는,
    시스템.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 전경 부분을 결정하는 동작은 상기 얼굴 및 배경을 검출하는 동작을 포함하고,
    상기 검출하는 동작은 상기 배경으로부터 상기 얼굴의 전경 부분을 돌출시키는 동작을 포함하는,
    시스템.
  15. 제14항에 있어서,
    상기 얼굴 및 상기 배경을 검출하는 동작은,
    상기 깊이 정보에 기초하여 얼굴 깊이를 검출하는 동작;
    상기 프레임들 내에서 상기 얼굴의 외측 에지의 깊이를 결정하는 동작; 및
    상기 얼굴의 외측 에지의 깊이 및 상기 얼굴의 외측 에지 너머의 깊이들에 있는 상기 프레임들의 부분들을 포함하도록 상기 배경을 설정하는 동작을 포함하는,
    시스템.
  16. 제15항에 있어서,
    상기 동작들은 상기 배경을 흐림 처리하는 동작을 더 포함하는,
    시스템.
  17. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 비디오 내에서 상기 얼굴을 검출하는 동작은 하나 이상의 축들에 대한 상기 얼굴의 각도를 결정하는 동작을 포함하고,
    상기 결정하는 동작, 상기 포지셔닝하는 동작, 상기 획득하는 동작 및 상기 생성하는 동작은 상기 하나 이상의 축들에 대한 상기 얼굴의 각도가 임계 범위 내에 있는 경우에 수행되는,
    시스템.
  18. 제17항에 있어서,
    상기 동작들은,
    상기 비디오의 깊이 정보의 시간 이력을 결정하는 동작; 및
    상기 비디오의 깊이 정보의 시간 이력을 사용하여 비디오 재투영의 히스테리시스를 수행하는 동작을 더 포함하고,
    상기 히스테리시스는 재투영의 연속성을 유지하고 재투영되는 상기 얼굴 앞에서 움직이는 일시적 객체들에 응답하지 않도록 수행되고, 상기 일시적 객체들은 임계 시간 기간 미만 동안 상기 재투영되는 얼굴 앞에 있는,
    시스템.
  19. 소프트웨어 명령들이 저장된 비-일시적 컴퓨터 판독 가능 매체로서,
    상기 소프트웨어 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금:
    복수의 프레임들을 포함하는 비디오를 수신하는 동작 ― 상기 비디오는 제1 시점으로 물리적 카메라에 의해 캡처되고, 상기 비디오는 상기 복수의 프레임들에 대응하는 깊이 정보를 포함함 ―;
    상기 비디오 내에서 얼굴을 검출하는 동작 ― 상기 얼굴은 상기 비디오의 복수의 프레임들의 전경 부분 내에 있음 ―;
    상기 복수의 프레임들에 대응하는 깊이 정보의 하나 이상의 깊이 값들에 기초하여 상기 복수의 프레임들의 전경 부분을 결정하는 동작;
    상기 제1 시점과는 상이한 제2 시점으로 가상 카메라를 포지셔닝하는 동작;
    상기 가상 카메라에 기초하여 상기 전경 부분의 투영 행렬을 획득하는 동작 ― 상기 투영 행렬은 상기 제2 시점에 대응함 ―;
    상기 투영 행렬에 기초하여 수정된 전경 부분을 포함하는 수정된 비디오를 생성하는 동작; 및
    상기 수정된 비디오의 수정된 전경 부분을 안정화하는 동작을 포함하는 동작들을 수행하게 하는,
    비-일시적 컴퓨터 판독 가능 매체.
  20. 제19항에 있어서,
    상기 전경 부분을 결정하는 동작은 상기 얼굴 및 배경을 검출하는 동작을 포함하고,
    상기 검출하는 동작은 상기 배경으로부터 상기 얼굴의 전경 부분을 돌출시키는 동작을 포함하는,
    비-일시적 컴퓨터 판독 가능 매체.
KR1020207035826A 2019-01-25 2019-09-27 자세 교정 KR20210010517A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/258,348 2019-01-25
US16/258,348 US10929982B2 (en) 2019-01-25 2019-01-25 Face pose correction based on depth information
PCT/US2019/053692 WO2020154000A1 (en) 2019-01-25 2019-09-27 Pose correction

Publications (1)

Publication Number Publication Date
KR20210010517A true KR20210010517A (ko) 2021-01-27

Family

ID=68290038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207035826A KR20210010517A (ko) 2019-01-25 2019-09-27 자세 교정

Country Status (6)

Country Link
US (1) US10929982B2 (ko)
EP (1) EP3710983A1 (ko)
JP (1) JP7101269B2 (ko)
KR (1) KR20210010517A (ko)
CN (1) CN112470164A (ko)
WO (1) WO2020154000A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11303875B2 (en) * 2019-12-17 2022-04-12 Valve Corporation Split rendering between a head-mounted display (HMD) and a host computer
US20220286641A1 (en) * 2021-03-02 2022-09-08 Lenovo (Singapore) Pte. Ltd. Background image adjustment in virtual meeting
US11228702B1 (en) 2021-04-23 2022-01-18 Gopro, Inc. Stabilization of face in video
US11899204B2 (en) * 2021-06-09 2024-02-13 Snap Inc. Soft follow and pitch angle effects for VR/AR interface
US11977779B2 (en) * 2022-05-11 2024-05-07 Bank Of America Corporation Smart queue for distributing user requests to automated response generating systems

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6806898B1 (en) * 2000-03-20 2004-10-19 Microsoft Corp. System and method for automatically adjusting gaze and head orientation for video conferencing
US7515173B2 (en) * 2002-05-23 2009-04-07 Microsoft Corporation Head pose tracking system
US7372977B2 (en) * 2003-05-29 2008-05-13 Honda Motor Co., Ltd. Visual tracking using depth data
US7391888B2 (en) * 2003-05-30 2008-06-24 Microsoft Corporation Head pose assessment methods and systems
EP1613082A1 (en) * 2004-06-30 2006-01-04 Sony Ericsson Mobile Communications AB Face image correction
WO2006039486A2 (en) * 2004-10-01 2006-04-13 The Board Of Trustees Of The Leland Stanford Junior University Imaging arrangements and methods therefor
US8174555B2 (en) * 2007-05-30 2012-05-08 Eastman Kodak Company Portable video communication system
KR101460130B1 (ko) * 2007-12-11 2014-11-10 삼성전자주식회사 휴대 단말기의 화상 통화 방법 및 장치
US8805110B2 (en) * 2008-08-19 2014-08-12 Digimarc Corporation Methods and systems for content processing
US8599238B2 (en) * 2009-10-16 2013-12-03 Apple Inc. Facial pose improvement with perspective distortion correction
JP2011090400A (ja) * 2009-10-20 2011-05-06 Sony Corp 画像表示装置および方法、並びにプログラム
US8660355B2 (en) * 2010-03-19 2014-02-25 Digimarc Corporation Methods and systems for determining image processing operations relevant to particular imagery
US9117310B2 (en) * 2010-04-02 2015-08-25 Imec Virtual camera system
US8395655B2 (en) * 2010-08-15 2013-03-12 Hewlett-Packard Development Company, L.P. System and method for enabling collaboration in a video conferencing system
US9041734B2 (en) * 2011-07-12 2015-05-26 Amazon Technologies, Inc. Simulating three-dimensional features
US9065967B2 (en) * 2011-09-13 2015-06-23 Verizon Patent And Licensing Inc. Method and apparatus for providing device angle image correction
TWI469062B (zh) * 2011-11-11 2015-01-11 Ind Tech Res Inst 影像穩定方法及影像穩定裝置
EP2600316A1 (en) * 2011-11-29 2013-06-05 Inria Institut National de Recherche en Informatique et en Automatique Method, system and software program for shooting and editing a film comprising at least one image of a 3D computer-generated animation
US9858649B2 (en) * 2015-09-30 2018-01-02 Lytro, Inc. Depth-based image blurring
JP6299124B2 (ja) * 2013-09-13 2018-03-28 株式会社リコー 投影システム、画像処理装置、投影方法およびプログラム
US10055013B2 (en) * 2013-09-17 2018-08-21 Amazon Technologies, Inc. Dynamic object tracking for user interfaces
JP2015106360A (ja) * 2013-12-02 2015-06-08 三星電子株式会社Samsung Electronics Co.,Ltd. オブジェクト検出方法及びオブジェクト検出装置
WO2016036425A1 (en) * 2014-09-05 2016-03-10 Ballcraft, Llc Motion detection for portable devices
JP2016085579A (ja) * 2014-10-24 2016-05-19 大学共同利用機関法人情報・システム研究機構 対話装置のための画像処理装置及び方法、並びに対話装置
GB2532003A (en) * 2014-10-31 2016-05-11 Nokia Technologies Oy Method for alignment of low-quality noisy depth map to the high-resolution colour image
WO2016107638A1 (en) 2014-12-29 2016-07-07 Keylemon Sa An image face processing method and apparatus
US9232189B2 (en) * 2015-03-18 2016-01-05 Avatar Merger Sub Ii, Llc. Background modification in video conferencing
EP3274986A4 (en) * 2015-03-21 2019-04-17 Mine One GmbH METHODS, SYSTEMS, AND SOFTWARE FOR VIRTUAL 3D
GB201507210D0 (en) * 2015-04-28 2015-06-10 Microsoft Technology Licensing Llc Eye gaze correction
TW201639347A (zh) 2015-04-28 2016-11-01 微軟技術授權有限責任公司 視線校正(二)
US20170214861A1 (en) * 2015-05-22 2017-07-27 Massachusetts Institute Of Technology Rapid and precise optically multiplexed imaging
US9967461B2 (en) * 2015-10-14 2018-05-08 Google Inc. Stabilizing video using transformation matrices
JP2018078404A (ja) * 2016-11-08 2018-05-17 ソニーセミコンダクタソリューションズ株式会社 画像処理装置、画像処理方法、撮像システム、及び、画像処理プログラム
EP3383035A1 (en) * 2017-03-29 2018-10-03 Koninklijke Philips N.V. Image generation from video
IL310847A (en) * 2017-10-27 2024-04-01 Magic Leap Inc A virtual network for augmented reality systems
US10171738B1 (en) 2018-05-04 2019-01-01 Google Llc Stabilizing video to reduce camera and face movement
US11366514B2 (en) * 2018-09-28 2022-06-21 Apple Inc. Application placement based on head position

Also Published As

Publication number Publication date
EP3710983A1 (en) 2020-09-23
JP2021526693A (ja) 2021-10-07
JP7101269B2 (ja) 2022-07-14
US10929982B2 (en) 2021-02-23
US20200242778A1 (en) 2020-07-30
WO2020154000A1 (en) 2020-07-30
CN112470164A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
JP7110502B2 (ja) 深度を利用した映像背景減算法
US11410331B2 (en) Systems and methods for video communication using a virtual camera
US10929982B2 (en) Face pose correction based on depth information
US11308675B2 (en) 3D facial capture and modification using image and temporal tracking neural networks
WO2016110199A1 (zh) 一种表情迁移方法、电子设备及系统
US11538211B2 (en) Puppeteering remote avatar by facial expressions
US20140176548A1 (en) Facial image enhancement for video communication
US20210103764A1 (en) Accurate optical flow estimation in stereo pairs of equirectangular images
US20160252730A1 (en) Image generating system, image generating method, and information storage medium
US11776201B2 (en) Video lighting using depth and virtual lights
US20230216999A1 (en) Systems and methods for image reprojection
WO2023097576A1 (en) Segmentation with monocular depth estimation
US11887267B2 (en) Generating and modifying representations of hands in an artificial reality environment
US20230342889A1 (en) Frequency domain edge enhancement of image capture
US20230317023A1 (en) Local dimming for artificial reality systems
US20230115371A1 (en) Efficient vision perception
CN118247186A (zh) 图像畸变矫正方法、电子设备、存储介质及芯片
WO2023059962A1 (en) Efficient vision perception
WO2023167788A1 (en) Systems and methods of image processing based on gaze detection

Legal Events

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