(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-06
(45)【発行日】2022-07-14
(54)【発明の名称】ポーズ補正
(51)【国際特許分類】
G06T 7/00 20170101AFI20220707BHJP
【FI】
G06T7/00 660A
(21)【出願番号】P 2020568992
(86)(22)【出願日】2019-09-27
(86)【国際出願番号】 US2019053692
(87)【国際公開番号】W WO2020154000
(87)【国際公開日】2020-07-30
【審査請求日】2020-12-11
(32)【優先日】2019-01-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ハフニー、タレク
(72)【発明者】
【氏名】カスタネダ、ウンベルト
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2018-78404(JP,A)
【文献】特開2016-85579(JP,A)
【文献】特開2015-106360(JP,A)
【文献】特表2007-514211(JP,A)
【文献】米国特許出願公開第2017/0316602(US,A1)
【文献】米国特許出願公開第2015/0077323(US,A1)
【文献】米国特許第10171738(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第1の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記複数のフレームのうち前景部分内にある顔を検出すること
であって、前記顔を検出することは、1つまたは複数の軸の周りの前記顔の角度がしきい値範囲内と決定することを含むことと、
前記顔を検出することに応じて、
前記複数のフレームに対応する前記深度情報の1つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
仮想カメラを前記第1の視点とは異なる第2の視点に位置決めすることと、
前記仮想カメラに基づいて、前記第2の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、を含む方法。
【請求項2】
前記ビデオを撮るために使用される前記物理カメラのレンズの影響を低減するために前記前景部分の前記投影マトリックスを調整することをさらに含む、請求項1に記載の方法。
【請求項3】
前記顔を検出することは、背景面から前記顔を抽出することを含み、
前記背景面は前記深度情報に基づいて決定される、請求項1に記載の方法。
【請求項4】
前記第2の視点で前記仮想カメラに対向するように前記背景面を回転させることをさらに含む、請求項3に記載の方法。
【請求項5】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項1に記載の方法。
【請求項6】
前記顔および背景を検出することは、
前記深度情報に基づいて顔の深度を検出することと、
前記顔の外縁の前記フレーム内の深さを決定することと、
前記顔の外縁の深さおよび前記顔の外縁を超える深さで前記フレームの一部を含むように前記背景を設定することと、を含む、請求項5に記載の方法。
【請求項7】
前記背景をぼかすことをさらに含む、請求項6に記載の方法。
【請求項8】
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第1の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記複数のフレームのうち前景部分内にある顔を検出することと、
前記複数のフレームに対応する前記深度情報の1つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
仮想カメラを前記第1の視点とは異なる第2の視点に位置決めすることと、
前記仮想カメラに基づいて、前記第2の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、を含み、
前記ビデオ内で顔を検出することは、1つまたは複数の軸の周りの前記顔の角度を決定することを含み、
1つまたは複数の軸の周りの前記顔の前記角度がしきい値範囲内の場合、前記決定すること、位置決めすること、取得すること、および生成すること、が実行される
、方法。
【請求項9】
前記ビデオの深度情報の時間履歴を決定することと、
前記ビデオの深度情報の前記時間履歴を使用してビデオ再投影のヒステリシスを実行することによって、再投影の連続性を維持し、再投影される前記顔の前を移動する一時的な物体に対応しないようにすることと、をさらに含み、
前記一時的な物体が再投影される前記顔の前にある時間はしきい値時間未満である、請求項
1または8に記載の方法。
【請求項10】
プログラムを格納する非一時的なコンピュータ可読媒体に結合された1つまたは複数のプロセッサを備えるシステムであって、
前記
プログラムが前記1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサに操作を実行させ、前記操作は、
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第1の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記ビデオの前記複数のフレームの前景部分内にある顔を検出すること
であって、前記顔を検出することは、1つまたは複数の軸の周りの前記顔の角度がしきい値範囲内と決定することを含むことと、
前記顔を検出することに応じて、
前記複数のフレームに対応する前記深度情報の1つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
前記第1の視点とは異なる第2の視点に仮想カメラを位置決めすることと、
前記仮想カメラに基づいて、前記第2の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと
、を含むシステム。
【請求項11】
前記操作は、前記ビデオを撮るために使用される前記物理カメラのレンズの影響を低減するために前記前景部分の前記投影マトリックスを調整することをさらに含む、請求項10に記載のシステム。
【請求項12】
前記顔を検出することは、背景面から前記顔を抽出することを含み、
前記背景面は前記深度情報に基づいて決定される、請求項10に記載のシステム。
【請求項13】
前記操作は、前記第2の視点で前記仮想カメラに対向するように前記背景面を回転させることをさらに含む、請求項12に記載のシステム。
【請求項14】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項10に記載のシステム。
【請求項15】
前記顔および背景を検出することは、
前記深度情報に基づいて顔の深度を検出することと、
前記顔の外縁の前記フレーム内の深さを決定することと、
前記顔の外縁の深さおよび前記顔の外縁を超える深さで前記フレームの一部を含むように前記背景を設定することと、を含む、請求項14に記載のシステム。
【請求項16】
前記操作は、前記背景をぼかすことをさらに含む、請求項15に記載のシステム。
【請求項17】
プログラムを格納する非一時的なコンピュータ可読媒体に結合された1つまたは複数のプロセッサを備えるシステムであって、
前記プログラムが前記1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサに操作を実行させ、前記操作は、
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第1の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記ビデオの前記複数のフレームの前景部分内にある顔を検出することと、
前記複数のフレームに対応する前記深度情報の1つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
前記第1の視点とは異なる第2の視点に仮想カメラを位置決めすることと、
前記仮想カメラに基づいて、前記第2の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、を含み、
前記ビデオ内で顔を検出することは、1つまたは複数の軸の周りの前記顔の角度を決定することを含み、
1つまたは複数の軸の周りの前記顔の前記角度がしきい値範囲内の場合、前記決定すること、位置決めすること、取得すること、および生成すること、が実行される
、システム。
【請求項18】
前記操作は、
前記ビデオの深度情報の時間履歴を決定することと、
前記ビデオの深度情報の前記時間履歴を使用してビデオ再投影のヒステリシスを実行することによって、再投影の連続性を維持し、再投影される前記顔の前を移動する一時的な物体に対応しないようにすることと、をさらに含み、
前記一時的な物体が再投影される前記顔の前にある時間はしきい値時間未満である、請求項
10または17に記載のシステム。
【請求項19】
プログラムを格納する非一時的なコンピュータ可読媒体であって、
前記
プログラムが1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサに操作を実行させ、前記操作は、
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第1の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記ビデオの前記複数のフレームの前景部分内にある顔を検出すること
であって、前記顔を検出することは、1つまたは複数の軸の周りの前記顔の角度がしきい値範囲内と決定することを含むことと、
前記顔を検出することに応じて、
前記複数のフレームに対応する前記深度情報の1つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
前記第1の視点とは異なる第2の視点に仮想カメラを位置決めすることと、
前記仮想カメラに基づいて、前記第2の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと
、を含む非一時的なコンピュータ可読媒体。
【請求項20】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項19に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ポーズ補正に関する。
【背景技術】
【0002】
モバイル機器(例えば、携帯電話、タブレットなど)を使用したビデオ通話中に、モバイル機器が撮るユーザの画像が不適切な角度となるような角度で、ユーザがモバイル機器をユーザの顔に対して保持または配置する場合がしばしばある。不適切な角度とは、例えば、ユーザの表情を見るのに最適ではない角度、顔が歪んだ画像を生成する角度である。例えば、ユーザは、携帯電話をユーザの顔に向けて上向きの角度で、電話を上向きに保持することがある。この場合、最適より低い角度(例えば、顎や鼻の下から見上げる)角度でユーザが撮られることがある。また、ユーザの顔が歪んで見えたり、ユーザが他の通話参加者を向いていないように見えたりして、アイコンタクトが失われたように見えることがある。さらに、ユーザの手が震えると、ビデオ通話に撮られている画像に乱れが生じることがある。
【0003】
本明細書で提供される背景技術の説明は、本開示の関連技術を一般的に提示することを目的としている。本明細書の背景技術に記載された本発明者等による業績および出願時に従来技術として認定していない態様の記載は、本開示に対する従来技術として明示的にも黙示的にも認めない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
ポーズ補正のためのコンピュータ実装方法、コンピュータ可読媒体、および/またはシステムを提供する。
【課題を解決するための手段】
【0005】
いくつかの実装形態は、概してモバイル機器のビデオ通話に関連しており、特にモバイル機器が撮影するビデオ画像のポーズ補正に関連する。
いくつかの実装形態は、ユーザのデバイスに関連した深度カメラを使用してユーザの顔のポーズと視線を取得することと、顔のポーズの補正と顔のポーズの安定化を実行することと、を含む。
【0006】
いくつかの実装形態は、コンピュータが実行する方法を含んでもよい。この方法は、物理カメラによって第1の視点で撮られ複数のフレームを含むビデオを受信することと、ビデオ内で顔を検出することと、を含んでもよい。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームのうち前景部分内にある。
【0007】
また、この方法は、複数のフレームに対応する深度情報の1つまたは複数の深度値に基づいて複数のフレームの前景部分を決定することと、仮想カメラを第1の視点とは異なる第2の視点に位置決めすること、とを含んでもよい。更に、この方法は、仮想カメラに基づいて前景部分の第2の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。
【0008】
また、この方法は、ビデオを撮るために使用される物理カメラのレンズの影響を低減するために前景部分の投影マトリックスを調整することを含んでもよい。いくつかの実装形態では、顔を検出することは、背景面から顔を抽出することを含んでもよく、背景面は深度情報に基づいて決定される。また、この方法は、第2の視点で仮想カメラに対向するように背景面を回転させることを含んでもよい。
【0009】
いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよく、検出することは、顔の前景部分を背景から押し出すことを含んでもよい。いくつかの実装形態において、押し出すことは、深度情報に基づいて顔の深度を検出することと、顔の外縁のフレーム内の深さを決定することと、顔の外縁の深さおよび顔の外縁を超える深さでフレームの一部を含むように背景を設定することと、を含んでもよい、含んでもよい。
【0010】
また、この方法は、背景をぼかすことを含んでもよい。更に、この方法は、ビデオの深度情報の時間履歴を決定することを含んでもよい。また、この方法は、ビデオの深度情報の時間履歴を使用してビデオ再投影のヒステリシスを提供することによって、再投影の連続性を維持し、再投影される顔の前を移動する一時的な物体に対応しないようにすることを含んでもよい。一時的な物体が再投影される顔の前にある時間はしきい値時間未満である。
【0011】
いくつかの実装形態は、ソフトウェア指示を格納する非一時的なコンピュータ可読媒体に結合された1つまたは複数のプロセッサを備えるシステムを含んでもよい。ソフトウェア指示が1つまたは複数のプロセッサにより実行されると、1つまたは複数のプロセッサに操作を実行させる。操作は、複数のフレームを含むビデオを受信することと、ビデオ内に顔を検出することと、を含んでもよい。ビデオは物理カメラによって第1の視点で撮られる。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームの前景部分内にある。
【0012】
また、操作は、複数のフレームに対応する深度情報の1つまたは複数の深度値に基づいて、複数のフレームの前景部分を決定することと、第1の視点とは異なる第2の視点に仮想カメラを位置決めすることと、を含んでもよい。更に、操作は、仮想カメラに基づいて前景部分の第2の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。また、操作は、変更されたビデオの変更された前景部分を安定させることを含んでもよい。
【0013】
更に、操作は、ビデオを撮るために使用される物理カメラのレンズの影響を低減するために前景部分の投影マトリックスを調整することを含んでもよい。いくつかの実装形態において、顔を検出することは、背景面から顔を抽出することを含む。背景面は深度情報に基づいて決定される。
【0014】
また、操作は、第2の視点で仮想カメラに対向するように背景面を回転させることを含んでもよい。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含む。検出することは、顔の前景部分を背景から押し出すことを含んでもよい。いくつかの実装形態において、押し出すことは、深度情報に基づいて顔の深度を検出することと、顔の外縁のフレーム内の深さを決定することと、顔の外縁の深さおよび顔の外縁を超える深さでフレームの一部を含むように背景を設定することと、を含んでもよい。
【0015】
また、操作は、背景をぼかすことを含んでもよい。更に、操作は、ビデオの深度情報の時間履歴を決定することを含んでもよい。また、操作は、ビデオの深度情報の時間履歴を使用してビデオ再投影のヒステリシスを提供することによって、再投影の連続性を維持し、再投影される顔の前を移動する一時的な物体に対応しないようにすることを含んでもよい。一時的な物体が再投影される顔の前にある時間はしきい値時間未満である。
【0016】
いくつかの実装形態は、ソフトウェア指示を格納する非一時的なコンピュータ可読媒体を含んでもよい。ソフトウェア指示が1つまたは複数のプロセッサにより実行されると、1つまたは複数のプロセッサに操作を実行させる。操作は、複数のフレームを含むビデオを受信することと、ビデオ内に顔を検出することと、を含んでもよい。ビデオは物理カメラによって第1の視点で撮られる。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームの前景部分内にある。操作は、複数のフレームに対応する深度情報の1つまたは複数の深度値に基づいて、複数のフレームの前景部分を決定することと、第1の視点とは異なる第2の視点に仮想カメラを位置決めすることと、を含んでもよい。
【0017】
更に、操作は、仮想カメラに基づいて前景部分の第2の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。また、操作は、変更されたビデオの変更された前景部分を安定させることを含んでもよい。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよい。検出することは、顔の前景部分を背景から押し出すことを含む。
【図面の簡単な説明】
【0018】
【
図1】ビデオ通話に使用されるユーザデバイスの一例であって、低品質なビデオを生成する可能性のある角度でユーザを撮っているユーザデバイスを示す図。
【
図2】ビデオ通話に使用されるユーザデバイスの一例であって、低品質なビデオを生成する可能性のある角度でユーザを撮っているユーザデバイスと、いくつかの実装形態において高品質なビデオを作成するためにユーザのポーズ補正に使用される仮想視点と、を示す図。
【
図3】低品質なビデオを生成する可能性のある角度で撮られたビデオのビデオ通話を示す例示的なユーザデバイスの図。
【
図4】補正されたポーズおよびより高品質なビデオを生成するために再投影されたビデオのビデオ通話を示す例示的なユーザデバイスの図。
【
図5】いくつかの実装形態におけるポーズ補正方法の一例を示すフローチャート。
【
図6】いくつかの実装形態におけるポーズ補正方法の一例を示すフローチャート。
【
図7】いくつかの実装形態におけるポーズ補正するよう構成された演算装置の一例を示す図。
【発明を実施するための形態】
【0019】
いくつかの実装形態は、ビデオ通話またはビデオ会議でのユーザのポーズを変更または補正する方法およびシステムを含む。ユーザは、低品質なビデオを生成する可能性のある角度でカメラを使用してビデオ通話に参加していたり、通話中のある時点でそのような角度に移動していたりする場合がある。例えば、ユーザの電話の持ち方によって、ユーザが見上げているようにビデオに映る場合がある。現在、スマートフォン、ラップトップ、タブレットなど、ほとんどのビデオ通話機器は、機器の上端にカメラを備えている。このような配置では、ビデオ通話に最適ではない画像が生成されることがしばしばある。実装形態におけるポーズ補正に適した画像は、写真、シネマグラフ、その他のアニメーション画像、ビデオなどの単一の画像を含む。
【0020】
いくつかの実装形態では、ユーザが補正されたポーズ(例えば、直接カメラを向いているポーズなど)となる角度で現れるような仮想視点(または仮想カメラアングル)を使用してユーザのビデオ画像を再投影することにより、調整されたビデオ通話を表示させることができる。また、いくつかの実装形態は、カメラの歪み補正(例えば、鼻の拡大作用の除去)、ジッターの影響の低減(例えば、ユーザの手の動きによるもの)、などを含んでもよい。
【0021】
実装形態は、ビデオフレームから色と深度情報を取得することにより、前景の深度を押し出してもよい。システムは、デバイスの物理カメラとは異なる角度で仮想カメラを(例えば、ユーザが他の人から直接見られているような効果が得られるように)配置することが可能である。
【0022】
いくつかの実装形態は、1)フレーム内顔検出、2)ポーズ補正、3)視線補正、の3つの主要操作を含んでもよい。いくつかの実装形態において、フレーム内顔検出は、顔のポーズ角度(例えば、3次元オイラー角)とフレーム内の顔の位置を取得する技術(ARKit(商標)やARCore(商標)など)を使用することを含んでもよい。ポーズ角度は、カメラに対する顔の角度を含んでもよい(例えば、真っ直ぐ前を見る位置が0,0,0であり、顔が1つの軸を中心に回転すると、その軸に対応する角度が3次元オイラー角度で変化する)。この位置は、カラー画像内のx、y位置であり、これによりデバイスはデバイスに対する相対位置(例えば、x、y、z位置)を決定することができる。追加のパディングをフレームに加えて、バッファーを設けてもよい。カメラに対するユーザの顔の角度が、しきい値(すなわち、安全な)範囲内(例えば、x軸またはy軸の周りにプラスマイナス約20度)にある毎に、システムは高信頼値を返す。高信頼値は、本明細書記載のポーズ補正技術が効果を奏する可能性が最も高くなるような配置で、ユーザの顔がビデオのフレーム内に配置されていることを示す。ユーザの顔の画像がパディング領域にある場合、信頼度は低い(例えば、このようなユーザの顔の位置では、本明細書のポーズ補正技術の効果が低下する可能性があることを示す)。パディング内の顔の部分が増加するにつれて信頼度は低下する。ユーザが許容範囲(例えば、フレームおよび/またはパディング)外にいる場合、信頼度は返されない(あるいは、ゼロまたはゼロに近い信頼値が返される)。
【0023】
フレーム内顔検出に基づいて、信頼度、理由または根拠、および/またはユーザへのガイダンスを提供してもよい。上述したように、信頼度は、ビデオまたは他の画像のフレーム内の所与の顔の位置に対してポーズ補正技術が効果的に適用される信頼性のレベルを示す。理由または根拠は、信頼度スコアが低い可能性がある理由を示してもよい(例えば、顔が境界線に近すぎるなど)。ガイダンスは、信頼度スコア低下の原因となった問題をユーザが修正できるようシステムが(例えば、グラフィカルユーザインターフェースを介して)提供する指示の表示を含んでもよい。例えば、信頼度が低い場合、理由を特定し、その理由に基づくフィードバック(例えば、信頼性が低くなるほど透明度が高くなる黒い影や、フレーム内に戻るようユーザに指示する小さな矢印)をユーザに提供してもよい。これは、信頼度が高いビデオが撮られるようユーザに変更を促すのに役立つ。
【0024】
撮像デバイスが深度データ、例えば、深度センサーまたはデバイスのその他のハードウェアを使用して取得されたリアルタイム深度データ、を提供する場合、実装形態は、そのようなデータを顔のポーズとともに考慮することができる。カメラのRGBフィードは、カメラの前方(例えば、カメラのレンズからカメラが撮っている被写体に向かって前方を指すベクトル)に垂直、且つ、視錐台の基部全体に広がる平面として表されてもよい。いくつかの実装形態において、ポーズ補正は、背景検出、押し出し、回転の3つの操作を含んでもよい。
【0025】
いくつかの実装形態において、背景検出は、背景を検出または決定するために深度データを使用することを含んでもよい。ライブの深度フレームを使用した背景検出には、ノイズとにじみ現象(例えば、縁部付近のデータ欠落のために発生するハロー(halo)のようなアーティファクト)という2つの主な技術的問題がある。いくつかの実装形態において、背景として処理できる領域の縁部を検出するためにソーベルフィルターを適用することにより、にじみ現象問題の解決策を提供する。空間ノイズや時間ノイズなどのノイズの問題に対処するために、平滑化アルゴリズムを使用してもよい。
【0026】
所与の点が背景か前景かの信頼性を定義する範囲(例えば[0,1])の値を返す上記の機能にシェーダーを実装してもよい(すなわち、前景部分の縁部周りのフェード作用に使用できる情報を提供する)。シェーダーは、効率性を得るためにCPUではなくGPUで実行処理を実行するピクセル毎分類子を含んでもよい。シェーダーは、入力としてカラー画像を取得し、出力画像として前景/背景マスクを生成する(例えば、赤=前景、黒=背景)。別のシェーダーは、カラー画像、深度画像、前景/背景マスク、および/またはカメラの内在要素(カメラの焦点距離、その他のカメラパラメーターまたはカメラ設定など)を入力として使用して、ポーズ補正を実行する。
【0027】
いくつかの実装形態は、1つまたは複数のビデオフレーム(または他の画像)の少なくとも一部の押し出しおよび回転を含んでもよい。押し出しおよび回転は、平滑化視差マップデータの使用を含んでもよい。視差マップデータを(カメラ平面表示の)画像の前景部分に適用して、前景ピクセルをカメラに近づけてもよい。視差マップは、深度データを表す(例えば、デバイスカメラからある点までの距離を表す)別の方法である。
【0028】
いくつかの実装形態では、仮想カメラの位置は、1つまたは複数のフレーム(例えば、第1のフレーム)において顔面に垂直になるように更新される。仮想カメラ位置の更新は、カメラの前方ベクトルを顔アンカーの前方ベクトルの反対に設定することを含む。顔アンカーは、顔検出時に計算された顔の位置と顔の回転角を含む。いくつかの実装形態において、意図的な顔の動きが無効にならないよう、デバイスが移動する毎に実行され顔のポーズと「正面ポーズ」との現在の差異が考慮される計算を使用して、カメラの投影マトリックスが画像平面の4つの縁を通過するよう更新してもよい。いくつかの実装形態において、前景ピクセルが見えることを条件に、前景ピクセルの投影マトリックスを維持し、背景ピクセルの投影を省略してもよい。これにより、計算時間が短縮する。前景で背景を覆い、そして、前景を拡大して顔の回転によって作られた全てのギャップが覆われるように、前景を拡大して背景との不一致を隠してもよい。
【0029】
いくつかの実装形態は、背景処理を含んでもよい。いくつかの実装形態において、背景処理は、回転によって引き伸ばされる可能性のある背景の調整を含んでもよい。背景が邪魔とならないように、背景にぼかし効果を使用してもよい。
【0030】
本明細書に記載されたシステムおよび方法は、従来のビデオ通話システムおよび方法の欠点を克服する。例えば、従来のビデオ通話システムにおいては、カメラアングルを検出、補正、または調整する機能を持たないものがある。そのため、低品質なビデオが撮られたり、特徴の誇張および/または動作の影響などビデオフレームの他の問題が引き起されたりする可能性がある。デジタルカメラ、カメラ内蔵電話、カメラ付きウェアラブルデバイス、頭部装着デバイス、タブレット、パーソナルコンピュータなどのデジタル撮像機器が簡単に利用できるため、ユーザは頻繁にビデオを撮影または送信することができる。
【0031】
本明細書に記載されたシステムおよび方法は、ビデオまたは他の画像の自動ポーズ補正をユーザに提供することで、従来のビデオ通話システムおよび方法の欠点を克服する。従来のシステムにおいて、画像分析およびそれに対応する信頼度スコアに基づいて姿勢を検出および修正しないという技術的な問題を有するものがある。本開示の主題は、ビデオまたはその他の画像のポーズを修正する技術および/またはビデオまたは画像のその他の問題を自動的に修正する技術に関する。本開示の主題のいくつかの実装形態は、上記の技術的問題に対する解決策を提供する。例えば、いくつかの実装形態において、ビデオを再投影することにより、カメラアングルに関係なく高品質なビデオが可能である。
【0032】
本明細書では、ビデオを例として主題を説明する。その他の種類の画像を、主題の実装形態とともに使用してもよい。画像は、静止画像(例えば、動きのない単一フレーム)、アニメーション画像、ビデオ(例えば、複数のフレームを使用)などを使用してもよい。例えば、静止画像は1つ以上の物体を描写し、アニメーション画像は画像内で変化する1つ以上の物体を描写してもよい(例えば、目を閉じた状態と開いた状態の間で移行する顔や、口が笑っていない位置から笑った位置へ移動する顔を撮ったライブ写真)。ビデオは、1つまたは複数の人物または物体を描写する複数のフレームを含んでもよい。ポーズ補正は、任意の種類の画像に実行することができ、同じおよび/または異なる種類の画像群を含んでもよい。
【0033】
図1は、ユーザデバイス104を使用してビデオ通話をするユーザ102の一例を示す。ユーザの顔に対するユーザデバイス104の角度は、
図3に例示される低品質なビデオフレームのような低品質なビデオが生成される可能性がある角度でユーザのビデオが撮られる角度である。
【0034】
ユーザ102の顔に対するユーザデバイス104の角度によって、カメラからユーザの頭頂部までの第1の距離106は、ユーザデバイス104のカメラからユーザ102の顔の底部までの第2の距離108とは異なる(例えば、距離108より長い)。ユーザデバイス104の上向き角度に起因する距離106、108の差により、高品質なビデオが提供されない可能性がある(例えば、
図3のデバイス302に示されるような)ポーズが作成される(例えば、歪みの原因となる)。
【0035】
低品質なビデオを生成する可能性のある角度でのポーズに加えて、(例えば、ユーザ102による手の動きまたはジッターによる)動きの影響およびユーザデバイス104のレンズによる画像への影響(例えば、鼻の拡大作用)などの他の問題がビデオ内で起こり得る。これらの問題は、ユーザデバイス上のカメラの物理的な配置(例えば、デバイスの上部)に起因する場合や、携帯電話やウェアラブルデバイス(例えば、スマートウォッチやその他のデバイス)などのユーザデバイスを保持する一般的な姿勢が電話(または他のデバイス)を持つ手がユーザの顔に対して下向きの角度になることに起因する場合がある。画像の前景部分の歪み(例えば、低品質ビデオ304を生成する可能性のある角度で撮られたポーズ)に加えて、カメラアングルによって背景306が歪む場合がある。
【0036】
図2は、ビデオ通話をするために使用されるユーザデバイス104であって、低品質なビデオ(例えば、106と108の違い)を生成し得る角度でユーザ102を撮っているユーザデバイス104を例示している。また、
図2は、ユーザ102の画像を再投影し、ユーザのポーズを修正するために使用される仮想視点202も示している。仮想視点202は、ユーザ102の顔面に対して略平行であり(または、少なくともユーザデバイス104よりも顔面に対して平行に近い)、仮想視点202からユーザ102の顔の頂部までの第1の距離204と、仮想視点202からユーザ102の顔の底部までの第2の距離206とはほぼ同じである。仮想視点を使用して、本明細書に記載のようにビデオ内のユーザの顔を再投影して、
図4に示すような調整されたポーズ404を生成してもよい。
図4では、再投影されたビデオを受信するデバイス402は、ユーザの調整されたポーズ404と、
図3の回転されていない背景306と比較して歪みを低減するために回転された背景406と、を含む。仮想視点202は、顔の前にある(例えば、デバイスから顔までの距離は同じであるが、回転してユーザの顔の真正面にある)。
【0037】
各ユーザデバイス(またはクライアントデバイス)は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイル機器、カメラ、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、またはエンターテインメントデバイス、ウェアラブルデバイス(ディスプレイグラスまたはゴーグル、ヘッドマウントディスプレイ(HMD)、腕時計、ヘッドセット、アームバンド、ジュエリーなど)、仮想現実(VR)および/または拡張現実(AR)対応デバイス、携帯情報端末(PDA)、メディアプレーヤー、ゲームデバイスなどの任意の種類の電子機器であってもよい。クライアントデバイスは、データベース106と同様のローカルデータベースまたは他の記憶装置を有してもよい。他の実装形態では、ネットワーク環境100は、表示されるコンポーネントの全ては有さなくてもよく、および/または、本明細書記載の要素に代えてまたは加えて他の種類の要素を含む他の要素を有してもよい。
【0038】
ユーザインターフェースを使用して、画像、画像構成、データ、その他のコンテンツのほか、通信、プライバシー設定、通知、その他のデータをクライアントデバイスに表示できる。このようなインターフェースは、クライアントデバイス上のソフトウェア、サーバデバイス上のソフトウェア、および/またはサーバデバイス上で実行されるクライアントソフトウェアとサーバソフトウェアの組み合わせ、例えば、サーバシステムと通信するアプリケーションソフトウェアまたはクライアントソフトウェア、を使用して表示できる。ユーザインターフェースは、クライアントデバイスまたはサーバデバイスのディスプレイデバイス、例えば、ディスプレイスクリーン、プロジェクターなどによって表示することができる。いくつかの実装形態では、サーバシステム上で実行されるアプリケーションプログラムは、クライアントデバイスと通信して、クライアントデバイスでユーザ入力を受信し、クライアントデバイスで視覚データや音声データなどのデータを出力してもよい。
【0039】
いくつかの実装形態では、1つまたは複数のクライアントデバイスおよび/またはサーバシステムは、ポーズ補正を提供することができる。ポーズ補正により、システム(例えば、クライアントデバイスまたはサーバデバイス)は、撮像問題のあるビデオのポーズ補正を自動的に行うことができ、そのいくつかの例は本明細書に記載されている。ポーズ補正システムおよび方法は、1つまたは複数の関連するユーザインターフェースに補正されたビデオを提供することが可能であり、ユーザインターフェースは補正されたビデオを受信するクライアントデバイスに関連するディスプレイデバイスに表示される。本明細書記載の1つまたは複数の特徴とともに、画像管理アプリケーション、ブラウザ、通信アプリケーションなどの他のアプリケーションを使用してもよい。
【0040】
本明細書記載の特徴の様々な実装形態は、任意の種類のシステムおよび/またはサービスを使用してもよい。例えば、ソーシャルネットワーキングサービス、画像収集および共有サービス、アシスト付きメッセージングサービスまたは他のネットワークサービス(例えば、インターネットに接続されたサービス)は、クライアントおよびサーバデバイスによってアクセスされる本明細書に記載された1つまたは複数の特徴を含んでもよい。本明細書記載の特徴は任意の種類の電子機器に利用されてよい。いくつかの実装形態は、コンピュータネットワークから切断されたクライアントデバイスまたはサーバデバイス上、または断続的に接続されるクライアントデバイスまたはサーバデバイス上に、本明細書記載の1つまたは複数の特徴を提供することができる。いくつかの例では、ディスプレイデバイスを含むまたはディスプレイデバイスに接続されたクライアントデバイスは、クライアントデバイスにローカルな(例えば、通信ネットワークを介して接続されていない)記憶装置に格納された画像を検査および表示することが可能であり、本明細書記載の特徴および結果をユーザに見えるように提供する。
【0041】
図5は、いくつかの実装形態におけるポーズ補正方法500の一例を示すフローチャートである。いくつかの実装形態において、方法500は、例えば、クライアントデバイス、1つまたは複数のサーバデバイス、および/またはサーバデバイスとクライアントデバイスの両方に実装さてもよい。本明細書記載の例では、実装システムは、1つまたは複数のデジタルハードウェアプロセッサまたは処理回路(「プロセッサ」)、および1つまたは複数の記憶装置を含む。いくつかの実装形態では、1つまたは複数のクライアントデバイスおよび/またはサーバデバイスの異なるコンポーネントは、方法500の異なるブロックまたは方法500の他の部分を実行してもよい。
【0042】
いくつかの実装形態において、ユーザ入力に基づいて方法500を開始してもよい。ユーザは、例えば、表示されたユーザインターフェースから方法500の開始を選択してもよい。いくつかの実装形態では、ユーザ入力を介したユーザによる指示によって、方法500またはその一部が実行されてもよい。
【0043】
いくつかの実装形態では、デバイスによって、方法500または方法500の一部が自動的に開始されてもよい。例えば、方法(またはその一部)は、1つまたは複数の特定のイベントまたは条件の発生に基づいて実行されてもよい。例えば、そのようなイベントまたは条件は、低品質なビデオを生成する可能性のあるカメラアングルでユーザが参加するビデオ通話、および/または方法500を実行するデバイスの設定で規定される1つまたは複数の他のイベントまたは条件が発生することを含んでもよい。
【0044】
ブロック502において、方法500の実行におけるユーザデータの使用に対するユーザ同意(例えば、ユーザ許可)が取得されているかどうかが判定される。例えば、ユーザデータはユーザのビデオや画像を含んでもよい。本明細書記載の方法の1つまたは複数のブロックは、このようなユーザデータをいくつかの実装形態(例えば、顔検出および/またはポーズ補正)において使用してもよい。ブロック502は、共有の提案のフレームワークの一部として実行されてもよく、および/または機能的画像アーカイブの提案の実行に対するユーザの同意が機能的画像アーカイブの提案のフレームワークレベルで得られた場合にのみブロック504以降が実行されるよう、機能的画像アーカイブの提案のフレームワークレベルでの同意を照合するために実行されてもよい。方法500におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、ブロック504において、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定され、方法はブロック506に移行する。ユーザの同意が得られていない場合、ブロック506において、ユーザデータを使用せずにブロックを実行することが決定され、方法はブロック506に移行する。いくつかの実装形態では、ユーザの同意が得られていない場合、方法500の残りの部分は実行されない、および/またはユーザデータを必要とする特定のブロックは実行されない。
【0045】
508において、ビデオフレーム内の顔の位置が決定される。顔の位置を決定することは、第1の視点で物理カメラ(例えば、デバイス104内のカメラ)によって撮られたビデオであって複数のフレームを含むビデオを受信することを含んでもよい。いくつかの実装形態では、ビデオは、複数のフレームのうちの1つまたは複数の深度情報を含むことができる。また、顔の位置を決定することは、ビデオ内の顔を検出することを含んでもよく、顔はビデオの1つまたは複数のフレームの前景部分内にある。いくつかの実装形態では、顔検出は、既知の顔検出技術を使用して実行してもよい。処理は510に移行する。
【0046】
510において、ポーズ補正が実行される。ポーズ補正は、ビデオ内の顔および/または背景を再投影して、調整された顔のポーズを作成する、および/またはレンズの影響やその他の画像の歪みを低減することを含む。ポーズ補正については、
図6を参照して以下で詳しく説明する。処理は512に移行する。
【0047】
512において、オプションで、ポーズ補正されたビデオに対して視線補正が実行される。視線補正は、504で実行されたポーズ補正に対応するようにビデオ内の顔の目の部分を変更することを含んでもよい。処理は514に移行する。
【0048】
514において、オプションで、ポーズ補正された顔を安定させる。安定させることは、顔のポーズを安定させるための変換として、ユーザデバイスの動きに基づく逆変換を適用することを含む。例えば、安定させることは、ユーザデバイスの動きのみを考慮し、ビデオの異なるフレーム間の顔の動きを考慮しなくてもよい。
【0049】
いくつかの実装形態では、ブロック502~514を実行する。その他実装形態では、ブロック502~514のサブセットを実行する。例えば、ブロック508および510が実行される。別の実装形態では、ブロック508、510、および514が実行される。さらに別の実装形態では、ブロック508、510、および512が実行される。上記の実装形態では、異なる順序でブロックが実行されてもよい(例えば、510および508;514、510、および508;または512、510、および508など)。
【0050】
また、安定させることは、ビデオの深度情報の時間履歴(例えば、特定の期間に亘って撮られた異なるビデオフレームで取得された深度情報の時系列)を決定すること、および深度情報の時間履歴を使用してビデオの再投影にヒステリシス(または、定義されたラグ)を提供することを含んでもよい。ヒステリシスを使用することで、再投影される顔の前を移動する一時的な物体にポーズ補正方法が反応しない(例えば、再投影に含めない)ような再投影の連続性を維持することができる。例えば、顔の前を移動する一時的な物体(例えば、ユーザの手やその他の物体)は、しきい値期間未満で検出または再投影される物体を含んでもよい。ビデオ再投影のヒステリシスによって提供されるラグは、再投影された顔の前または近くを通過する一時的な物体によって再投影されたビデオが邪魔されないように、一時的な物体を再投影から除外するのに十分な長さ(例えば、しきい値期間以上)であってもよい。
【0051】
図5では、複数のブロック(例えば、ブロック502~514)が順番に実行されるように示されている。しかし、これらのブロックは、特定の実施形態に合うよう適宜再配置されてもよく、また、いくつかの実装形態においてこれらのブロックまたはその一部は同時に実行されてもよい。また、いくつかの例において、いくつかのブロックを省略、追加のブロックに分割、および/または他のブロックと組み合わせてもよい。
【0052】
図6は、いくつかの実装形態におけるポーズ補正方法600の一例を示すフローチャートである。いくつかの実装形態において、方法600は、例えば、クライアントデバイス、1つまたは複数のサーバデバイス、および/またはサーバデバイスとクライアントデバイスの両方に実装されてもよい。本明細書記載の例において、実装システムは、1つまたは複数のデジタルハードウェアプロセッサまたは処理回路(「プロセッサ」)、および1つまたは複数の記憶装置を含む。いくつかの実装形態では、1つまたは複数のクライアントデバイスおよび/またはサーバデバイスの異なるコンポーネントは、方法600の異なるブロックまたは方法600の他の部分を実行してもよい。
【0053】
いくつかの実装形態において、ユーザ入力に基づいて方法600を開始してもよい。ユーザは、例えば、表示されたユーザインターフェースから方法600の開始を選択してもよい。いくつかの実装形態では、ユーザ入力を介したユーザによる指示によって、方法600またはその一部が実行されてもよい。
【0054】
いくつかの実装形態において、デバイスによって、方法600または方法の一部が自動的に開始されてもよい。例えば、方法(またはその一部)は、1つまたは複数の特定のイベントまたは条件の発生に基づいて実行されてもよい。例えば、そのようなイベントまたは条件は、低品質なビデオを生成する可能性のあるカメラアングルでユーザが参加するビデオ通話、および/または方法600を実行するデバイスの設定で規定される1つまたは複数の他のイベントまたは条件が発生することを含んでもよい。
【0055】
ブロック602において、方法600の実行におけるユーザデータの使用に対するユーザ同意(例えば、ユーザ許可)が取得されているかどうかが判定される。例えば、ユーザデータはユーザのビデオや画像を含んでもよい。本明細書記載の方法の1つまたは複数のブロックは、このようなユーザデータをいくつかの実装形態(例えば、顔検出および/またはポーズ補正)において使用してもよい。ブロック602は、共有の提案のフレームワークの一部として実行されてもよく、および/または機能的画像アーカイブの提案の実行に対するユーザの同意が機能的画像アーカイブの提案のフレームワークレベルで得られた場合にのみブロック604以降が実行されるよう、機能的画像アーカイブの提案のフレームワークレベルでの同意を照合するために実行されてもよい。方法600におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、ブロック604において、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定され、方法はブロック606に移行する。ユーザの同意が得られていない場合、ブロック606において、ユーザデータを使用せずにブロックを実行することが決定され、方法はブロック606に移行する。いくつかの実装形態では、ユーザの同意が得られていない場合、方法600の残りの部分は実行されない、および/またはユーザデータを必要とする特定のブロックは実行されない。
【0056】
608において、複数のフレームを含むビデオまたはビデオの一部が受信される。ビデオは、第1の視点で物理カメラ(例えば、デバイス104のカメラ)によって撮ってもよい。ビデオは、ユーザデバイスによって撮られ1つまたは複数の他のデバイスに送信されるライブビデオを含んでもよい。ビデオの1つまたは複数のフレームを最初に受信し、次に1つまたは複数の追加のビデオフレームを受信してもよい。撮影されたビデオのフレーム毎に対してポーズ補正が実行されてもよい。いくつかの実装形態では、1つまたは複数のビデオフレームが深度情報を含む。深度マップと視差マップデータは、深度センサーから取得してもよい。深度センサーは、任意の適切な深度センサーであってもよい。ビデオ内で検出された顔は、歪みまたは通常低品質なビデオとなりうる角度で撮られたポーズを含む場合がある。写りの悪いポーズは、上述のように、顔検出の回転(例えば、顔のポーズ角度)によって判断可能である。いくつかの実装形態では、システムは、意図的な頭の回転(例えば、うなずき)を検出し、意図的な回転を修正しないよう構成されてもよい。顔のポーズと深度情報をリアルタイムまたはほぼリアルタイムで取得してもよい。処理は610に移行する。
【0057】
610において、ビデオフレームの前景部分と背景部分が判断される。例えば、いくつかの実装形態は、複数のフレームに対応する深度情報の1つまたは複数の深度値に基づいて複数のフレームの前景部分を判断することを含んでもよい。また、前景部分と背景部分を判断することは、縁部を検出するソーベルフィルター(または他のエッジ検出方法)を適用することを含んでもよい。縁部は背景や前景であり得る。いくつかの実装形態において、下記の2つの問題に対処するために、非縁部と比較して、前景と背景を含む可能性のある縁部に対してより重いスムージング操作を適用してもよい。問題1)深度データは凹凸のあるマップであり、各深度ポイント間の接続が滑らかになるようにスムージングが必要である。問題2)縁部周辺の調和を向上するには、縁部はより重いスムージングを必要とする。縁部の深度データの信頼性はない可能性があるため縁部でのアーティファクトを減らすために縁部をスムージングする。
【0058】
いくつかの実装形態において、顔を検出することは、背景面から顔を抽出することを含んでもよく、背景面は深度情報に基づいて決定される。いくつかの実装形態において、ビデオの1つまたは複数のフレームの前景部分内に顔があることがある。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよく、検出することは顔の前景部分を背景から押し出すことを含む。
【0059】
いくつかの実装形態では、顔および背景を検出することは、深度情報に基づいて顔の深さを含み得る押し出しを検出すること、顔の外縁のフレーム内の深さを決定すること、および顔の外縁の深さおよび顔の外縁を超える深さにフレームの一部を含むように背景を設定すること、を含んでもよい。処理は612に移行する。
【0060】
612において、空間ノイズや時間ノイズなどのノイズが除去される。例えば、いくつかの実装形態において、平滑化アルゴリズムを適用して、1つまたは複数のビデオフレーム(または画像)の空間ノイズおよび/または時間ノイズを除去してもよい。処理は614に移行する。
【0061】
614において、オプションで、前景/背景と背景部分が識別され、シェーダーを使用してラベル付けされる。例えば、ユーザデバイスは、値(例えば、[0,1]の範囲内)を返すシェーダー技術を実装して、画像内の点を背景部分または前景部分のいずれかとして定義してもよい。いくつかの実装形態において、ステップ614はシェーダー(およびGPU)によって実装されてもよく、608はCPUによって実装されてもよい。処理は616に移行する。
【0062】
616において、視差マップが適用される。例えば、いくつかの実装形態では、視差マップデータが画像の前景部分に適用されて、カメラ面の表示(例えば、顔のポーズが向いているカメラ面)を識別する。処理は618へ移行する。
【0063】
618において、616で決定されたカメラ面が回転される。例えば、カメラ面は、第1の方向(例えば、カメラによって撮られた元の方向)から第2の方向(例えば、カメラが顔の真正面にあるように見えるようにカメラ面と顔面が略平行となるような仮想カメラの方向)に回転してもよい。いくつかの実装形態では、回転は、顔のポーズの前方ベクトルと反対になるようにカメラの前方ベクトルを設定することを含んでもよい。また、回転は、第2の視点で仮想カメラに面するように背景面を回転させることを含んでもよい。顔追跡部は、デバイスの座標空間または仮想カメラの座標空間とは異なりうる座標空間で、ビデオまたは画像の特定のフレームの変換(例えば、位置および顔ポーズ角度または回転)を提供する。まず、角度と2D位置が変換から計算される。角度は任意の座標系に移動可能である。投影マトリックスが変換に適用され、顔が2D画像のどこにあるかを判断する。これにより、デバイスの座標で使用可能な位置と回転が得られる。実際の角度と制限角度(例えば、20度)のうち小さい方の角度が、前方ベクトルの各軸に適用される。次に、顔の前方ベクトル(例えば、顔が向いているベクトル)は、回転に前方(例えば、0,0,1)を乗算することで決定される。仮想カメラの位置を計算するために、システムは現在のカメラと顔との距離を計算し、顔の位置を乗算し、距離と前方の顔の積を加算してもよい。カメラの仮想位置とカメラは顔の前方と反対を向くことが分かる。ビュー変換を計算することができる。ビュー変換は、上方向(例えば重力に基づく)と前方向(例えば、カメラの位置から顔に向かう方向、つまり、顔の前方ベクトルと反対)に基づいて計算してもよい。上方と前方のクロス積を取ると、左ベクトルが生成される。次に、ビュー変換は、前方、左側、および位置に基づいて決定できる。処理は620に移行する。
【0064】
620において、1つまたは複数のビデオフレームの投影マトリックスが、カメラ面の回転に基づいて更新(または再投影)される。例えば、ビュー変換は、投影、色画像、深度画像、カメラの内在要素、および前景および背景マップとともに描画シェーダーに提供されてもよい。各前景ピクセルに対して、位置が計算され、投影マトリックスが適用されることで、画像の前景ピクセルが再投影されポーズが修正される。背景ピクセルは、元の画像(またはフレーム)と同じ2D位置のより高いZ値に適用されることで、前景が背景を遮る。処理は622に移行する。
【0065】
622において、オプションで、再投影された画像が調整され、オプションで、背景がぼかされる。例えば、画像平面を引き伸ばして顔のポーズの表示全体を覆ってもよく、背景をぼかしてもよい(例えば、回転中に歪んだ可能性のある背景の強調を低減するため)。いくつかの実装形態において、前景を拡大して全てのギャップ(回転によって生成された空白領域など)を覆ってもよい。いくつかの実装形態において、カメラの投影マトリックスを更新することは、画像平面の4つの縁部を通過するようにビデオフレームを再投影することを含んでもよい。
【0066】
図6では、複数のブロック(例えば、ブロック602~622)が順番に実行されるように示されている。しかし、これらのブロックは、特定の実施形態に合うよう適宜再配置されてもよく、また、いくつかの実装形態においてこれらのブロックまたはその一部は同時に実行されてもよい。また、いくつかの例において、いくつかのブロックを省略、追加のブロックに分割、および/または他のブロックと組み合わせてもよい。
【0067】
上述した通り、方法500または方法600について、方法500または方法600の一方または両方の実行におけるユーザデータ(例えば、ビデオ)の使用に対するユーザの同意(例えば、ユーザ許可)が取得されているかどうかを判断することができる。例えば、ユーザデータは、ユーザ設定、ユーザビデオ、ユーザ画像などを含んでもよい。いくつかの実装形態において、本明細書記載の方法の1つまたは複数のブロックが、このようなユーザデータを使用してもよい。例えば、1つまたはボアブロックは、ポーズ補正の実行に対するユーザの同意が得られた場合にのみ該ブロックおよびそれに続くブロックが実行されるよう、ポーズ補正の一部として実行されてもよい。本方法におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定される。ユーザの同意が得られていない場合、本方法全体が実行されないよう構成されてもよく、および/またはユーザデータを必要とする特定のブロックが実行されないよう構成されてもよい。
【0068】
いくつかの実装形態において、ユーザデバイスでフレームごとにビデオを処理し、ポーズ補正を適用し、フレームをビデオ通話サービスに送信してもよい。したがって、本明細書記載の技術が提供するポーズ補正は、ビデオ通話のエラー、中断、または干渉の影響を受けない。いくつかの実装形態において、ユーザの深度画像を使用することで、ユーザのポーズ補正を実行し、ユーザデバイスが取得した深度マップに隠された領域またはギャップが存在する可能性のある領域を全て埋めてもよい。
【0069】
いくつかの実装形態において、ユーザの顔を一時的に遮る物体を無視し、履歴データを使用して顔の位置を予測し、その予測に基づいてポーズ補正を実行し、物体が移動したときに通常のポーズ補正操作機能に復元してもよい。いくつかの実装形態において、物体がユーザの顔の前にある場合、ポーズ補正は補正を次第に弱め、履歴データに依存しないよう構成されてもよい。
【0070】
いくつかの実装形態において、深度画像に浮動小数点値のベクトルを含めてもよく、投影(元のカメラまたは仮想カメラ)に、位置と方向(前方、上方、後方)のマッピングを含む立方体にカメラの円錐をマッピングする4×4マトリックスを含めてもよい。
【0071】
いくつかの実装形態において、2つ以上の顔がビデオフレームに存在する場合、2人(または2人以上)のユーザを分離し、2つ(または2つ以上)の前景として扱うよう構成してもよい。いくつかの実装形態において、2人(または2人以上)のユーザが検出された場合、ポーズ補正を取り消してもよい。
【0072】
いくつかの実装形態において、顔の上にある物体は、本明細書記載のポーズ補正技術によって調整されてもよい。例えば、メガネや帽子が対応可能である。理論上は、顔の上にある物体または顔の前にある物体は、ポーズ補正の問題となりうる。ユーザの顔の上にある物体は、深度データをより大きいスムージングで処理してもよく、穴(例えば、物体により遮られるが補正により表示される顔の領域)が検出されると、システムはポーズ補正を取り消す。ポーズ補正を取り消すことは、補正の適用量を減らすことを含んでもよい。例えば、最大制限の初期値は20度であってもよい。ポーズ補正を取り消すには、20度を0度まで徐々に下げる。効果を滑らかに再適用するために、0度を20度まで徐々に戻してもよい。
【0073】
いくつかの実装形態において、システムは、デバイスの動きに基づいて補正角度を調整してもよい(例えば、ビデオ通話中のデバイスの動きを相殺するため)。いくつかの実装形態において、穴(例えば、遮られるが補正により表示される顔の領域)が検出されると、ポーズ補正は適用されない。実装形態を、防犯カメラ内やその他のカメラ内のポーズ補正に使用してもよい。いくつかの実装形態を、通話相手側のユーザに基づいて視差効果を作成するのに使用してもよい。
【0074】
図7は、本明細書記載の1つまたは複数の特徴を実現するために使用されるデバイス700の一例を示すブロック図である。一例では、デバイス700を使用して、ユーザデバイス(例えば、
図1、
図3、および
図4にそれぞれ示されるユーザデバイス104、302、402)を実現することができる。また、デバイス700は、サーバデバイスを実現することができる。実装において、デバイス700を使用して、クライアントデバイス、サーバデバイス、またはこれらの組み合わせを実現することができる。デバイス700は、上記のシステムおよび/または方法のうちの1つまたは複数を実現するための任意の適切なコンピュータシステム、サーバ、またはその他の電子デバイスまたはハードウェアデバイスであってもよい。
【0075】
本明細書記載の1つまたは複数の方法(例えば、500および/または600)は、任意の種類のコンピューティングデバイス上で実行可能なスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイスで実行されるモバイルアプリケーション(「アプリ」)で実行可能である。モバイルコンピューティングデバイスの例として、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、ジュエリー、帽子、仮想現実ゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネ、ヘッドマウントディスプレイなど)、ラップトップコンピュータが挙げられる。
【0076】
一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、(クライアントデバイスとしての)モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、サーバから出力用(例えば、表示用)の最終出力データを受信する。別の例では、全ての計算が、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行されてもよい。別の例では、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で計算を分割してもよい。
【0077】
いくつかの実装形態では、デバイス700は、プロセッサ702、メモリ704、およびI/Oインターフェース706を含む。プロセッサ702は、プログラムコードを実行しデバイス400の基本的な動作を制御する1つまたは複数のプロセッサおよび/または処理回路であってもよい。「プロセッサ」は、データ、信号、またはその他の情報を処理する適切なハードウェアシステム、メカニズム、またはコンポーネントを含む。プロセッサは、1つまたは複数のコア(例えば、シングルコア、デュアルコア、またはマルチコア構成)を備えた汎用中央処理装置(CPU)、複数の処理装置(例えば、マルチプロセッサ構成)、グラフィックスプロセッシングユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、コンプレックスプログラマブルロジックデバイス(CPLD)、機能を実現するための専用回路、ニューラルネットワークモデルベースの処理を実行する特定用途回路、ニューラル回路、マトリックス計算(マトリックス乗算など)用に最適化されたプロセッサ、またはその他のシステムを含んでもよい。
【0078】
いくつかの実装形態では、プロセッサ702は、ニューラルネットワーク処理を実行する1つまたは複数のコプロセッサを含んでもよい。いくつかの実装形態では、プロセッサ702は、データを処理して確率的出力を生成するプロセッサであってもよく、例えば、プロセッサ702によって生成される出力は、不正確、または、期待される出力からの範囲内で正確であり得る。処理は地理的に特定の場所に限定される必要はなく、時間的な制限もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などで機能を実行してもよい。処理の一部は、異なる(または同じ)処理システムによって、異なる時間および異なる場所で実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
【0079】
メモリ704は、通常、プロセッサ702によるアクセス可能にデバイス700に設けられる。メモリ704は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能な読み取り専用メモリ(EEPROM)、フラッシュメモリなどのプロセッサにより実行される指示を記憶するのに適した任意のプロセッサ可読記憶媒体であってもよい。メモリ704は、プロセッサ702とは別に配置、および/またはプロセッサ702と一体化されてよい。メモリ704は、プロセッサ702によってデバイス700上で動作するソフトウェアを格納可能であり、オペレーティングシステム708、ポーズ補正アプリケーション730、その他のアプリケーション712、およびアプリケーションデータ714を含む。その他のアプリケーション712は、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含み得る。いくつかの実装形態において、ポーズ補正アプリケーション730およびその他のアプリケーション712はそれぞれ、本明細書記載の機能、例えば、
図5および/または
図6の方法の一部または全部、をプロセッサ702に実行させる指示を含んでもよい。あるいは、メモリ704内の任意のソフトウェアを、任意の適切な他の記憶場所またはコンピュータ可読媒体に記憶してもよい。その他、任意の種類の記憶装置(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)が「ストレージ」または「記憶装置」と見なしてよい。
【0080】
I/Oインターフェース706は、デバイス700を他のシステムおよびデバイスに接続可能にする機能を提供してもよい。インターフェースにより接続されたデバイスは、デバイス700の一部として含まれてもよく、あるいは、独立してデバイス700と通信してもよい。例えば、ネットワーク通信デバイス、記憶装置、および入力/出力デバイスは、I/Oインターフェース706を介して通信することができる。いくつかの実装形態において、I/Oインターフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイク、カメラ、スキャナー、センサーなど)および/または出力デバイス(ディスプレイデバイス、スピーカーデバイス、プリンター、モーターなど)などのインターフェースデバイスに接続可能である。
【0081】
I/Oインターフェース706に接続可能なインターフェースデバイスの例として、1つ以上のディスプレイデバイス720、1つ以上のカメラ722、および1つ以上のデータストア738(上述のように)が挙げられる。コンテンツ表示に使用可能なディスプレイデバイス720は、例えば、本明細書記載の出力アプリケーションのユーザインターフェースである。ディスプレイデバイス720は、ローカル接続(例えば、ディスプレイバス)を介して、および/またはネットワーク接続を介してデバイス700に接続可能であり、任意の適切なディスプレイデバイスであってもよい。ディスプレイデバイス720は、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニター、タッチスクリーン、3Dディスプレイスクリーンまたはその他の視覚的ディスプレイデバイスなどの任意の適切なディスプレイデバイスを含むことができる。例えば、ディスプレイデバイス720は、モバイル機器に設けられたフラットディスプレイスクリーン、ゴーグルまたはヘッドセットデバイスに設けられた複数のディスプレイスクリーン、またはコンピュータデバイスのモニタースクリーンであってもよい。カメラデバイス722は、画像および/または画像に映るシーンに関する深度情報を取得するための1つまたは複数のカメラ(または撮像デバイス)を含むことができる。例えば、深度情報は、各ピクセル(またはピクセル群)の値を含んでもよく、その値は、ピクセルによって表される物体のカメラからの距離を表す。
【0082】
I/Oインターフェース706は、その他の入力および出力デバイスに接続可能である。いくつかの例は、画像を撮る1つ以上のカメラを含む。いくつかの実装形態は、音声を捕らえるマイク(例えば、撮られた画像の一部、音声コマンド)、音声を出力するためのオーディオスピーカーデバイス、またはその他の入力および出力デバイスを提供してもよい。
【0083】
図示を容易にするために、
図7は、プロセッサ702、メモリ704、I/Oインターフェース706、およびソフトウェアブロック708、712、および730のそれぞれを1つのブロックで表している。これらのブロックは、1つまたは複数のプロセッサまたは処理回路、1つまたは複数のオペレーティングシステム、1つまたは複数のメモリ、1つまたは複数のI/Oインターフェース、1つまたは複数のアプリケーション、および/または1つまたは複数のソフトウェアモジュールを表してもよい。他の実装形態において、デバイス700は、図示された構成要素のすべてを有さなくてもよく、および/または本明細書に図示されるものの代わりまたはそれに加えて、他の種類の要素を含む他の要素を有してもよい。いくつかのコンポーネントが本明細書の実装形態で説明されるようにブロックおよび操作を実行するものとして説明されたが、デバイス700の任意の適切なコンポーネントまたはコンポーネントの組み合わせ、類似するシステム、またはそのようなシステムに関連する任意の適切な1つまたは複数のプロセッサがこれらのブロックおよび操作を実行してもよい。
【0084】
例として挙げられた上記手持ちデバイスに加えて、他の実装形態は、高い位置に取り付けられてユーザの上の角度からポーズを生成する可能性がある会議室カメラを含んでもよい。いくつかの実装形態において、カメラに対し横側の角度に座っているユーザのポーズ補正を含んでもよい(例えば、歪みは上下の角度ではなく、左側/右側の角度によって引き起こされる)。いくつかの実装形態において、ユーザの顔に近すぎるカメラのポーズ補正を含んでもよい。
【0085】
いくつかの実装形態において、発呼者または被呼者が、ポーズ補正をオンまたはオフにするよう構成されてもよく、ポーズ補正の実行を要求するよう構成されてもよい。いくつかの実装形態において、ポーズ補正は、他の理由、例えば、バッテリー寿命やプロセッサ能力に応じて、手動または自動でオフにされる。
【0086】
本明細書記載の1つまたは複数の方法(例えば、方法500または600)は、コンピュータ上で実行することができるコンピュータプログラム指示またはコードによって実施されてもよい。例えば、コードは、1つまたは複数のデジタルプロセッサ(例えば、マイクロプロセッサまたは他の処理回路)によって実装可能であり、磁気、光学、電磁、または半導体の記憶媒体を含む非一時的なコンピュータ可読媒体(例えば、記憶媒体)を含むコンピュータプログラム製品に格納することができる。これらの記憶媒体は、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、リジッド磁気ディスク、光ディスク、ソリッドステートメモリドライブを含む。プログラム指示は、例えば、サーバ(例えば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SasS)の形で電子信号に含まれ、電子信号として提供されてもよい。あるいは、1つまたは複数の方法をハードウェア(論理ゲートなど)、またはハードウェアとソフトウェアの組み合わせで実現してもよい。ハードウェアの例は、プログラム可能なプロセッサ(例えば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)である。1つまたは複数の方法は、システムで実行されるアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションやオペレーティングシステムと組み合わせて実行されているアプリケーションまたはソフトウェアとして実行されてもよい。
【0087】
本明細書記載の1つまたは複数の方法は、任意の種類のコンピューティングデバイスで実行できるスタンドアロンプログラム、ウェブブラウザで実行されるプログラム、モバイルコンピューティングデバイス(例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、ジュエリー、ヘッドウェア、ゴーグル、メガネなど)、ラップトップコンピュータなど)で実行されるモバイルアプリケーション(「アプリ」)で実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、(クライアントデバイスとして)モバイルコンピューティングデバイスがユーザ入力データをサーバデバイスに送信し、サーバから出力用(例えば、表示用)の最終出力データを受信する。別の例では、全ての計算が、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行されてもよい。別の例では、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で計算を分割してもよい。
【0088】
明細書では、特定の実装形態に関して説明されてきたが、これらの特定の実装形態は単に例示的なものであり、限定的なものではない。例に示されている概念は、他の例や実装形態に適用できる。
【0089】
修正ポーズを生成する性質のため、本明細書記載の実装形態では、ビデオ、画像などのユーザデータへのアクセスが必要な場合がある。本明細書記載の特定の実装形態がユーザに関する個人情報(例えば、ユーザビデオまたは画像データ)を収集または使用する可能性がある場合、ユーザには、個人情報を収集させるかどうか、個人情報を保存させるかどうか、個人情報を使用させるかどうか、およびユーザに関する情報の収集方法、保存方法、および使用方法、を制御する1つまたは複数の機会が提供される。すなわち、本明細書記載のシステムおよび方法は、ユーザの個人情報を収集、保存、および/または使用する明示的な許可を関連するユーザから明確に受け取ったときにユーザの個人情報を収集、保存、および/または使用する。さらに、特定のデータは、保存または使用される前に1つ以上の方法で処理され、個人を特定できる情報が削除されてもよい(例えば、共有の提案システムは、名前やユーザ名などの個人を特定可能な情報以外の特徴によって重要な人物を匿名で識別してもよい)。一例として、ユーザIDは、個人を特定できる情報が特定できないように扱われてもよい。別の例として、ユーザの地理的位置またはユーザ画像に関連付けられた位置は、ユーザの特定の位置を決定できないように、より大きな領域に一般化されてもよい。
【0090】
本開示で説明される機能ブロック、動作、特徴、方法、デバイス、およびシステムは統合されてもよく、当業者が知っているであろうシステム、デバイス、および機能ブロックの異なる組み合わせに分割されてもよい。任意の適切なプログラミング言語およびプログラミング技術を使用して特定の実装形態のルーチンを実現してもよい。例えば、手順または物体に合わせて、異なるプログラミング技術を使用してもよい。ルーチンは、単一の処理デバイスまたは複数のプロセッサで実行してもよい。ステップ、操作、または計算は特定の順序で示されている場合があるが、特定の実装において順序が変更されてもよい。いくつかの実装形態において、本明細書で順次的に示されたステップまたは操作は同時に実行されてもよい。