KR102469295B1 - 깊이를 사용한 비디오 배경 제거 - Google Patents

깊이를 사용한 비디오 배경 제거 Download PDF

Info

Publication number
KR102469295B1
KR102469295B1 KR1020217043141A KR20217043141A KR102469295B1 KR 102469295 B1 KR102469295 B1 KR 102469295B1 KR 1020217043141 A KR1020217043141 A KR 1020217043141A KR 20217043141 A KR20217043141 A KR 20217043141A KR 102469295 B1 KR102469295 B1 KR 102469295B1
Authority
KR
South Korea
Prior art keywords
pixel
frame
background
foreground
video
Prior art date
Application number
KR1020217043141A
Other languages
English (en)
Other versions
KR20220006657A (ko
Inventor
광유 저우
치앙 첸
니클라스 엔봄
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220006657A publication Critical patent/KR20220006657A/ko
Application granted granted Critical
Publication of KR102469295B1 publication Critical patent/KR102469295B1/ko

Links

Images

Classifications

    • 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/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/143Segmentation; Edge detection involving probabilistic approaches, e.g. Markov random field [MRF] modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/155Segmentation; Edge detection involving morphological operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/162Segmentation; Edge detection involving graph-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/34Smoothing or thinning of the pattern; Morphological operations; Skeletonisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/446Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering using Haar-like filters, e.g. using integral image techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/56Extraction of image or video features relating to colour
    • 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
    • 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/162Detection; Localisation; Normalisation using pixel segmentation or colour matching
    • 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/10Image acquisition modality
    • G06T2207/10024Color image
    • 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/10028Range image; Depth image; 3D point clouds
    • 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/20036Morphological image processing
    • 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/20072Graph-based image processing
    • 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/20076Probabilistic image processing
    • 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/20212Image combination
    • G06T2207/20224Image subtraction
    • 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)
  • General Health & Medical Sciences (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Image Analysis (AREA)

Abstract

본원에서 설명되는 구현들은 전경 비디오를 렌더링하기 위한 방법들, 시스템들, 및 컴퓨터-판독가능 매체들에 관한 것이다. 일부 구현들에서, 방법은, 깊이 데이터 및 컬러 데이터를 포함하는 복수의 비디오 프레임들을 수신하는 단계를 포함한다. 방법은 비디오의 프레임들을 다운샘플링하는 단계를 더 포함한다. 방법은, 각각의 프레임에 대해, 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크를 생성하는 단계를 더 포함한다. 방법은, 프레임의 각각의 픽셀을 알려진 배경, 알려진 전경, 또는 알려지지 않은 것 중 하나로 분류하는 트라이맵을 결정하는 단계를 더 포함한다. 방법은, 알려지지 않은 것으로 분류된 각각의 픽셀에 대해, 가중치를 계산하고 가중치 맵에 저장하는 단계를 더 포함한다. 방법은, 각각의 프레임에 대한 이진 마스크를 획득하기 위해 미세 세그먼테이션을 수행하는 단계를 더 포함한다. 방법은, 전경 비디오를 획득하기 위해, 각각의 프레임에 대한 이진 마스크에 기반하여 복수의 프레임들을 업샘플링하는 단계를 더 포함한다.

Description

깊이를 사용한 비디오 배경 제거
[0001] 이미지를 전경(foreground) 부분 및 배경(background) 부분으로 세그먼트화(segment)하는 것은 많은 이미지 및 비디오 애플리케이션에서 사용된다. 예컨대, 화상 회의, VR(Virtual Reality) 또는 AR(Augmented Reality)에서의 텔레프레즌스(telepresence)와 같은 비디오 애플리케이션들에서, 배경을 제거하고 새로운 배경으로 교체할 필요가 있을 수 있다. 다른 예에서, 세그먼테이션(segmentation)은, 이미지의 배경 부분들이 흐려지는 인물 사진 모드(portrait mode) 및 보케(bokeh)에 자주 사용된다.
[0002] 이미지 또는 비디오의 세그먼테이션에는 많은 난제들이 있다. 하나의 난제는 컬러 위장이며, 이는 비디오들 또는 이미지들이, 배경에서의 컬러와 유사한 컬러를 갖는 전경 객체(object)들을 포함할 때에 발생한다. 다른 난제들은, 움직이거나 변화하는 배경, 컬러 섀도우(color shadow)들, 전경 부분이 없는 장면들(예컨대, 존재하는 사람이 없는 화상 회의), 및 이미지 또는 비디오가 캡처되는 시간 동안 장면에서의 조명 변화를 포함한다.
[0003] 일부 이미지 캡처 디바이스들, 예컨대, 데스크탑 카메라들, 모바일 디바이스들 내의 카메라들 등은, 이미지 또는 비디오의 컬러 데이터와 함께 깊이 데이터(depth data)를 캡처할 수 있다. 그러한 깊이 데이터는 세그먼테이션을 위해 사용될 수 있다. 그러나, 그러한 깊이 데이터는, 예컨대, 깊이 센서의 품질, 조명 조건들 및 캡처된 장면 내의 객체들 등으로 인해 종종 부정확하다. 깊이 데이터를 사용하여 이미지 또는 비디오를 세그먼트화할 때, 부정확한 데이터는 또 다른 난제이다.
[0004] 본원에서 제공되는 배경 설명은 본 개시내용의 맥락을 일반적으로 제시하기 위한 것이다. 현재 명명된 발명자들의 작업은, 본 배경 섹션 뿐만 아니라 출원 시에 달리 종래 기술로서 자격을 갖지 않을 수 있는 설명의 양상들에서 설명되는 범위 내에서, 명시적으로도 묵시적으로도 본 개시내용에 대한 종래 기술로서 인정되는 것은 아니다.
[0005] 본원에서 설명되는 구현은 전경 비디오를 획득하기 위한 방법들, 시스템들, 및 컴퓨터-판독가능 매체들에 관한 것이다. 일부 구현들에서, 컴퓨터에서 구현되는 방법(computer-implemented method)은 비디오의 복수의 프레임들을 수신하는 단계를 포함한다. 비디오의 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함할 수 있다. 방법은 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링(downsampling)하는 단계를 더 포함한다. 방법은, 다운샘플링 이후, 각각의 프레임에 대해, 깊이 데이터에 기반하여, 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화(categorize)하는 초기 세그먼테이션 마스크(segmentation mask)를 생성하는 단계를 더 포함한다. 방법은, 각각의 프레임에 대해, 프레임의 각각의 픽셀을 알려진 배경(known background), 알려진 전경(known foreground), 또는 알려지지 않은 것(unknown) 중 하나로 분류(classify)하는 트라이맵(trimap)을 결정하는 단계를 더 포함한다. 방법은, 각각의 프레임에 대해, 그리고 알려지지 않은 것으로 분류된, 프레임의 각각의 픽셀에 대해, 픽셀에 대한 가중치를 계산하고 가중치를 가중치 맵(weight map)에 저장하는 단계를 더 포함한다. 방법은, 각각의 프레임에 대해, 프레임에 대한 이진 마스크(binary mask)를 획득하기 위해, 컬러 데이터, 트라이맵, 및 가중치 맵에 기반하여, 미세 세그먼테이션(fine segmentation)을 수행하는 단계를 더 포함한다. 방법은, 전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 이진 마스크에 기반하여 복수의 프레임들을 업샘플링(upsampling)하는 단계를 더 포함한다.
[0006] 일부 구현들에서, 초기 세그먼테이션 마스크를 생성하는 단계는, 픽셀과 연관된 깊이 값이 깊이 범위 내에 있는 경우 픽셀을 전경 픽셀로 설정하는 단계, 및 픽셀과 연관된 깊이 값이 깊이 범위를 벗어나는 경우 픽셀을 배경 픽셀로 설정하는 단계를 포함할 수 있다. 일부 구현들에서, 초기 세그먼테이션 마스크를 생성하는 단계는 형태학적 개방 프로세스(morphological opening process) 또는 형태학적 폐쇄 프로세스(morphological closing process) 중 하나 이상을 수행하는 단계를 더 포함할 수 있다.
[0007] 일부 구현들에서, 방법은 컬러 데이터 또는 초기 세그먼테이션 마스크 중 하나 이상에 기반하여 머리 경계 박스(head bounding box)를 검출하는 단계를 더 포함할 수 있다. 일부 구현들에서, 머리 경계 박스를 검출하는 단계는, 프레임을 그레이스케일(grayscale)로 변환하고 히스토그램 등화(histogram equalization)를 수행하는 단계를 포함할 수 있다. 방법은 하르 캐스케이드 얼굴 검출(Haar cascade face detection)에 의해 프레임 내의 하나 이상의 얼굴(face)들을 검출하는 단계를 더 포함할 수 있다. 하나 이상의 얼굴들의 각각의 얼굴은, 얼굴에 대한 얼굴 픽셀들을 포함하는 얼굴 영역과 연관될 수 있다.
[0008] 일부 구현들에서, 방법은 하나 이상의 얼굴들의 각각의 얼굴이 유효한지 여부를 결정하는 단계를 더 포함할 수 있다. 일부 구현들에서, 얼굴에 대한 얼굴 영역의 픽셀들의 임계 비율(threshold proportion)이 초기 세그먼테이션 마스크에서 전경 픽셀들로 카테고리화되고 그리고 얼굴에 대한 얼굴 영역의 픽셀들의 적어도 임계 백분율(threshold percentage)이 피부색 기준(skin color criterion)을 충족시키는 것으로 검증되는 경우, 얼굴은 유효한 것으로 결정된다. 일부 구현들에서, 방법은, 유효한 것으로 결정된 각각의 얼굴에 대해, 얼굴에 대응하는 머리 영역을 획득하기 위해 각각의 얼굴에 대한 얼굴 영역을 확장시키는 단계를 더 포함할 수 있다. 머리 경계 박스는 유효한 것으로 결정된 각각의 얼굴에 대한 머리 영역을 포함할 수 있다. 일부 구현들에서, 유효한 것으로 결정된 얼굴이 없는 경우, 방법은, 머리를 검출하기 위해 초기 세그먼테이션 마스크를 분석하는 단계 및 머리 피부색 검증(head skin color validation)에 기반하여 머리가 유효한지 여부를 결정하는 단계를 더 포함할 수 있다. 머리가 유효한 것으로 결정되는 경우, 방법은 머리와 연관된 경계 박스를 머리 경계 박스로서 선택하는 단계를 더 포함할 수 있다.
[0009] 일부 구현들에서, 초기 세그먼테이션 마스크를 생성하는 단계는 각각의 픽셀에 마스크 값을 할당하는 단계를 포함할 수 있다. 초기 세그먼테이션 마스크에서, 각각의 전경 픽셀에는 255의 마스크 값이 할당될 수 있고, 각각의 배경 픽셀에는 0의 마스크 값이 할당될 수 있다. 이들 구현들에서, 트라이맵을 결정하는 단계는, 머리 경계 박스에 없는 프레임의 각각의 픽셀에 대해, 픽셀의 픽셀 위치와 초기 세그먼테이션 마스크의 마스크 경계(mask boundary) 사이의 L1 거리를 계산하는 단계를 포함할 수 있고, 마스크 경계는, 적어도 하나의 전경 픽셀이 초기 세그먼테이션 마스크에서 적어도 하나의 배경 픽셀에 인접하는 위치들을 포함한다. L1 거리가 전경 거리 임계치를 충족시키고 그리고 픽셀이 전경 픽셀로 카테고리화되는 경우, 방법은 픽셀을 알려진 전경으로 분류하는 단계를 더 포함할 수 있다. L1 거리가 배경 거리 임계치를 충족시키고 그리고 픽셀이 배경 픽셀로 카테고리화되는 경우, 방법은 픽셀을 알려진 배경으로 분류하는 단계를 더 포함할 수 있으며, 픽셀이 알려진 전경으로 분류되지 않고 그리고 알려진 배경으로 분류되지 않은 경우, 방법은 픽셀을 알려지지 않은 것으로 분류하는 단계를 더 포함할 수 있다.
[0010] 트라이맵을 결정하는 단계는, 머리 경계 박스 내의 각각의 픽셀에 대해, 픽셀이 알려진 전경인지, 알려진 배경인지 또는 알려지지 않은 것인지를 식별하는 단계를 더 포함할 수 있다. 픽셀이 알려진 전경인지, 알려진 배경인지 또는 알려지지 않은 것인지를 식별하는 단계는, 픽셀이 머리 경계 박스에 대해 결정된 내부 마스크(inner mask) 내에 있는 경우, 픽셀을 알려진 전경으로 분류하는 단계, 픽셀이 머리 경계 박스에 대해 결정된 외부 마스크(outer mask) 외부에 있는 경우, 픽셀을 알려진 배경으로 분류하는 단계, 및 픽셀이 알려진 전경 및 알려진 배경으로 분류되지 않은 경우, 픽셀을 알려지지 않은 것으로 분류하는 단계를 포함할 수 있다.
[0011] 일부 구현들에서, 방법은, 머리 경계 박스 내의 머리의 모발 영역(hair area) 근처에 균일한 밝은 배경이 존재하는지 여부를 검출하는 단계, 및 균일한 밝은 배경이 검출되는 경우, 머리 경계 박스, 컬러 데이터 및 초기 세그먼테이션 마스크에 기반하여 머리에 대한 모발 영역 확장을 수행하는 단계를 더 포함할 수 있다. 이들 구현들에서, 모발 영역 확장을 수행한 후, 외부 마스크에 대한 팽창 크기(dilation size)가 증가된다.
[0012] 일부 구현들에서, 방법은 비디오에 대한 배경 이미지를 유지하는 단계를 더 포함할 수 있고, 배경 이미지는 비디오의 각각의 프레임과 동일한 크기의 컬러 이미지이다. 방법은, 미세 세그먼테이션을 수행하기 전에, 트라이맵에 기반하여 배경 이미지를 업데이트하는 단계를 더 포함할 수 있다. 이들 구현들에서, 픽셀에 대한 가중치를 계산하는 것은, 픽셀의 컬러와 배경 이미지의 배경 컬러 사이의 유클리드 거리(Euclidean distance)를 계산하는 것, 유클리드 거리에 기반하여 픽셀이 배경 픽셀일 확률을 결정하는 것, 및 확률이 배경 확률 임계치를 충족시키는 경우, 가중치 맵에서 픽셀에 배경 가중치를 할당하는 것을 포함할 수 있다.
[0013] 일부 구현들에서, 방법은 피부색 검출에 기반하여 프레임 내의 하나 이상의 피부 영역(skin region)들을 식별하는 단계를 더 포함할 수 있다. 하나 이상의 피부 영역들은 얼굴 영역들을 제외한다. 이들 구현들에서, 방법은, 하나 이상의 피부 영역들 내에 있는 프레임의 각각의 픽셀에 대해, 픽셀을 알려지지 않은 것으로 분류하는 단계 및 가중치 맵에서 픽셀에 제로 가중치(zero weight)를 할당하는 단계를 더 포함할 수 있다. 방법은, 픽셀의 컬러 및 배경 이미지의 배경 컬러가 유사성 임계치(similarity threshold)를 충족시키는 경우, 가중치 맵에서 픽셀에 배경 가중치를 할당하는 단계를 더 포함할 수 있다. 방법은, 픽셀의 컬러가 피부색인 경우, 가중치 맵에서 픽셀에 전경 가중치를 할당하는 단계를 더 포함할 수 있다. 방법은, 픽셀의 컬러 및 배경 이미지의 배경 컬러가 비유사성 임계치(dissimilarity threshold)를 충족시키는 경우, 가중치 맵에서 픽셀에 전경 가중치를 할당하는 단계를 더 포함할 수 있다.
[0014] 일부 구현들에서, 비디오의 복수의 프레임들은 시퀀스(sequence)로 이루어질 수 있다. 이들 구현들에서, 방법은, 각각의 프레임에 대해, 시퀀스 내의 바로 이전 프레임의 이전 프레임 이진 마스크와 초기 세그먼테이션 마스크를 비교하여, 이전 프레임의 픽셀들과 유사하게 카테고리화된, 프레임의 픽셀들의 비율을 결정하는 단계를 더 포함할 수 있다. 방법은, 비율에 기반하여, 글로벌 코히런스 가중치(global coherence weight)를 계산하는 단계를 더 포함할 수 있다. 이들 구현들에서, 픽셀에 대한 가중치를 계산하고 가중치를 가중치 맵에 저장하는 단계는, 글로벌 코히런스 가중치 및 이전 프레임 이진 마스크의 마스크 경계와 픽셀 간의 거리에 기반하여 가중치를 결정하는 단계를 포함할 수 있다. 일부 구현들에서, 대응하는 픽셀이 이전 프레임 이진 마스크에서 전경 픽셀로 카테고리화된 경우, 픽셀에 대한 가중치는 양(positive)이며, 그리고 대응하는 픽셀이 이전 프레임 이진 마스크에서 전경 픽셀로 카테고리화되지 않은 경우, 가중치는 음(negative)이다.
[0015] 일부 구현들에서, 미세 세그먼테이션을 수행하는 단계는 프레임에 그래프컷 기법(graphcut technique)을 적용하는 단계를 포함할 수 있고, 그래프컷 기법은 알려지지 않은 것으로 분류되는 픽셀들에 적용된다.
[0016] 일부 구현들에서, 방법은, 미세 세그먼테이션을 수행한 후, 이진 마스크에 시간적 저역 통과 필터(temporal low pass filter)를 적용하는 단계를 더 포함할 수 있다. 시간적 저역 통과 필터를 적용하게 되면, 프레임과 하나 이상의 이전 프레임들 간의 유사성에 기반하여 이진 마스크를 업데이트할 수 있다.
[0017] 일부 구현들은 명령들이 저장된 비-일시적인 컴퓨터-판독가능 매체를 포함할 수 있다. 명령들은, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 프로세서들로 하여금 비디오의 복수의 프레임들을 수신하는 것을 포함하는 동작들을 수행하게 한다. 비디오의 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함할 수 있다. 동작들은 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링하는 것을 더 포함한다. 동작들은, 다운샘플링 이후, 각각의 프레임에 대해, 깊이 데이터에 기반하여 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크를 생성하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 프레임의 각각의 픽셀을 알려진 배경, 알려진 전경, 또는 알려지지 않은 것 중 하나로 분류하는 트라이맵을 결정하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 그리고 알려지지 않은 것으로 분류된, 프레임의 각각의 픽셀에 대해, 픽셀에 대한 가중치를 계산하고 가중치를 가중치 맵에 저장하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 프레임에 대한 이진 마스크를 획득하기 위해, 컬러 데이터, 트라이맵, 및 가중치 맵에 기반하여, 미세 세그먼테이션을 수행하는 것을 더 포함한다. 동작들은, 전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 이진 마스크에 기반하여 복수의 프레임들을 업샘플링하는 것을 더 포함한다.
[0018] 일부 구현들에서, 비-일시적인 컴퓨터-판독가능 매체는, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 프로세서들로 하여금, 비디오의 각각의 프레임과 동일한 크기의 컬러 이미지인, 비디오에 대한 배경 이미지를 유지하는 것을 포함하는 동작들을 수행하게 하는 추가의 명령들을 포함할 수 있다. 동작들은, 미세 세그먼테이션을 수행하기 전에, 트라이맵에 기반하여 배경 이미지를 업데이트하는 것을 더 포함할 수 있다. 이들 구현들에서, 픽셀에 대한 가중치를 계산하는 동작은, 픽셀의 컬러와 배경 이미지의 배경 컬러 사이의 유클리드 거리를 계산하는 것, 유클리드 거리에 기반하여 픽셀이 배경 픽셀일 확률을 결정하는 것, 및 확률이 배경 확률 임계치를 충족시키는 경우, 가중치 맵에서 픽셀에 배경 가중치를 할당하는 것을 포함할 수 있다.
[0019] 일부 구현들은, 메모리에 커플링된 하나 이상의 하드웨어 프로세서들을 포함하는 시스템을 포함할 수 있다. 메모리는 메모리에 저장된 명령들을 포함할 수 있다. 명령들은, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 프로세서들로 하여금 비디오의 복수의 프레임들을 수신하는 것을 포함하는 동작들을 수행하게 한다. 비디오의 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함할 수 있다. 동작들은 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링하는 것을 더 포함한다. 동작들은, 다운샘플링 이후, 각각의 프레임에 대해, 깊이 데이터에 기반하여 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크를 생성하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 프레임의 각각의 픽셀을 알려진 배경, 알려진 전경, 또는 알려지지 않은 것 중 하나로 분류하는 트라이맵을 결정하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 그리고 알려지지 않은 것으로 분류된, 프레임의 각각의 픽셀에 대해, 픽셀에 대한 가중치를 계산하고 가중치를 가중치 맵에 저장하는 것을 더 포함한다. 동작들은, 각각의 프레임에 대해, 프레임에 대한 이진 마스크를 획득하기 위해, 컬러 데이터, 트라이맵, 및 가중치 맵에 기반하여, 미세 세그먼테이션을 수행하는 것을 더 포함한다. 동작들은, 전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 이진 마스크에 기반하여 복수의 프레임들을 업샘플링하는 것을 더 포함한다.
[0020] 특허 또는 출원 파일은 컬러로 실행된 적어도 하나의 도면을 포함한다. 컬러 도면(들)을 갖는 본 특허 또는 특허 출원 공보의 사본들은 요청 및 필요한 비용을 지불하면 특허청에 의해 제공될 것이다.
[0021] 도 1은 본원에서 설명되는 하나 이상의 구현들에 대해 사용될 수 있는 예시적인 네트워크 환경의 블록도이다.
[0022] 도 2는 일부 구현들에 따른, 전경 마스크를 결정하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0023] 도 3은 일부 구현들에 따른, 머리 경계 박스를 검출하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0024] 도 4는 일부 구현들에 따른, 머리 영역에 대한 트라이맵을 생성하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0025] 도 5는 예시적인 비디오 프레임 및 대응하는 초기 세그먼테이션 마스크를 예시한다.
[0026] 도 6은 트라이맵을 사용하지 않고 전경 및 배경이 분리되는 2개의 예시적인 이미지들을 예시한다.
[0027] 도 7은 트라이맵의 부분들이 식별되는 예시적인 이미지를 예시한다.
[0028] 도 8은 일부 구현들에 따른, 입력 비디오의 4개의 프레임들, 및 입력 비디오를 세그먼트화함으로써 생성된 전경을 포함하는 출력 비디오의 대응하는 출력 프레임들을 예시한다.
[0029] 도 9는 본원에서 설명되는 하나 이상의 구현들에 대해 사용될 수 있는 예시적인 컴퓨팅 디바이스의 블록도이다.
[0030] 본원에서 설명되는 실시예들은 일반적으로, 비디오 또는 이미지를 배경 부분 및 전경 부분으로 세그먼트화하는 것에 관한 것이다. 특히, 실시예들은 비디오 또는 이미지의 전경 부분을 획득하는 것에 관한 것이다.
[0031] 본원에서 설명되는 하나 이상의 구현들은, 전경 비디오를 획득하기 위한 방법들, 디바이스들, 및 명령들을 갖는 컴퓨터-판독가능 매체들을 포함한다. 일부 구현들에서, 전경 비디오는 빈(blank) 배경을 가질 수 있다. 또한, 일부 구현들은, 원래의 캡처된 배경과 상이한 배경 상에 오버레이되는, 캡처된 장면으로부터 세그먼트화된 전경 비디오를 포함하는 합성 비디오(composite video)를 생성할 수 있다. 일부 구현들에서, 전경 비디오를 획득하기 위한 세그먼테이션은, 예컨대, 화상 회의에서 전경 비디오를 제공하기 위해 실시간으로 수행된다.
[0032] 도 1은 본원에서 설명되는 일부 구현들에서 사용될 수 있는 예시적인 네트워크 환경(100)의 블록도를 예시한다. 일부 구현들에서, 네트워크 환경(100)은 도 1에서 하나 이상의 서버 시스템들, 예컨대, 서버 시스템(102)을 포함한다. 서버 시스템(102)은, 예컨대, 네트워크(130)와 통신할 수 있다. 서버 시스템(102)은 서버 디바이스(104) 및 데이터베이스(106) 또는 다른 저장 디바이스를 포함할 수 있다. 일부 구현들에서, 서버 디바이스(104)는 비디오 애플리케이션(152b), 예컨대, 화상 통화 애플리케이션(video calling application), 증강 현실 애플리케이션, 가상 현실 애플리케이션 등을 제공할 수 있다.
[0033] 네트워크 환경(100)은 또한, 네트워크(130)를 통해 서로 및/또는 서버 시스템(102)과 통신할 수 있는 하나 이상의 클라이언트 디바이스들, 예컨대, 클라이언트 디바이스들(120, 122, 124, 및 126)을 포함할 수 있다. 네트워크(130)는, 인터넷, LAN(local area network)들, 무선 네트워크들, 스위치 또는 허브 접속들 등 중 하나 이상을 포함하는 임의의 타입의 통신 네트워크일 수 있다. 일부 구현들에서, 네트워크(130)는, 예컨대, 피어-투-피어 무선 프로토콜들(예컨대, Bluetooth
Figure 112021152408748-pct00001
, Wi-Fi 다이렉트 등) 등을 사용하는, 디바이스들 간의 피어-투-피어 통신을 포함할 수 있다. 2개의 클라이언트 디바이스들(120, 122) 사이의 피어-투-피어 통신들의 일 예가 화살표(132)로 도시된다.
[0034] 예시의 용이함을 위해, 도 1은 서버 시스템(102), 서버 디바이스(104) 및 데이터베이스(106)에 대한 하나의 블록을 도시하고, 클라이언트 디바이스들(120, 122, 124, 및 126)에 대한 4개의 블록들을 도시한다. 서버 블록들(102, 104 및 106)은 다수의 시스템들, 서버 디바이스들 및 네트워크 데이터베이스들을 표현할 수 있으며, 그리고 이러한 블록들은 도시된 것과는 상이한 구성들로 제공될 수 있다. 예컨대, 서버 시스템(102)은 네트워크(130)를 통해 다른 서버 시스템들과 통신할 수 있는 다수의 서버 시스템들을 표현할 수 있다. 일부 구현들에서, 서버 시스템(102)은, 예컨대, 클라우드 호스팅 서버들을 포함할 수 있다. 일부 예들에서, 데이터베이스(106) 및/또는 다른 저장 디바이스들은, 서버 디바이스(104)와 별개인 서버 시스템 블록(들)에서 제공될 수 있고, 네트워크(130)를 통해 서버 디바이스(104) 및 다른 서버 시스템들과 통신할 수 있다.
[0035] 또한, 임의의 수의 클라이언트 디바이스들이 존재할 수 있다. 각각의 클라이언트 디바이스는 임의의 타입의 전자 디바이스, 예컨대, 데스크탑 컴퓨터, 랩톱 컴퓨터, 휴대용 또는 모바일 디바이스, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 텔레비전, TV 셋탑 박스 또는 엔터테인먼트 디바이스, 웨어러블 디바이스들(예컨대, 디스플레이 안경 또는 고글, 손목시계, 헤드셋, 암밴드, 보석류 등), PDA(personal digital assistant), 미디어 플레이어, 게임 디바이스 등일 수 있다. 일부 클라이언트 디바이스들은 또한 데이터베이스(106) 또는 다른 저장부와 유사한 로컬 데이터베이스(local database)를 가질 수 있다. 일부 구현들에서, 네트워크 환경(100)은 도시된 컴포넌트들 전부를 갖지는 않을 수 있고 그리고/또는 본원에서 설명되는 엘리먼트들 대신에 또는 그에 추가로 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다.
[0036] 다양한 구현들에서, 최종-사용자들(U1, U2, U3, 및 U4)은 개개의 클라이언트 디바이스들(120, 122, 124, 및 126)을 사용하여 서버 시스템(102)과 그리고/또는 서로 통신할 수 있다. 일부 예들에서, 사용자들(U1, U2, U3 및 U4)은, 개개의 클라이언트 디바이스들 및/또는 서버 시스템(102)에서 실행되는 애플리케이션들을 통해, 그리고/또는 서버 시스템(102) 상에서 구현되는 네트워크 서비스, 예컨대, 소셜 네트워크 서비스 또는 다른 타입의 네트워크 서비스를 통해, 서로 상호작용할 수 있다. 예컨대, 개개의 클라이언트 디바이스들(120, 122, 124, 및 126)은 하나 이상의 서버 시스템들, 예컨대 시스템(102)에 그리고 그로부터 데이터를 통신할 수 있다.
[0037] 일부 구현들에서, 서버 시스템(102)은, 각각의 클라이언트 디바이스가 통신된 콘텐츠 또는 서버 시스템(102) 및/또는 네트워크 서비스에 업로드된 공유된 콘텐츠를 수신할 수 있도록 클라이언트 디바이스들에 적절한 데이터를 제공할 수 있다. 일부 예들에서, 사용자들(U1-U4)은, 오디오/화상 통화, 오디오, 비디오 또는 텍스트 채팅, 또는 다른 통신 모드들 또는 애플리케이션을 통해 상호작용할 수 있다. 서버 시스템(102)에 의해 구현되는 네트워크 서비스는, 사용자들이 다양한 통신들을 수행하고, 링크들 및 연관(association)들을 형성하고, 공유 콘텐츠, 이를테면 이미지들, 텍스트, 비디오, 오디오, 및 다른 타입들의 콘텐츠를 업로드 및 게시(post)하고, 그리고/또는 다른 기능들을 수행할 수 있게 하는 시스템을 포함할 수 있다. 예컨대, 클라이언트 디바이스는, 서버 및/또는 네트워크 서비스를 통해 다른 클라이언트 디바이스로부터(또는 그러한 다른 클라이언트 디바이스로부터 직접) 발신되어 또는 서버 시스템 및/또는 네트워크 서비스로부터 발신되어, 그 클라이언트 디바이스에 전송 또는 스트리밍되는 콘텐츠 게시물들과 같은 수신 데이터를 디스플레이할 수 있다. 일부 구현들에서, 클라이언트 디바이스들은, 예컨대 위에서 설명된 바와 같은 클라이언트 디바이스들 사이의 피어-투-피어 통신들을 사용하여 서로 직접 통신할 수 있다. 일부 구현들에서, "사용자"는, 시스템 또는 네트워크와 인터페이싱하는 개인들 뿐만 아니라, 하나 이상의 프로그램들 또는 가상 엔티티들을 포함할 수 있다.
[0038] 일부 구현들에서, 클라이언트 디바이스들(120, 122, 124, 및/또는 126) 중 임의의 것은 하나 이상의 애플리케이션들을 제공할 수 있다. 예컨대, 도 1에 도시된 바와 같이, 클라이언트 디바이스(120)는 비디오 애플리케이션(152a) 및 하나 이상의 다른 애플리케이션들(154)을 제공할 수 있다. 클라이언트 디바이스들(122-126) 또한, 유사한 애플리케이션들을 제공할 수 있다.
[0039] 예컨대, 비디오 애플리케이션(152)은 개개의 클라이언트 디바이스의 사용자(예컨대, 사용자들(U1-U4))에게 하나 이상의 다른 사용자들과의 화상 통화(video call)에 참여할 수 있는 능력을 제공할 수 있다. 화상 통화에서, 클라이언트 디바이스는, 사용자 허가로, 화상 통화에 참여하는 다른 디바이스들에게 국부적으로 캡처한 비디오(locally captured video)를 전송할 수 있다. 예컨대, 그러한 비디오는 클라이언트 디바이스의 카메라, 예컨대 전면 카메라, 후면 카메라 및/또는 하나 이상의 다른 카메라들을 사용하여 캡처되는 라이브(live) 비디오를 포함할 수 있다. 일부 구현들에서, 카메라는 클라이언트 디바이스로부터 분리될 수 있고, 예컨대 네트워크를 통해, 클라이언트 디바이스의 하드웨어 포트 등을 통해, 클라이언트 디바이스에 커플링될 수 있다. 비디오 애플리케이션(152)은 클라이언트 디바이스(120) 상에서 실행되는 소프트웨어 애플리케이션일 수 있다. 일부 구현들에서, 비디오 애플리케이션(152)은 사용자 인터페이스를 제공할 수 있다. 예컨대, 사용자 인터페이스는, 사용자가 하나 이상의 다른 사용자들에게 화상 통화들을 걸고, 다른 사용자들로부터 화상 통화들을 수신하고, 다른 사용자들에게 비디오 메시지들을 남기고, 다른 사용자들로부터의 비디오 메시지들을 보는 것 등을 가능하게 할 수 있다.
[0040] 비디오 애플리케이션(152a)은, 도 9를 참조하여 설명되는 바와 같이, 클라이언트 디바이스(120)의 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있다. 상이한 구현들에서, 비디오 애플리케이션(152a)은, 예컨대, 클라이언트 디바이스들(120-124) 중 임의의 것 상에서 실행되는 독립형 클라이언트 애플리케이션일 수 있거나, 또는 서버 시스템(102) 상에 제공되는 비디오 애플리케이션(152b)과 함께 작동할 수 있다. 비디오 애플리케이션(152a) 및 비디오 애플리케이션(152b)은 화상 통화(2명 이상의 참여자들과의 화상 통화들을 포함함) 기능들, 오디오 또는 비디오 메시징 기능들, 주소록 기능들 등을 제공할 수 있다.
[0041] 일부 구현들에서, 클라이언트 디바이스(120)는 하나 이상의 다른 애플리케이션들(154)을 포함할 수 있다. 예컨대, 다른 애플리케이션들(154)은, 다양한 타입들의 기능성, 예컨대, 캘린더, 주소록, 이메일, 웹 브라우저, 쇼핑, 운송 수단(예컨대, 택시, 기차, 항공 예약 등), 엔터테인먼트(예컨대, 뮤직 플레이어, 비디오 플레이어, 게이밍 애플리케이션 등), 소셜 네트워킹(예컨대, 메시징 또는 채팅, 오디오/화상 통화, 이미지들/비디오 공유 등), 이미지 캡처 및 편집(예컨대, 이미지 또는 비디오 캡처, 비디오 편집 등) 등을 제공하는 애플리케이션들일 수 있다. 일부 구현들에서, 다른 애플리케이션들(154) 중 하나 이상은 클라이언트 디바이스(120) 상에서 실행되는 독립형 애플리케이션들일 수 있다. 일부 구현들에서, 다른 애플리케이션들(154) 중 하나 이상은 애플리케이션들(154)의 데이터 및/또는 기능성을 제공하는 서버 시스템에 액세스할 수 있다.
[0042] 클라이언트 디바이스(120, 122, 124, 및/또는 126) 상의 사용자 인터페이스는, 이미지, 비디오, 데이터 및 기타 콘텐츠뿐만 아니라 통신들, 개인 정보 설정(privacy setting)들, 통지(notification)들 및 기타 데이터를 포함하여, 사용자 콘텐츠 및 기타 콘텐츠의 디스플레이를 가능하게 할 수 있다. 이러한 사용자 인터페이스는, 클라이언트 디바이스 상의 소프트웨어, 서버 디바이스 상의 소프트웨어, 및/또는 서버 디바이스(104) 상에서 실행되는 클라이언트 소프트웨어와 서버 소프트웨어의 조합, 예컨대, 서버 시스템(102)과 통신하는 애플리케이션 소프트웨어 또는 클라이언트 소프트웨어를 사용하여 디스플레이될 수 있다. 사용자 인터페이스는, 클라이언트 디바이스 또는 서버 디바이스의 디스플레이 디바이스, 예컨대, 터치스크린 또는 기타 디스플레이 스크린, 프로젝터 등에 의해 디스플레이될 수 있다. 일부 구현들에서, 서버 시스템 상에서 실행되는 애플리케이션 프로그램들은 클라이언트 디바이스에서 사용자 입력을 수신하고 클라이언트 디바이스에서 시각적 데이터, 오디오 데이터 등과 같은 데이터를 출력하기 위해 클라이언트 디바이스와 통신할 수 있다.
[0043] 본원에서 설명되는 특징들의 다른 구현들은 임의의 타입의 시스템 및/또는 서비스를 사용할 수 있다. 예컨대, 다른 네트워크 서비스들(예컨대, 인터넷에 접속됨)이 소셜 네트워킹 서비스 대신에 또는 그에 추가로 사용될 수 있다. 임의의 타입의 전자 디바이스가 본원에서 설명되는 특징들을 이용할 수 있다. 일부 구현들은, 컴퓨터 네트워크들로부터 연결 해제되거나 간헐적으로 연결되는 하나 이상의 클라이언트 또는 서버 디바이스들 상에서, 본원에서 설명되는 하나 이상의 특징들을 제공할 수 있다. 일부 예들에서, 디스플레이 디바이스를 포함하거나 디스플레이 디바이스에 연결된 클라이언트 디바이스는, 클라이언트 디바이스에 국부적인 저장 디바이스들에 저장된, 예컨대, 통신 네트워크들을 통해 이전에 수신된 콘텐츠 게시물들을 디스플레이할 수 있다.
[0044] 도 2는 일부 구현들에 따른, 전경 비디오를 획득하기 위한 방법(200)의 일 예를 예시하는 흐름도이다. 일부 구현들에서, 방법(200)은, 예컨대, 도 1에 도시된 바와 같은 서버 시스템(102) 상에서 구현될 수 있다. 일부 구현들에서, 방법(200)의 일부 또는 전부는, 도 1에 도시된 바와 같은 하나 이상의 클라이언트 디바이스들(120, 122, 124 또는 126), 하나 이상의 서버 디바이스들 상에서, 그리고/또는 서버 디바이스(들) 및 클라이언트 디바이스(들) 모두 상에서 구현될 수 있다. 설명되는 예들에서, 구현 시스템은 하나 이상의 디지털 프로세서들 또는 프로세싱 회로("프로세서들") 및 하나 이상의 저장 디바이스들(예컨대, 데이터베이스(106) 또는 기타 저장소)을 포함한다. 일부 구현들에서, 하나 이상의 서버들 및/또는 클라이언트들의 상이한 컴포넌트들이 방법(200)의 상이한 블록들 또는 다른 부분들을 수행할 수 있다. 일부 예들에서, 제1 디바이스가 방법(200)의 블록들을 수행하는 것으로 설명된다. 일부 구현들은, 하나 이상의 다른 디바이스들(예컨대, 다른 클라이언트 디바이스들 또는 서버 디바이스들)에 의해 수행되는 방법(200)의 하나 이상의 블록들을 가질 수 있으며, 이러한 하나 이상의 다른 디바이스들이 결과들 또는 데이터를 제1 디바이스에 전송할 수 있다.
[0045] 일부 구현들에서, 방법(200) 또는 이 방법의 부분들은 시스템에 의해 자동으로 개시될 수 있다. 일부 구현들에서, 구현 시스템은 제1 디바이스이다. 예컨대, 방법(또는 그 부분들)은 주기적으로 수행될 수 있거나, 또는 하나 이상의 특정 이벤트들 또는 조건들, 예컨대, 사용자에 의해 애플리케이션(예컨대, 화상 통화 애플리케이션)이 개시되는 것, 비디오를 캡처하기 위해 사용자 디바이스의 카메라가 활성화되는 것, 비디오 편집 애플리케이션이 론칭(launch)되는 것, 및/또는 방법에 의해 판독되는 설정들에서 특정될 수 있는 하나 이상의 다른 조건들이 발생하는 것에 기반하여 수행될 수 있다. 일부 구현들에서, 그러한 조건들은 사용자의 저장된 맞춤형 선호도(custom preference)들에서 사용자에 의해 특정될 수 있다.
[0046] 일 예에서, 제1 디바이스는, 비디오를 캡처할 수 있고 방법(200)을 수행할 수 있는 카메라, 셀 폰, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 다른 클라이언트 디바이스일 수 있다. 다른 예에서, 서버 디바이스가 비디오에 대한 방법(200)을 수행할 수 있으며, 예컨대, 클라이언트 디바이스는 서버 디바이스에 의해 프로세싱되는 비디오 프레임들을 캡처할 수 있다. 일부 구현들은 사용자 입력에 기반하여 방법(200)을 개시할 수 있다. 사용자(예컨대, 오퍼레이터 또는 최종 사용자)는, 예컨대, 디스플레이되는 사용자 인터페이스, 예컨대 애플리케이션 사용자 인터페이스 또는 다른 사용자 인터페이스로부터 방법(200)의 개시를 선택했을 수 있다. 일부 구현들에서, 방법(200)은 클라이언트 디바이스에 의해 구현될 수 있다. 일부 구현들에서, 방법(200)은 서버 디바이스에 의해 구현될 수 있다.
[0047] 본원에서 지칭되는 바와 같은 비디오는, 프레임들로 또한 지칭되는 이미지 프레임들의 시퀀스를 포함할 수 있다. 각각의 이미지 프레임은 복수의 픽셀들에 대한 컬러 데이터 및 깊이 데이터를 포함할 수 있다. 예컨대, 컬러 데이터는 각각의 픽셀에 대한 컬러 값들을 포함할 수 있고, 깊이 데이터는 깊이 값들, 예컨대, 비디오를 캡처한 카메라로부터의 거리를 포함할 수 있다. 예컨대, 비디오는 고화질 비디오일 수 있고, 여기서, 비디오의 각각의 이미지 프레임은 총 1,958,400 개의 픽셀들에 대해 1920 x 1080의 크기를 갖는다. 본원에서 설명되는 기법들은 다른 비디오 해상도들, 예컨대, 표준 화질 비디오, 4K 비디오, 8K 비디오 등을 위해 사용될 수 있다. 예컨대, 비디오는 모바일 디바이스 카메라, 예컨대, 스마트폰 카메라, 태블릿 카메라, 웨어러블 카메라 등에 의해 캡처될 수 있다. 다른 예에서, 비디오는 컴퓨터 카메라, 예컨대, 랩톱 카메라, 데스크탑 카메라 등에 의해 캡처될 수 있다. 또 다른 예에서, 비디오는 화상-통화 기기 또는 디바이스, 이를테면 스마트 스피커, 스마트 홈 기기, 전용 화상 통화 디바이스 등에 의해 캡처될 수 있다. 일부 구현들에서, 비디오는 또한 오디오 데이터를 포함할 수 있다. 방법(200)은 블록(202)에서 시작될 수 있다.
[0048] 블록(202)에서, 방법(200)의 구현에서 사용자 데이터를 사용하기 위해 사용자 동의(user consent)(예컨대, 사용자 허가)가 획득되었는지 여부가 체크된다. 예컨대, 사용자 데이터는, 클라이언트 디바이스를 사용하여 사용자가 캡처한 비디오들, 예컨대 클라이언트 디바이스를 사용하여 사용자가 저장하거나 액세스하는 비디오들, 비디오 메타데이터, 화상 통화 애플리케이션의 사용과 연관된 사용자 데이터, 사용자 선호도들 등을 포함할 수 있다. 본원에서 설명되는 방법들의 하나 이상의 블록들은 일부 구현들에서 그러한 사용자 데이터를 사용할 수 있다.
[0049] 방법(200)에서 사용자 데이터가 사용될 수 있는 관련 사용자들로부터 사용자 동의가 획득된 경우, 블록(204)에서, 그러한 블록들에 대해 설명된 바와 같이 사용자 데이터의 가능한 사용으로 본원에서의 방법들의 블록들이 구현될 수 있다고 결정되고, 방법은 블록(210)으로 계속된다. 사용자 동의가 획득되지 않은 경우, 블록(206)에서, 사용자 데이터의 사용 없이 블록들이 구현될 것이라고 결정되고, 방법은 블록(210)으로 계속된다. 일부 구현들에서, 사용자 동의가 획득되지 않은 경우, 블록들은 사용자 데이터의 사용 없이 그리고 합성 데이터 및/또는 일반적인 또는 공개적으로 액세스 가능하고 공개적으로 사용 가능한 데이터를 사용하여 구현된다. 일부 구현들에서, 사용자 동의가 획득되지 않은 경우, 방법(200)은 수행되지 않는다.
[0050] 방법(200)의 블록(210)에서, 비디오의 복수의 비디오 프레임들이 수신된다. 예컨대, 복수의 비디오 프레임들은 클라이언트 디바이스에 의해 캡처될 수 있다. 일부 구현들에서, 복수의 비디오 프레임들은, 예컨대 화상 통화 애플리케이션을 통해, 클라이언트 디바이스가 일부인 라이브 화상 통화 동안 캡처될 수 있다. 일부 구현들에서, 복수의 비디오 프레임들은 이전에 레코딩될 수 있는데, 예컨대 레코딩된 비디오의 일부일 수 있다. 비디오는 시퀀스로 이루어진 복수의 프레임들을 포함할 수 있다. 일부 구현들에서, 각각의 프레임은 복수의 픽셀들에 대한 컬러 데이터 및 깊이 데이터를 포함할 수 있다.
[0051] 일부 구현들에서, 컬러 데이터는 초당 30 프레임들로 캡처될 수 있고, 깊이 데이터는 초당 15 프레임들로 캡처될 수 있으며, 그에 따라, 프레임들의 절반 만이 캡처 시 깊이 데이터를 포함한다. 예컨대, 깊이 데이터는 하나 걸러의 프레임들에 대해 캡처될 수 있다. 캡처된 프레임들 중 하나 이상이 깊이 데이터를 갖지 않는 구현들에서는, 인접한 프레임, 예컨대 이전 프레임의 깊이 데이터가 깊이 데이터로서 활용될 수 있다. 예컨대, 비디오 프레임들을 수신하면, 하나 이상의 프레임들이 깊이 데이터를 갖지 않는지 여부가 결정될 수 있다. 프레임에 깊이 데이터가 없는 경우, 인접한 프레임, 예컨대, 비디오의 프레임들의 시퀀스 내의 바로 이전 프레임의 깊이 데이터가 프레임에 대한 깊이 데이터로서 사용될 수 있다. 블록(210) 다음에는 블록(212)이 뒤따를 수 있다.
[0052] 블록(212)에서, 비디오는 다운샘플링된다. 일부 구현들에서, 다운샘플링은 비디오를 더 작은 크기로 리사이징(resizing)하는 것을 포함한다. 예컨대, 비디오가 1920 x 1080인 경우, 비디오는 그 크기의 1/4인 480 x 270으로 리사이징될 수 있다. 리사이징은, 예컨대, 프로세싱될 총 데이터가 또한 1/4로 감소되기 때문에, 방법(200)을 수행하기 위한 계산 복잡성(computational complexity)을 감소시킨다. 예컨대, 일부 구현들에서, 방법(200)을 구현하기 위한 프로세스 시간은, 다운샘플링 이후, 프레임 당 약 90ms 일 수 있다. 일부 구현들에서, 예컨대, 방법(200)을 구현하는 디바이스가 높은 계산 능력(computational capability)을 갖는 경우, 다운샘플링이 수행되지 않을 수 있다. 일부 구현들에서, 다운샘플링된 비디오의 크기는, 수신된 비디오의 크기, 방법(200)을 구현하는 디바이스의 계산 능력 등에 기반하여 선택될 수 있다. 다양한 구현들에서, 프레임들의 컬러 데이터 및 깊이 데이터는 직접적으로 다운샘플링된다. 다양한 구현들에서, 깊이 데이터 및 컬러 데이터의 비트 깊이는 다운샘플링 이후 변경되지 않는다. 다운샘플링 비율, 예컨대, 원래의 비디오 프레임의 픽셀들의 수에 대한 다운샘플링된 프레임의 픽셀들의 수의 비율의 선택은, 프로세싱 시간과 세그먼테이션 품질 사이의 트레이드오프(tradeoff)에 기반할 수 있다. 일부 구현들에서, 다운샘플링 비율은, 적절한 트레이드오프를 달성하기 위해, 방법(200)이 구현되는 디바이스의 이용 가능한 프로세싱 용량에 기반하여 선택될 수 있다. 일부 구현들에서, 다운샘플링 비율은 경험적으로 결정될 수 있다. 블록(212) 다음에는 블록(213)이 뒤따를 수 있다.
[0053] 블록(213)에서, 다운샘플링된 비디오의 프레임이 선택된다. 블록(213) 다음에는 블록(214)이 뒤따를 수 있다.
[0054] 블록(214)에서, 선택된 프레임 또는 이미지의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크가 생성된다. 일부 구현들에서, 초기 세그먼테이션 마스크는 깊이 범위에 기반한다. 각각의 픽셀에 대한 깊이 값은, 깊이 값이 깊이 범위 내에 있는지 여부를 결정하기 위해, 깊이 범위와 비교될 수 있다. 깊이 값이 깊이 범위 내에 있는 경우, 픽셀은 전경 픽셀로 카테고리화된다. 깊이 값이 깊이 범위를 벗어나는 경우, 픽셀은 배경 픽셀로 카테고리화된다. 따라서, 생성되는 초기 세그먼테이션 마스크는, 선택된 프레임의 각각의 픽셀에 대한 값을 포함하며, 이는 그 픽셀이 전경 픽셀인지 또는 배경 픽셀인지를 표시한다. 일부 구현들에서, 깊이 범위는 0.5 미터 내지 1.5 미터일 수 있다. 예컨대, 이 범위는, 방법(200)이 화상 통화 애플리케이션, 또는 화상 통화에 참여하는 하나 이상의 사용자들이, 예컨대, 회의실, 책상 등에서, 비디오를 캡처하는 카메라에 가까이 있는 다른 애플리케이션에 대해 수행될 때, 적합할 수 있다. 다른 애플리케이션들에서, 상이한 깊이 범위들이 사용될 수 있는 바, 예컨대, 그러한 애플리케이션들에 대한 전경 객체들과 카메라 사이의 전형적인 거리에 기반하여 선택될 수 있다.
[0055] 일부 구현들에서, 초기 세그먼테이션 마스크는 프레임의 각각의 픽셀에 대한 마스크 값을 포함할 수 있다. 예컨대, 픽셀이 배경 픽셀인 것으로 결정되는 경우, 0의 마스크 값이 픽셀에 할당될 수 있고, 그리고 픽셀이 전경 픽셀인 것으로 결정되는 경우, 255의 마스크 값이 픽셀에 할당될 수 있다.
[0056] 일부 구현들에서, 초기 세그먼테이션 마스크를 생성하는 것은 형태학적 개방 프로세스를 수행하는 것을 더 포함할 수 있다. 형태학적 개방 프로세스는 초기 세그먼테이션 마스크로부터 노이즈를 제거할 수 있다. 일부 구현들에서, 이미지를 세그먼트화하는 것은 형태학적 폐쇄 프로세스를 수행하는 것을 더 포함할 수 있다. 형태학적 폐쇄 프로세스는 초기 세그먼테이션 마스크 내의 하나 이상의 홀(hole)들을 채울 수 있다.
[0057] 세그먼테이션 마스크 내의 노이즈 및/또는 홀들은 다양한 이유들로 인해 발생할 수 있다. 예컨대, 깊이-가능(depth-capable) 카메라를 사용하여 클라이언트 디바이스에 의해 비디오 프레임들이 캡처될 때, 하나 이상의 픽셀들에 대한 깊이 값들은 부정확하게 결정될 수 있다. 그러한 부정확성들은, 예컨대, 프레임이 캡처되는 조명 조건들로 인해, 센서 에러로 인해, 캡처되는 장면에서의 피처(feature)들 등으로 인해 발생할 수 있다. 예컨대, 하나 이상의 픽셀들에 대한 깊이 값이 카메라에 의해 캡처되지 않으면, 홀이 발생할 수 있다. 예컨대, 카메라가 반사-기반 센서를 사용하여 깊이를 측정하는 경우, 장면으로부터 어떠한 반사된 광도 검출되지 않는 다면, 하나 이상의 픽셀들은 무한대의 깊이 값을 가질 수 있다. 그러한 픽셀들은 세그먼테이션 마스크 내의 홀들을 초래할 수 있다. 블록(214) 다음에는 블록(216)이 뒤따를 수 있다.
[0058] 블록(216)에서, 머리 경계 박스가 검출될 수 있다. 머리 경계 박스는, 머리를 포함하거나 머리를 포함할 가능성이 있는 프레임의 영역을 특정할 수 있다. 예컨대, 비디오가 사람을 포함하는 경우, 머리 경계 박스는, 사람의 머리에 대응하는, 프레임의 픽셀들을 특정할 수 있다. 일부 구현들에서, 예컨대, 비디오가 다수의 사람들을 포함하는 경우, 머리 경계 박스는 프레임의 다수의 영역들을 특정할 수 있으며, 각각의 영역은 특정 사람에 대응한다. 일부 구현들에서, 머리 경계 박스는 컬러 데이터, 초기 세그먼테이션 마스크, 또는 둘 모두에 기반하여 검출될 수 있다. 머리 경계 박스 검출은 임의의 적절한 방법을 사용하여 수행될 수 있다. 머리 경계 박스를 검출하기 위한 예시적인 방법이 도 3을 참조하여 설명된다. 블록(216) 다음에는 블록(218)이 뒤따를 수 있다.
[0059] 블록(218)에서, 프레임의 비-머리 부분들, 예컨대 머리 경계 박스 외부에 있는, 프레임의 부분들에 대한 트라이맵이 생성된다. 일부 구현들에서, 트라이맵은 초기 세그먼테이션 마스크에 기반하여 생성될 수 있다. 트라이맵은 이미지의 각각의 픽셀을 알려진 전경, 알려진 배경, 및 알려지지 않은 것으로 분류할 수 있다.
[0060] 일부 구현들에서, 초기 세그먼테이션 마스크를 생성하는 것은, (머리 경계 박스 외부의) 비-머리 부분인 프레임의 각각의 픽셀의 픽셀 위치와 초기 세그먼테이션 마스크의 마스크 경계 사이의 L1 거리를 계산하는 것을 포함할 수 있다. 마스크 경계는, 예컨대 픽셀 좌표들로 표현되는 위치들에 대응할 수 있으며, 여기서, 적어도 하나의 전경 픽셀은 초기 세그먼테이션 마스크에서 적어도 하나의 배경 픽셀에 인접한다.
[0061] 일부 구현들에서, L1 거리가 전경 거리 임계치를 충족시키고 그리고 픽셀이 초기 세그먼테이션 마스크에서 전경 픽셀로 카테고리화되는 경우, 이러한 픽셀은 트라이맵에서 알려진 전경으로 분류된다. 예컨대, 일부 구현들에서, 전경 거리 임계치는 24로 설정될 수 있다. 이들 구현들에서, 마스크 경계로부터 24보다 더 큰 L1 거리 및 255의 마스크 값(전경 픽셀)을 갖는 픽셀들은 알려진 전경으로 분류된다. 상이한 구현들에서는, 상이한 전경 거리 임계치가 사용될 수 있다.
[0062] 또한, L1 거리가 배경 거리 임계치를 충족시키고 그리고 픽셀이 초기 세그먼테이션 마스크에서 배경 픽셀로 카테고리화되는 경우, 이러한 픽셀은 트라이맵에서 알려진 배경으로 분류된다. 예컨대, 일부 구현들에서, 배경 거리 임계치는 8로 설정될 수 있다. 이들 구현들에서, 마스크 경계로부터 8보다 더 큰 L1 거리 및 0의 마스크 값(배경 픽셀)을 갖는 픽셀들은 알려진 전경으로 분류된다. 상이한 구현들에서는, 상이한 배경 거리 임계 값이 사용될 수 있다. 일부 구현들에서, 임계 값은 초기 세그먼테이션 마스크의 품질 및/또는 다운샘플링 비율에 기반할 수 있다. 일부 구현들에서, 초기 세그먼테이션 마스크의 품질이 낮을 때에는 더 높은 임계치가 선택될 수 있으며, 그리고 초기 세그먼테이션 마스크의 품질이 높을 때에는 더 낮은 임계치가 선택될 수 있다. 일부 구현들에서, 임계 값은 다운샘플링 비율에 비례하여 감소할 수 있다.
[0063] 또한, 알려진 전경으로 분류되지 않고 그리고 알려진 배경으로 분류되지 않은 각각의 픽셀은, 트라이맵에서, 알려지지 않은 것으로 분류된다. 생성된 트라이맵은, 머리 경계 박스 외부에 있는 프레임의 부분들의 알려진 전경, 알려진 배경 및 알려지지 않은 영역들을 표시할 수 있다. 블록(218) 다음에는 블록(220)이 뒤따를 수 있다.
[0064] 블록(220)에서, 프레임의 머리 부분들, 예컨대 머리 경계 박스 내에 있는, 프레임의 부분들에 대한 트라이맵이 생성된다. 일부 구현들에서, 트라이맵을 생성하는 것은, 머리 경계 박스 내의 각각의 픽셀에 대해, 픽셀이 알려진 전경인지, 알려진 배경인지 또는 알려지지 않은 것인지를 식별하는 것을 포함할 수 있다.
[0065] 일부 구현들에서, 픽셀을 알려진 전경으로 식별하는 것은, 픽셀이 머리 경계 박스에 대해 결정된 내부 마스크 내에 있는 경우, 픽셀을 알려진 전경으로 분류하는 것을 포함할 수 있다. 또한, 이들 구현들에서, 픽셀을 알려진 배경으로 픽셀을 식별하는 것은, 픽셀이 머리 경계 박스에 대해 결정된 외부 마스크 밖에 있는 경우, 픽셀을 알려진 배경으로 분류하는 것을 포함할 수 있다. 또한, 이들 구현들에서, 픽셀을 알려지지 않은 것으로 식별하는 것은, 알려진 전경으로 분류되지 않고 그리고 알려진 배경으로 분류되지 않은 픽셀들을, 알려지지 않은 것으로 분류하는 것을 포함할 수 있다. 생성된 트라이맵은, 머리 경계 박스 내에 있는 프레임의 부분들의 알려진 전경, 알려진 배경 및 알려지지 않은 영역들을 표시할 수 있다. 상이한 구현들에서, 내부 마스크 및 외부 마스크는 임의의 적절한 기법을 사용하여 획득될 수 있다. 내부 마스크 및 외부 마스크를 획득하기 위한 예시적인 방법이 도 4를 참조하여 설명된다.
[0066] 프레임의 머리 부분에 대한 트라이맵을 생성한 후, 이는 이미지의 비-머리 부분들에 대한 트라이맵과 병합되어, 전체 프레임에 대한 트라이맵이 획득될 수 있다. 이러한 방식으로, 생성된 트라이맵은 프레임의 각각의 픽셀을 알려진 배경(BGD), 알려진 전경(FGD), 또는 알려지지 않은 것으로 분류한다. 블록(220) 다음에는 블록(222)이 뒤따를 수 있다.
[0067] 예컨대, 트라이맵 생성을 위해 내부 마스크 및 외부 마스크를 활용함으로써, 머리 부분에 대한 트라이맵을 별개로 생성하게 되면, 머리 부분들에 대한 트라이맵 생성에서의 머리-특정 피처들의 인식 및 통합으로 인해, 개선된 세그먼테이션 결과를 제공할 수 있다.
[0068] 블록(222)에서, 생성된 트라이맵이 리파이닝(refine)되고 가중치 맵이 계산된다. 예컨대, 가중치 맵은, 트라이맵에서 알려지지 않은 것으로 분류된 픽셀들에 대해 계산될 수 있다. 가중치 맵은, 알려지지 않은 것으로 분류된 각각의 픽셀이 프레임 내에서 전경 또는 배경에 대해 기울어지는(lean) 레벨 또는 정도를 표현할 수 있다. 비디오에 대한 배경 이미지가 결정되고 유지된다. 예컨대, 다수의 상황들에서, 이를테면, 사용자가 회의실, 데스크탑 컴퓨터, 또는 모바일 디바이스로부터 화상 통화들(또는 비디오 게임들)에 참여하고 있을 때, 디바이스 카메라는 정지되어 있을 수 있고, 장면은 정적일 수 있는데, 예컨대, 프레임의 배경 부분이 프레임마다 변하지 않을 수 있다.
[0069] 배경 이미지는 비디오의 하나 이상의 프레임들의 이진 마스크에 기반하여 결정될 수 있다. 유지되는 배경 이미지는 비디오(또는 다운샘플링된 비디오)의 각각의 프레임과 동일한 크기의 컬러 이미지일 수 있다. 예컨대, 유지되는 배경 이미지는, 비디오의 하나 이상의 이전 프레임들의 이진 마스크에서 배경으로서 식별된 각각의 픽셀에 대한 컬러 값을 포함할 수 있다. 따라서, 유지되는 배경 이미지는, 다양한 픽셀 위치들에서 장면의 배경 컬러를 표시하는 정보를 포함한다. 일부 구현들에서, 각각의 픽셀에 대한 이동 평균 값은, 프레임들의 시퀀스에서의 이전 프레임들로부터, 예컨대, 2개의 이전 프레임들에 대해, 5개의 이전 프레임들에 대해, 10개의 이전 프레임들 등에 대해 결정될 수 있다. 이들 구현들에서, 가우시안 모델(Gaussian model)이, 이전 프레임들로부터의 이동 평균에 기반하여, 현재 프레임의 픽셀이 배경일 가능성을 추정하기 위해 사용될 수 있다.
[0070] 일부 구현들에서, 배경 이미지를 유지하는 것은, 트라이맵, 예컨대, 프레임에 대한 트라이맵에서 배경(BGD)으로 분류된 픽셀들에 기반하여, 배경 이미지를 업데이트하는 것을 포함할 수 있다. 예컨대, 배경 이미지는 다음 공식을 사용하여 업데이트될 수 있다:
Figure 112021152408748-pct00002
여기서, prior_background는 업데이트 이전의 배경 내의 픽셀에 대한 컬러 값이고, new_background는 트라이맵 내의 대응하는 픽셀에 대한 컬러 값이며, 그리고 maintained_background는 업데이트된 배경 이미지이다. 이전 배경(0.8) 및 새로운 배경(0.2)에 대한 계수들은 애플리케이션에 기반하여 선택될 수 있다. 일부 구현들에서, 이러한 계수들은 카메라의 안정성의 이전의 추정들에 기반하여 선택될 수 있다. 예컨대, 고정된 카메라의 경우, 이전의 배경에 대해 0.8의 계수 값이 선택될 수 있고, 새로운 배경에 대해 0.2의 계수 값이 선택될 수 있다. 다른 예에서, 예컨대, 움직임을 경험하는 휴대용 카메라 또는 다른 카메라의 경우, 이전의 배경에 대해 0.5의 계수 값이 선택될 수 있고 그리고 새로운 배경에 대해 0.5의 계수 값이 선택될 수 있는데, 이는 예컨대, 카메라의 움직임으로 인해 이력 데이터가 덜 중요할 수 있기 때문이다.
[0071] 유지되는 배경 이미지는 트라이맵 내의 각각의 픽셀에 대한 가중치를 특정하는 가중치 맵을 결정하기 위해 활용될 수 있다. 일부 구현들에서, 가중치 맵을 결정하는 것은, 트라이맵에서 알려지지 않은 것으로 분류된, 프레임의 각각의 픽셀에 대한 가중치를 계산하는 것을 포함할 수 있다. 일부 구현들에서, 픽셀에 대한 가중치를 계산하는 것은, 픽셀의 컬러와 배경 이미지의 배경 컬러 사이의 유클리드 거리를 계산하는 것을 포함할 수 있다. 가중치를 계산하는 것은, 유클리드 거리에 기반하여 픽셀이 배경 픽셀일 확률을 결정하는 것을 더 포함할 수 있다. 일부 구현들에서, 확률(p)은 다음의 공식을 사용하여 계산될 수 있다:
Figure 112021152408748-pct00003
[0072] 일부 구현들에서, 픽셀 컬러 및 유지되는 배경 컬러는 RGB(red-green-blue) 컬러 공간에 있을 수 있다. 확률에 기반하여 가중치를 계산하는 것은, 확률이 배경 확률 임계치를 충족시키는지 여부를 결정하는 것을 더 포함한다. 예컨대, 배경 확률 임계치는 0.5로 설정될 수 있으며, 그에 따라, p>0.5를 갖는 픽셀들이 배경 확률 임계치를 충족시킨다. 픽셀이 배경 확률 임계치를 충족시키는 경우, 배경 가중치(예컨대, 음의 값)가 가중치 맵에서 픽셀에 할당된다. 일부 구현들에서, 가중치 값은 카메라 안정성의 추정에 기반할 수 있는데, 예컨대, 카메라가 안정적인 경우에는 더 높은 가중치 값이 사용될 수 있는 한편, 비디오를 캡처하는 동안 카메라가 움직임을 가질 경우에는 더 낮은 가중치 값이 사용될 수 있다.
[0073] 또한, 피부색 검출을 수행하여, 얼굴 영역들을 제외한, 프레임 내의 하나 이상의 피부 영역들을 식별할 수 있다. 예컨대, 머리 경계 박스 내에 있는 프레임의 부분들을 제외하고, 프레임에 대해 피부색 검출을 수행함으로써, 얼굴 영역들이 제외될 수 있다. 예컨대, 하나 이상의 피부 영역들은, 손, 팔, 또는 프레임에 도시된 몸의 다른 부분들에 대응할 수 있다.
[0074] 일부 구현들에서, 프레임의 컬러 데이터 내의 픽셀들의 컬러 값들은 RGB 값들일 수 있다. 일부 구현들에서, 각각의 픽셀이 피부색일 수 있는지 여부를 결정하기 위해, 다음의 공식을 사용하여, 각각의 픽셀에 대해 피부색 검출이 수행될 수 있다:
Figure 112021152408748-pct00004
여기서, R, G, 및 B는 픽셀에 대한 적색, 녹색 및 청색 컬러 채널 값들을 지칭한다.
[0075] 피부색일 가능성이 있는 것으로 식별되는 픽셀들에 기반하여, 하나 이상의 피부 영역들이 식별될 수 있다. 예컨대, 하나 이상의 피부 영역들은, 피부색 픽셀의 임계 거리 내에 있는 픽셀들을 포함하는 영역들로 식별될 수 있다. 예컨대, 임계 거리는 40일 수 있다.
[0076] 일부 구현들에서, 하나 이상의 피부 영역들을 식별한 후, 하나 이상의 피부 영역들 내의 각각의 픽셀을 알려지지 않은 것으로 설정하도록, 트라이맵이 업데이트될 수 있다. 또한, 각각의 그러한 픽셀에 제로 가중치가 할당될 수 있다. 더 추가로, 픽셀의 컬러는 배경 이미지의 배경 컬러와 비교될 수 있다. 픽셀 컬러 및 배경 컬러가 유사성 임계치를 충족시키는 경우, 가중치 맵에서 그 픽셀에는 배경 가중치(예컨대, 음의 값)가 할당된다. 예컨대, 유사성 임계치는 위에서 설명된 바와 같은 확률 임계치(예컨대, p>0.5)일 수 있다.
[0077] 픽셀이 (피부색 검출을 사용하여 식별되는 바와 같이) 피부색 픽셀인 경우, 가중치 맵에서 그 픽셀에는 전경 가중치(예컨대, 양의 값)가 할당된다. 더 추가로, 픽셀 컬러 및 배경의 컬러가 비유사성 임계치를 충족시키는 경우, 가중치 맵에서 그 픽셀에는 전경 가중치(예컨대, 양의 값)가 할당된다. 예컨대, 비유사성 임계치는 확률 임계치(예컨대, p<0.0025)일 수 있다. 피부 영역 내의 다른 픽셀들은 제로 가중치를 유지할 수 있다. 블록(222) 다음에는 블록(224)이 뒤따를 수 있다.
[0078] 블록(224)에서, 트라이맵에서 알려지지 않은 것으로 분류된 픽셀들에 대해 인코히런시 페널티 가중치(incoherency penalty weight)가 계산될 수 있다. 일부 구현들에서, 초기 세그먼테이션 마스크는 프레임들의 시퀀스 내의 바로 이전 프레임의 이전 프레임 이진 마스크와 비교되어, 이전 프레임의 픽셀들과 유사하게 카테고리화되는, 프레임의 픽셀들의 비율을 결정할 수 있다. 이러한 비율은 프레임들 사이의 유사성으로 정의될 수 있다. 예컨대, 장면에 상당한 움직임이 있는 경우에는 유사성이 낮을 수 있고, 대부분의 정적인 장면들에 대해서는 유사성이 높을 수 있다. 글로벌 코히런스 가중치가 유사성에 기반하여 계산될 수 있다. 예컨대, 일부 구현들에서, 글로벌 코히런스 가중치는 다음의 공식을 사용하여 계산될 수 있다:
Figure 112021152408748-pct00005
여기서, w는 글로벌 코히런스 가중치이고, A는 미리 정의된 상수이다.
[0079] 이러한 공식은, 유사성이 낮을 때, 글로벌 코히런스 가중치가, 예컨대 거의 제로까지, 기하급수적으로 떨어지도록 보장한다. 이 경우, 글로벌 코히런스 가중치는 가중치 맵에 영향을 미치지 않는다. 반면에, 유사성이 높은 경우, 글로벌 코히런스 가중치가 더 높을 수 있다. 이러한 방식으로, 본원에서 설명되는 글로벌 코히런스 가중치는 프레임 유사성의 함수이다.
[0080] 또한, 트라이맵에서 알려지지 않은 것으로 분류된 픽셀들에 대한 가중치는 글로벌 코히런스 가중치에 기반하여 계산될 수 있다. 일부 구현들에서, 픽셀에 대한 가중치는, 글로벌 코히런스 가중치 및 이전 프레임 이진 마스크의 마스크 경계와 픽셀 사이의 거리에 기반하여 결정될 수 있다. 이진 마스크 내의 대응하는 픽셀이 이전 프레임 이진 마스크에서 전경 픽셀로 분류되는 경우, 픽셀에 대해 계산되는 가중치는 양의 값이다. 이진 마스크 내의 대응하는 픽셀이 이전 프레임 이진 마스크에서 배경 픽셀로 분류되는 경우, 픽셀에 대해 계산되는 가중치는 음의 값이다. 일부 구현들에서, 가중치는 거리에 비례할 수 있다. 일부 구현들에서, 글로벌 코히런스 가중치는 가중치에 대한 컷오프 값으로서 사용될 수 있는데, 예컨대, 거리가 컷오프 거리 값 이상일 경우, 가중치의 값은 글로벌 코히런스 가중치와 동일하게 설정될 수 있다. 계산된 가중치는 가중치 맵에 저장될 수 있다. 일부 구현들에서, 컷오프 거리 값은, 예컨대, 다수의 비디오들에 대해 획득된 세그먼테이션 결과들에 기반하여, 실험적으로 결정될 수 있다. 일부 구현들에서, 더 높은 컷오프 거리 값은, 연속적인 프레임들 사이의 더 약한 코히런스에 대응하는, 인접하는 프레임들의 세그먼테이션이 상이할 가능성에 대응할 수 있다.
[0081] 이러한 방식으로, 트라이맵에서 알려지지 않은 것으로 분류된 픽셀들에 대한 가중치들을 계산하고 가중치 맵에 저장하는 것은, 연속적인 프레임들의 세그먼테이션 간에 일관성을 보장할 수 있는데, 예컨대, 프레임들이 유사한 경우, 연속적인 프레임들 내의 대응하는 픽셀들은 이진 마스크에서 유사한 분류들을 가질 가능성이 더 높다. 이는, 그러한 픽셀들이 연속적인 프레임들의 이진 마스크들에서 상이한 분류들을 갖는 경우 발생할 수 있는 플리커링(flickering)의 시각적 효과를 감소시킬 수 있다. 블록(224) 다음에는 블록(226)이 뒤따를 수 있다.
[0082] 블록(226)에서, 컬러 데이터, 트라이맵, 및 가중치 맵에 기반하여 미세 세그먼테이션을 수행함으로써, 프레임에 대한 이진 마스크가 획득된다. 일부 구현들에서, 미세 세그먼테이션을 수행하는 것은 프레임에 그래프컷 기법을 적용하는 것을 포함할 수 있다. 그래프컷 기법을 적용할 때, 컬러 데이터, 트라이맵, 및 가중치 맵이 입력으로서 제공될 수 있다.
[0083] 그래프컷 기법들에서, 컬러 데이터는 배경 및 전경 컬러 모델들을 전반적으로(globally) 생성하기 위해 활용된다. 예컨대, GMM(Gaussian Mixture Model)이 그러한 컬러 모델들을 구성하는 데 사용될 수 있다. GMM은, 예컨대, 사용자 입력을 통해 획득되는, 전경 및 배경 픽셀들의 초기 라벨링을 활용한다. GMM은, 초기 라벨링에서 전경 또는 배경으로 라벨링된 픽셀들과 각각의 알려지지 않은 픽셀의 컬러 값들(예컨대, RGB 값들)의 유사성의 레벨에 기반하여, 알려지지 않은 픽셀들을 가능성 있는 배경 또는 가능성 있는 전경으로 라벨링하는 새로운 픽셀 분포를 생성한다.
[0084] 그래프컷 기법들에서, 이미지의 각각의 픽셀에 대응하는 노드들을 포함하는 그래프가 생성된다. 그래프는 2개의 부가적인 노드들: 전경으로 라벨링된 각각의 픽셀에 연결되는 소스 노드, 및 배경으로 라벨링된 각각의 픽셀에 연결되는 싱크(sink) 노드를 더 포함한다. 또한, 그래프컷 기법들은 또한, 픽셀이 배경 또는 전경일 가능성을 표시하는, 각각의 픽셀에 대한 가중치들의 계산을 포함한다. 가중치들은, 픽셀들을 소스 노드/싱크 노드에 연결하는 에지들에 할당된다. 그래프컷 기법들에서, 픽셀들 사이의 가중치들은 에지 정보 또는 픽셀 유사성(컬러 유사성)에 의해 정의된다. 2개의 픽셀들의 픽셀 컬러에 큰 차이가 있는 경우, 이러한 2개의 픽셀들을 연결하는 에지에는 낮은 가중치가 할당된다. 에지들을 제거함으로써, 예컨대, 비용 함수(cost function)를 최소화함으로써, 전경 및 배경을 분리하기 위해, 반복적인 컷이 수행된다. 예컨대, 비용 함수는 컷팅되는 에지들의 가중치들의 합일 수 있다.
[0085] 일부 구현들에서, 그래프컷 기법은, 트라이맵에서 알려지지 않은 것으로 분류되는, 프레임의 픽셀들에 적용된다. 이들 구현들에서, 알려진 전경 및 알려진 배경으로 식별되는 픽셀들은 그래프컷으로부터 제외된다. 일부 구현들에서, 그래프컷 기법을 적용할 때, 글로벌 컬러 모델(global color model)들이 디스에이블(disable)된다. 글로벌 컬러 모델들을 디스에이블시키게 되면, 예컨대, 위에서 설명된 바와 같이, 전경 및 배경에 대한 글로벌 컬러 모델들을 구축할 필요성을 제거함으로써, 그리고 대신에, 트라이맵으로부터의 분류를 사용함으로써, 컴퓨테이션 자원(computation resource)들을 절약할 수 있다.
[0086] 프레임의 작은 비율(트라이맵의 알려지지 않은 부분)에 대해 그래프컷 기법을 적용하고, 트라이맵의 알려진 전경 및 알려진 배경을 제외하게 되면, 알려진 전경 및 알려진 배경의 픽셀들이 그래프에 추가되지 않기 때문에 세그먼테이션의 성능을 개선할 수 있다. 예컨대, 이진 마스크를 획득하기 위해 프로세싱되는 그래프의 크기는, 상기 설명된 바와 같은 컬러 모델 기반 그래프컷 기법들이 활용되는 경우의 그래프의 크기보다 더 작을 수 있다. 일 예에서, 알려진 전경 및 알려진 배경을 제외하게 되면, 알려진 전경 및 알려진 배경이 포함되는 경우의 계산 부하의 약 33%인, 그래프컷에 대한 계산 부하를 초래할 수 있다. 블록(226) 다음에는 블록(228)이 뒤따를 수 있다.
[0087] 블록(228)에서, 예컨대, 그래프컷 기법에 의해 생성되는 이진 마스크에 시간적 저역 통과 필터가 적용될 수 있다. 시간적 저역 통과 필터를 적용하는 것은 미세 세그먼테이션을 수행하는 것의 일부로서 수행될 수 있다. 대응하는 픽셀들의 깊이 값들은, 비디오에서 캡처된 장면이 정적일 때에도, 연속적인 프레임들 사이에서 변할 수 있다. 이는, 센서에 의해 캡처되는 불완전한 깊이 데이터로 인해 발생할 수 있다. 시간적 저역 통과 필터는, 현재 프레임과 하나 이상의 이전 프레임들 간의 유사성에 기반하여 이진 마스크를 업데이트한다. 예컨대, 복수의 비디오 프레임들에서 캡처된 장면이 정적인 경우, 연속적인 프레임들은 대응하는 픽셀들에 대해 유사한 깊이 값들을 포함할 수 있다. 장면이 정적인 동안 대응하는 픽셀들에 대한 깊이 값들의 변동이 있는 경우, 그러한 깊이 값들은 에러가 있을 수 있고, 시간적 저역 통과 필터를 사용하여 업데이트된다. 하나 이상의 이전 프레임들과 현재 프레임 사이의 유사성이 높은 경우, 시간적 저역 통과 필터를 적용하게 되면, 현재 프레임의 세그먼테이션이 하나 이상의 이전 프레임들의 세그먼테이션과 일치하게 된다. 시간적 저역 통과 필터에 의해 생성되는 일관성은, 유사성이 낮은 경우, 예컨대, 장면이 정적이지 않은 경우, 더 약하다. 블록(228) 다음에는 블록(230)이 뒤따를 수 있다.
[0088] 블록(230)에서, 미세 세그먼테이션을 수행하는 것의 일부로서, 이진 마스크에 가우시안 필터(Gaussian filter)가 적용될 수 있다. 가우시안 필터는 이진 마스크에서의 세그먼테이션 경계를 평활화(smooth)할 수 있다. 가우시안 필터를 적용하는 것은 알파 매팅(alpha matting)을 제공할 수 있는데, 예컨대, 이진 마스크가 배경으로부터 털이 많거나(hairy) 흐릿한(fuzzy) 전경 객체들을 분리하는 것을 보장할 수 있다. 블록(230) 다음에는 블록(232)이 뒤따를 수 있다.
[0089] 블록(232)에서, 이진 마스크가 결정될, 비디오의 더 많은 프레임들이 존재하는 지가 결정된다. 프로세싱할 다른 프레임이 존재하는 것으로 결정되는 경우, 블록(232) 다음에는 블록(213)이 뒤따를 수 있어서, 프레임, 예컨대 프레임들의 시퀀스 내의 다음 프레임이 선택될 수 있다. 나머지 프레임들이 존재하지 않는 경우(전체 비디오가 프로세싱된 경우), 블록(232) 다음에는 블록(234)이 뒤따를 수 있다.
[0090] 블록(234)에서, 복수의 프레임들 각각에 대해 획득된 개개의 이진 마스크는, 예컨대 원래의 비디오의 크기로 업샘플링(upsample)되고, 전경 비디오를 획득하기 위해 활용된다. 예컨대, 비디오의 각각의 프레임에 대한 전경 마스크는 개개의 업샘플링된 이진 마스크를 사용하여 결정될 수 있으며, 그리고 전경 비디오에 포함될, 비디오의 픽셀들을 식별하기 위해 활용될 수 있다. 블록(234) 다음에는 블록(236)이 뒤따를 수 있다.
[0091] 블록(236)에서, 전경 비디오가 렌더링(render)될 수 있다. 일부 구현들에서, 전경 비디오를 렌더링하는 것은, 이진 마스크를 사용하여 세그먼트화되는, 전경을 포함하는 복수의 프레임들을 생성하는 것을 포함할 수 있다. 일부 구현들에서, 렌더링은 전경 비디오를 포함하는 사용자 인터페이스를 디스플레이하는 것을 더 포함할 수 있다. 예컨대, 전경 비디오는 화상 통화 애플리케이션 또는 다른 애플리케이션에서 디스플레이될 수 있다. 일부 구현들에서, 전경 비디오는 배경 없이, 예컨대 빈 배경으로 디스플레이될 수 있다. 일부 구현들에서, 비디오의 원래의 배경과 상이한 배경이 전경 비디오와 함께 제공될 수 있다.
[0092] 배경을 제거(subtract)하고 전경 비디오를 획득함으로써, 비디오에 대한 임의의 적절한 또는 사용자 선호 배경이 제공될 수 있다. 예컨대, 화상 통화 애플리케이션에서, 사용자는 배경을 특정 장면으로 대체하기 위한 선호도를 표시할 수 있고, 그러한 배경은 전경 비디오와 함께 디스플레이될 수 있다. 예컨대, 이러한 방식으로 배경을 교체하게 되면, 화상 통화의 참여자가, 배경 부분을 대체함으로써, 그 참여자가 화상 통화에 참여한 방의 비디오 혼란(video clutter)을 제거할 수 있게 할 수 있다.
[0093] 일부 구현들에서, 방법(200)은 멀티스레딩(multithreaded) 방식으로 구현될 수 있는데, 예컨대, 방법(200) 또는 그 일부를 구현하는 복수의 스레드(thread)들은, 예컨대, 멀티코어 프로세서, 그래픽 프로세서 등 상에서 동시에 실행될 수 있다. 또한, 방법(200)의 스레드들은, 다른 스레드들, 예컨대, 비디오를 캡처하는 하나 이상의 스레드들 및/또는 세그먼테이션 이후 비디오를 디스플레이하는 하나 이상의 스레드들과 동시에 실행될 수 있다. 일부 구현들에서, 세그먼테이션은 실시간으로 수행된다. 일부 구현들은 초당 30개 프레임들의 레이트로 실시간 세그먼테이션을 수행할 수 있다.
[0094] 머리 경계 박스를 검출하는 것은 프레임의 세그먼테이션 품질을 개선할 수 있다. 많은 애플리케이션들, 예컨대, 화상 통화 애플리케이션에서, 예컨대, 화상 통화의 참여자의 사람 머리는 다른 참여자들의 관심의 초점이다. 따라서, 고품질의 전경 비디오를 제공하기 위해서는, 머리의 경계들을 정확하게 검출하는 것이 중요하다. 예컨대, 고품질의 전경 비디오는, 배경 픽셀들을 동시에 제외하면서, 참여자의 머리를 포함하는 모든(또는 거의 모든) 픽셀들을 포함할 수 있다. 고품질의 전경 비디오에서는, 모발 및 목(neck)과 같은 미세 영역들이 정확하게 세그먼트화된다. 머리 경계 박스를 검출하게 되면, 전경 비디오가 고품질의 비디오가 되는 것을 가능하게 할 수 있다.
[0095] 일부 구현들에서, 도 2에 예시된 블록들 중 하나 이상이 결합될 수 있다. 예컨대, 블록들(218 및 220)은 결합되거나, 또는 병렬로 수행될 수 있다. 다른 예에서, 블록(222)은 블록(224)과 결합될 수 있다. 일부 구현들에서, 블록들 중 하나 이상은 수행되지 않을 수 있다. 예컨대, 일부 구현들에서, 블록(224)은 수행되지 않는다. 이들 구현들에서, 인코히런스 페널티 가중치는 계산되지 않는다. 다른 예에서, 일부 구현들에서, 블록(228)은 수행되지 않을 수 있다. 일부 구현들에서, 가우시안 필터를 적용한 이후 획득되는 이진 마스크가 전경 비디오를 획득하기 위해 블록(234)에서 직접 사용되도록, 블록(232)은 수행되지 않을 수 있다.
[0096] 일부 구현들에서, 방법(200)의 블록들은 도 2에 예시된 것과 상이한 순서로 또는 병렬로 수행될 수 있다. 예컨대, 일부 구현들에서, 수신된 비디오는, 각각 비디오 프레임들의 서브세트를 포함하는 복수의 비디오 세그먼트들로 분할될 수 있다. 그런 다음, 방법(200)을 사용하여 각각의 비디오 세그먼트를 프로세싱하여, 전경 세그먼트를 획득할 수 있다. 이들 구현들에서, 상이한 비디오 세그먼트들이 병렬로 프로세싱될 수 있고, 획득된 전경 세그먼트들이 결합되어 전경 비디오를 형성할 수 있다.
[0097] 일부 구현들에서, 전경 비디오는, 예컨대, 비디오의 캡처와 전경 비디오의 렌더링 또는 디스플레이 사이에 인지 가능한 지연이 거의 또는 전혀 없도록, 실시간으로 렌더링될 수 있다. 일부 구현들에서, 업샘플링 및 전경 비디오 렌더링(블록들(234 및 236))은, 비디오의 후속 부분에 대한 블록(213-232)과 병렬로 비디오의 한 부분에 대해 수행될 수 있다.
[0098] 전경 비디오를 렌더링하는 것과 병렬로 방법(200) 또는 그 일부를 수행하는 것은, 사용자가 인지 가능한 지연 없이 전경 비디오를 실시간으로 디스플레이하는 것을 가능하게 할 수 있다. 또한, (예컨대, 멀티스레딩 접근법을 사용하는) 병렬 실행은, 이용 가능한 하드웨어 자원들, 예컨대, 멀티코어 프로세서, 그래픽 프로세서 등의 복수의 코어들을 유리하게 사용할 수 있다.
[0099] 방법(200)은 클라이언트 디바이스(예컨대, 클라이언트 디바이스들(120-126) 중 임의의 클라이언트 디바이스) 및/또는 서버 디바이스, 예컨대 서버 디바이스(104)에 의해 수행될 수 있다. 예컨대, 일부 구현들에서, 클라이언트 디바이스는 비디오를 캡처하고, 전경 비디오를 국부적으로 렌더링하기 위해 방법(200)을 수행할 수 있다. 예컨대, 방법(200)은, 클라이언트 디바이스가 적절한 프로세싱 하드웨어, 예컨대 전용 GPU(graphics processing unit) 또는 다른 이미지 프로세싱 유닛, 예컨대, ASIC, FPGA 등을 가질 때, 국부적으로 수행될 수 있다. 다른 예에서, 일부 구현들에서, 클라이언트 디바이스는 비디오를 캡처하고, 전경 비디오를 렌더링하기 위해 방법(200)을 수행하는 서버 디바이스에 비디오를 전송할 수 있다. 예컨대, 방법(200)은, 클라이언트 디바이스들이 방법(200)을 수행하기 위한 프로세싱 능력이 부족한 경우 또는 다른 상황들에서, 예컨대, 클라이언트 디바이스 상에서 이용 가능한 배터리 전력이 임계치 미만인 경우, 서버 디바이스에 의해 수행될 수 있다. 일부 구현들에서, 방법(200)은, 비디오를 캡처한 디바이스 이외의 클라이언트 디바이스들에 의해 수행될 수 있다. 예컨대, 화상 통화에서의 전송기 디바이스가 비디오 프레임들을 캡처하여 수신기 디바이스에 송신할 수 있다. 그런 다음, 수신기 디바이스는 전경 비디오를 렌더링하기 위해 방법(200)을 수행할 수 있다. 그러한 구현들은, 송신기 디바이스가 방법(200)을 실시간으로 수행하는 능력이 부족한 경우에 유리할 수 있다.
[0100] 도 3은 일부 구현들에 따른, 머리 경계 박스를 검출하기 위한 예시적인 방법(300)을 예시하는 흐름도이다. 예컨대, 방법(300)은, 블록(216)에서 비디오 프레임에 대한 머리 경계 박스를 검출하기 위해 활용될 수 있다.
[0101] 방법(300)은 블록(302)에서 시작될 수 있다. 블록(302)에서, 컬러 이미지(예컨대, 비디오의 프레임) 및 대응하는 세그먼테이션 마스크가 수신될 수 있다. 예컨대, 세그먼테이션 마스크는, 예컨대 방법(200)의 블록(214)에서 결정된 바와 같은, 비디오 프레임의 깊이 데이터로부터 결정되는 초기 세그먼테이션 마스크일 수 있다. 초기 세그먼테이션 마스크는 이진(binary)일 수 있고, 예컨대, 초기 세그먼테이션 마스크는 컬러 이미지 내의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 분류할 수 있다. 블록(302) 다음에는 블록(304)이 뒤따를 수 있다.
[0102] 블록(304)에서, 수신된 이미지(프레임)는 그레이스케일로 변환된다. 블록(304) 다음에는 블록(306)이 뒤따를 수 있다.
[0103] 블록(306)에서, 그레이스케일 이미지에 대해 히스토그램 등화가 수행된다. 블록(306) 다음에는 블록(308)이 뒤따를 수 있다.
[0104] 블록(308)에서, 이미지에서 하나 이상의 얼굴들을 검출하기 위해 하드 캐스케이드 얼굴 검출이 수행된다. 각각의 검출된 얼굴에 대해, 얼굴에 대응하는 얼굴 픽셀들을 포함하는 얼굴 영역이 식별된다. 블록(308) 다음에는 블록(310)이 뒤따를 수 있다.
[0105] 블록(310)에서, 검출된 얼굴들은 초기 세그먼테이션 마스크를 사용하여 검증된다. 일부 구현들에서, 각각의 검출된 얼굴에 대해, 얼굴 영역의 픽셀들의 적어도 임계 비율이 초기 세그먼테이션 마스크에서 전경 픽셀들로 카테고리화되는지 여부가 결정된다. 블록(310) 다음에는 블록(312)이 뒤따를 수 있다.
[0106] 블록(312)에서, 검출된 얼굴이 충분한 피부 영역을 갖는지 여부가 또한 결정된다. 검출된 얼굴이 충분한 피부 영역을 갖는지 여부의 결정은, 얼굴 영역의 픽셀들의 적어도 임계 백분율이 피부색인지 여부를 결정하는 것을 포함할 수 있다. 예컨대, 픽셀이 피부색인지 여부의 결정은 픽셀의 컬러 값들에 기반하여 수행될 수 있다. 일부 구현들에서, 프레임의 컬러 데이터 내의 픽셀들의 컬러 값들은 RGB 값들일 수 있다. 일부 구현들에서, 각각의 픽셀이 피부색일 수 있는지 여부를 결정하기 위해, 다음의 공식에 의해 주어지는 피부색 기준을 사용하여, 각각의 픽셀에 대해 피부색 검출이 수행될 수 있다:
Figure 112021152408748-pct00006
여기서, R, G, 및 B는 픽셀에 대한 적색, 녹색 및 청색 컬러 채널 값들을 지칭한다.
[0107] 일부 구현들에서, 블록들(310 및 312)은 이미지 내의 각각의 검출된 얼굴에 대해 수행될 수 있다. 블록(312) 다음에는 블록(314)이 뒤따를 수 있다.
[0108] 블록(314)에서, 이미지가 적어도 하나의 유효한 얼굴을 포함하는지 여부가 결정된다. 예컨대, 블록(314)은 각각의 검출된 얼굴에 대해 수행될 수 있다. 일부 구현들에서, 얼굴에 대한 얼굴 영역이 전경 픽셀들로 카테고리화된 픽셀들의 적어도 임계 비율을 포함하고 그리고 얼굴의 얼굴 영역의 픽셀들의 적어도 임계 백분율이 피부색인 것으로 검증되는 경우, 그 얼굴은 유효한 것으로 결정된다. 일부 구현들에서, 전경 픽셀들로 카테고리화된 픽셀들의 임계 비율은 0.6(60%)일 수 있으며, 그리고 피부색인, 얼굴의 얼굴 영역의 픽셀들의 임계 백분율은 0.2(20%)일 수 있다. 블록(314)에서 적어도 유효한 얼굴이 검출되는 경우, 블록(314) 다음에는 블록(316)이 뒤따를 수 있다. 얼굴이 검출되지 않는 경우, 블록(314) 다음에는 블록(320)이 뒤따를 수 있다.
[0109] 블록(316)에서, 각각의 유효한 얼굴에 대한 얼굴 영역은 머리 영역을 커버하도록 확장된다. 일부 구현들에서, 유효한 얼굴에 대한 얼굴 경계 박스(face bounding box)를 특정 백분율만큼 확장시키는 확장이 수행될 수 있다. 블록(316) 다음에는 블록(330)이 뒤따를 수 있다.
[0110] 블록(330)에서, 머리 경계 박스가 획득될 수 있다. 예컨대, 머리 경계 박스는 얼굴 영역, 그리고 부가적으로, 모발 영역, 목 영역, 또는 칼라(collar) 영역을 포함할 수 있다. 머리 경계 박스는, 예컨대, 이미지가 복수의 유효한 얼굴들을 포함하는 경우, 이미지의 다수의 별개의 영역들을 식별할 수 있다.
[0111] 블록(320)에서, 이미지 내의 머리를 검출하기 위해, 초기 세그먼테이션 마스크가 분석된다. 일부 구현들에서, 초기 세그먼테이션 마스크에 기초한 수평 스캔 라인들이 먼저 계산된다. 스캔 라인들의 연결들이 분석되고, 연결에 기반하여, 머리 영역의 위치를 검출하기 위해 위치 및/또는 크기가 결정된다. 블록(320) 다음에는 블록(322)이 뒤따를 수 있다.
[0112] 블록(322)에서, 검출된 머리가 유효한지 여부가 결정된다. 예컨대, 이러한 결정은, 예컨대 블록(312)에서의 얼굴 피부색의 검증과 유사한, 머리 피부색의 검증을 수행하는 것에 기반할 수 있다. 블록(322) 다음에는 블록(324)이 뒤따를 수 있다.
[0113] 블록(324)에서, 이미지에서 유효한 머리가 검출되었는지 여부가 결정된다. 유효한 머리가 검출되는 경우, 블록(324) 다음에는 블록(330)이 뒤따를 수 있다. 머리가 검출되지 않는 경우, 블록(324) 다음에는 블록(326)이 뒤따를 수 있다.
[0114] 블록(326)에서, 이미지의 어떠한 픽셀들도 머리 경계 박스에 존재하지 않도록, 머리 경계 박스는 빈(empty) 것으로 또는 널(null)로 설정될 수 있다. 빈 머리 경계 박스는 이미지에서 머리가 검출되지 않았음을 표시할 수 있다. 머리가 검출되지 않는 경우, 비-머리 부분들에 대한 트라이맵이 프레임에 대한 트라이맵이다. 일부 구현들에서, 이미지의 모든 영역들이 트라이맵에서 유사하게 처리되도록, 머리 검출은 턴 오프될 수 있다.
[0115] 방법(300)은 여러 기술적 이점들을 제공할 수 있다. 예컨대, 하르 캐스케이드 얼굴 검출 기법의 사용은, 예컨대, 다수의 사람들이 프레임에 존재하는 경우, 다수의 머리들을 검출할 수 있다. 또한, 블록들(310 및 312)을 참조하여 설명된 바와 같은 얼굴의 검증은, 긍정 오류(false positive)들(블록(308)의 하르 캐스케이드 얼굴 검출 동안 비-얼굴 영역들이 얼굴 영역들로 잘못 식별되는 것)이 제거되도록 보장할 수 있다. 또한, 블록(316)을 참조하여 설명된 바와 같은 얼굴 영역 확장은, 모발, 목, 칼라 등과 같은 영역들이 트라이맵에서 알려진 전경으로 식별되도록 보장할 수 있으며, 그에 의해, 고품질의 세그먼테이션을 가능하게 할 수 있다.
[0116] 더 추가로, 하르 얼굴 검출에 의해 얼굴이 검출되지 않는 경우(또는 검출된 얼굴이 검증되지 않는 경우), 블록들(320 및 322)을 참조하여 설명된 바와 같이, 초기 세그먼테이션 마스크의 마스크 분석 및 검증에 의해 머리 경계 박스가 구성될 수 있다. 따라서, 이 기법은, 예컨대, 하르 캐스케이드 얼굴 검출이 얼굴을 검출하지 못하는 상황들과 같은 부정 오류(false negative)들을 보상할 수 있다. 일부 구현들에서, 마스크 분석 기반 머리 검출은 높은 검출 비율(예컨대, 하르 캐스케이드 얼굴 검출보다 더 높음)을 제공할 수 있고, 더 낮은 계산 비용을 갖는다.
[0117] 도 4는 일부 구현들에 따른, 머리 영역에 대한 트라이맵을 생성하기 위한 예시적인 방법(400)을 예시하는 흐름도이다. 방법(400)은 블록(402)에서 시작될 수 있다.
[0118] 블록(402)에서, 컬러 이미지, 깊이 마스크(예컨대, 초기 세그먼테이션 마스크), 및 머리 경계 박스가 수신될 수 있다. 예컨대, 컬러 이미지는 비디오의 프레임에 대응할 수 있고, 프레임의 픽셀들에 대한 컬러 데이터를 포함할 수 있다. 블록(402) 다음에는 블록(404)이 뒤따를 수 있다.
[0119] 블록(404)에서, (예컨대, 머리 경계 박스에 의해 식별되는 바와 같이) 배경이 머리 영역 근처에 있는지 여부가 검출된다. 예컨대, 머리 영역 근처, 예컨대, 모발 영역 근처에 있는 이미지의 픽셀들이 밝고 균일한지 여부가 검출될 수 있다. 그러한 배경은 종종, 카메라의 깊이 센서로 하여금 모발 영역의 깊이를 검출하는 데 실패하거나 또는 모발 영역에 대한 부정확한 깊이를 검출하게 할 수 있다. 머리 영역 근처에서 균일한 밝은 배경이 검출되는 경우, 모발 영역의 확장이 수행된다. 모발 영역의 확장은 팽창 크기를 증가시켜 외부 마스크를 생성한다. 블록(404) 다음에는 블록(406)이 뒤따를 수 있다.
[0120] 블록(406)에서, 내부 마스크를 획득하기 위해, 목 및/또는 어깨 영역에 대한 내부 마스크 축소(inner mask reduction)가 수행된다. 내부 마스크에서는, 목(또는 어깨) 주위의 영역들이 소거된다. 그러한 소거는 목 영역 근처에서의 잘못된 또는 신뢰할 수 없는 깊이 데이터를 보상할 수 있다. 블록(406) 다음에는 블록(408)이 뒤따를 수 있다.
[0121] 블록(408)에서, 내부 마스크 확장이 수행된다. 예컨대, 피부색인, 내부 마스크 근처의 픽섹들을 분석하여, 그 픽셀들이 피부색인지 여부를 결정할 수 있다. 픽셀들이 피부색인 경우, 그러한 픽셀들은 내부 마스크에 부가되며, 이는 예컨대 블록(406)을 수행할 때 발생할 수 있는 과도한 침식(erosion)을 방지할 수 있다. 블록(408) 다음에는 블록(410)이 뒤따를 수 있다.
[0122] 블록(410)에서, 내부 마스크의 칼라 구역이 확장될 수 있다. 이는 또한, 예컨대, 예컨대 칼라 영역에 대해 블록(406)을 수행할 때 발생할 수 있는 과도한 침식을 방지할 수 있다. 블록(410) 다음에는 블록(412)이 뒤따를 수 있다.
[0123] 블록(412)에서, 외부 마스크를 획득하기 위해, 마스크 형태학적 팽창(mask morphologic dilation)이 수행된다. 블록(412) 다음에는 블록(414)이 뒤따를 수 있다. 방법(400)은, 예컨대, 카메라에 의해 캡처되는 깊이 데이터가 종종 다른 부분들에서보다 신뢰성이 떨어지는 목 및 칼라 영역에서의, 머리 영역의 트라이맵을 개선할 수 있다. 전경 영역들을 식별하기 위해 피부색을 사용하게 되면, 트라이맵을 개선할 수 있다.
[0124] 도 5는 컬러 부분(502) 및 대응하는 마스크(504)를 갖는 예시적인 비디오 프레임을 예시한다. 도 5에서 볼 수 있는 바와 같이, 비디오 프레임(502)의 전경은 팔을 들고 있는 사람을 포함한다. 비디오 프레임의 배경은, 화이트보드를 갖는 사무실 환경, 및 전경에 있는 사람을 등지고 워크스테이션에 있는 다른 사람을 포함한다.
[0125] 마스크(504)는 초기 세그먼테이션 마스크일 수 있다. 예컨대, 마스크(504)는, 프레임(502)의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 세그먼테이션 마스크일 수 있다. 도 5에서, 마스크의 전경 픽셀들은 백색인 한편, 배경 픽셀들은 검은색이다. 알 수 있는 바와 같이, 세그먼테이션 마스크는 프레임의 픽셀들을 정확하게 카테고리화하지 않는다.
[0126] 예컨대, 이미지의 좌측 상단 사분면에 몇개의 백색 픽셀들이 보인다. 이러한 픽셀들은 이미지의 배경 부분에 대응하지만, 마스크에서는 전경으로 카테고리화된다. 다른 예에서, 전경에 있는 사람의 왼쪽 팔 근처의 유리창 및 화이트보드의 부분들이 전경으로 잘못 카테고리화된다. 더 추가로, 컬러 이미지에서는 사람의 개별적인 손가락들을 볼 수 있지만, 마스크는 손가락 영역들을 정확하게 묘사하지 않는다. 따라서, 도 5의 마스크를 사용하여 획득될 수 있는 전경 프레임은 이러한 세그먼테이션 에러들로 인해 품질이 낮다.
[0127] 도 6은, 상기 설명된 바와 같이, 트라이맵을 사용하지 않고 전경 및 배경이 분리되는 2개의 예시적인 이미지들을 예시한다. 제1 이미지(602)에서, 이미지의 나머지 부분이, 사람을 포함하는 전경으로부터 배경(연한 회색)을 정확하게 분리하기는 하지만, 사람의 목 근처의 영역(604)이 전경으로 부정확하게 식별된 것을 볼 수 있다. 제2 이미지(612)에서, 이미지의 나머지 부분이, 사람을 포함하는 전경으로부터 배경(연한 회색)을 정확하게 분리하기는 하지만, 사람의 올린 손 근처의 영역(614)이 전경으로 부정확하게 식별된 것을 볼 수 있다. 따라서, 각각의 이미지(602, 612)에서, 전경의 일부, 예컨대 사람의 목 영역(604) 그리고 손가락 및 손 영역(614)이 정확하게 세그먼트화되지 않는데, 이는 배경의 부분들이 전경으로 부정확하게 식별되기 때문이다.
[0128] 도 7은 트라이맵의 부분들이 식별되는 예시적인 이미지(702)를 예시한다. 도 7에서, 원래의 이미지의 픽셀 컬러들과 상이한, 수정된 컬러들을 갖는 이미지의 픽셀들은, 트라이맵에서 알려지지 않은 것으로 분류된다. 상이한 가중치들을 갖는 트라이맵의 부분들을 예시하기 위해, 3개의 별개의 컬러들이 활용된다. 이미지(702)의 적색 부분은 가중치 맵에서 전경 가중치를 갖는다. 이미지(702)의 청색 부분은 가중치 맵에서 배경 가중치를 갖는다. 이미지(702)의 녹색 부분은 가중치 맵에서 중립(예컨대, 제로) 가중치를 가지며, 알려지지 않은 것으로 분류된다.
[0129] 도 7에서 볼 수 있는 바와 같이, 적색 부분은 트라이맵의 다른 부분들보다 사람의 몸에 더 가까우며, 예컨대, 적색 픽셀들은 녹색 부분 및 청색 부분보다, 오른쪽 측면 영역들 및 오른쪽 팔의 내측 절반 근처에서 볼 수 있다. 또한, 예컨대, 이미지에서 사람의 왼쪽 팔의 외측 부분에서 볼 수 있는 바와 같이, 녹색 부분은 사람의 몸에 더 가깝다. 트라이맵에서 배경으로 분류된 청색 부분들은 사람의 몸으로부터 더 멀리있는 것으로 보인다.
[0130] 트라이맵 및 가중치 맵은, 그래프컷 알고리즘에 대한 입력으로서 제공될 때, 전경 영역들(팔의 외측 부분 또는 사람의 몸의 다른 부분들)을 배경으로 분류한 것에 페널티를 주고(penalize) 그리고 배경 가중치들에 의해 배경을 정확하게 제거할 수 있게 하는 가중치들을 포함한다. 이에 따라, 예컨대, 머리 경계 박스 및 피부 영역 검출(예컨대, 손 영역)을 사용하여 머리 부분 트라이맵을 생성함으로써, 머리-특정 최적화를 포함하는 특별히 생성된 트라이맵의 사용은, 이미지의 개선된 세그먼테이션을 제공하기 위한 그래프컷의 출력을 가능하게 한다. 예컨대, 알려지지 않은 것으로 분류된 픽셀들에 대해서만 그래프컷을 실행하는 것을 가능하게 하는 그래프컷의 맞춤형(custom) 구현이 활용된다. 그래프컷은 이미지의 작은 부분, 예컨대, 트라이맵에서 알려지지 않은 것으로 분류된 픽셀들(도 7의 수정된 컬러 부분들)에 대해서만 적용되고 그리고 다른 픽셀들은 그래프에 추가되지 않기 때문에, 그래프컷을 수행하기 위한 계산 비용이 감소된다. 일부 구현들에서, 트라이맵을 사용하는 그래프컷을 위한 프로세싱 시간은 전체 이미지에 대한 프로세싱 시간의 약 1/3 미만일 수 있다.
[0131] 도 8은 일부 구현들에 따른, 입력 비디오의 4개의 프레임들(802, 812, 822, 832), 및 입력 비디오를 세그먼트화함으로써 생성된 전경을 포함하는 출력 비디오의 대응하는 출력 프레임들(804, 814, 824, 834)을 예시한다. 알 수 있는 바와 같이, 출력 프레임들 각각에서, 전경은, 산 장면으로 대체된 회의실의 배경으로부터 분리된다. 구체적으로, 세그먼테이션은 움직임의 존재시에 정확하다. 예컨대, 전경에 있는 사람은 프레임(802)과 프레임(812) 사이에서 이동하며; 프레임(822)에서는 손가락들이 분리된 손을 들어 올리고; 프레임(832)에서는 손을 돌린다. 각각의 경우, 대응하는 출력 프레임은 전경을 정확하게 세그먼트화하는데, 왜냐하면 대응하는 출력 프레임들에서는 원래의 배경의 어떠한 부분도 보이지 않거나 (또는 최소의 부분만이 보이기) 때문이다.
[0132] 도 9는 본원에서 설명되는 하나 이상의 특징들을 구현하기 위해 사용될 수 있는 예시적인 디바이스(900)의 블록도이다. 일 예에서, 디바이스(900)는 클라이언트 디바이스, 예컨대, 도 1에 도시된 클라이언트 디바이스들 중 임의의 클라이언트 디바이스를 구현하는 데 사용될 수 있다. 대안적으로, 디바이스(900)는 서버 디바이스, 예컨대 서버 시스템(102) 또는 서버 디바이스(104)를 구현할 수 있다. 일부 구현들에서, 디바이스(900)는 클라이언트 디바이스, 서버 디바이스, 또는 클라이언트 디바이스와 서버 디바이스 둘 모두를 구현하는 데 사용될 수 있다. 디바이스(900)는 임의의 적절한 컴퓨터 시스템, 서버, 또는 상기 설명된 바와 같은 다른 전자 또는 하드웨어 디바이스일 수 있다.
[0133] 본원에서 설명되는 하나 이상의 방법들은, 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 프로그램, 웹 브라우저 상에서 실행되는 프로그램, 모바일 컴퓨팅 디바이스, 예컨대, 셀 폰, 스마트 폰, 태블릿 컴퓨터, 웨어러블 디바이스(손목시계, 암밴드, 보석류, 모자류, 가상 현실 고글 또는 안경, 증강 현실 고글 또는 안경, 머리 장착 디스플레이 등), 랩톱 컴퓨터 등 상에서 실행되는 모바일 애플리케이션("앱")에서 실행될 수 있다. 일 예에서, 클라이언트/서버 아키텍처가 사용될 수 있는데, 예컨대, (클라이언트 디바이스와 같은) 모바일 컴퓨팅 디바이스가 서버 디바이스에 사용자 입력 데이터를 전송하고, (예컨대, 디스플레이를 위해) 출력을 위한 최종 출력 데이터를 서버로부터 수신한다. 다른 예에서, 모든 컴퓨테이션(computation)들은 모바일 컴퓨팅 디바이스 상에서 모바일 앱(및/또는 다른 앱들) 내에서 수행될 수 있다. 다른 예에서, 컴퓨테이션들은 모바일 컴퓨팅 디바이스와 하나 이상의 서버 디바이스들 사이에서 분리될 수 있다.
[0134] 일부 구현들에서, 디바이스(900)는 프로세서(902), 메모리(904), 입력/출력(I/O) 인터페이스(906), 및 카메라(914)를 포함한다. 프로세서(902)는 프로그램 코드를 실행하고 디바이스(900)의 기본적 동작들을 제어하기 위한 하나 이상의 프로세서들 및/또는 프로세싱 회로들일 수 있다. "프로세서"는, 데이터, 신호들 또는 다른 정보를 프로세싱하는 임의의 적절한 하드웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는, (예컨대, 단일-코어, 듀얼-코어, 또는 멀티-코어 구성의) 하나 이상의 코어들을 갖는 범용 CPU(central processing unit), (예컨대, 멀티프로세서 구성의) 다수의 프로세싱 유닛들, GPU(graphics processing unit), FPGA(field-programmable gate array), ASIC(application-specific integrated circuit), CPLD(complex programmable logic device), 기능성을 달성하기 위한 전용 회로, 신경망 모델 기반 프로세싱을 구현하기 위한 특수 목적 프로세서, 신경 회로들, 행렬 컴퓨테이션들(예컨대, 행렬 곱셈)에 최적화된 프로세서들 또는 다른 시스템들을 갖는 시스템을 포함할 수 있다.
[0135] 일부 구현들에서, 프로세서(902)는 CPU 및 GPU(또는 다른 병렬 프로세서)를 포함할 수 있다. 구현들에서, GPU 또는 병렬 프로세서는, 컴퓨테이션을 병렬로 수행할 수 있는 복수의 프로세싱 코어들, 예컨대 100개의 코어들, 1000개의 코어들 등을 포함할 수 있다. 또한, GPU 또는 병렬 프로세서는 메인 메모리(904)와 별개인 GPU 메모리를 포함할 수 있다. GPU 메모리는 각각의 GPU 코어에 의해 액세스가능할 수 있다. 메인 메모리(904)와 GPU 메모리 사이에서 데이터가 전송될 수 있도록 인터페이스가 제공될 수 있다.
[0136] 일부 구현들에서, GPU는 방법들(200, 300, 또는 400) 또는 이들의 부분들을 구현하기 위해 활용될 수 있다. 특히, GPU는, 예컨대, 배경을 제거한 후 전경 비디오를 렌더링하기 위해, 배경 및 전경의 세그먼테이션에 기반하여 비디오 프레임들을 렌더링하기 위해 활용될 수 있다. GPU는 또한, 배경을 상이한 배경으로 대체할 수 있다. 일부 구현들에서, 컬러 데이터 및 깊이 데이터는 (GPU 버퍼들로 또한 지칭되는) GPU 메모리에 저장될 수 있다. 이들 구현들에서, 컬러 및 깊이 데이터는 GPU에 의해 프로세싱될 수 있는데, 이는 CPU를 사용하여 데이터를 프로세싱하는 것보다 더 빠를 수 있다.
[0137] 일부 구현들에서, 프로세서(902)는 신경망 프로세싱을 구현하는 하나 이상의 코-프로세서(co-processor)들을 포함할 수 있다. 일부 구현들에서, 프로세서(902)는 확률적 출력을 생성하기 위해 데이터를 프로세싱하는 프로세서일 수 있으며, 예컨대, 프로세서(902)에 의해 생성되는 출력은 부정확할 수 있거나 또는 예상되는 출력으로부터의 범위 내에서 정확할 수 있다. 프로세싱은 특정한 지리적 위치로 제한되거나 또는 시간적 제한들을 가질 필요가 없다. 예컨대, 프로세서는 자신의 기능들을 "실시간", "오프라인", "배치 모드" 등으로 수행할 수 있다. 프로세싱의 부분들은 상이한 시간들에 그리고 상이한 위치들에서, 상이한(또는 동일한) 프로세싱 시스템들에 의해 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
[0138] 메모리(904)는 통상적으로 프로세서(902)에 의한 액세스를 위해 디바이스(900)에 제공되고, 프로세서에 의한 실행을 위한 명령들을 저장하기에 적합하고 프로세서(902)와 별개로 위치되고 그리고/또는 그와 통합되는 임의의 적절한 프로세서 판독가능 저장 매체, 예컨대, RAM(random access memory), ROM(read-only memory), EEPROM(Electrical Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(904)는, 운영 체제(908), 화상 통화 애플리케이션(910), 및 애플리케이션 데이터(912)를 포함하여, 프로세서(902)에 의해 서버 디바이스(900) 상에서 동작하는 소프트웨어를 저장할 수 있다. 하나 이상의 다른 애플리케이션들이 또한 메모리(904)에 저장될 수 있다. 예컨대, 다른 애플리케이션들은, 이를테면 데이터 디스플레이 엔진, 웹 호스팅 엔진, 이미지 디스플레이 엔진, 통지 엔진, 소셜 네트워킹 엔진, 이미지/비디오 편집 애플리케이션, 미디어 공유 애플리케이션 등과 같은 애플리케이션들을 포함할 수 있다. 일부 구현들에서, 화상 통화 애플리케이션(910) 및/또는 다른 애플리케이션들 각각은, 프로세서(902)가 본원에서 설명되는 기능들, 예컨대, 도 2, 도 3 또는 도 4의 방법들 중 일부 또는 전부를 수행할 수 있게 하는 명령들을 포함할 수 있다. 본원에서 개시되는 하나 이상의 방법들은 몇몇 환경들 및 플랫폼들에서, 예컨대, 임의의 타입의 컴퓨팅 디바이스 상에서 실행될 수 있는 독립형 컴퓨터 프로그램, 웹 페이지들을 갖는 웹 애플리케이션, 모바일 컴퓨팅 디바이스 상에서 실행되는 모바일 애플리케이션("앱") 등으로 동작할 수 있다.
[0139] 애플리케이션 데이터(912)는 비디오, 예컨대 비디오 프레임들의 시퀀스를 포함할 수 있다. 특히, 애플리케이션 데이터(912)는 비디오의 복수의 비디오 프레임들의 각각의 프레임에 대한 컬러 데이터 및 깊이 데이터를 포함할 수 있다.
[0140] 메모리(904) 내의 소프트웨어 중 임의의 것이 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독가능 매체 상에 저장될 수 있다. 부가하여, 메모리(904)(및/또는 다른 연결된 저장 디바이스(들))는 하나 이상의 메시지들, 하나 이상의 분류법(taxonomy)들, 전자 백과사전, 사전들, 동의어 사전들, 지식 베이스(knowledge base)들, 메시지 데이터, 문법들, 사용자 선호도들, 및/또는 본원에서 설명되는 특징들에서 사용되는 다른 명령들 및 데이터를 저장할 수 있다. 메모리(904) 및 임의의 다른 타입의 저장부(자기 디스크, 광학 디스크, 자기 테이프 또는 다른 유형의 매체들)가 "저장부" 또는 "저장 디바이스들"로 고려될 수 있다.
[0141] I/O 인터페이스(906)는 다른 시스템들 및 디바이스들과 디바이스(900)의 인터페이싱을 가능하게 하는 기능들을 제공할 수 있다. 인터페이싱된 디바이스들은 디바이스(900)의 일부로서 포함될 수 있거나, 또는 디바이스(900)와 분리되어 이와 통신할 수 있다. 예컨대, 네트워크 통신 디바이스들, 저장 디바이스들(예컨대, 메모리 및/또는 데이터베이스(106)) 및 입력/출력 디바이스들은 I/O 인터페이스(906)를 통해 통신할 수 있다. 일부 구현들에서, I/O 인터페이스는 입력 디바이스들(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너, 센서들 등) 및/또는 출력 디바이스들(디스플레이 디바이스들, 스피커 디바이스들, 프린터들, 모터들 등)과 같은 인터페이스 디바이스들에 연결될 수 있다.
[0142] I/O 인터페이스(906)에 연결될 수 있는 인터페이싱된 디바이스들의 일부 예들은, 콘텐츠, 예컨대 이미지들, 비디오, 및/또는 본원에서 설명된 바와 같은 출력 애플리케이션의 사용자 인터페이스를 디스플레이하는 데 사용될 수 있는 하나 이상의 디스플레이 디바이스들(930)을 포함할 수 있다. 디스플레이 디바이스(930)는 로컬 연결들(예컨대, 디스플레이 버스)을 통해 및/또는 네트워킹된 연결들을 통해 디바이스(900)에 연결될 수 있고, 임의의 적절한 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(930)는 임의의 적합한 디스플레이 디바이스, 이를테면 LCD, LED(OLED 포함), 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치 스크린, 3-D 디스플레이 스크린, 또는 다른 시각적 디스플레이 디바이스를 포함할 수 있다. 예컨대, 디스플레이 디바이스(930)는 모바일 디바이스 상에 제공되는 평면 디스플레이 스크린, 고글들 또는 헤드셋 디바이스에 제공되는 다수의 디스플레이 스크린들, 또는 컴퓨터 디바이스를 위한 모니터 스크린일 수 있다.
[0143] I/O 인터페이스(906)는 다른 입력 및 출력 디바이스들과 인터페이싱할 수 있다. 일부 예들은, 이미지들 및/또는 비디오들을 캡처할 수 있는 카메라(932)를 포함한다. 특히, 카메라(932)는 비디오의 각각의 비디오 프레임에 대한 컬러 데이터 및 깊이 데이터를 캡처할 수 있다. 일부 구현들은, (예컨대, 캡처된 이미지들, 음성 커맨드들 등의 일부로서) 사운드를 캡처하기 위한 마이크로폰, 사운드를 출력하기 위한 오디오 스피커 디바이스들, 또는 다른 입력 및 출력 디바이스들을 제공할 수 있다.
[0144] 예시의 용이함을 위해, 도 9는 프로세서(902), 메모리(904), I/O 인터페이스(906), 소프트웨어 블록들(908 및 910), 및 애플리케이션 데이터(912) 각각에 대해 하나의 블록을 도시한다. 이러한 블록들은 하나 이상의 프로세서들 또는 프로세싱 회로들, 운영 체제들, 메모리들, I/O 인터페이스들, 애플리케이션들 및/또는 소프트웨어 모듈들을 표현할 수 있다. 다른 구현들에서, 디바이스(900)는 도시된 컴포넌트들 전부를 갖지는 않을 수 있고 그리고/또는 본원에 도시된 엘리먼트들 대신에 또는 그에 추가로 다른 타입들의 엘리먼트들을 포함하는 다른 엘리먼트들을 가질 수 있다. 본원에서의 일부 구현들에서 설명된 바와 같이, 일부 컴포넌트들이 블록들 및 동작들을 수행하는 것으로 설명되기는 하지만, 환경(100), 디바이스(900), 유사한 시스템의 임의의 적절한 컴포넌트 또는 컴포넌트들의 조합, 또는 그러한 시스템과 연관된 임의의 적절한 프로세서 또는 프로세서들이 설명된 블록들 및 동작들을 수행할 수 있다.
[0145] 본원에서 설명된 방법들은 컴퓨터 상에서 실행될 수 있는 컴퓨터 프로그램 명령들 또는 코드에 의해 구현될 수 있다. 예컨대, 코드는 하나 이상의 디지털 프로세서들(예컨대, 마이크로프로세서들 또는 다른 프로세싱 회로)에 의해 구현될 수 있고, 비-일시적인 컴퓨터 판독가능 매체(예컨대, 저장 매체), 예컨대, 자기, 광학, 전자기, 또는 반도체 또는 솔리드 스테이트 메모리를 포함하는 반도체 저장 매체, 자기 테이프, 착탈식 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강성 자기 디스크, 광학 디스크, 솔리드-스테이트 메모리 드라이브 등을 포함하는 컴퓨터 프로그램 제품 상에 저장될 수 있다. 프로그램 명령들은 또한, 예컨대, 서버(예컨대, 분산형 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 SaaS(software as a service)의 형태로, 전자 신호에 포함되고 전자 신호로서 제공될 수 있다. 대안적으로, 하나 이상의 방법들은 하드웨어(로직 게이트들 등)로, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예시적인 하드웨어는 프로그래밍가능 프로세서들(예컨대, FPGA(Field-Programmable Gate Array), 콤플렉스 프로그래밍가능 로직 디바이스), 범용 프로세서들, 그래픽 프로세서들, ASIC(Application Specific Integrated Circuit)들 등일 수 있다. 하나 이상의 방법들은 시스템 상에서 실행되는 애플리케이션의 일부 또는 그 컴포넌트의 일부로서 또는 다른 애플리케이션들 및 운영 시스템과 관련하여 실행되는 애플리케이션 또는 소프트웨어로서 수행될 수 있다.
[0146] 본 설명은 설명의 특정 구현들에 대해 설명되었지만, 이러한 특정 구현들은 단지 예시적이며 제한적이 아니다. 예들에서 예시되는 개념들은 다른 예들 및 구현들에 적용될 수 있다.
[0147] 본원에서 논의된 특정 구현들이 사용자들에 대한 개인 정보(예컨대, 사용자 데이터, 사용자의 소셜 네트워크에 대한 정보, 사용자의 위치 및 위치에서의 시간, 사용자의 생체 인식 정보, 사용자의 활동들 및 인구통계학적 정보)를 수집 또는 사용할 수 있는 상황들에서, 정보가 수집되는지 여부, 개인 정보가 저장되는지 여부, 개인 정보가 사용되는지 여부, 및 사용자에 대한 정보가 수집, 저장 및 사용되는 방법을 제어하는 하나 이상의 기회들이 사용자들에게 제공된다. 즉, 본원에서 논의되는 시스템들 및 방법들은, 구체적으로, 관련 사용자들로부터 이를 수행할 명시적 인가를 수신할 때, 사용자 개인 정보를 수집, 저장 및/또는 사용한다. 예컨대, 프로그램 또는 특징과 관련된 그 특정 사용자 또는 다른 사용자들에 대한 사용자 정보를 프로그램들 또는 특징들이 수집하는지 여부에 대한 제어가 사용자에게 제공된다. 개인 정보가 수집될 각각의 사용자에게, 그 사용자와 관련된 정보 수집에 대한 제어를 허용하고, 정보가 수집되는지 여부에 대한 그리고 정보의 어느 부분들이 수집될지에 대한 허가 또는 인가를 제공하는 하나 이상의 옵션들이 제시된다. 예컨대, 하나 이상의 이러한 제어 옵션들은 통신 네트워크를 통해 사용자들에게 제공될 수 있다. 또한, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식들로 취급되어, 개인적으로 식별가능한 정보가 제거될 수 있다. 일 예로서, 사용자의 아이덴티티는 어떠한 개인 식별가능 정보도 결정될 수 없도록 취급될 수 있다. 다른 예로서, 사용자 디바이스의 특정 위치가 결정될 수 없도록 사용자의 지리적 위치는 더 큰 영역으로 일반화될 수 있다.
[0148] 본 개시내용에서 설명되는 기능 블록들, 동작들, 특징들, 방법들, 디바이스들 및 시스템들은 당업자들에게 공지될 바와 같이 시스템들, 디바이스들 및 기능 블록들의 상이한 조합들로 통합 또는 분할될 수 있음을 주목한다. 특정 구현들의 루틴들을 구현하기 위해 임의의 적절한 프로그래밍 언어 및 프로그래밍 기법들이 사용될 수 있다. 예컨대, 절차 또는 객체-지향의 상이한 프로그래밍 기법들이 이용될 수 있다. 루틴들은 단일 프로세싱 디바이스 또는 다수의 프로세서들 상에서 실행될 수 있다. 단계들, 동작들 또는 컴퓨테이션들은 특정 순서로 제시될 수 있지만, 상이한 특정 구현들에서 순서는 변경될 수 있다. 일부 구현들에서, 본 명세서에서 순차적인 것으로 도시된 다수의 단계들 또는 동작들은 동시에 수행될 수 있다.

Claims (20)

  1. 컴퓨터에서 구현되는 방법(computer-implemented method)으로서,
    비디오의 복수의 프레임들을 수신하는 단계 - 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함함 -;
    상기 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링(downsampling)하여, 상기 복수의 픽셀들 중 하나 이상을 제외한, 상기 복수의 픽셀들의 서브세트를 포함하는 대응하는 다운샘플링된 프레임을 획득하는 단계;
    상기 다운샘플링 이후, 각각의 다운샘플링된 프레임에 대해:
    상기 깊이 데이터에 기반하여, 상기 다운샘플링된 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화(categorize)하는 초기 세그먼테이션 마스크(segmentation mask)를 생성하는 단계;
    상기 컬러 데이터 또는 상기 초기 세그먼테이션 마스크 중 하나 이상에 기반하여 머리 경계 박스(head bounding box)를 검출하는 단계;
    상기 다운샘플링된 프레임의 각각의 픽셀을 알려진 배경(known background), 알려진 전경(known foreground), 또는 알려지지 않은 것(unknown) 중 하나로 분류하는 트라이맵(trimap)을 결정하는 단계;
    상기 트라이맵에서 알려지지 않은 것으로 분류된, 상기 다운샘플링된 프레임의 각각의 픽셀에 대해, 상기 픽셀에 대한 가중치를 계산하고 상기 가중치를 가중치 맵(weight map)에 저장하는 단계; 및
    상기 다운샘플링된 프레임에 대한 이진 마스크(binary mask)를 획득하기 위해, 상기 컬러 데이터, 상기 트라이맵, 및 상기 가중치 맵에 기반하여, 상기 트라이맵에서 알려지지 않은 것으로 분류된 다운샘플링된 프레임의 픽셀들에 대해서만 미세 세그먼테이션(fine segmentation)을 수행하는 단계; 및
    전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 상기 이진 마스크에 기반하여 상기 복수의 다운샘플링된 프레임들을 업샘플링(upsampling)하는 단계를 포함하고,
    상기 트라이맵을 결정하는 단계는:
    상기 프레임의 비-머리 부분(non-head portion)들에 대한 제1 트라이맵을 생성하는 단계 - 상기 비-머리 부분들은 상기 머리 경계 박스 내의 픽셀들을 제외함 -;
    상기 프레임의 머리 부분들에 대한 제2 트라이맵을 생성하는 단계 - 상기 머리 부분들은 상기 머리 경계 박스 외부에 있는 픽셀들을 제외함 -; 및
    상기 제1 트라이맵을 상기 제2 트라이맵과 병합하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  2. 제1 항에 있어서,
    상기 초기 세그먼테이션 마스크를 생성하는 단계는, 픽셀과 연관된 깊이 값이 깊이 범위 내에 있는 경우 상기 픽셀을 전경 픽셀로 설정하는 단계, 및 상기 픽셀과 연관된 깊이 값이 상기 깊이 범위를 벗어나는 경우 상기 픽셀을 배경 픽셀로 설정하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  3. 제2 항에 있어서,
    상기 초기 세그먼테이션 마스크를 생성하는 단계는 형태학적 개방 프로세스(morphological opening process) 또는 형태학적 폐쇄 프로세스(morphological closing process) 중 하나 이상을 수행하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  4. 제1 항에 있어서,
    상기 머리 경계 박스를 검출하는 단계는:
    상기 프레임을 그레이스케일(grayscale)로 변환하는 단계;
    상기 변환 이후, 히스토그램 등화(histogram equalization)를 수행하는 단계; 및
    상기 히스토그램 등화 이후, 하르 캐스케이드 얼굴 검출(Haar cascade face detection)에 의해 상기 프레임 내의 하나 이상의 얼굴(face)들을 검출하는 단계를 포함하고, 상기 하나 이상의 얼굴들의 각각의 얼굴은, 상기 얼굴에 대한 얼굴 픽셀들을 포함하는 얼굴 영역과 연관되는,
    컴퓨터에서 구현되는 방법.
  5. 제4 항에 있어서,
    상기 하나 이상의 얼굴들의 각각의 얼굴이 유효한지 여부를 결정하는 단계를 더 포함하고, 상기 얼굴에 대한 얼굴 영역의 픽셀들의 임계 비율(threshold proportion)이 상기 초기 세그먼테이션 마스크에서 전경 픽셀들로 카테고리화되고 그리고 상기 얼굴에 대한 얼굴 영역의 픽셀들의 적어도 임계 백분율(threshold percentage)이 피부색 기준(skin color criterion)을 충족시키는 것으로 검증되는 경우, 상기 얼굴은 유효한 것으로 결정되는,
    컴퓨터에서 구현되는 방법.
  6. 제5 항에 있어서,
    유효한 것으로 결정된 각각의 얼굴에 대해, 상기 얼굴에 대응하는 머리 영역을 획득하기 위해 각각의 얼굴에 대한 얼굴 영역을 확장시키는 단계를 더 포함하고, 상기 머리 경계 박스는 유효한 것으로 결정된 각각의 얼굴에 대한 머리 영역을 포함하는,
    컴퓨터에서 구현되는 방법.
  7. 제5 항에 있어서,
    유효한 것으로 결정된 얼굴이 없는 경우:
    머리를 검출하기 위해 상기 초기 세그먼테이션 마스크를 분석하는 단계;
    머리 피부색 검증(head skin color validation)에 기반하여 상기 머리가 유효한지 여부를 결정하는 단계; 및
    상기 머리가 유효한 경우, 상기 머리와 연관된 경계 박스를 상기 머리 경계 박스로서 선택하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 초기 세그먼테이션 마스크를 생성하는 단계는 각각의 픽셀에 마스크 값을 할당하는 단계를 포함하고,
    각각의 전경 픽셀에는 255의 마스크 값이 할당되고 그리고 각각의 배경 픽셀에는 0의 마스크 값이 할당되며, 그리고
    상기 제1 트라이맵을 생성하는 단계는, 상기 머리 경계 박스에 없는 프레임의 각각의 픽셀에 대해:
    상기 픽셀의 픽셀 위치와 상기 초기 세그먼테이션 마스크의 마스크 경계(mask boundary) 사이의 L1 거리를 계산하는 단계 - 상기 마스크 경계는, 적어도 하나의 전경 픽셀이 상기 초기 세그먼테이션 마스크에서 적어도 하나의 배경 픽셀에 인접하는 위치들을 포함함 -;
    상기 L1 거리가 전경 거리 임계치를 충족시키고 그리고 상기 픽셀이 전경 픽셀로 카테고리화되는 경우, 상기 픽셀을 알려진 전경으로 분류하는 단계;
    상기 L1 거리가 배경 거리 임계치를 충족시키고 그리고 상기 픽셀이 배경 픽셀로 카테고리화되는 경우, 상기 픽셀을 알려진 배경으로 분류하는 단계; 및
    상기 픽셀이 알려진 전경으로 분류되지 않고 그리고 알려진 배경으로 분류되지 않은 경우, 상기 픽셀을 알려지지 않은 것으로 분류하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  9. 제8 항에 있어서,
    상기 제2 트라이맵을 생성하는 단계는, 상기 머리 경계 박스 내의 각각의 픽셀에 대해, 상기 픽셀이 알려진 전경인지, 알려진 배경인지 또는 알려지지 않은 것인지를 식별하는 단계를 포함하고,
    상기 식별하는 단계는:
    상기 픽셀이 상기 머리 경계 박스에 대해 결정된 내부 마스크(inner mask) 내에 있는 경우, 상기 픽셀을 알려진 전경으로 분류하는 단계;
    상기 픽셀이 상기 머리 경계 박스에 대해 결정된 외부 마스크(outer mask) 외부에 있는 경우, 상기 픽셀을 알려진 배경으로 분류하는 단계; 및
    상기 픽셀이 알려진 전경 및 알려진 배경으로 분류되지 않은 경우, 상기 픽셀을 알려지지 않은 것으로 분류하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  10. 제9 항에 있어서,
    상기 식별하는 단계 전에:
    상기 머리 경계 박스 내의 머리의 모발 영역(hair area) 근처에 균일한 밝은 배경이 존재하는지 여부를 검출하는 단계; 및
    상기 균일한 밝은 배경이 검출되는 경우, 상기 머리 경계 박스, 상기 컬러 데이터 및 상기 초기 세그먼테이션 마스크에 기반하여, 상기 머리에 대한 모발 영역 확장을 수행하는 단계를 더 포함하고,
    상기 모발 영역 확장을 수행한 후, 상기 외부 마스크에 대한 팽창 크기(dilation size)가 증가되는,
    컴퓨터에서 구현되는 방법.
  11. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 비디오에 대한 배경 이미지를 유지하는 단계 - 상기 배경 이미지는 상기 비디오의 각각의 프레임과 동일한 크기의 컬러 이미지임 -; 및
    상기 미세 세그먼테이션을 수행하기 전에, 상기 트라이맵에 기반하여 상기 배경 이미지를 업데이트하는 단계를 더 포함하고,
    상기 픽셀에 대한 가중치를 계산하는 것은:
    상기 픽셀의 컬러와 상기 배경 이미지의 배경 컬러 사이의 유클리드 거리(Euclidean distance)를 계산하는 것;
    상기 유클리드 거리에 기반하여 상기 픽셀이 배경 픽셀일 확률을 결정하는 것; 및
    상기 확률이 배경 확률 임계치를 충족시키는 경우, 상기 가중치 맵에서 상기 픽셀에 배경 가중치를 할당하는 것을 포함하는,
    컴퓨터에서 구현되는 방법.
  12. 제11 항에 있어서,
    피부색 검출에 기반하여 상기 프레임 내의 하나 이상의 피부 영역(skin region)들을 식별하는 단계 - 상기 하나 이상의 피부 영역들은 얼굴 영역들을 제외함 -; 및
    상기 하나 이상의 피부 영역들 내에 있는 프레임의 각각의 픽셀에 대해:
    상기 픽셀을 알려지지 않은 것으로 분류하고 그리고 상기 가중치 맵에서 상기 픽셀에 제로 가중치(zero weight)를 할당하는 단계;
    상기 픽셀의 컬러 및 상기 배경 이미지의 배경 컬러가 유사성 임계치(similarity threshold)를 충족시키는 경우, 상기 가중치 맵에서 상기 픽셀에 배경 가중치를 할당하는 단계;
    상기 픽셀의 컬러가 피부색인 경우, 상기 가중치 맵에서 상기 픽셀에 전경 가중치를 할당하는 단계; 및
    상기 픽셀의 컬러 및 상기 배경 이미지의 배경 컬러가 비유사성 임계치(dissimilarity threshold)를 충족시키는 경우, 상기 가중치 맵에서 상기 픽셀에 전경 가중치를 할당하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  13. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 복수의 프레임들은 시퀀스(sequence)로 이루어지고,
    상기 방법은, 각각의 프레임에 대해:
    상기 시퀀스 내의 바로 이전 프레임의 이전 프레임 이진 마스크와 상기 초기 세그먼테이션 마스크를 비교하여, 상기 이전 프레임의 픽셀들과 유사하게 카테고리화된, 상기 프레임의 픽셀들의 비율을 결정하는 단계; 및
    상기 비율에 기반하여, 글로벌 코히런스 가중치(global coherence weight)를 계산하는 단계를 더 포함하고;
    상기 픽셀에 대한 가중치를 계산하고 상기 가중치를 가중치 맵에 저장하는 단계는, 상기 글로벌 코히런스 가중치 및 상기 이전 프레임 이진 마스크의 마스크 경계와 상기 픽셀 간의 거리에 기반하여 상기 가중치를 결정하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  14. 제13 항에 있어서,
    대응하는 픽셀이 상기 이전 프레임 이진 마스크에서 전경 픽셀로 카테고리화된 경우, 상기 픽셀에 대한 가중치는 양(positive)이며, 그리고 상기 대응하는 픽셀이 상기 이전 프레임 이진 마스크에서 전경 픽셀로 카테고리화되지 않은 경우, 상기 가중치는 음(negative)인,
    컴퓨터에서 구현되는 방법.
  15. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 미세 세그먼테이션을 수행하는 단계는 상기 프레임에 그래프컷 기법(graphcut technique)을 적용하는 단계를 포함하고, 상기 그래프컷 기법은 알려지지 않은 것으로 분류되는 픽셀들에 적용되는,
    컴퓨터에서 구현되는 방법.
  16. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 미세 세그먼테이션을 수행한 후, 상기 이진 마스크에 시간적 저역 통과 필터(temporal low pass filter)를 적용하는 단계를 더 포함하고, 상기 시간적 저역 통과 필터는 상기 프레임과 하나 이상의 이전 프레임들 간의 유사성에 기반하여 상기 이진 마스크를 업데이트하는,
    컴퓨터에서 구현되는 방법.
  17. 명령들이 저장된 비-일시적인 컴퓨터-판독가능 매체로서,
    상기 명령들은, 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 상기 하나 이상의 하드웨어 프로세서들로 하여금 동작들을 수행하게 하고,
    상기 동작들은:
    비디오의 복수의 프레임들을 수신하는 동작 - 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함함 -;
    상기 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링하여, 상기 복수의 픽셀들 중 하나 이상을 제외한, 상기 복수의 픽셀들의 서브세트를 포함하는 대응하는 다운샘플링된 프레임을 획득하는 동작:
    상기 다운샘플링 이후, 각각의 다운샘플링된 프레임에 대해:
    상기 깊이 데이터에 기반하여, 상기 다운샘플링된 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크를 생성하는 동작;
    상기 컬러 데이터 또는 상기 초기 세그먼테이션 마스크 중 하나 이상에 기반하여 머리 경계 박스를 검출하는 동작;
    상기 다운샘플링된 프레임의 각각의 픽셀을 알려진 배경, 알려진 전경, 또는 알려지지 않은 것 중 하나로 분류하는 트라이맵을 결정하는 동작;
    상기 트라이맵에서 알려지지 않은 것으로 분류된, 상기 다운샘플링된 프레임의 각각의 픽셀에 대해, 상기 픽셀에 대한 가중치를 계산하고 상기 가중치를 가중치 맵에 저장하는 동작; 및
    상기 다운샘플링된 프레임에 대한 이진 마스크를 획득하기 위해, 상기 컬러 데이터, 상기 트라이맵, 및 상기 가중치 맵에 기반하여, 상기 트라이맵에서 알려지지 않은 것으로 분류된 다운샘플링된 프레임의 픽셀들에 대해서만 미세 세그먼테이션을 수행하는 동작; 및
    전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 상기 이진 마스크에 기반하여 상기 복수의 다운샘플링된 프레임들을 업샘플링하는 동작을 포함하고,
    상기 트라이맵을 결정하는 동작은:
    상기 프레임의 비-머리 부분들에 대한 제1 트라이맵을 생성하는 동작 - 상기 비-머리 부분들은 상기 머리 경계 박스 내의 픽셀들을 제외함 -;
    상기 프레임의 머리 부분들에 대한 제2 트라이맵을 생성하는 동작 - 상기 머리 부분들은 상기 머리 경계 박스 외부에 있는 픽셀들을 제외함 -; 및
    상기 제1 트라이맵을 상기 제2 트라이맵과 병합하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 매체.
  18. 제17 항에 있어서,
    상기 비-일시적인 컴퓨터-판독가능 매체는 저장된 추가의 명령들을 가지며,
    상기 추가의 명령들은, 상기 하나 이상의 하드웨어 프로세서들에 의해 실행될 때, 상기 하나 이상의 하드웨어 프로세서들로 하여금 동작들을 수행하게 하고,
    상기 동작들은:
    상기 비디오에 대한 배경 이미지를 유지하는 동작 - 상기 배경 이미지는 상기 비디오의 각각의 프레임과 동일한 크기의 컬러 이미지임 -; 및
    상기 미세 세그먼테이션을 수행하기 전에, 상기 트라이맵에 기반하여 배경 이미지를 업데이트하는 동작을 포함하며, 그리고
    상기 픽셀에 대한 가중치를 계산하는 것은:
    상기 픽셀의 컬러와 상기 배경 이미지의 배경 컬러 사이의 유클리드 거리를 계산하는 것;
    상기 유클리드 거리에 기반하여 픽셀이 배경 픽셀일 확률을 결정하는 것; 및
    상기 확률이 배경 확률 임계치를 충족시키는 경우, 상기 가중치 맵에서 상기 픽셀에 배경 가중치를 할당하는 것을 포함하는,
    비-일시적인 컴퓨터-판독가능 매체.
  19. 하나 이상의 하드웨어 프로세서들; 및
    명령들을 갖는, 상기 하나 이상의 하드웨어 프로세서들에 커플링된 메모리를 포함하고,
    상기 명령들은, 상기 하나 이상의 하드웨어 프로세서들에 의해 실행될 때 동작들을 수행하게 하고,
    상기 동작들은:
    비디오의 복수의 프레임들을 수신하는 동작 - 각각의 프레임은 복수의 픽셀들에 대한 깊이 데이터 및 컬러 데이터를 포함함 -;
    상기 비디오의 복수의 프레임들의 각각의 프레임을 다운샘플링하여, 상기 복수의 픽셀들 중 하나 이상을 제외한, 상기 복수의 픽셀들의 서브세트를 포함하는 대응하는 다운샘플링된 프레임을 획득하는 동작:
    상기 다운샘플링 이후, 각각의 다운샘플링된 프레임에 대해:
    상기 깊이 데이터에 기반하여, 상기 다운샘플링된 프레임의 각각의 픽셀을 전경 픽셀 또는 배경 픽셀로 카테고리화하는 초기 세그먼테이션 마스크를 생성하는 동작;
    상기 컬러 데이터 또는 상기 초기 세그먼테이션 마스크 중 하나 이상에 기반하여 머리 경계 박스를 검출하는 동작;
    상기 다운샘플링된 프레임의 각각의 픽셀을 알려진 배경, 알려진 전경, 또는 알려지지 않은 것 중 하나로 분류하는 트라이맵을 결정하는 동작;
    상기 트라이맵에서 알려지지 않은 것으로 분류된, 상기 다운샘플링된 프레임의 각각의 픽셀에 대해, 상기 픽셀에 대한 가중치를 계산하고 상기 가중치를 가중치 맵에 저장하는 동작; 및
    상기 다운샘플링된 프레임에 대한 이진 마스크를 획득하기 위해, 상기 컬러 데이터, 상기 트라이맵, 및 상기 가중치 맵에 기반하여, 상기 트라이맵에서 알려지지 않은 것으로 분류된 다운샘플링된 프레임의 픽셀들에 대해서만 미세 세그먼테이션을 수행하는 동작; 및
    전경 비디오를 획득하기 위해, 각각의 개개의 프레임에 대한 상기 이진 마스크에 기반하여 상기 복수의 다운샘플링된 프레임들을 업샘플링하는 동작을 포함하고,
    상기 트라이맵을 결정하는 동작은:
    상기 프레임의 비-머리 부분들에 대한 제1 트라이맵을 생성하는 동작 - 상기 비-머리 부분들은 상기 머리 경계 박스 내의 픽셀들을 제외함 -;
    상기 프레임의 머리 부분들에 대한 제2 트라이맵을 생성하는 동작 - 상기 머리 부분들은 상기 머리 경계 박스 외부에 있는 픽셀들을 제외함 -; 및
    상기 제1 트라이맵을 상기 제2 트라이맵과 병합하는 동작을 포함하는,
    시스템.
  20. 삭제
KR1020217043141A 2019-07-15 2020-04-15 깊이를 사용한 비디오 배경 제거 KR102469295B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/512,344 2019-07-15
US16/512,344 US11195283B2 (en) 2019-07-15 2019-07-15 Video background substraction using depth
PCT/US2020/028376 WO2021011040A1 (en) 2019-07-15 2020-04-15 Video background subtraction using depth

Publications (2)

Publication Number Publication Date
KR20220006657A KR20220006657A (ko) 2022-01-17
KR102469295B1 true KR102469295B1 (ko) 2022-11-21

Family

ID=70554226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217043141A KR102469295B1 (ko) 2019-07-15 2020-04-15 깊이를 사용한 비디오 배경 제거

Country Status (6)

Country Link
US (2) US11195283B2 (ko)
EP (1) EP3814985A1 (ko)
JP (1) JP7110502B2 (ko)
KR (1) KR102469295B1 (ko)
CN (1) CN114072850A (ko)
WO (1) WO2021011040A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112912921B (zh) * 2018-10-11 2024-04-30 上海科技大学 从深度图中提取平面的***和方法
CN111539960B (zh) * 2019-03-25 2023-10-24 华为技术有限公司 图像处理方法以及相关设备
KR20210027894A (ko) * 2019-09-03 2021-03-11 삼성전자주식회사 주행 보조 시스템, 전자 장치 및 그 동작 방법
US11223855B2 (en) * 2019-09-18 2022-01-11 Loop Now Technologies Inc. System and method of real-time video overlaying or superimposing display
EP4058983A1 (en) * 2019-11-12 2022-09-21 Geomagical Labs, Inc. Method and system for scene image modification
US11069036B1 (en) 2020-01-03 2021-07-20 GE Precision Healthcare LLC Method and system for real-time and offline de-identification of facial regions from regular and occluded color video streams obtained during diagnostic medical procedures
US11790535B2 (en) * 2020-05-12 2023-10-17 True Meeting Inc. Foreground and background segmentation related to a virtual three-dimensional (3D) video conference
US11763595B2 (en) * 2020-08-27 2023-09-19 Sensormatic Electronics, LLC Method and system for identifying, tracking, and collecting data on a person of interest
KR20220073444A (ko) * 2020-11-26 2022-06-03 삼성전자주식회사 오브젝트 추적 방법, 장치 및 그 방법을 수행하는 단말기
US11461880B2 (en) * 2021-01-12 2022-10-04 Adobe Inc. Generating image masks from digital images utilizing color density estimation and deep learning models
CN112990300A (zh) * 2021-03-11 2021-06-18 北京深睿博联科技有限责任公司 前景识别方法、装置、设备及计算机可读存储介质
US11893668B2 (en) 2021-03-31 2024-02-06 Leica Camera Ag Imaging system and method for generating a final digital image via applying a profile to image information
US11847788B2 (en) * 2021-04-15 2023-12-19 Himax Technologies Limited Depth processor
US20220405907A1 (en) * 2021-06-20 2022-12-22 Microsoft Technology Licensing, Llc Integrated system for detecting and correcting content
CN113436097B (zh) * 2021-06-24 2022-08-02 湖南快乐阳光互动娱乐传媒有限公司 一种视频抠图方法、装置、存储介质和设备
CN113313730B (zh) * 2021-07-28 2021-10-08 北京微吼时代科技有限公司 直播场景中获取图像前景区域的方法和装置
US11765311B2 (en) 2021-07-30 2023-09-19 Cisco Technology, Inc. Transport mechanisms for video stream merging with overlapping video
CN113449708B (zh) * 2021-08-31 2022-01-07 深圳市爱深盈通信息技术有限公司 人脸识别方法、装置、设备终端和可读存储介质
US12010157B2 (en) 2022-03-29 2024-06-11 Rovi Guides, Inc. Systems and methods for enabling user-controlled extended reality
US12022226B2 (en) * 2022-03-29 2024-06-25 Rovi Guides, Inc. Systems and methods for enabling user-controlled extended reality
US20230412785A1 (en) * 2022-06-17 2023-12-21 Microsoft Technology Licensing, Llc Generating parallax effect based on viewer position
US12026893B1 (en) * 2023-03-31 2024-07-02 Intuit Inc. Image background removal
CN116433696B (zh) * 2023-06-14 2023-10-20 荣耀终端有限公司 抠图方法、电子设备及计算机可读存储介质
CN116758081B (zh) * 2023-08-18 2023-11-17 安徽乾劲企业管理有限公司 一种无人机道路桥梁巡检图像处理方法
CN116993886B (zh) * 2023-09-26 2024-01-09 腾讯科技(深圳)有限公司 一种渲染中区域轮廓图的生成方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008117391A (ja) * 2006-11-02 2008-05-22 Seiko Epson Corp デジタル画像における顔を検出する方法、およびデジタル画像における顔を検出する装置
WO2010067191A1 (en) * 2008-12-11 2010-06-17 Imax Corporation Devices and methods for processing images using scale space
US20190012761A1 (en) * 2015-09-23 2019-01-10 Omni Ai, Inc. Detected object tracker for a video analytics system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8306333B2 (en) 2009-12-17 2012-11-06 National Tsing Hua University Method and system for automatic figure segmentation
JP6355346B2 (ja) 2014-01-29 2018-07-11 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、及び記憶媒体
JP6343998B2 (ja) 2014-03-26 2018-06-20 大日本印刷株式会社 画像処理装置、画像処理方法、及びプログラム
US10121256B2 (en) 2014-08-28 2018-11-06 Qualcomm Incorporated Temporal saliency map
US9547907B2 (en) * 2014-12-15 2017-01-17 Intel Corporation Image segmentation using color and depth information
JP2016122367A (ja) 2014-12-25 2016-07-07 カシオ計算機株式会社 画像処理装置、画像処理方法及びプログラム
US9443316B1 (en) * 2015-07-21 2016-09-13 Sony Corporation Semi-automatic image segmentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008117391A (ja) * 2006-11-02 2008-05-22 Seiko Epson Corp デジタル画像における顔を検出する方法、およびデジタル画像における顔を検出する装置
WO2010067191A1 (en) * 2008-12-11 2010-06-17 Imax Corporation Devices and methods for processing images using scale space
US20190012761A1 (en) * 2015-09-23 2019-01-10 Omni Ai, Inc. Detected object tracker for a video analytics system

Also Published As

Publication number Publication date
KR20220006657A (ko) 2022-01-17
US11727577B2 (en) 2023-08-15
US11195283B2 (en) 2021-12-07
JP7110502B2 (ja) 2022-08-01
US20210019892A1 (en) 2021-01-21
JP2022528294A (ja) 2022-06-09
US20220067946A1 (en) 2022-03-03
EP3814985A1 (en) 2021-05-05
CN114072850A (zh) 2022-02-18
WO2021011040A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
KR102469295B1 (ko) 깊이를 사용한 비디오 배경 제거
JP7490004B2 (ja) 機械学習を用いた画像カラー化
WO2022156640A1 (zh) 一种图像的视线矫正方法、装置、电子设备、计算机可读存储介质及计算机程序产品
JP4898800B2 (ja) イメージセグメンテーション
US11887235B2 (en) Puppeteering remote avatar by facial expressions
Butler et al. Real-time adaptive foreground/background segmentation
CN112954450B (zh) 视频处理方法、装置、电子设备和存储介质
US9256950B1 (en) Detecting and modifying facial features of persons in images
US10929982B2 (en) Face pose correction based on depth information
CN112270745B (zh) 一种图像生成方法、装置、设备以及存储介质
US11641445B2 (en) Personalized automatic video cropping
WO2022148248A1 (zh) 图像处理模型的训练方法、图像处理方法、装置、电子设备及计算机程序产品
CN111985281A (zh) 图像生成模型的生成方法、装置及图像生成方法、装置
US11776201B2 (en) Video lighting using depth and virtual lights
CN111274447A (zh) 基于视频的目标表情生成方法、装置、介质、电子设备
US20240193731A1 (en) Face region based automatic white balance in images
KR102678533B1 (ko) 인공지능을 이용한 영상 내 객체 블러링 방법 및 그 장치
CN114255257A (zh) 目标跟踪方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant