JP2022528294A - 深度を利用した映像背景減算法 - Google Patents

深度を利用した映像背景減算法 Download PDF

Info

Publication number
JP2022528294A
JP2022528294A JP2021573206A JP2021573206A JP2022528294A JP 2022528294 A JP2022528294 A JP 2022528294A JP 2021573206 A JP2021573206 A JP 2021573206A JP 2021573206 A JP2021573206 A JP 2021573206A JP 2022528294 A JP2022528294 A JP 2022528294A
Authority
JP
Japan
Prior art keywords
pixel
frame
background
foreground
mask
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2021573206A
Other languages
English (en)
Other versions
JP7110502B2 (ja
Inventor
ジョウ、グアンユ
チェン、チャン
エンボーム、ニクラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2022528294A publication Critical patent/JP2022528294A/ja
Application granted granted Critical
Publication of JP7110502B2 publication Critical patent/JP7110502B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

本開示は、深度を利用した映像背景減算法に関する。
画像を前景部分(foreground)と背景部分(background)とに分割(セグメンティング)することは、多くの画像(イメージ)および映像(ビデオ)アプリケーションで使用されている。例えば、映像会議、VR(仮想現実:Virtual Reality)やAR(拡張現実:Augmented Reality)でのテレプレゼンスなどの映像アプリケーションでは、背景を除去して新背景に置き換える必要がある場合がある。別の例では、画像の背景部分をぼかすポートレートモードやボケ(bokeh)には、セグメンテーションがよく使われる。
画像や映像のセグメンテーションには多くの課題がある。1つの課題は色(カラー)カモフラージュであり、映像や画像に、背景色に似た色(カラー)を持つ前景オブジェクトが含まれている場合に発生する。その他の課題としては、動く背景や変化する背景や、色の影や、前景部分がないシーン(scene。例えば、人物がいない映像会議)や、画像や映像がキャプチャ(撮影)されている間のシーンの照明変化などがある。
米国特許第9443316号明細書
いくつかの画像キャプチャ装置(例えば、デスクトップカメラ、モバイル装置のカメラなど)は、画像または映像の色(カラー)データと一緒に深度データ(depth data)をキャプチャすることができる。そのような深度データは、セグメンテーションに使用することができる。しかし、このような深度データは、深度センサの品質、照明条件、撮影シーンのオブジェクトなどによって、しばしば不正確になる。不正確なデータは、深度データを使用して画像または映像をセグメント化する際の、別の課題である。
本明細書に記載されている背景の説明は、本開示の文脈を一般的に示すことを目的としている。本願の発明者の仕事は、この背景欄に記載されている範囲であり、また、出願時に先行技術として他に適格でない可能性がある記述の側面は、本開示に対する先行技術として明示的にも暗黙的にも認められない。
本明細書に記載されている実装は、前景映像(フォアグラウンドビデオ)を取得するための方法、システム、およびコンピュータ可読媒体に関する。いくつかの実装では、コンピュータが実装する方法(コンピュータ実装方法)は、映像(ビデオ)の複数のフレームを受け取る工程を備えている。映像の各フレームは、複数の画素の深度データおよび色データを備えていることができる。本方法はさらに、映像の複数のフレームの各フレームをダウンサンプリングする工程を備えている。本方法はさらに、ダウンサンプリングの後、各フレームについて、深度データに基づきフレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程を備えている。本方法はさらに、各フレームについて、フレームの各画素を既知背景、既知前景、または未知(不明。unknown)のうちの一つに分類するトライマップを決定する工程を備えている。この方法はさらに、各フレームおよび未知に分類されたフレームの各画素について、その画素に対する重みを算出するとともに、その重みを重みマップに格納する工程を備えている。本方法はさらに、フレームのバイナリマスクを取得するべく、各フレームについて、色データ、トライマップ、および重みマップに基づき微細セグメンテーションを実行する工程を備えている。本方法はさらに、前景映像を取得するべく、各フレームのバイナリマスクに基づき、複数のフレームをアップサンプリングする工程を備えている。
いくつかの実装では、初期セグメンテーションマスクを生成する工程は、画素に関連付けられた深度値が深度範囲の内に存在する場合、画素を前景画素として設定し、画素に関連付けられた深度値が深度範囲の外に存在する場合、画素を背景画素として設定する工程を備えていることができる。いくつかの実装では、初期セグメンテーションマスクを生成する工程はさらに、モルフォロジカルオープニング処理またはモルフォロジカルクロージング処理のうちの1つまたは複数を実行する工程を備えていることができる。
いくつかの実装では、本方法はさらに、色データまたは初期セグメンテーションマスクのうちの1つまたは複数に基づき、頭部バウンディングボックスを検出する工程を備えていることができる。いくつかの実装では、頭部バウンディングボックスを検出する工程は、フレームをグレースケールに変換する工程と、ヒストグラム均等化を実行する工程とを備えていることができる。本方法はさらに、Haarカスケード顔検出によってフレーム内の1つまたは複数の顔を検出する工程を備えていることができる。1つまたは複数の顔のうちの各顔は、その顔の顔画素を備えている顔エリアに関連付けられることができる。
いくつかの実装形態では、本方法はさらに、1つまたは複数の顔のうちの各顔が有効であるかどうかを判定する工程を備えていることができる。いくつかの実装では、顔のための顔エリアの画素の閾値割合が初期セグメンテーションマスクにおいて前景画素に分類されるとともに、顔のための顔エリアの画素の少なくとも閾値パーセントが肌色基準を満たすことが検証される場合、顔は有効であると判定される。いくつかの実装では、本方法はさらに、有効であると判定された各顔について、その顔に対応する頭部エリアを取得するべく、各顔の顔エリアを拡大する工程を備えていることができる。頭部バウンディングボックスは、有効であると判定された各顔の頭部エリアを備えていることができる。一部の実装では、顔が有効ではないと判定された場合、本方法はさらに、頭部を検出するべく初期セグメンテーションマスクを分析する工程と、頭部の肌色検証に基づき頭部が有効であるかどうかを判定する工程とを備えていることができる。頭部が有効であると判定された場合、本方法はさらに、頭部に関連するバウンディングボックスを頭部バウンディングボックスとして選択する工程を備えていることができる。
いくつかの実装形態では、初期セグメンテーションマスクを生成する工程は、各画素にマスク値を割り当てる工程を備えていることができる。初期セグメンテーションマスクにおいて、各前景画素には「255」のマスク値を割り当てられることができ、各背景画素には「0」のマスク値を割り当てられることができる。これらの実装において、トライマップを決定する工程は、頭部バウンディングボックス内に存在しないフレームの各画素について、画素の画素位置と、初期セグメンテーションマスクのマスク境界との間のLI距離を算出する工程を備えていることができ、マスク境界は、少なくとも1つの前景画素が初期セグメンテーションマスク内の少なくとも1つの背景画素に隣接する位置を備えている。LI距離が前景距離閾値を満たすとともに、画素が前景画素に分類される場合、本方法はさらに、画素を既知前景に分類する工程を備えていることができる。LI距離が背景距離閾値を満たすとともに、画素が背景画素に分類される場合、本方法はさらに、画素を既知背景に分類する工程を備えていることができ、画素が既知前景に分類されないとともに、既知背景に分類されない場合、本方法はさらに、画素を未知に分類する工程を備えていることができる。
トライマップを決定する工程はさらに、頭部バウンディングボックス内の各画素について、その画素が既知前景であるか、既知背景であるか、または未知であるかを識別する工程を備えていることができる。画素が既知前景であるか、既知背景であるか、または未知であるかを識別する工程は、画素が頭部バウンディングボックスに対して決定された内方マスク内に存在する場合には画素を既知前景に分類する工程と、画素が頭部バウンディングボックスに対して決定された外方マスクの外方に存在する場合には画素を既知背景に分類する工程と、および画素が既知前景および既知背景に分類されない場合には画素を未知に分類する工程とを備えていることができる。
いくつかの実装では、本方法はさらに、頭部バウンディングボックス内の頭部の髪エリア付近に均一な明るさの背景が存在するかどうかを検出する工程と、均一な明るさの背景が検出された場合、頭部バウンディングボックス、色データ、および初期セグメンテーションマスクに基づき、頭部の髪エリアの拡張を実行する工程とを備えていることができる。これらの実装では、髪エリア拡張を実行した後、外方マスクの拡張サイズ(dilation size)は増加される。
いくつかの実装では、本方法はさらに、映像の背景画像を維持する工程を備えていることができ、背景画像は、映像の各フレームと同じサイズの色画像である。本方法はさらに、微細セグメンテーションを実行する前に、トライマップに基づき背景画像を更新する工程を備えていることができる。これらの実装において、画素に対する重みを算出する工程は、画素色と背景画像の背景色との間のユークリッド距離を算出する工程と、ユークリッド距離に基づき、画素が背景画素である確率を決定する工程と、確率が背景確率閾値を満たす場合、重みマップにおいて画素に背景重みを割り当てる工程とを備えていることができる。
いくつかの実装では、本方法はさらに、肌色検出に基づき、フレーム内の1つまたは複数の肌領域を識別する工程を備えていることができる。1つまたは複数の肌領域は、顔エリアを除外する。これらの実装では、方法はさらに、1つまたは複数の肌領域内に存在するフレームの各画素について、画素を未知に分類するとともに、重みマップにおいて画素にゼロの重みを割り当てる工程を備えていることができる。前記方法はさらに、前記画素色と前記背景画像の背景色とが類似度閾値を満たす場合、前記画素に前記重みマップにおける背景重みを割り当てる工程を備えていることができる。前記方法はさらに、前記画素色が肌色である場合、前記重みマップにおいて前景重みを前記画素に割り当てる工程を備えていることができる。前記方法はさらに、画素色と背景画像の背景色とが非類似度閾値を満たす場合、重みマップにおいて画素に前景重みを割り当てる工程を備えていることができる。
いくつかの実装形態では、映像の複数のフレームは、シーケンスであり得る。これらの実装では、本方法はさらに、各フレームについて、先行フレームの画素に類似すると分類されているフレームの画素の割合を決定するべく、初期セグメンテーションマスクをシーケンス内の直前フレームの先行フレームバイナリマスクと比較する工程を備えていることができる。本方法はさらに、割合に基づき、グローバルコヒーレンス重みを算出する工程を備えていることができる。これらの実装では、画素に対する重みを算出するとともに、重みを重みマップに格納する工程は、グローバルコヒーレンス重みと、画素と先行フレームバイナリマスクのマスク境界との間の距離とに基づき、重みを決定する工程を備えていることができる。いくつかの実装では、対応する画素が先行フレームバイナリマスクにおいて前景画素に分類された場合には、画素に対する重みは正であり、対応する画素が先行フレームバイナリマスクにおいて前景画素に分類されなかった場合には、画素に対する重みは負である。
いくつかの実装では、微細セグメンテーションを実行する工程は、フレームにグラフカット技術を適用する工程を備えていることができ、グラフカット技術は、未知に分類される画素に適用される。
いくつかの実装では、本方法はさらに、微細セグメンテーションを実行した後に、時間的ローパスフィルタをバイナリマスクに適用する工程を備えていることができる。時間的ローパスフィルタを適用する工程は、1つまたは複数の先行フレームと、フレームとの間の類似度に基づき、バイナリマスクを更新することができる。
いくつかの実装は、その上に格納された命令を有する非一時的なコンピュータ可読媒体を備えていることができる。命令は、1つまたは複数のハードウェアプロセッサによって実行されると、プロセッサに、映像の複数のフレームを受け取る工程を備えている動作(operations)を実行させる。映像の各フレームは、複数の画素の深度データおよび色データを備えていることができる。動作はさらに、映像の複数のフレームの各フレームをダウンサンプリングする工程を備えている。動作はさらに、ダウンサンプリングの後、各フレームについて、深度データに基づきフレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程を備えている。前記動作はさらに、各フレームについて、フレームの各画素を既知背景、既知前景、または未知のうちの一つに分類するトライマップを決定する工程を備えている。前記動作はさらに、各フレームおよび未知に分類されたフレームの各画素について、その画素に対する重みを算出するとともに、その重みを重みマップに格納する工程を備えている。前記動作はさらに、各フレームについて、フレームのバイナリマスクを取得するべく、色データ、トライマップ、および重みマップに基づき微細セグメンテーションを実行する工程を備えている。動作はさらに、前景映像を取得するべく、それぞれのフレームのバイナリマスクに基づき複数のフレームをアップサンプリングする工程を備えている。
いくつかの実装では、非一時的なコンピュータ可読媒体は、1つまたは複数のハードウェアプロセッサによって実行されると、プロセッサに、映像の各フレームと同じサイズの色画像である映像の背景画像を維持する工程を備えている動作を実行させるさらなる命令を備えていることができる。この動作はさらに、微細セグメンテーションを実行する前に、トライマップに基づき背景画像を更新する工程を備えていることができる。これらの実装において、画素の重みを算出する動作は、画素色と背景画像の背景色との間のユークリッド距離を算出する工程と、ユークリッド距離に基づき、画素が背景画素である確率を決定する工程と、前記確率が背景確率閾値を満たす場合、前記重みマップにおいて前記画素に背景重みを割り当てる工程と、を備えていることができる。
いくつかの実装は、メモリに結合された1つまたは複数のハードウェアプロセッサを備えているシステムを備えていることができる。メモリは、その上に格納された命令を備えていることができる。命令は、1つまたは複数のハードウェアプロセッサによって実行されると、プロセッサに、映像の複数のフレームを受け取る工程を備えている動作を実行させる。映像の各フレームは、複数の画素の深度データおよび色データを備えていることができる。動作はさらに、映像の複数のフレームの各フレームをダウンサンプリングする工程を備えている。動作はさらに、ダウンサンプリングの後、各フレームについて、深度データに基づきフレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程を備えている。前記動作はさらに、各フレームについて、フレームの各画素を既知背景、既知前景、または未知のうちの一つに分類するトライマップを決定する工程を備えている。前記動作はさらに、各フレームについておよび未知に分類されたフレームの各画素について、その画素に対する重みを算出するとともに、その重みを重みマップに格納する工程を備えている。前記動作はさらに、各フレームについて、フレームのバイナリマスクを取得するべく、色データ、トライマップ、および重みマップに基づき微細セグメンテーションを実行する工程を備えている。動作はさらに、前景映像を取得するべく、それぞれのフレームのバイナリマスクに基づき複数のフレームをアップサンプリングする工程を備えている。
本特許または出願ファイルは、色で実行される少なくとも1つの図面を備えている。色図面を備えている本特許または特許出願公開のコピーは、要求および必要な手数料の支払いに応じて、事務局によって提供される。
本明細書に記載されている1つまたは複数の実装に使用することができる例示的なネットワーク環境のブロック図。 いくつかの実装に従った、前景マスクを決定する例示的な方法を示すフロー図。 いくつかの実装による、頭部バウンディングボックスを検出するための例示的な方法を示すフロー図。 いくつかの実装による、頭部領域のためのトライマップを生成するための例示的な方法を示すフロー図。 例示的な映像フレームと、対応する初期セグメンテーションマスクとを示す図。 トライマップを使用せずに、前景と背景を分離した2つの例示的な画像を示す。 トライマップの一部が識別された画像の例を示す。 いくつかの実装による、入力映像の4つのフレームと、入力映像をセグメント化することで生成された前景を備えている出力映像の対応する出力フレームとを示す図。 本明細書に記載された1つまたは複数の実装に使用され得る、例示的なコンピューティング装置のブロック図。
本明細書に記載されている実施形態は一般に映像または画像を、背景部分と前景部分とにセグメント化する工程に関する。特に実施形態は、映像または画像の、前景部分を取得する工程に関する。
本明細書で説明する1つまたは複数の実施形態は、前景映像を取得するための命令を有する方法、装置、およびコンピュータ可読媒体を備えている。いくつかの実装では、前景映像は、空白背景を有してもよい。さらに、いくつかの実装は、キャプチャされたシーンからセグメント化された前景映像を、元のキャプチャされた背景とは異なる背景に重ねて備えている合成映像を生成してもよい。いくつかの実装では、例えば、映像会議で前景映像を提供するべく、前景映像を取得するためのセグメンテーションはリアルタイムで実行される。
図1は、本明細書に記載されたいくつかの実装で使用され得る、例示的なネットワーク環境100のブロック図を示す。いくつかの実装では、ネットワーク環境100は、1つまたは複数のサーバシステム、例えば、図1のサーバシステム102を備えている。サーバシステム102は、例えば、ネットワーク130に通信することができる。サーバシステム102は、サーバ装置104と、データベース106または他の記憶装置とを備えていることができる。いくつかの実装では、サーバ装置104は、映像アプリケーション152b、例えば、映像通話(video calling)アプリケーション、拡張現実アプリケーション、仮想現実アプリケーションなどを提供することができる。
ネットワーク環境100はまた、1つまたは複数のクライアント装置、例えば、クライアント装置120、122、124、および126を備えていることができ、これらのクライアント装置は、ネットワーク130を介して互いにおよび/またはサーバシステム102に通信することができる。ネットワーク130は、インターネット、ローカルエリアネットワーク(LAN)、無線ネットワーク、スイッチまたはハブ接続などのうちの1つまたは複数を備えている、任意のタイプの通信ネットワークとすることができる。任意のタイプの通信ネットワークであることができる。いくつかの実装では、ネットワーク130は、例えば、ピアツーピアの無線プロトコル(例えば、Bluetooth(登録商標)、Wi-Fi Directなど)などを使用して、装置同士間のピアツーピア通信を備えていることができる。2つのクライアント装置120および122間のピアツーピア通信の一例が、矢印132によって示されている。
図示を容易にするべく、図1は、サーバシステム102、サーバ装置104、データベース106のための1つのブロックを示し、クライアント装置120、122、124、126のための4つのブロックを示している。サーバブロック102、104、および106は、複数のシステム、サーバ装置、およびネットワークデータベースを表すことができ、ブロックは、示されたものとは異なる構成で提供することができる。例えば、サーバシステム102は、ネットワーク130を介して他のサーバシステムに通信可能な複数のサーバシステムを表すことができる。いくつかの実施例では、サーバシステム102は、例えば、クラウドホストサーバを備えていることができる。いくつかの例では、データベース106および/または他のストレージ装置は、サーバ装置104とは別個であって、ネットワーク130を介してサーバ装置104および他のサーバシステムに通信することができるサーバシステムブロック(複数可)に提供することができる。
また、任意の数のクライアント装置が存在してもよい。各クライアント装置は、任意のタイプの電子装置、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ポータブル装置またはモバイル装置、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックスまたはエンターテイメント装置、ウェアラブル装置(例えば、ディスプレイ眼鏡(グラス)またはゴーグル、腕時計、ヘッドセット、アームバンド、ジュエリーなど)、パーソナルデジタルアシスタント(PDA)、メディアプレイヤー、ゲーム装置などであってもよい。また、いくつかのクライアント装置は、データベース106または他のストレージと同様のローカルデータベースを有していてもよい。いくつかの実装では、ネットワーク環境100は、示されたすべての構成要素を有していなくてもよく、および/または、本明細書に記載されたものの代わりに、またはそれに加えて、他のタイプの要素を備えている他の要素を有していてもよい。
様々な実装において、エンドユーザUl、U2、U3、およびU4は、それぞれのクライアント装置120、122、124、および126を使用して、サーバシステム102および/または互いに通信することができる。いくつかの例では、ユーザUl、U2、U3、およびU4は、それぞれのクライアント装置および/またはサーバシステム102上で実行されているアプリケーションを介して、および/またはサーバシステム102上に実装されているネットワークサービスを介して、例えば、ソーシャルネットワークサービスまたは他のタイプのネットワークサービスを介して、お互いに対話することができる。例えば、それぞれのクライアント装置120、122、124、126は、1つまたは複数のサーバシステムとの間で、例えば、システム102との間でデータを通信することができる。
いくつかの実装では、サーバシステム102は、通信されたコンテンツまたはサーバシステム102および/またはネットワークサービスにアップロードされた共有されたコンテンツを各クライアント装置が受け取ることができるように、クライアント装置に適切なデータを提供してもよい。いくつかの例では、ユーザU1~U4は、オーディオ/映像通話、オーディオ、映像、もしくはテキストチャット、または他の通信モードもしくはアプリケーションを介して、対話(相互作用)することができる。サーバシステム102によって実装されるネットワークサービスは、ユーザが様々な通信を実行したり、リンクや関連を形成したり、画像、テキスト、映像、オーディオなどの共有コンテンツおよび他のタイプのコンテンツをアップロードおよび投稿したり、および/または他の機能を実行したりすることを可能にするシステムを備えていることができる。例えば、クライアント装置は、サーバおよび/またはネットワークサービスを介して(または異なるクライアント装置から直接)、別のクライアント装置から発信された、クライアント装置に送信またはストリームされたコンテンツ投稿などの受取データを表示することができる。いくつかの実装では、クライアント装置は、例えば、上述のようなクライアント装置同士間のピアツーピア通信を使用して、互いに直接通信することができる。いくつかの実装では、「ユーザ」は、1つまたは複数のプログラムまたは仮想エンティティを含んだり、システムまたはネットワークとインタフェースする人物を含んだりすることができる。
いくつかの実装では、クライアント装置120、122、124、および/または126のいずれかは、1つまたは複数のアプリケーションを提供することができる。例えば、図1に示すように、クライアント装置120は、映像アプリケーション152aおよび1つまたは複数の他のアプリケーション154を提供してもよい。また、クライアント装置122~126は、同様のアプリケーションを提供してもよい。
例えば、映像アプリケーション152は、それぞれのクライアント装置のユーザ(例えば、ユーザU1~U4)に、1人または複数の他のユーザとの映像通話に参加する能力を提供してもよい。映像通話では、ユーザの許可を得て、クライアント装置は、ローカルにキャプチャされた映像を、映像通話に参加する他の装置に送信することができる。例えば、そのような映像は、クライアント装置のカメラ(例えば、前面カメラ、背面カメラ、および/または1つまたは複数の他のカメラ)を使用してキャプチャされたライブ映像を備えていることができる。いくつかの実装では、カメラは、クライアント装置とは別個であってもよく、例えば、ネットワークを介して、クライアント装置のハードウェアポートを介してなどで、クライアント装置に結合されてもよい。映像アプリケーション152は、クライアント装置120上で実行されるソフトウェアアプリケーションであってもよい。いくつかの実装では、映像アプリケーション152は、ユーザインタフェースを提供してもよい。例えば、ユーザインタフェースは、ユーザが、1人または複数の他のユーザに映像通話をかけること、他のユーザから映像通話を受け取ること、他のユーザに映像メッセージを残すこと、他のユーザからの映像メッセージを閲覧することなどを可能にしてもよい。
映像アプリケーション152aは、図9を参照して説明したように、クライアント装置120のハードウェアおよび/またはソフトウェアを使用して実装されてもよい。異なる実装において、映像アプリケーション152aは、例えば、クライアント装置120~124のいずれかで実行されるスタンドアロンのクライアントアプリケーションであってもよいし、サーバシステム102上で提供される映像アプリケーション152bと連携して動作してもよい。映像アプリケーション152aおよび映像アプリケーション152bは、映像通話(2人以上の参加者との映像通話を含む)機能、オーディオまたは映像メッセージング機能、アドレス帳機能などを提供してもよい。
いくつかの実装では、クライアント装置120は、1つまたは複数の他のアプリケーション154を備えてもよい。例えば、他のアプリケーション154は、様々な種類の機能を提供するアプリケーションであってもよく、例えば、カレンダー、アドレス帳、電子メール、ウェブブラウザ、ショッピング、交通機関(例えば、タクシー、列車、航空会社の予約など)、娯楽(例えば、音楽プレーヤ、映像プレーヤ、ゲームアプリケーションなど)、ソーシャルネットワーキング(例えば、メッセージングまたはチャット、オーディオ/映像通話、画像/映像の共有など)、画像キャプチャおよび編集(例えば、画像または映像キャプチャ、映像編集など)などである。いくつかの実装では、他のアプリケーション154の1つまたは複数は、クライアント装置120上で実行されるスタンドアロンアプリケーションであってもよい。いくつかの実装では、他のアプリケーション154の1つまたは複数は、アプリケーション154のデータおよび/または機能を提供するサーバシステムにアクセスしてもよい。
クライアント装置120、122、124、および/または126上のユーザインタフェースは、画像、映像、データ、および他のコンテンツ、ならびに通信、プライバシー設定、通知、および他のデータを備えている、ユーザコンテンツおよび他のコンテンツの表示を可能にすることができる。このようなユーザインタフェースは、クライアント装置上のソフトウェア、サーバ装置上のソフトウェア、および/またはサーバ装置104上で実行されるクライアントソフトウェアとサーバソフトウェアの組み合わせ、例えば、サーバシステム102に通信するアプリケーションソフトウェアまたはクライアントソフトウェアを使用して、表示することができる。ユーザインタフェースは、クライアント装置またはサーバ装置のディスプレイ装置、例えば、タッチスクリーンまたは他の表示画面、プロジェクタなどによって表示することができる。いくつかの実装では、サーバシステム上で実行されるアプリケーションプログラムは、クライアント装置に通信して、クライアント装置でユーザ入力を受け取り、クライアント装置で視覚データ、音声データなどのデータを出力することができる。
本明細書に記載の機能の他の実装は、任意のタイプのシステムおよび/またはサービスを使用することができる。例えば、ソーシャルネットワーキングサービスの代わりに、またはソーシャルネットワーキングサービスに加えて、他のネットワークサービス(例えば、インターネットに接続されたもの)を使用することができる。任意のタイプの電子装置が、本明細書に記載された機能を利用することができる。いくつかの実装では、コンピュータネットワークから切り離された、またはコンピュータネットワークに断続的に接続された1つまたは複数のクライアント装置またはサーバ装置上で、本明細書に記載された1つまたは複数の機能を提供することができる。いくつかの例では、ディスプレイ装置(表示装置)を備えている、またはディスプレイ装置に接続されたクライアント装置は、クライアント装置にローカルな記憶装置に格納された、例えば、通信ネットワークを介して以前に受け取ったコンテンツ投稿を表示することができる。
図2は、いくつかの実装形態による、前景映像を取得するための方法200の一例を示すフロー図である。いくつかの実装では、方法200は、例えば、図1に示されるようなサーバシステム102上で実装することができる。いくつかの実装では、方法200の一部または全部は、図1に示すような1つまたは複数のクライアント装置120、122、124、または126で、1つまたは複数のサーバ装置で、および/またはサーバ装置(複数可)とクライアント装置(複数可)との両方で、実装することができる。説明した例では、実装システムは、1つまたは複数のデジタルプロセッサまたは処理回路(「プロセッサ」)、および1つまたは複数のストレージ装置(例えば、データベース106または他のストレージ)を備えている。いくつかの実施例では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素が、方法200の異なるブロックまたは他の部分を実行することができる。いくつかの例では、第1装置が方法200のブロックを実行するように記載されている。いくつかの実装では、第1装置に結果またはデータを送信することができる1つまたは複数の他の装置(例えば、他のクライアント装置またはサーバ装置)によって実行される方法200の1つまたは複数のブロックを有することができる。
いくつかの実装形態では、方法200、または方法の一部は、システムによって自動的に開始され得る。いくつかの実施形態では、実施システムは第1装置である。例えば、方法(またはその一部)は、定期的に実行されるか、1つまたは複数の特定のイベントまたは条件、例えば、アプリケーション(例えば、映像通話アプリケーション)がユーザによって開始されること、ユーザ装置のカメラが映像をキャプチャするべく起動されること、映像編集アプリケーションが起動されること、および/または、方法によって読み取られる設定で指定され得る1つまたは複数の他の条件が発生すること、に基づき実行され得る。いくつかの実装では、そのような条件は、保存されたユーザのカスタムプリファレンスでユーザが指定することができる。
一例では、第1装置は、カメラ、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブル装置、または映像をキャプチャすることができる他のクライアント装置であることができ、方法200を実行することができる。別の例ではサーバ装置は、映像に対して方法200を実行することができ、例えばクライアント装置は、サーバ装置によって処理される映像フレームをキャプチャすることができる。いくつかの実装では、ユーザ入力に基づき方法200を開始することができる。ユーザ(例えば、オペレータまたはエンドユーザ)は、例えば、表示されたユーザインタフェース、例えば、アプリケーションユーザインタフェースまたは他のユーザインタフェースから、方法200の開始を選択したかもしれない。いくつかの実装では、方法200は、クライアント装置によって実装されてもよい。いくつかの実装では、方法200は、サーバ装置によって実装されてもよい。
本明細書で言及する「映像」は、フレームとも呼ばれる画像フレームの、シーケンスを備えていることができる。各画像フレームは、複数の画素に対する色データおよび深度データを備えてもよい。例えば、色データは、各画素の色値を備えてもよく、深度データは、深度値、例えば、映像をキャプチャ(撮影)したカメラからの距離を備えてもよい。例えば、映像は、映像の各画像フレームが1920×1080のサイズを有し、合計1,958,400個(百九十五万八千四百個)の画素を有する高精細映像であってもよい。本明細書で説明する技術は、他の映像解像度、例えば、標準画質映像、4K映像、8K映像などに使用することができる。例えば、映像は、モバイル装置のカメラ、例えば、スマートフォンのカメラ、タブレットのカメラ、ウェアラブルのカメラなどでキャプチャ(撮影)されてもよい。別の例では、映像は、コンピュータカメラ、例えば、ラップトップカメラ、デスクトップカメラなどでキャプチャ(撮影)されてもよい。さらに別の例では、映像は、スマートスピーカ、スマートホームアプライアンス、専用の映像通話装置などの、映像通話アプライアンスまたは装置によってキャプチャ(撮影)されてもよい。いくつかの実装では、映像(ビデオ)はオーディオデータも備えていてもよい。方法200は、ブロック202で開始してもよい。
ブロック202では、方法200の実施において、ユーザデータを使用するためのユーザの同意(コンセント。例えば、ユーザの許可)が得られたかどうかが確認される。例えば、ユーザデータは、クライアント装置を使用してユーザが撮影した映像、例えばクライアント装置を使用してユーザが保存またはアクセスした映像、映像メタデータ、映像通話アプリケーションの使用に関連するユーザデータ、ユーザの好みなどを備えていることができる。本明細書に記載された方法の1つまたは複数のブロックは、いくつかの実装において、そのようなユーザデータを使用することができる。
方法200においてユーザデータが使用される可能性がある関連ユーザから、ユーザの同意が得られている場合、ブロック204において、本明細書の方法の各ブロックは、それらのブロックについて説明されているようなユーザデータの使用の可能性がある状態で実施できると判定され、方法はブロック210へと続く。ユーザの同意が得られていない場合、ブロック206において、ユーザデータを使用せずに各ブロックを実施することが決定され、方法はブロック210へと続く。いくつかの実装では、ユーザの同意が得られなかった場合、各ブロックは、ユーザデータを使用せず、合成データおよび/または一般的なデータ、公的にアクセス可能で公的に使用可能なデータを使用して実装される。いくつかの実施形態では、ユーザの同意が得られていない場合、方法200は実行されない。
方法200のブロック210では、映像の複数の映像フレームが受け取られる。例えば、複数の映像フレームは、クライアント装置によってキャプチャ(撮影)されてもよい。いくつかの実装では、複数の映像フレームは、例えば映像通話アプリケーションを介してクライアント装置が参加しているライブ映像通話の歳にキャプチャされてもよい。いくつかの実装では、複数の映像フレームは、以前に記録されたもの、例えば、記録された映像の一部であってもよい。映像は、シーケンスの(一連の)複数のフレームを備えていてもよい。いくつかの実装では、各フレームは、複数の画素の色データと深度データとを備えてもよい。
いくつかの実装では、色データは毎秒30フレームでキャプチャされてもよく、深度データは毎秒15フレームでキャプチャされてもよく、キャプチャされたフレームの半分のみがキャプチャ時に深度データを備えているようになる。例えば、深度データは、交互のフレームに対してキャプチャされてもよい。キャプチャされたフレームの1つまたは複数が深度データを持たない実装では、隣接するフレームの深度データが、例えば、先行フレームの深度データが、深度データとして利用されてもよい。例えば、映像フレームを受け取ると、1つまたは複数のフレームが深度データを持っていないかどうかを判定してもよい。フレームが深度データを欠いている場合、隣接するフレームの深度データを、例えば、映像のフレームのシーケンスにおける直前フレームの深度データを、そのフレームの深度データとして利用してもよい。ブロック210の後に、ブロック212が続いてもよい。
ブロック212では、映像がダウンサンプリングされる。いくつかの実装では、ダウンサンプリングは、映像をより小さなサイズにリサイズする工程を備えている。例えば、映像が1920×1080である場合、映像はその4分の1のサイズである480×270にリサイズされてもよい。リサイズは、処理される総データも4分の1に減少するので、例えば、方法200を実行するための計算複雑性を低減する。例えば、いくつかの実装では、方法200を実行するための処理時間は、ダウンサンプリング後、フレームあたり約90msであってもよい。いくつかの実装では、例えば、方法200を実装する装置が高い計算能力を有する場合、ダウンサンプリングは行われなくてもよい。いくつかの実装では、ダウンサンプリングされた映像のサイズは、受け取られた映像のサイズや、方法200を実行する装置の計算能力などに基づき選択されてもよい。様々な実装において、フレームの色データおよび深度データは、直接にダウンサンプリングされる。様々な実装において、色データと深度データとのビット深度は、ダウンサンプリング後も変化しない。ダウンサンプリング比、例えば、元の映像フレームの画素数に対する、ダウンサンプリングされたフレームの画素数の比の選択は、処理時間と、セグメンテーションの品質との間のトレードオフに基づいてもよい。いくつかの実装では、ダウンサンプリング比は、適切なトレードオフを達成するべく、方法200が実装される装置の利用可能な処理能力に基づき選択されることができる。いくつかの実装では、ダウンサンプリング比は、ヒューリスティックに決定されてもよい。ブロック212の後に、ブロック213が続いてもよい。
ブロック213では、ダウンサンプリングされた映像のフレームが選択される。ブロック213は、ブロック214へと続いてもよい。
ブロック214において、選択されたフレームまたは画像の各画素を、前景画素または背景画素に分類する初期セグメンテーションマスクが生成される。いくつかの実装では、初期セグメンテーションマスクは、深度範囲に基づく。各画素の深度値を深度範囲と比較して、深度値が深度範囲の内に存在するかどうかを判定してもよい。深度値が深度範囲の内に存在する場合、その画素は前景画素に分類される。深度値が深度範囲の外であれば、その画素は背景画素に分類される。このようにして生成された初期セグメンテーションマスクは、選択されたフレームの各画素について、その画素が前景画素であるか背景画素であるかを示す値を備えている。いくつかの実装では、深度範囲は、0.5メートルから1.5メートルであってもよい。例えば、この深度範囲は、方法200が映像通話アプリケーション、または映像通話に参加する1人または複数のユーザが、例えば、会議室、机などで、映像をキャプチャするカメラの近くにいる他のアプリケーションに対して実行される場合に適しているかもしれない。異なるアプリケーションでは、異なる深度範囲が使用されてもよく、例えば、それらのアプリケーションの前景オブジェクトとカメラとの間の典型的な距離に基づき深度範囲が選択される。
いくつかの実装では、初期セグメンテーションマスクは、フレームの各画素に対するマスク値を備えてもよい。例えば、或る画素が背景画素であると決定された場合、「0」のマスク値がその画素に割り当てられてもよく、或る画素が前景画素であると決定された場合、「255」のマスク値がその画素に割り当てられてもよい。
いくつかの実装形態では、初期セグメンテーションマスクを生成する工程はさらに、モルフォロジカルオープニング処理を実行する工程を備えてもよい。モルフォロジカルオープニング処理は、初期セグメンテーションマスクからノイズを除去してもよい。いくつかの実装形態では、画像をセグメント化する工程はさらに、モルフォロジカルクロージング処理を実行する工程を備えてもよい。モルフォロジカルクロージング処理は、初期セグメンテーションマスクの1つまたは複数の穴(ホール。hole)を埋めてもよい。
セグメンテーションマスク内のノイズおよび/または穴は、様々な理由によって生じる可能性がある。例えば、深度対応のカメラを使用してクライアント装置によって映像フレームがキャプチャされる場合、1つまたは複数の画素の深度値が不正確に決定される場合がある。このような不正確さは、例えば、フレームがキャプチャされる照明条件に起因して、センサエラーに起因して、キャプチャされるシーン(scene)の特徴に起因して、生じる可能性がある。例えば、1つまたは複数の画素についてカメラで深度値が取り込まれていない場合、穴が生じる可能性がある。例えば、カメラが反射型センサを使用して深度を測定する場合、シーンからの反射光が検出されないと、1つまたは複数の画素の深度値が無限大になることがある。このような画素は、セグメンテーションマスクの穴につながる可能性がある。ブロック214は、ブロック216へと続いてもよい。
ブロック216では、頭部バウンディングボックスが検出されてもよい。頭部バウンディングボックスは、頭部を備えている、または頭部を備えている可能性が高いフレームの領域を指定してもよい。例えば、映像が人物を備えている場合、頭部バウンディングボックスは、人物の頭に対応するフレームの画素を指定してもよい。いくつかの実装では、例えば映像に複数の人物が含まれる場合、頭部バウンディングボックスはフレームの複数の領域を指定してもよく、各領域は特定の人物に対応する。いくつかの実装では、頭部バウンディングボックスは、色データ、初期セグメンテーションマスク、またはその両方に基づき検出されてもよい。頭部バウンディングボックスの検出は、任意の適切な方法を用いて実行してもよい。頭部バウンディングボックスを検出する例示的な方法は、図3を参照して説明される。ブロック216の後に、ブロック218が続いてもよい。
ブロック218では、フレームの非頭部部分、例えば、頭部バウンディングボックスの外方に存在するフレームの部分について、トライマップ(trimap)が生成される。いくつかの実装では、トライマップは、初期セグメンテーションマスクに基づき生成されてもよい。トライマップは、画像の各画素を、既知前景、既知背景、および未知のうちの1つに分類してもよい。
いくつかの実装では、初期セグメンテーションマスクを生成する工程は、フレームの各画素のうち非頭部部分(頭部バウンディングボックスの外方)の画素位置と、初期セグメンテーションマスクのマスク境界との間のLI距離を算出する工程を備えてもよい。マスク境界は、例えば、画素座標で表され、少なくとも1つの前景画素が初期セグメンテーションマスクの少なくとも1つの背景画素に隣接する位置に対応してもよい。
いくつかの実装では、LI距離が前景距離閾値を満たし、初期セグメンテーションマスクで画素が「前景画素」に分類された場合、その画素は「既知前景」としてトライマップに分類される。例えば、いくつかの実装では、前景距離閾値を「24」とすることができる。これらの実装では、マスク境界からのLI距離が「24」よりも大きく、マスク値が「255」(前景画素)である画素は、「既知前景」に分類される。異なる実装では、異なる前景距離閾値を使用してもよい。
さらに、LI距離が背景距離閾値を満たし、且つ初期セグメンテーションマスクにおいて画素が背景画素に分類される場合、その画素は「既知背景」としてトライマップに分類される。例えば、いくつかの実装では、背景距離閾値を「8」と設定することができる。これらの実装では、マスク境界からのLI距離が「8」よりも大きく、マスク値が「0」(背景画素)である画素は、「既知前景」に分類される。異なる実装では、異なる背景距離の閾値を使用してもよい。いくつかの実装では、閾値は、初期セグメンテーションマスクの品質および/またはダウンサンプリング比に基づいてもよい。いくつかの実装では、初期セグメンテーションマスクの品質が低い場合には高い閾値を選択し、初期セグメンテーションマスクの品質が高い場合には低い閾値を選択してもよい。いくつかの実装では、閾値は、ダウンサンプリング比に比例して減少してもよい。
さらに、「既知前景」に分類されず、「既知背景」としても分類されない各画素は、「未知」としてトライマップに分類される。生成されたトライマップは、頭部バウンディングボックスの外方に存在するフレームの部分の「既知前景」、「既知背景」、および「未知」の領域を示してもよい。ブロック218の後には、ブロック220が続いてもよい。
ブロック220では、フレームの頭部部分、例えば、頭部バウンディングボックス内に存在するフレームの部分について、トライマップが生成される。いくつかの実装では、トライマップの生成工程は、頭部バウンディングボックス内の各画素について、その画素が既知前景であるか、既知背景であるか、または未知であるかを識別する工程を備えてもよい。
いくつかの実装では、画素を既知前景として識別する工程は、頭部バウンディングボックスに対して決定された内方マスク内に画素が存在する場合、画素を既知前景に分類する工程を備えてもよい。さらに、これらの実装では、既知背景として画素を識別する工程は、頭部バウンディングボックスに対して決定された外方マスクの外方に画素が存在する場合、既知背景として画素を分類する工程を備えてもよい。さらに、これらの実装では、画素を未知と識別する工程は、既知前景に分類されず、既知背景に分類されない画素を未知に分類する工程を備えてもよい。生成されたトライマップは、頭部バウンディングボックス内に存在するフレームの部分の既知前景、既知背景、および未知の領域を示してもよい。異なる実装では、内方マスクと外方マスクは、任意の適切な技術を使用して取得することができる。内方マスクと外方マスクを取得する方法の一例を、図4を参照して説明する。
フレームの頭部部分のトライマップを生成した後、それを画像の非頭部部分(頭部以外の部分)のトライマップに結合(merge)することで、フレーム全体のトライマップを取得することができる。このようにして、生成されたトライマップは、フレームの各画素を既知背景(BGD)、既知前景(FGD)、または未知に分類する。ブロック220の後に、ブロック222が続いてもよい。
頭部部分のトライマップの別個の生成、例えば、トライマップ生成のために内方マスクおよび外方マスクを利用することで、頭部部分のトライマップ生成における頭部特有の特徴の認識および取り込みに起因して、改善されたセグメンテーション結果を提供することができる。
ブロック222では、生成済みトライマップが精製(リファイン)され、重みマップが算出される。例えば、重みマップは、トライマップにおいて未知に分類された画素に対して算出されてもよい。重みマップは、未知に分類された各画素が、フレーム内の前景または背景に傾くレベルまたは程度を表してもよい。背景画像は、映像に対して決定され、維持される。例えば、ユーザが会議室、デスクトップコンピュータ、またはモバイル装置から映像通話(または映像ゲーム)に参加しているときなどの多くの状況では、装置のカメラは静止していてもよく、シーンは静的であってもよく、例えば、フレームの背景部分はフレームからフレームへと変化しなくてもよい。
背景画像は、映像の1つまたは複数のフレームのバイナリマスクに基づき決定されてもよい。維持された背景画像は、映像(またはダウンサンプリングされた映像)の各フレームと同じサイズの色画像であってもよい。例えば、維持された背景画像は、映像の1つまたは複数の先行フレームバイナリマスクで「背景」として識別された各画素の色値を備えていてもよい。このように、維持された背景画像は、様々な画素位置におけるシーンの背景色を示す情報を備えている。いくつかの実装では、各画素の移動平均値は、フレームのシーケンスにおける先行フレーム、例えば、2つ前のフレーム、5つ前のフレーム、10つ前のフレームなどから決定されてもよい。これらの実装では、ガウスモデルを使用して、先行フレームからの移動平均値に基づき、現在のフレームの画素が背景である可能性を推定してもよい。
いくつかの実装では、背景画像を維持する工程は、トライマップに基づき背景画像を更新する工程を、例えば、フレームのトライマップで背景(BGD)に分類される画素を更新する工程を備えてもよい。例えば、背景画像は、以下の式を用いて更新されてもよい。
[維持された背景]=0.8×[先行背景]+0.2×[新背景]。
ここで、「先行背景」は、更新前の背景の画素の色値であり、「新背景」は、トライマップの対応する画素の色値である。「維持された背景」は、更新された背景画像である。先行背景(0.8)と新背景(0.2)との係数は、アプリケーションに応じて選択することができる。いくつかの実装では、係数は、カメラの安定性に関する先行推定値に基づき選択することができる。例えば、固定カメラの場合、先行背景には係数値「0.8」を選択し、新背景には係数値「0.2」を選択してもよい。別の例では、例えば、ハンドヘルドカメラまたは動きを経験する他のカメラの場合、カメラの動きのために履歴データの価値が低くなる可能性があるので、先行背景に対して「0.5」の係数値を選択し、新背景に対して「0.5」の係数値を選択してもよい。
維持された背景画像は、トライマップ内の各画素に対する重みを指定する重みマップを決定するべく利用されてもよい。いくつかの実装では、重みマップを決定する工程は、トライマップにおいて未知(アンノウン)に分類されたフレームの各画素に対する重みを算出する工程を備えてもよい。いくつかの実装では、画素に対する重みを算出する工程は、画素色(カラー)と、背景画像の背景色(バックグラウンドカラー)との間のユークリッド距離を算出する工程を備えてもよい。重みを算出する工程はさらに、ユークリッド距離に基づき、画素が背景画素である確率を決定する工程を備えてもよい。いくつかの実装では、確率(p)は、以下の式を使用して算出されてもよい。
p=exp(-0.01×|[画素色]-[維持された背景色]|)。
いくつかの実装では、画素色と、維持された背景色とは、赤-緑-青(RGB)色空間であってもよい。確率に基づき重みを算出する工程はさらに、確率が背景確率閾値を満たすかどうかを判定する工程を備えている。例えば、p>0.5の画素が背景確率閾値を満たすように、背景確率閾値は0.5として設定されてもよい。画素が背景確率閾値を満たす場合、重みマップ内の画素に背景重み(例えば、負の値)が割り当てられる。いくつかの実装では、重み値は、カメラの安定性の推定値に基づいてもよく、例えば、カメラが安定している場合には、より高い重み値が使用され、映像のキャプチャ(撮影)中にカメラに動きがある場合には、より低い重み値が使用されてもよい。
さらに、顔領域を除いて、フレーム内の1つまたは複数の肌領域を識別するべく、肌色検出を実行してもよい。例えば、顔領域は、頭部バウンディングボックス内に存在するフレームの部分を除いて、フレームに対して肌色検出を実行することで除外されてもよい。例えば、1つまたは複数の肌領域は、フレームに描かれている手、腕、または身体の他の部分に対応していてもよい。
いくつかの実装では、フレームの色データ内の画素の色値は、RGB値であってもよい。いくつかの実装では、肌色検出は、式を使用して、肌色である可能性があるかどうかを判定するべく、各画素に対して実行されてもよい。
[肌である]=[R>95]AND[G>40]AND[B>20]AND[(R-G)>15]AND[R>B]。
ここでR、G、Bは、画素の赤、緑、青の色チャンネル値を意味する。
肌色の可能性が高いと識別された画素に基づき、1つまたは複数の肌領域が識別されてもよい。例えば、1つまたは複数の肌領域は、肌色画素の閾値距離内に存在する画素を備えている領域として識別されてもよい。例えば、閾値距離は40であってもよい。
いくつかの実装では、1つまたは複数の肌領域を識別した後、その1つまたは複数の肌領域の各画素を「未知」として設定するべく、トライマップを更新してもよい。さらに、そのような各画素にゼロ重みを割り当ててもよい。さらに、画素色を、背景画像の背景色と比較してもよい。画素色と背景色とが類似度閾値を満たす場合、その画素は、重みマップにおいて背景重み(例えば、負の値)を割り当てられる。例えば、類似度閾値は、上述したような確率閾値(例えば、p>0.5)であってもよい。
画素が(肌色検出を用いて識別された)肌色画素である場合、その画素は、重みマップにおいて前景重み(例えば、正の値)を割り当てられる。さらに、画素色と背景色とが非類似度閾値を満たす場合、その画素は、重みマップにおいて前景重み(例えば、正の値)を割り当てられる。例えば、非類似度閾値は、確率閾値(例えば、p<0.0025)であってもよい。肌領域の他の画素は、ゼロ重みを保持してもよい。ブロック222の後に、ブロック224が続いてもよい。
ブロック224では、トライマップで未知に分類された画素に対して、インコヒーレンスペナルティ重みを算出してもよい。いくつかの実装では、初期セグメンテーションマスクは、フレームのシーケンスにおける直前フレームの先行フレームバイナリマスクと比較されて、先行フレームの画素に類似して分類されるフレームの画素の割合を判定してもよい。この割合は、フレーム同士間の類似度として定義されてもよい。例えば、シーンに大きな動きがある場合には類似度が低く、ほとんど静止したシーンの場合には類似度が高くなることがある。類似度に基づき、グローバルコヒーレンス重みを算出してもよい。例えば、いくつかの実装では、グローバルコヒーレンス重みは、以下の式を用いて算出されてもよい。
w=A×2/l+exp(50×(l-類似度))。
ここで、wはグローバルコヒーレンス重みであり、Aは予め定義された定数である。
この式は、類似度が低いときにグローバルコヒーレンス重みが指数関数的に低下することを保証しており、例えば、ゼロに近い状態になる。この場合、グローバルコヒーレンス重みは、重みマップの影響を受けない。一方、類似度が高い場合には、グローバルコヒーレンス重みを高くしてもよい。このように、本明細書で説明するグローバルコヒーレンス重みは、フレームの類似度の関数である。
さらに、トライマップにおいて未知に分類される画素に対する重みは、グローバルコヒーレンス重みに基づき算出されてもよい。いくつかの実装では、画素に対する重みは、グローバルコヒーレンス重みと、画素と先行フレームバイナリマスクのマスク境界との間の距離とに基づき決定されてもよい。バイナリマスク内の対応する画素が、先行フレームバイナリマスク内の前景画素に分類される場合、その画素に対して算出される重みは正である。バイナリマスク内の対応する画素が、先行フレームバイナリマスク内の背景画素に分類される場合、その画素に対して算出される重みは負である。いくつかの実装では、重みは、距離に比例してもよい。いくつかの実装では、グローバルコヒーレンス重みを重みのカットオフ値として使用してもよく、例えば、距離がカットオフ距離値に等しいかより大きい場合、重み値をグローバルコヒーレンス重みに等しいものとして設定してもよい。算出された重みは、重みマップに格納されてもよい。いくつかの実装では、カットオフ距離値は、実験的に、例えば、多数の映像について得られたセグメンテーション結果に基づき決定されてもよい。いくつかの実装では、より高いカットオフ距離値は、隣接するフレーム同士のセグメンテーションが異なる可能性に対応し、連続するフレーム同士間のコヒーレンスが弱いことに対応する可能性がある。
この方法でトライマップで未知に分類された画素に対する重みを算出するとともに、重みマップを格納することは、連続するフレーム同士のセグメンテーション間の一貫性を確保することができ、例えば、フレーム同士が類似している場合、連続するフレームの対応する画素同士は、バイナリマスクで類似の分類を有する可能性が高くなる。これによって、そのような画素が連続するフレームのバイナリマスクにおいて異なる分類を有する場合に発生する可能性のあるフリッカーの視覚効果を低減することができる。ブロック224は、ブロック226へと続いてもよい。
ブロック226では、色データ、トライマップ、および重みマップに基づき微細(fine)セグメンテーションを実行することで、フレームのバイナリマスクが得られる。いくつかの実装では、微細セグメンテーションを実行する工程は、フレームにグラフカット技術を適用する工程を備えてもよい。色データ、トライマップ、および重みマップは、グラフカット技法を適用する際の入力として提供されてもよい。
グラフカット技術では、背景および前景の色モデルをグローバルに作成するべく、色データが利用される。例えば、ガウス混合モデル(GMM)が、そのような色モデルを構築するべく使用されてもよい。ガウス混合モデルGMMは、例えば、ユーザ入力によって得られた前景画素および背景画素の初期ラベリングを利用する。ガウス混合モデルGMMは、各未知の画素の色値(例えば、RGB値)と、初期ラベリングで前景または背景としてラベル付けされた画素との類似度レベルに基づき、未知の画素を背景の可能性が高いか前景の可能性が高いかにラベル付けする新しい画素分布を生成する。
グラフカット技術では、画像の各画素に対応するノードを備えているグラフが生成される。グラフはさらに、前景としてラベル付けされた各画素に接続されたソースノードと、背景としてラベル付けされた各画素に接続されたシンクノードとである2つの追加ノードを備えている。さらに、グラフカット技術は、各画素について、その画素が背景または前景である可能性を示す重みを算出する工程も備えている。重みは、画素をソースノード/シンクノードに接続するエッジに割り当てられる。グラフカット技術では、画素同士間の重みは、エッジ情報または画素類似度(色の類似度)によって定義される。2つの画素の画素色に大きな差がある場合、2つの画素を結ぶエッジには低い重みが割り当てられる。エッジを除去することで前景と背景とを分離するべく、例えば、コスト関数を最小化することで反復(iterative)カットを実行する。例えば、コスト関数は、カットされるエッジの重みの合計とすることができる。
いくつかの実装では、グラフカット技術は、トライマップで未知に分類されたフレームの画素に適用される。これらの実装では、既知前景および既知背景として識別された画素は、グラフカットから除外される。いくつかの実装では、グラフカット技法を適用する際に、グローバル色モデルが無効化される。グローバル色モデルを無効にすると、例えば、上述のように前景および背景のためのグローバル色モデルを構築する必要がなくなり、代わりにトライマップからの分類を使用することで、算出資源を節約することができる。
フレームの小さな割合(トライマップの未知の部分)に対してグラフカット技術を適用し、トライマップの既知前景および既知背景を除外すると、既知前景および既知背景の画素がグラフに追加されないので、セグメンテーションのパフォーマンスを向上させることができる。例えば、バイナリマスクを取得するべく処理されるグラフのサイズは、上述したような色モデルベースのグラフカット技術が利用されるときのグラフのサイズよりも小さくてもよい。一例では、既知前景および既知背景を除外することで、既知前景および既知背景が含まれる場合の計算負荷の約33%であるグラフカットの計算負荷を得ることができる。ブロック226は、ブロック228へと続いてもよい。
ブロック228において、時間的ローパスフィルタが、例えば、グラフカット技術によって生成されるバイナリマスクに適用されてもよい。時間的ローパスフィルタを適用する工程は、微細セグメンテーションを実行することの一部として実行されてもよい。映像でキャプチャ(撮影)されたシーンが静止していても、対応する画素の深度値は、連続するフレーム同士間で変化することがある。これは、センサでキャプチャされる深度データが不完全であることによって起こる可能性がある。時間的ローパスフィルタは、1つまたは複数の先行フレームと、現在のフレームとの類似度に基づき、バイナリマスクを更新する。例えば、複数の映像フレームでキャプチャ(撮影)されたシーンが静止している場合、連続したフレームは、対応する画素について同様の深度値を備えている可能性がある。シーンが静止している間に、対応する画素の深度値に変動がある場合、そのような深度値は誤っている可能性があり、時間的ローパスフィルタを使用して更新される。1つまたは複数の先行フレームと現在のフレームとの間の類似度が高い場合、時間的ローパスフィルタを適用することで、現在のフレームのセグメンテーションが、1つまたは複数の先行フレームのセグメンテーションに一致するようになる。類似度が低い場合、例えば、シーンが静止していない場合には、時間的ローパスフィルタによって生成される一貫性は弱くなる。ブロック228の後には、ブロック230が続いてもよい。
ブロック230では、微細セグメンテーションを実行することの一部として、ガウス(ガウシアン)フィルタがバイナリマスクに適用されてもよい。ガウスフィルタは、バイナリマスクにおけるセグメンテーション境界を平滑化してもよい。ガウスフィルタを適用することは、アルファマットを提供することができ、例えば、毛の生えたまたはファジーな前景オブジェクトを、バイナリマスクが背景から分離することを保証することができる。ブロック230は、ブロック232へと続いてもよい。
ブロック232では、バイナリマスクが決定されるべき映像のフレームがさらに存在するかどうかが判定される。処理すべき別のフレームがあると判定された場合、ブロック232はブロック213へと続いて、フレームを、例えば、フレームのシーケンスにおける次のフレームを選択してもよい。残りのフレームがない(映像全体が処理された)場合、ブロック232の後にブロック234が続いてもよい。
ブロック234では、複数のフレームのそれぞれについて得られたそれぞれのバイナリマスクが、例えば、元の映像のサイズにアップサンプリングされ、前景映像を取得するべく利用される。例えば、映像の各フレームに対する前景マスクは、それぞれのアップサンプリングされたバイナリマスクを用いて決定されてもよく、前景映像に含まれるべき映像の画素を識別するべく利用されてもよい。ブロック234の後には、ブロック236が続いてもよい。
ブロック236では、前景映像がレンダリングされてもよい。いくつかの実装では、前景映像をレンダリングする工程は、バイナリマスクを用いてセグメント化された、前景を備えている複数のフレームを生成する工程を備えてもよい。いくつかの実装では、レンダリングはさらに、前景映像を備えているユーザインタフェースを表示する工程を備えてもよい。例えば、前景映像は、映像通話アプリケーションまたは他のアプリケーションに表示されてもよい。いくつかの実装では、前景映像は、背景無しで、例えば、空白背景で表示されてもよい。いくつかの実装では、映像の元の背景とは異なる背景が、前景映像とともに提供されてもよい。
背景を減算して前景映像を取得することで、任意の適切なまたはユーザが好む背景を、映像に提供することができる。例えば、映像通話アプリケーションにおいて、ユーザは、背景を特定のシーンで置換するという好みを示すことができ、そのような背景が前景映像とともに表示されてもよい。例えば、このように背景を置換することで映像通話の参加者は、背景部分を置換することで、参加者が映像通話に参加した部屋の乱雑さを映像から取り除くことができる。
いくつかの実装では、方法200は、マルチスレッド方式で実装されてもよく、例えば、方法200またはその一部を実装する複数のスレッドが、例えば、マルチコアプロセッサ、グラフィックプロセッサなどで同時に実行されてもよい。さらに、方法200のスレッドは、他のスレッド、例えば、映像をキャプチャする1つまたは複数のスレッド、および/または、セグメント化後の映像を表示する1つまたは複数のスレッドと同時に実行されてもよい。いくつかの実装では、セグメンテーションはリアルタイムで実行される。いくつかの実装では、毎秒30フレームのレートで、リアルタイムのセグメント化を実行することができる。
頭部バウンディングボックスを検出することで、フレームのセグメンテーションの品質を向上させることができる。多くのアプリケーション、例えば、映像通話アプリケーションでは、人物の頭部は、例えば映像通話の参加者の頭部は、他の参加者の注目の的である。よって、頭部の境界を正確に検出することは、高品質な前景映像を提供するべく貴重である。例えば、高品質の前景映像は、参加者の頭部を備えているすべての(またはほぼすべての)画素を備えており、同時に背景画素を除外することができる。高品質の前景映像では、髪や首などの微細エリアが正確にセグメント化される。頭部バウンディングボックスを検出することで、前景映像を高品質な映像とすることができる。
いくつかの実装では、図2に図示されたブロックの1つまたは複数が、組み合わされてもよい。例えば、ブロック218および220は結合されてもよく、または並行して実行されてもよい。別の例では、ブロック222をブロック224と組み合わせてもよい。いくつかの実装では、1つまたは複数のブロックが実行されなくてもよい。例えば、いくつかの実施態様では、ブロック224は実行されない。これらの実装では、インコヒーレンスペナルティ重みは算出されない。別の例では、いくつかの実装では、ブロック228は実行されなくてもよい。いくつかの実装では、ガウスフィルタを適用した後に得られたバイナリマスクが、前景映像を取得するべくブロック234で直接使用されるように、ブロック232が実行されなくてもよい。
いくつかの実装では、方法200のブロックは、図2に図示されているのと並行して、または異なる順序で実行されてもよい。例えば、いくつかの実装では、受け取られた映像は、それぞれが映像フレームのサブセットを備えている複数の映像セグメントに分割されてもよい。そして、各映像セグメントは、前景セグメントを取得するべく方法200を用いて処理されてもよい。これらの実装では、異なる映像セグメント同士が並行して処理されてもよく、得られた前景セグメント同士は、前景映像を形成するべく結合されてもよい。
いくつかの実装では、例えば、映像のキャプチャと、前景映像のレンダリングまたは表示との間にほとんどまたは全く知覚可能なラグがないように、前景映像はリアルタイムでレンダリングされてもよい。いくつかの実装では、アップサンプリングおよび前景映像のレンダリング(ブロック234および236)は、映像の一部分に対して、映像の後続部分に対するブロック213~232と並行して実行されてもよい。
前景映像のレンダリングと並行して方法200またはその一部を実行することで、ユーザが知覚できるラグ無しに、前景映像をリアルタイムで表示することができる場合がある。さらに、並列実行(例えば、マルチスレッドアプローチを使用して)は、利用可能なハードウェアリソース、例えば、マルチコアプロセッサの複数のコア、グラフィックスプロセッサなどを有利に利用することができる。
方法200は、クライアント装置(例えば、クライアント装置120~126のいずれか)および/またはサーバ装置(例えば、サーバ装置104)によって実行されてもよい。例えば、いくつかの実装では、クライアント装置は、映像をキャプチャし、方法200を実行して前景映像をローカルにレンダリングしてもよい。例えば、方法200は、クライアント装置が適切な処理ハードウェア、例えば、専用のグラフィックス処理ユニット(GPU)または他の画像処理ユニット、例えば、ASIC、FPGAなどを有する場合、ローカルで実行されてもよい。別の例では、いくつかの実装において、クライアント装置は、映像をキャプチャし、その映像を、前景映像をレンダリングするべく方法200を実行するサーバ装置に送信してもよい。例えば、方法200は、クライアント装置が方法200を実行するための処理能力を欠いている場合や、その他の状況、例えば、クライアント装置で利用可能なバッテリ電力が閾値を下回っている場合、サーバ装置によって実行されてもよい。いくつかの実装では、方法200は、映像をキャプチャした装置以外のクライアント装置によって実行されてもよい。例えば、映像通話の送信装置は、映像フレームをキャプチャして受取装置に送信してもよい。受取装置は、前景映像をレンダリングするべく方法200を実行してもよい。このような実装は、送信装置が方法200をリアルタイムで実行する能力を欠いている場合に有利である。
図3は、いくつかの実装による、頭部バウンディングボックスを検出する例示的な方法300を示すフロー図である。例えば、方法300は、ブロック216において、映像フレームのために頭部バウンディングボックスを検出するべく利用されてもよい。
方法300は、ブロック302で開始してもよい。ブロック302では、色画像(例えば、映像のフレーム)と、対応するセグメンテーションマスクとを受け取ってもよい。例えば、セグメンテーションマスクは、例えば、方法200のブロック214で決定されたように、映像フレームの深度データから決定された、初期セグメンテーションマスクであってもよい。初期セグメンテーションマスクはバイナリであってもよく、例えば、初期セグメンテーションマスクは、色画像の各画素を、前景画素または背景画素に分類してもよい。ブロック302の後に、ブロック304が続いてもよい。
ブロック304では、受け取られた画像(フレーム)をグレースケールに変換する。ブロック304から続いて、ブロック306があってもよい。
ブロック306では、グレースケール画像に対してヒストグラム均等化が行われる。ブロック306には、ブロック308が続いてもよい。
ブロック308において、Haarカスケード顔検出が、画像内の1つまたは複数の顔を検出するべく実行される。検出された各顔に対して、その顔に対応する顔画素を備えている顔エリアが識別される。ブロック308には、ブロック310が続いてもよい。
ブロック310において、検出された顔は、初期セグメンテーションマスクを使用して検証される。いくつかの実装では、検出された各顔について、顔エリアの画素の少なくとも閾値の割合が、初期セグメンテーションマスクにおいて前景画素に分類されているかどうかが判定される。ブロック310の後に、ブロック312が続いてもよい。
ブロック312では、検出された顔が、十分な肌エリアを有するかどうかも判定される。検出された顔が十分な肌エリアを有するかどうかの判定は、顔エリアの画素の少なくとも閾値の割合が、肌色であるかどうかを判定することを備えてもよい。例えば、画素が肌色であるかどうかの判定は、画素の色値に基づき実行されてもよい。いくつかの実装では、フレームの色データ内の画素の色値は、RGB値であってもよい。いくつかの実装では、式で与えられる肌色基準を使用して、肌色である可能性があるかどうかを判定するべく、各画素に対して肌色検出が実行されてもよい。
[肌である]=[R>95]AND[G>40]AND[B>20]AND[(R-G)>15]AND[R>B]。
ここでR、G、およびBは画素の赤、緑、および青の色チャンネル値を指す。
いくつかの実装では、ブロック310および312は、画像内の検出された各顔に対して実行されてもよい。ブロック312の後には、ブロック314が続いてもよい。
ブロック314では、画像が少なくとも1つの有効な顔を備えているかどうかが判定される。例えば、ブロック314は、検出された各顔に対して実行されてもよい。いくつかの実装では、顔のための顔エリアが、前景画素に分類された画素の少なくとも閾値割合を備えており、顔の顔エリアの画素の少なくとも閾値パーセントが肌色であることが検証された場合、顔が有効であると判定される。いくつかの実装では、前景画素に分類された画素の閾値割合は0.6(60%)であってもよく、肌色である顔の顔エリアの画素の閾値パーセントは0.2(20%)であってもよい。ブロック314で少なくとも有効な顔が検出された場合、ブロック314の後にブロック316が続いてもよい。顔が検出されない場合、ブロック314はブロック320へと続いてもよい。
ブロック316では、各有効な顔の顔エリアは、頭部エリアをカバーするように拡大される。いくつかの実装では、拡大は、有効な顔のための顔バウンディングボックスを特定パーセントで拡大して実行されてもよい。ブロック316の後には、ブロック330が続いてもよい。
ブロック330では、頭部バウンディングボックスを取得してもよい。例えば、頭部バウンディングボックスは、顔エリアと、さらに、髪領域、首領域、または襟領域を備えてもよい。頭部バウンディングボックスは、例えば、画像が複数の有効な顔を備えている場合には、画像の複数の異なる領域を識別してもよい。
ブロック320では、初期セグメンテーションマスクを分析して、画像内の頭部を検出する。いくつかの実装では、初期セグメンテーションマスクに基づく水平スキャンラインが、最初に算出される。スキャンラインの接続が分析され、接続に基づき、頭部エリアの位置を検出するべく、位置および/またはサイズが決定される。ブロック320の後に、ブロック322が続いてもよい。
ブロック322では、検出された頭部が有効であるかどうかが判定される。例えば、判定は、例えば、ブロック312における顔の肌色の検証と同様に、頭部の肌色の検証を実行することに基づいてもよい。ブロック322の後には、ブロック324が続いてもよい。
ブロック324では、画像内に有効な頭部が検出されたかどうかが判定される。有効な頭部が検出された場合、ブロック324は、ブロック330へと続いてもよい。頭部が検出されない場合、ブロック324の後にブロック326が続いてもよい。
ブロック326では、画像の画素が頭部バウンディングボックス内に存在しないように、頭部バウンディングボックスを空(から)またはヌルに設定してもよい。空の頭部バウンディングボックスは、画像内に頭部が検出されなかったことを示してもよい。頭部が検出されない場合、非頭部部分のトライマップは、フレームのトライマップとなる。いくつかの実装では、頭部の検出をオフにして、画像のすべてのエリアがトライマップで同様に扱われるようにしてもよい。
方法300は、いくつかの技術的利点を提供することができる。例えば、Haarカスケード顔検出技術の使用は、例えば、フレーム内に複数の人物が存在する場合、複数の頭部を検出することができる。さらに、ブロック310および312を参照して説明したような顔の検証は、偽陽性(ブロック308のHaarカスケード顔検出中に顔エリアとして誤って識別された非顔エリア)が排除されることを確実にすることができる。さらに、ブロック316を参照して説明したような顔エリアの拡大は、髪、首、襟などの領域がトライマップ内の既知前景として識別されることを確実にすることができ、よって高品質のセグメンテーションを可能にする。
さらに、Haar顔検出によって顔が検出されない場合(または検出された顔が検証されない場合)、ブロック320および322を参照して説明したように、初期セグメンテーションマスクのマスク分析および検証によって、頭部バウンディングボックスを構築することができる。このようにして、本技術は、例えば、Haarカスケード顔検出が顔を検出できない状況などの偽陰性を補償することができる。いくつかの実装では、マスク分析に基づく頭部検出は、高い検出比(例えば、Haarカスケード顔検出よりも高い)を提供することができ、より低い計算コストを有する。
図4は、いくつかの実装形態による、頭部領域のためのトライマップを生成する例示的な方法400を示すフロー図である。方法400は、ブロック402で開始してもよい。
ブロック402では、色画像、深度マスク(例えば、初期セグメンテーションマスク)、および頭部バウンディングボックスを受け取ってもよい。例えば、色画像は、映像のフレームに対応していてもよく、フレームの画素の色データを備えていてもよい。ブロック402には、ブロック404が続いてもよい。
ブロック404では、頭部エリア(例えば、頭部バウンディングボックスによって識別される)の近くの背景が、存在するどうかが検出される。例えば、頭部エリアの近く、例えば髪エリアの近くに存在する画像の画素が、明るく均一であるかどうかが検出されてもよい。このような背景では、カメラの深度センサが髪エリアの深度を検出できなかったり、髪エリアの誤った深度を検出してしまったりすることが多い。頭部エリア付近に均一な明るさの背景が検出された場合、髪エリアの拡張を実行する。髪エリアの拡張は、外方マスクを作成するための拡張(dilation)サイズの増加を引き起こす。ブロック404は、ブロック406へと続いてもよい。
ブロック406では、首エリアおよび/または肩エリアのための内方マスク縮小が実行され、内方マスクが得られる。内方マスクでは、首(または肩)の周りのエリアが消去される。このような消去は、首のエリア付近の誤ったまたは信頼性のない深度データを補償することができる。ブロック406は、ブロック408へと続いてもよい。
ブロック408では、内方マスクの拡大が行われる。例えば、肌色であって内方マスクの近くの画素は、画素が肌色であるかどうかを判定するべく分析されてもよい。画素が肌色である場合、そのような画素は内方マスクに追加され、これによって、例えばブロック406を実行する際に発生する可能性のある過度の浸食を回避することができる。ブロック408は、ブロック410へと続いてもよい。
ブロック410では、内方マスクの色領域を拡大することができる。これによっても、例えば色エリアに対してブロック406を実行する際に発生する可能性のある過度の侵食を回避することができる。ブロック410は、ブロック412へと続いてもよい。
ブロック412では、マスクのモルフォロジカル(形態的)拡張が実行されて、外方マスクが得られる。ブロック412は、ブロック414へと続いてもよい。方法400は、カメラによってキャプチャされた深度データが他の部分よりも信頼性が低いことが多い頭部領域、例えば首領域および襟領域のトライマップを改善してもよい。前景エリアを識別するべく肌色を使用することで、トライマップを改善することができる。
図5は、色部分(502)および対応するマスク(504)を有する映像フレームの例を示す。図5に見られるように、映像フレーム(502)の前景は、腕を上げた人物を備えている。映像フレームの背景には、ホワイトボードと、前景の人物に背を向けてワークステーションにいる別の人物とを有するオフィス環境が含まれる。
マスク(504)は、初期セグメンテーションマスクであってもよい。例えば、マスク(504)は、フレーム(502)の各画素を前景画素または背景画素に分類するセグメンテーションマスクであってもよい。図5では、マスクの前景画素は白色であり、背景画素は黒色である。見て分かるように、セグメンテーションマスクは、フレームの画素を正確に分類していない。
例えば、画像の左上象限にいくつかの白い画素が見られる。これらの画素は画像の背景部分に相当するが、マスクでは「前景」に分類されている。また、前景の人物の左腕付近に存在するガラス窓やホワイトボードの一部が、誤って「前景」に分類されている。また、色画像では人物の個々の指が見えているが、マスクでは指の領域が正確に描かれていない。よって、図5のマスクを使って得られる前景フレームは、このようなセグメンテーションエラーによって低品質になってしまう。
図6は、上述したようなトライマップを使用せずに、前景と背景を分離した2つの例示的な画像を示す。第1画像(602)では、画像の残りの部分が、人物を備えている前景から、背景(薄い灰色)を正しく分離する一方で、人物の首の近くのエリア(604)は、前景として誤って識別されていることがわかる。第2画像(612)では、画像の他の部分が背景(薄いグレー)を、人物を備えている前景から正しく分離しているのに対し、人物の挙げた手の近くのエリア(614)は、前景として誤って認識されていることがわかる。各画像(602、612)において、背景の一部が前景として誤って認識されているので、前景の一部は、例えば人物の首の領域(604)や指や手の領域(614)は、このように正しくセグメント化されていない。
図7は、トライマップの一部が識別された画像(702)の例を示している。図7では、元の画像の画素色とは異なる、修正された色を持つ画像の画素が、トライマップの未知の部分に分類される。3つの別々の色は、異なる重みを持つトライマップの部分を示すべく利用される。画像702の赤色部分は、重みマップの中で前景重みを持っている。画像702の青色部分は、重みマップにおいて背景重みを持っている。画像702の緑色部分は、重みマップにおいてニュートラル(例えば、ゼロ)の重みを有しており、未知に分類される。
図7に見られるように、赤色部分は、トライマップの他の部分よりも人物の身体に近く、例えば、赤色画素は、緑色部分および青色部分よりも、右腕および右脇の領域の内半分の近くに見られる。また、人物の身体に近い緑色部分は、例えば、画像中の人物の左腕の外方に見られるようになる。トライマップで背景に分類されている青色部分は、人物の身体からさらに離れていることがわかる。
グラフカットアルゴリズムへの入力として提供されるトライマップと重みマップとには、前景領域(腕の外方部分や、人物の身体の他の部分)を背景に分類することにペナルティを課す重みと、背景重みによって背景を正しく除去することを可能にする重みとが含まれている。頭部に特化した最適化を備えている特別に生成されたトライマップの使用によって、例えば、頭部バウンディングボックスを使用した頭部部分トライマップの生成、および肌エリア検出(例えば、手領域)によって、グラフカット出力を可能にし、よって画像の改善されたセグメンテーションを提供することを可能にする。例えば、未知に分類された画素のみにグラフカットを実行することを可能にする、グラフカットのカスタム実装が利用される。グラフカットは、画像のごく一部、例えば、トライマップで未知に分類された画素(図7の修正色部分)のみに適用され、他の画素はグラフに追加されないので、グラフカットを実行するための計算コストは削減される。いくつかの実装では、トライマップを用いたグラフカットの処理時間は、画像全体の処理時間の約3分の1以下になることがある。
図8は、入力映像の4つのフレーム(802、812、822、832)を示すとともに、いくつかの実装に従って入力映像をセグメント化することで生成された前景を備えている出力映像の対応する出力フレーム(804、814、824、834)を示す図である。見ることができるように出力フレームのそれぞれにおいて前景は、山のシーンに置き換えられた会議室の背景から分離されている。特に、このセグメンテーションは、動きが存在しても正確である。例えば、前景の人物がフレーム802と812の間で動き、フレーム822では指を離して手を挙げ、フレーム832では手を回している。いずれの場合でも、対応する出力フレームには元の背景の部分が見られない(または最小限の部分のみが見られる)ので、対応する出力フレームは前景を正しくセグメント化する。
図9は、本明細書に記載された1つまたは複数の機能を実装するべく使用され得る例示的な装置900のブロック図である。一例では、装置900は、クライアント装置、例えば、図1に示されたクライアント装置のいずれかを実装するべく使用され得る。あるいは、装置900は、サーバ装置、例えば、サーバシステム102またはサーバ装置104を実装することができる。いくつかの実装では、装置900は、クライアント装置、サーバ装置、またはクライアント装置とサーバ装置の両方を実装するべく使用することができる。装置900は、上述したように、任意の適切なコンピュータシステム、サーバ、または他の電子装置もしくはハードウェア装置であり得る。
本明細書に記載された1つまたは複数の方法は、任意のタイプのコンピューティング装置上で実行可能なスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティング装置、例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブル装置(腕時計、アームバンド、ジュエリー、ヘッドウェア、仮想現実(バーチャルリアリティ)ゴーグルまたはグラス、拡張現実(オーグメンテッドリアリティ)ゴーグルまたはグラス、ヘッドマウントディスプレイなど)、ラップトップコンピュータなど上で実行されるモバイルアプリケーション(「アプリ」)プログラムで実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、モバイルコンピューティング装置(クライアント装置として)は、ユーザ入力データをサーバ装置に送信し、サーバから出力用(例えば、表示用)の最終出力データを受け取る。別の例では、すべての計算は、モバイルコンピューティング装置上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティング装置と、1つまたは複数のサーバ装置との間で分割することができる。
いくつかの実装では、装置900は、プロセッサ902、メモリ904、入出力(I/O)インタフェース906、およびカメラ914を備えている。プロセッサ902は、プログラムコードを実行し、装置900の基本動作を制御する1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号、または他の情報を処理する任意の適切なハードウェアシステム、機構、または構成要素を備えている。プロセッサは、1つまたは複数のコア(例えば、シングルコア、デュアルコア、またはマルチコア構成)を有する汎用中央処理装置(CPU)、複数の処理ユニット(例えば、マルチプロセッサ構成)、グラフィック処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、複合プログラマブルロジック装置(CPLD)、機能を実現するための専用回路、ニューラルネットワークモデルベースの処理を実装するための特殊目的プロセッサ、ニューラル回路、行列計算(例えば、行列乗算)に最適化されたプロセッサを有するシステム、または他のシステムを備えていることができる。
いくつかの実装では、プロセッサ902は、CPUおよびGPU(または他の並列プロセッサ)を備えてもよい。実装では、GPUまたは並列プロセッサは、並列に計算を実行することができる複数の処理コア、例えば、100個のコア、1000個のコアなどを備えてもよい。さらに、GPUまたは並列プロセッサは、メインメモリ904とは別のGPUメモリを備えてもよい。GPUメモリは、各GPUコアによってアクセス可能であってもよい。メインメモリ904とGPUメモリとの間でデータを転送することを可能にする、インタフェースが提供されてもよい。
いくつかの実装では、GPUは、方法200、300、もしくは400、またはその一部を実装するべく利用されてもよい。特に、GPUは、背景と前景のセグメンテーションに基づき映像フレームをレンダリングするべく、例えば、背景を減算した後に前景映像をレンダリングするべく利用されてもよい。また、GPUは、背景を別の背景で置き換えてもよい。いくつかの実装では、色データおよび深度データは、GPUメモリ(GPUバッファとも呼ばれる)に格納されてもよい。これらの実装では、色データおよび深度データは、CPUを使用してデータを処理するよりも高速である可能性があるGPUによって、処理されてもよい。
いくつかの実装では、プロセッサ902は、ニューラルネットワーク処理を実装する1つまたは複数のコプロセッサを備えてもよい。いくつかの実装では、プロセッサ902は、確率的な出力を生成するべくデータを処理するプロセッサであってもよく、例えば、プロセッサ902によって生成される出力は、不正確であってもよく、予想される出力からの範囲内で正確であってもよい。処理は、特定の地理的位置に限定される必要はなく、また、時間的な制限を有する必要もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などでその機能を実行してもよい。処理の一部は、異なる時間に、異なる場所で、異なる(または同じ)処理システムによって実行されてもよい。コンピュータは、メモリに通信する任意のプロセッサであってもよい。
メモリ904は、典型的には、プロセッサ902によるアクセスのために装置900に設けられており、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能読取専用メモリ(EEPROM)、フラッシュメモリなどの任意の適切なプロセッサ可読記憶媒体であってもよく、プロセッサによる実行のための命令を記憶するのに適しており、プロセッサ902とは別個に配置され、および/またはプロセッサ902と統合されている。メモリ904は、オペレーティングシステム908、映像通話アプリケーション910、およびアプリケーションデータ912を備えているサーバ装置900上で、プロセッサ902によって動作するソフトウェアを格納することができる。また、1つまたは複数の他のアプリケーションがメモリ904に格納されてもよい。例えば、他のアプリケーションは、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジン、画像/映像編集アプリケーション、メディア共有アプリケーションなどのアプリケーションを備えてもよい。いくつかの実装では、映像通話アプリケーション910および/または他のアプリケーションはそれぞれ、プロセッサ902が本明細書に記載された機能、例えば、図2、図3、または図4の方法の一部またはすべてを実行することを可能にする命令を備えていることができる。本明細書に開示される1つまたは複数の方法は、いくつかの環境およびプラットフォームで動作することができ、例えば、任意のタイプのコンピューティング装置上で実行可能なスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティング装置上で実行されるモバイルアプリケーション(「アプリ」)として、などである。
アプリケーションデータ912は、映像を、例えば、映像フレームのシーケンスを備えていることができる。特に、アプリケーションデータ912は、映像の複数の映像フレームのうちの各フレームの色データおよび深度データを備えていることができる。
メモリ904内のソフトウェアのいずれかは、代替的に、任意の他の適切な記憶(ストレージ)場所またはコンピュータ可読媒体に格納することができる。さらに、メモリ904(および/または他の接続されたストレージ装置(複数可))は、1つまたは複数のメッセージ、1つまたは複数の分類法、電子百科事典、辞書、シソーラス、知識ベース、メッセージデータ、文法、ユーザプリファレンス、および/または本明細書に記載された機能で使用される他の命令およびデータを格納することができる。メモリ904および他のあらゆるタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形メディア)は、「ストレージ」または「ストレージ装置」とみなすことができる。
入出力インタフェース906は、装置900を他のシステムおよび装置とインタフェースすることを可能にする機能を提供することができる。インタフェースされた装置は、装置900の一部として含まれることができ、または別個のものであり、装置900に通信することができる。例えば、ネットワーク通信装置、記憶(ストレージ)装置(例えば、メモリおよび/またはデータベース106)、および入出力装置は、入出力インタフェース906を介して通信することができる。いくつかの実装では、入出力インタフェースは、入力装置(キーボード、ポインティング装置、タッチスクリーン、マイク、カメラ、スキャナ、センサなど)および/または出力装置(ディスプレイ装置、スピーカ装置、プリンタ、モータなど)などのインタフェース装置に接続することができる。
入出力インタフェース906に接続することができるインタフェース化された装置のいくつかの例は、コンテンツ、例えば、画像を、映像を、および/または本明細書に記載されるような出力アプリケーションのユーザインタフェースを、表示するべく使用することができる1つまたは複数のディスプレイ装置930を備えていることができる。ディスプレイ装置930は、ローカル接続(例えば、ディスプレイバス)を介しておよび/またはネットワーク接続を介して装置900に接続することができ、任意の適切なディスプレイ装置とすることができる。ディスプレイ装置930は、LCD、LED(OLEDを備えている)、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚的ディスプレイ装置などの任意の適切なディスプレイ装置を備えていることができる。例えば、ディスプレイ装置930は、モバイル装置に設けられたフラットなディスプレイ画面、ゴーグルやヘッドセット装置に設けられた複数のディスプレイ画面、またはコンピュータ装置のモニタ画面とすることができる。
入出力インタフェース906は、他の入力および出力装置にインタフェースすることができる。いくつかの例は、画像および/または映像をキャプチャすることができるカメラ932を備えている。特に、カメラ932は、映像の各映像フレームの色データおよび深度データをキャプチャ(捕捉)することができる。いくつかの実装は、音(例えば、キャプチャされた画像、音声コマンドなどの一部として)をキャプチャするためのマイクロフォン、音を出力するためのオーディオスピーカ装置、または他の入出力装置を提供することができる。
図示を容易にするべく、図9は、プロセッサ902、メモリ904、入出力インタフェース906、ソフトウェアブロック908および910、ならびにアプリケーションデータ912のそれぞれについて1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、入出力インタフェース、アプリケーション、および/またはソフトウェアモジュールを表してもよい。他の実装では、装置900は、示されたすべての構成要素を有していなくてもよく、および/または、本明細書に示されたものの代わりに、またはそれに加えて、他のタイプの要素を備えている他の要素を有していてもよい。いくつかの構成要素は、本明細書のいくつかの実装で説明されているようなブロックおよび動作を実行するものとして説明されているが、環境100、装置900、同様のシステム、任意の適切なプロセッサ、またはそのようなシステムに関連するプロセッサの、任意の適切な構成要素、または構成要素の組み合わせは、説明されているブロックおよび動作を実行することができる。
本明細書に記載の方法は、コンピュータプログラム命令またはコードによって実装することができ、これらはコンピュータ上で実行することができる。例えば、コードは、1つまたは複数のデジタルプロセッサ(例えば、マイクロプロセッサまたは他の処理回路)によって実装することができ、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、リジッド磁気ディスク、光ディスク、ソリッドステートメモリドライブなどを備えている、磁気、光学、電磁、または半導体記憶媒体などの非一時的な(非一過性の)コンピュータ可読媒体(例えば、記憶媒体)を備えているコンピュータプログラム製品に格納することができる。また、プログラム命令は、例えば、サーバ(例えば、分散型システムおよび/またはクラウドコンピューティングシステム)から配信されるSaaS(Software as a Service)の形で、電子信号に含まれ、電子信号として提供することもできる。あるいは、1つまたは複数の方法を、ハードウェア(論理ゲートなど)で、またはハードウェアとソフトウェアの組み合わせで実装することができる。ハードウェアの例としては、プログラマブルなプロセッサ(例えば、FPGA(Field-Programmable Gate Array)、Complex Programmable Logic Device)、汎用プロセッサ、グラフィックスプロセッサ、ASIC(Application Specific Integrated Circuits)などを挙げることができる。1つまたは複数の方法は、システム上で動作するアプリケーションの一部または構成要素として、または他のアプリケーションやオペレーティングシステムと連携して動作するアプリケーションまたはソフトウェアとして実行することができる。
本明細書では、その特定の実装に関して説明してきたが、これらの特定の実装は単に例示的なものであり、制限的なものではない。実施例で説明した概念は、他の実施例および実装に適用することができる。
本明細書で議論した特定の実装が、ユーザに関する個人情報(例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの場所およびその場所での時間、ユーザのバイオメトリック情報、ユーザの活動および人口統計学的情報)を収集または使用する可能性がある状況では、ユーザは、情報が収集されるかどうか、個人情報が保存されるかどうか、個人情報が使用されるかどうか、およびユーザについて情報が収集され、保存され、使用される方法を、制御する1つまたは複数の機会を提供される。すなわち、本明細書で説明するシステムおよび方法は、ユーザの個人情報を収集、保存および/または使用することについて、関連するユーザから明示的な承認を受けた上で、具体的に収集、保存および/または使用する。例えば、プログラムや機能が、その特定のユーザや、プログラムや機能に関連する他のユーザに関するユーザ情報を収集するかどうかを、ユーザが制御できるようになっている。個人情報が収集される各ユーザには、そのユーザに関連する情報収集の制御を可能にする1つまたは複数のオプションが提示され、情報が収集されるかどうか、および情報のどの部分が収集されるかに関する許可または承認を提供する。例えば、ユーザには、通信ネットワークを介して1つまたは複数のそのような制御オプションを提供することができる。さらに、特定のデータは、保存または使用される前に、1つまたは複数の方法で処理され、個人を特定できる情報が削除される場合がある。一例として、ユーザのアイデンティティは、個人を特定できるような情報が判定されないように処理される。別の例として、ユーザ装置の地理的な位置は、ユーザの特定の位置を決定できないように、より大きな地域に一般化されてもよい。
本開示に記載されている機能ブロック、動作(操作)、特徴、方法、装置、およびシステムは、当業者に知られているように、システム、装置、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装のルーチンを実装するべく、任意の適切なプログラミング言語およびプログラミング技術を使用することができる。例えば、手続き型やオブジェクト指向など、異なるプログラミング技術を採用してもよい。ルーチンは、単一の処理装置で実行してもよいし、複数のプロセッサで実行してもよい。工程、動作(操作)、または計算は、特定の順序で提示されてもよいが、異なる特定の実装では順序が変更されてもよい。いくつかの実装では、本明細書で逐次的に示される複数の工程または動作(操作)が同時に実行されてもよい。

Claims (20)

  1. コンピュータが実装するコンピュータ実装方法であって、前記コンピュータ実装方法は、
    映像の複数のフレームを受け取る工程であって、各フレームは複数の画素の深度データと色データとを備えている、前記複数のフレームを受け取る工程と、
    前記映像の前記複数のフレームの各フレームをダウンサンプリングする工程と、
    前記ダウンサンプリングの後、各フレームについて、
    前記深度データに基づき、前記フレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程と、
    前記フレームの各画素を、既知背景、既知前景、または未知のうちの一つに分類するトライマップを決定する工程と、
    前記未知に分類された各画素について、その画素の重みを算出するとともに、前記重みを重みマップに格納する工程と、および
    前記フレームのバイナリマスクを取得するべく、前記色データ、前記トライマップ、および前記重みマップに基づき微細セグメンテーションを実行する工程と、および
    前景映像を取得するべく、各フレームの前記バイナリマスクに基づき前記複数のフレームをアップサンプリングする工程と、
    を備えている、コンピュータ実装方法。
  2. 前記初期セグメンテーションマスクを生成する工程は、
    前記画素に関連付けられた深度値が深度範囲の内に存在する場合には前記画素を前記前景画素として設定し、
    前記画素に関連付けられた前記深度値が前記深度範囲の外に存在する場合には前記画素を前記背景画素として設定する工程を備えている、
    請求項1に記載のコンピュータ実装方法。
  3. 前記初期セグメンテーションマスクを生成する工程はさらに、モルフォロジカルオープン処理またはモルフォロジカルクロージング処理のうちの1つまたは複数を実行する工程を備えている、
    請求項2に記載のコンピュータ実装方法。
  4. 前記コンピュータ実装方法はさらに、前記色データまたは前記初期セグメンテーションマスクのうちの1つまたは複数に基づき、頭部バウンディングボックスを検出する工程を備えている、
    請求項1に記載のコンピュータ実装方法。
  5. 前記頭部バウンディングボックスを検出する工程は、
    前記フレームをグレースケールに変換する工程と、
    前記変換後にヒストグラム均等化を実行する工程と、
    前記ヒストグラム均等化の後、前記フレーム内の1つまたは複数の顔を、Haarカスケード顔検出によって検出する工程であって、前記1つまたは複数の顔のうちの各顔は、その顔の顔画素を備えている顔エリアに関連付けられる、前記1つまたは複数の顔を前記Haarカスケード顔検出によって検出する工程と、
    を備えている、請求項4に記載のコンピュータ実装方法。
  6. 前記コンピュータ実装方法はさらに、前記1つまたは複数の顔のうちの各顔が有効であるかどうかを判定する工程を備えており、
    前記顔の前記顔エリアの画素の閾値割合が初期セグメンテーションマスクにおいて前景画素に分類されるとともに、前記顔の前記顔エリアの画素の少なくとも閾値パーセントが肌色基準を満たすことが検証される場合、前記顔は有効であると判定される、
    請求項5に記載のコンピュータ実装方法。
  7. 前記コンピュータ実装方法はさらに、有効であると判定された各顔について、前記顔に対応する頭部エリアを取得するべく各顔の前記顔エリアを拡大する工程を備えており、
    前記頭部バウンディングボックスは、有効であると判定された各顔についての前記頭部エリアを備えている、
    請求項6に記載のコンピュータ実装方法。
  8. 前記コンピュータ実装方法はさらに、前記顔が有効ではないと判定された場合、
    頭部を検出するべく前記初期セグメンテーションマスクを分析する工程と、
    前記頭部の肌色検証に基づき、前記頭部が有効であるかどうかを判定する工程と、
    前記頭部が有効である場合、前記頭部に関連するバウンディングボックスを前記頭部バウンディングボックスとして選択する工程と、
    を備えている、請求項6に記載のコンピュータ実装方法。
  9. 前記初期セグメンテーションマスクを生成する工程は、各画素にマスク値を割り当てる工程を備えており、各前景画素には「255」のマスク値が割り当てられており、各背景画素には「0」のマスク値が割り当てられており、
    前記トライマップを決定する工程は、前記頭部バウンディングボックス内に存在しない前記フレームの各画素について、
    前記画素の画素位置と、前記初期セグメンテーションマスクのマスク境界との間のLI距離を算出する工程であって、少なくとも1つの前記前景画素が前記初期セグメンテーションマスク内の少なくとも1つの前記背景画素に隣接する位置を前記マスク境界は備えている、前記LI距離を算出する工程と、
    前記LI距離が前景距離閾値を満たすとともに、前記画素が前記前景画素に分類される場合、前記画素を前記既知前景に分類する工程と、
    前記LI距離が背景距離閾値を満たすとともに、前記画素が前記背景画素に分類される場合、前記画素を前記既知背景に分類する工程と、
    前記画素が前記既知前景に分類されないとともに前記既知背景に分類されない場合、前記画素を前記未知に分類する工程と、
    を備えている、請求項4に記載のコンピュータ実装方法。
  10. 前記トライマップを決定する工程はさらに、前記頭部バウンディングボックス内の各画素について、前記画素が前記既知前景であるか、前記既知背景であるか、または前記未知であるかを識別する工程を備えており、
    前記識別する工程は、
    前記頭部バウンディングボックスに対して決定された内方マスク内に前記画素が存在する場合、前記画素を前記既知前景に分類する工程と、
    前記頭部バウンディングボックスに対して決定された外方マスクの外方に前記画素が存在する場合、前記画素を前記既知背景に分類する工程と、
    前記画素が前記既知前景および前記既知背景に分類されない場合、前記画素を前記未知に分類する工程と、
    を備えている、請求項9に記載のコンピュータ実装方法。
  11. 前記コンピュータ実装方法はさらに前記識別の前に、
    前記頭部バウンディングボックス内の前記頭部の髪エリアの近くに、均一な明るさの背景が存在するかどうかを検出する工程と、
    前記均一な明るさの背景が検出された場合、前記頭部バウンディングボックス、前記色データ、および前記初期セグメンテーションマスクに基づき、前記頭部の前記髪エリアの拡張を実行する工程であって、前記髪エリアの拡張を実行した後、前記外方マスクの拡張サイズは増大される、前記髪エリアの拡張を実行する工程と、
    を備えている、請求項10に記載のコンピュータ実装方法。
  12. 前記コンピュータ実装方法はさらに、
    前記映像の背景画像を維持する工程であって、前記背景画像は前記映像の各フレームと同じサイズの色画像である、前記背景画像を維持する工程と、
    前記微細セグメンテーションを実行する前に、前記トライマップに基づき前記背景画像を更新する工程と、
    を備えており、
    前記画素の前記重みを算出する工程は、
    画素色と、前記背景画像の背景色との間のユークリッド距離を算出する工程と、
    前記ユークリッド距離に基づき、前記画素が前記背景画素である確率を決定する工程と、
    前記確率が背景確率閾値を満たす場合、前記重みマップにおいて前記画素に背景重みを割り当てる工程と、
    を備えている、請求項1に記載のコンピュータ実装方法。
  13. 前記コンピュータ実装方法はさらに、
    肌色検出に基づき、前記フレーム内の1つまたは複数の肌領域を特定する工程であって、前記1つまたは複数の肌領域は顔領域を除外する、前記1つまたは複数の肌領域を特定する工程と、
    前記1つまたは複数の肌領域内に存在する前記フレームの各画素に対して、
    前記画素を前記未知に分類するとともに、前記重みマップにおいて前記画素にゼロ重みを割り当てる工程と、
    前記画素色と、前記背景画像の前記背景色とが類似度閾値を満たしている場合、前記重みマップにおいて前記画素に背景重みを割り当てる工程と、
    前記画素色が肌色である場合、前記重みマップにおいて前記画素に前景重みを割り当てる工程と、および
    前記画素色と、前記背景画像の前記背景色とが非類似度閾値を満たす場合、前記重みマップにおいて前記画素に前記前景重みを割り当てる工程と、
    を備えている、請求項12に記載のコンピュータ実装方法。
  14. 前記複数のフレームはシーケンスであり、
    前記コンピュータ実装方法は各フレームについてさらに、
    先行フレームの画素に類似すると分類された前記フレームの画素の割合を決定するべく、前記初期セグメンテーションマスクを、前記シーケンスの直前フレームの先行フレームバイナリマスクと比較する工程と、
    前記割合に基づき、グローバルコヒーレンス重みを算出する工程と、
    を備えており、
    前記画素に対する前記重みを算出するとともに、前記重みを前記重みマップに格納する工程は、前記グローバルコヒーレンス重みと、前記画素と前記先行フレームバイナリマスクのマスク境界との間の距離とに基づき、前記重みを決定する工程を備えている、
    請求項1に記載のコンピュータ実装方法。
  15. 前記画素に対する前記重みは、
    対応する画素が前記先行フレームバイナリマスクにおいて前記前景画素に分類された場合には正であり、
    前記対応する画素が前記先行フレームバイナリマスクにおいて前記前景画素に分類されなかった場合には負である、
    請求項14に記載のコンピュータ実装方法。
  16. 前記微細セグメンテーションを実行する工程は、前記フレームにグラフカット技術を適用する工程を備えており、
    前記グラフカット技術は、前記未知に分類される画素に適用される、
    請求項1に記載のコンピュータ実装方法。
  17. 前記コンピュータ実装方法はさらに、前記微細セグメンテーションを実行した後に、時間的ローパスフィルタを前記バイナリマスクに適用する工程を備えており、
    前記時間的ローパスフィルタは、1つまたは複数の先行フレームと、前記フレームとの間の類似度に基づき前記バイナリマスクを更新する、
    請求項1に記載のコンピュータ実装方法。
  18. 1つまたは複数のハードウェアプロセッサによって実行されると、前記1つまたは複数のハードウェアプロセッサに動作を実行させる命令が格納された非一時的なコンピュータ可読媒体であって、前記動作は、
    映像の複数のフレームを受け取る工程であって、各フレームは複数の画素の深度データと色データとを備えている、前記複数のフレームを受け取る工程と、
    前記映像の前記複数のフレームの各フレームをダウンサンプリングする工程と、
    前記ダウンサンプリングの後、各フレームについて、
    前記深度データに基づき、前記フレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程と、
    前記フレームの各画素を、既知背景、既知前景、または未知のうちの一つに分類するトライマップを決定する工程と、
    前記未知に分類された各画素について、その画素の重みを算出するとともに、前記重みを重みマップに格納する工程と、および
    前記フレームのバイナリマスクを取得するべく、前記色データ、前記トライマップ、および前記重みマップに基づき微細セグメンテーションを実行する工程と、および
    前景映像を取得するべく、各フレームの前記バイナリマスクに基づき前記複数のフレームをアップサンプリングする工程と、
    を備えている、非一時的なコンピュータ可読媒体。
  19. 前記コンピュータ可読媒体には、前記1つまたは複数のハードウェアプロセッサによって実行されると、前記1つまたは複数のハードウェアプロセッサに動作を実行させるさらなる命令が格納されており、前記動作は、
    前記映像の背景画像を維持する工程であって、前記背景画像は前記映像の各フレームと同じサイズの色画像である、前記背景画像を維持する工程と、
    前記微細セグメンテーションを実行する前に、前記トライマップに基づき前記背景画像を更新する工程と、
    を備えており、
    前記画素の前記重みを算出する工程は、
    画素色と、前記背景画像の背景色との間のユークリッド距離を算出する工程と、
    前記ユークリッド距離に基づき、前記画素が前記背景画素である確率を決定する工程と、
    前記確率が背景確率閾値を満たす場合、前記重みマップにおいて前記画素に背景重みを割り当てる工程と、
    を備えている、請求項18に記載の非一時的なコンピュータ可読媒体。
  20. 1つまたは複数のハードウェアプロセッサと、および、
    前記1つまたは複数のハードウェアプロセッサに結合されたメモリであって、前記1つまたは複数のハードウェアプロセッサによって実行されたときに動作を実行する命令が格納される前記メモリと、
    を備えているシステムであって、前記動作は、
    映像の複数のフレームを受け取る工程であって、各フレームは複数の画素の深度データと色データとを備えている、前記複数のフレームを受け取る工程と、
    前記映像の前記複数のフレームの各フレームをダウンサンプリングする工程と、
    前記ダウンサンプリングの後、各フレームについて、
    前記深度データに基づき、前記フレームの各画素を前景画素または背景画素に分類する初期セグメンテーションマスクを生成する工程と、
    前記フレームの各画素を、既知背景、既知前景、または未知のうちの一つに分類するトライマップを決定する工程と、
    前記未知に分類された各画素について、その画素の重みを算出するとともに、前記重みを重みマップに格納する工程と、および
    前記フレームのバイナリマスクを取得するべく、前記色データ、前記トライマップ、および前記重みマップに基づき微細セグメンテーションを実行する工程と、および
    前景映像を取得するべく、各フレームの前記バイナリマスクに基づき前記複数のフレームをアップサンプリングする工程と、
    を備えている、システム。
JP2021573206A 2019-07-15 2020-04-15 深度を利用した映像背景減算法 Active JP7110502B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP2022528294A true JP2022528294A (ja) 2022-06-09
JP7110502B2 JP7110502B2 (ja) 2022-08-01

Family

ID=70554226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021573206A Active JP7110502B2 (ja) 2019-07-15 2020-04-15 深度を利用した映像背景減算法

Country Status (6)

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

Families Citing this family (23)

* 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
US11727587B2 (en) * 2019-11-12 2023-08-15 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
US20230412785A1 (en) * 2022-06-17 2023-12-21 Microsoft Technology Licensing, Llc Generating parallax effect based on viewer position
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015141633A (ja) * 2014-01-29 2015-08-03 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、及び記憶媒体
JP2015186224A (ja) * 2014-03-26 2015-10-22 大日本印刷株式会社 画像処理装置、画像処理方法、及びプログラム
WO2016029395A1 (en) * 2014-08-28 2016-03-03 Qualcomm Incorporated Temporal saliency map
US20160171706A1 (en) * 2014-12-15 2016-06-16 Intel Corporation Image segmentation using color & depth information
JP2016122367A (ja) * 2014-12-25 2016-07-07 カシオ計算機株式会社 画像処理装置、画像処理方法及びプログラム
JP2018524732A (ja) * 2015-07-21 2018-08-30 ソニー株式会社 半自動画像セグメンテーション

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080107341A1 (en) * 2006-11-02 2008-05-08 Juwei Lu Method And Apparatus For Detecting Faces In Digital Images
CA2745380C (en) * 2008-12-11 2018-07-17 Imax Corporation Devices and methods for processing images using scale space
US8306333B2 (en) 2009-12-17 2012-11-06 National Tsing Hua University Method and system for automatic figure segmentation
US20170083790A1 (en) * 2015-09-23 2017-03-23 Behavioral Recognition Systems, Inc. Detected object tracker for a video analytics system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015141633A (ja) * 2014-01-29 2015-08-03 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、及び記憶媒体
JP2015186224A (ja) * 2014-03-26 2015-10-22 大日本印刷株式会社 画像処理装置、画像処理方法、及びプログラム
WO2016029395A1 (en) * 2014-08-28 2016-03-03 Qualcomm Incorporated Temporal saliency map
US20160171706A1 (en) * 2014-12-15 2016-06-16 Intel Corporation Image segmentation using color & depth information
JP2016122367A (ja) * 2014-12-25 2016-07-07 カシオ計算機株式会社 画像処理装置、画像処理方法及びプログラム
JP2018524732A (ja) * 2015-07-21 2018-08-30 ソニー株式会社 半自動画像セグメンテーション

Also Published As

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

Similar Documents

Publication Publication Date Title
JP7110502B2 (ja) 深度を利用した映像背景減算法
CN107771336B (zh) 基于颜色分布的图像中的特征检测和掩模
CN107430629B (zh) 计算机呈现中的视觉内容的分优先级显示
WO2022156640A1 (zh) 一种图像的视线矫正方法、装置、电子设备、计算机可读存储介质及计算机程序产品
US20190222806A1 (en) Communication system and method
US9105088B1 (en) Image blur with preservation of detail
CN112954450B (zh) 视频处理方法、装置、电子设备和存储介质
US10269100B1 (en) Accelerated skin smoothing effect
US10430694B2 (en) Fast and accurate skin detection using online discriminative modeling
US11887235B2 (en) Puppeteering remote avatar by facial expressions
US11641445B2 (en) Personalized automatic video cropping
US20230146178A1 (en) Attention based audio adjustment in virtual environments
US20200304713A1 (en) Intelligent Video Presentation System
CN114096986A (zh) 自动地分割和调整图像
CN111382647A (zh) 一种图片处理方法、装置、设备及存储介质
CN112272296B (zh) 使用深度和虚拟光的视频照亮
CN111274447A (zh) 基于视频的目标表情生成方法、装置、介质、电子设备
WO2022226744A1 (en) Texture completion
US20230419580A1 (en) Systems and Methods for Implementing a Virtual Avatar Model for a Video Conference Session
US20230289919A1 (en) Video stream refinement for dynamic scenes
JP2024514728A (ja) 機械学習を用いた選択的な画像ぼやけ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211209

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211209

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220720

R150 Certificate of patent or registration of utility model

Ref document number: 7110502

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150