(57)【要約】いくつかの実装形態は、モバイル機器によって撮られたビデオ画像のポーズ補正のためのコンピュータ実装方法、コンピュータ可読媒体、および／またはシステムを提供する。
2021526693.tif 000002
【特許請求の範囲】
【請求項１】
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第１の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記複数のフレームのうち前景部分内にある顔を検出することと、
前記複数のフレームに対応する前記深度情報の１つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
仮想カメラを前記第１の視点とは異なる第２の視点に位置決めすることと、
前記仮想カメラに基づいて、前記第２の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、を含む方法。
【請求項２】
前記ビデオを撮るために使用される前記物理カメラのレンズの影響を低減するために前記前景部分の前記投影マトリックスを調整することをさらに含む、請求項１に記載の方法。
【請求項３】
前記顔を検出することは、背景面から前記顔を抽出することを含み、
前記背景面は前記深度情報に基づいて決定される、請求項１に記載の方法。
【請求項４】
前記第２の視点で前記仮想カメラに対向するように前記背景面を回転させることをさらに含む、請求項３に記載の方法。
【請求項５】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項１に記載の方法。
【請求項６】
前記顔および背景を検出することは、
前記深度情報に基づいて顔の深度を検出することと、
前記顔の外縁の前記フレーム内の深さを決定することと、
前記顔の外縁の深さおよび前記顔の外縁を超える深さで前記フレームの一部を含むように前記背景を設定することと、を含む、請求項５に記載の方法。
【請求項７】
前記背景をぼかすことをさらに含む、請求項６に記載の方法。
【請求項８】
前記ビデオ内で顔を検出することは、１つまたは複数の軸の周りの前記顔の角度を決定することを含み、
１つまたは複数の軸の周りの前記顔の前記角度がしきい値範囲内の場合、前記決定すること、位置決めすること、取得すること、および生成すること、が実行される、請求項１に記載の方法。
【請求項９】
前記ビデオの深度情報の時間履歴を決定することと、
前記ビデオの深度情報の前記時間履歴を使用してビデオ再投影のヒステリシスを実行することによって、再投影の連続性を維持し、再投影される前記顔の前を移動する一時的な物体に対応しないようにすることと、をさらに含み、
前記一時的な物体が再投影される前記顔の前にある時間はしきい値時間未満である、請求項８に記載の方法。
【請求項１０】
ソフトウェア指示を格納する非一時的なコンピュータ可読媒体に結合された１つまたは複数のプロセッサを備えるシステムであって、
前記ソフトウェア指示が前記１つまたは複数のプロセッサにより実行されると、前記１つまたは複数のプロセッサに操作を実行させ、前記操作は、
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第１の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記ビデオの前記複数のフレームの前景部分内にある顔を検出することと、
前記複数のフレームに対応する前記深度情報の１つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
前記第１の視点とは異なる第２の視点に仮想カメラを位置決めすることと、
前記仮想カメラに基づいて、前記第２の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、
前記変更されたビデオの前記変更された前景部分を安定させることと、を含むシステム。
【請求項１１】
前記操作は、前記ビデオを撮るために使用される前記物理カメラのレンズの影響を低減するために前記前景部分の前記投影マトリックスを調整することをさらに含む、請求項１０に記載のシステム。
【請求項１２】
前記顔を検出することは、背景面から前記顔を抽出することを含み、
前記背景面は前記深度情報に基づいて決定される、請求項１０に記載のシステム。
【請求項１３】
前記操作は、前記第２の視点で前記仮想カメラに対向するように前記背景面を回転させることをさらに含む、請求項１２に記載のシステム。
【請求項１４】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項１０に記載のシステム。
【請求項１５】
前記顔および背景を検出することは、
前記深度情報に基づいて顔の深度を検出することと、
前記顔の外縁の前記フレーム内の深さを決定することと、
前記顔の外縁の深さおよび前記顔の外縁を超える深さで前記フレームの一部を含むように前記背景を設定することと、を含む、請求項１４に記載のシステム。
【請求項１６】
前記操作は、前記背景をぼかすことをさらに含む、請求項１５に記載のシステム。
【請求項１７】
前記ビデオ内で顔を検出することは、１つまたは複数の軸の周りの前記顔の角度を決定することを含み、
１つまたは複数の軸の周りの前記顔の前記角度がしきい値範囲内の場合、前記決定すること、位置決めすること、取得すること、および生成すること、が実行される請求項１０に記載のシステム。
【請求項１８】
前記操作は、
前記ビデオの深度情報の時間履歴を決定することと、
前記ビデオの深度情報の前記時間履歴を使用してビデオ再投影のヒステリシスを実行することによって、再投影の連続性を維持し、再投影される前記顔の前を移動する一時的な物体に対応しないようにすることと、をさらに含み、
前記一時的な物体が再投影される前記顔の前にある時間はしきい値時間未満である、請求項１７に記載のシステム。
【請求項１９】
ソフトウェア指示を格納する非一時的なコンピュータ可読媒体であって、
前記ソフトウェア指示が１つまたは複数のプロセッサにより実行されると、前記１つまたは複数のプロセッサに操作を実行させ、前記操作は、
複数のフレームを含むビデオを受信することであって、前記ビデオは物理カメラによって第１の視点で撮られ、前記ビデオは前記複数のフレームに対応する深度情報を含む、受信することと、
前記ビデオ内で、前記ビデオの前記複数のフレームの前景部分内にある顔を検出することと、
前記複数のフレームに対応する前記深度情報の１つまたは複数の深度値に基づいて、前記複数のフレームの前記前景部分を決定することと、
前記第１の視点とは異なる第２の視点に仮想カメラを位置決めすることと、
前記仮想カメラに基づいて、前記第２の視点に対応する前記前景部分の投影マトリックスを取得することと、
変更された前景部分を含む変更されたビデオを前記投影マトリックスに基づいて生成することと、
前記変更されたビデオの前記変更された前景部分を安定させることと、を含む非一時的なコンピュータ可読媒体。
【請求項２０】
前記前景部分を決定することは、前記顔および背景を検出することを含み、
該検出することは、前記顔の前記前景部分を前記背景から押し出すことを含む、請求項１９に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ポーズ補正に関する。
【背景技術】
【０００２】
モバイル機器（例えば、携帯電話、タブレットなど）を使用したビデオ通話中に、モバイル機器が撮るユーザの画像が不適切な角度となるような角度で、ユーザがモバイル機器をユーザの顔に対して保持または配置する場合がしばしばある。不適切な角度とは、例えば、ユーザの表情を見るのに最適ではない角度、顔が歪んだ画像を生成する角度である。例えば、ユーザは、携帯電話をユーザの顔に向けて上向きの角度で、電話を上向きに保持することがある。この場合、最適より低い角度（例えば、顎や鼻の下から見上げる）角度でユーザが撮られることがある。また、ユーザの顔が歪んで見えたり、ユーザが他の通話参加者を向いていないように見えたりして、アイコンタクトが失われたように見えることがある。さらに、ユーザの手が震えると、ビデオ通話に撮られている画像に乱れが生じることがある。
【０００３】
本明細書で提供される背景技術の説明は、本開示の関連技術を一般的に提示することを目的としている。本明細書の背景技術に記載された本発明者等による業績および出願時に従来技術として認定していない態様の記載は、本開示に対する従来技術として明示的にも黙示的にも認めない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ポーズ補正のためのコンピュータ実装方法、コンピュータ可読媒体、および／またはシステムを提供する。
【課題を解決するための手段】
【０００５】
いくつかの実装形態は、概してモバイル機器のビデオ通話に関連しており、特にモバイル機器が撮影するビデオ画像のポーズ補正に関連する。
いくつかの実装形態は、ユーザのデバイスに関連した深度カメラを使用してユーザの顔のポーズと視線を取得することと、顔のポーズの補正と顔のポーズの安定化を実行することと、を含む。
【０００６】
いくつかの実装形態は、コンピュータが実行する方法を含んでもよい。この方法は、物理カメラによって第１の視点で撮られ複数のフレームを含むビデオを受信することと、ビデオ内で顔を検出することと、を含んでもよい。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームのうち前景部分内にある。
【０００７】
また、この方法は、複数のフレームに対応する深度情報の１つまたは複数の深度値に基づいて複数のフレームの前景部分を決定することと、仮想カメラを第１の視点とは異なる第２の視点に位置決めすること、とを含んでもよい。更に、この方法は、仮想カメラに基づいて前景部分の第２の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。
【０００８】
また、この方法は、ビデオを撮るために使用される物理カメラのレンズの影響を低減するために前景部分の投影マトリックスを調整することを含んでもよい。いくつかの実装形態では、顔を検出することは、背景面から顔を抽出することを含んでもよく、背景面は深度情報に基づいて決定される。また、この方法は、第２の視点で仮想カメラに対向するように背景面を回転させることを含んでもよい。
【０００９】
いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよく、検出することは、顔の前景部分を背景から押し出すことを含んでもよい。いくつかの実装形態において、押し出すことは、深度情報に基づいて顔の深度を検出することと、顔の外縁のフレーム内の深さを決定することと、顔の外縁の深さおよび顔の外縁を超える深さでフレームの一部を含むように背景を設定することと、を含んでもよい、含んでもよい。
【００１０】
また、この方法は、背景をぼかすことを含んでもよい。更に、この方法は、ビデオの深度情報の時間履歴を決定することを含んでもよい。また、この方法は、ビデオの深度情報の時間履歴を使用してビデオ再投影のヒステリシスを提供することによって、再投影の連続性を維持し、再投影される顔の前を移動する一時的な物体に対応しないようにすることを含んでもよい。一時的な物体が再投影される顔の前にある時間はしきい値時間未満である。
【００１１】
いくつかの実装形態は、ソフトウェア指示を格納する非一時的なコンピュータ可読媒体に結合された１つまたは複数のプロセッサを備えるシステムを含んでもよい。ソフトウェア指示が１つまたは複数のプロセッサにより実行されると、１つまたは複数のプロセッサに操作を実行させる。操作は、複数のフレームを含むビデオを受信することと、ビデオ内に顔を検出することと、を含んでもよい。ビデオは物理カメラによって第１の視点で撮られる。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームの前景部分内にある。
【００１２】
また、操作は、複数のフレームに対応する深度情報の１つまたは複数の深度値に基づいて、複数のフレームの前景部分を決定することと、第１の視点とは異なる第２の視点に仮想カメラを位置決めすることと、を含んでもよい。更に、操作は、仮想カメラに基づいて前景部分の第２の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。また、操作は、変更されたビデオの変更された前景部分を安定させることを含んでもよい。
【００１３】
更に、操作は、ビデオを撮るために使用される物理カメラのレンズの影響を低減するために前景部分の投影マトリックスを調整することを含んでもよい。いくつかの実装形態において、顔を検出することは、背景面から顔を抽出することを含む。背景面は深度情報に基づいて決定される。
【００１４】
また、操作は、第２の視点で仮想カメラに対向するように背景面を回転させることを含んでもよい。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含む。検出することは、顔の前景部分を背景から押し出すことを含んでもよい。いくつかの実装形態において、押し出すことは、深度情報に基づいて顔の深度を検出することと、顔の外縁のフレーム内の深さを決定することと、顔の外縁の深さおよび顔の外縁を超える深さでフレームの一部を含むように背景を設定することと、を含んでもよい。
【００１５】
また、操作は、背景をぼかすことを含んでもよい。更に、操作は、ビデオの深度情報の時間履歴を決定することを含んでもよい。また、操作は、ビデオの深度情報の時間履歴を使用してビデオ再投影のヒステリシスを提供することによって、再投影の連続性を維持し、再投影される顔の前を移動する一時的な物体に対応しないようにすることを含んでもよい。一時的な物体が再投影される顔の前にある時間はしきい値時間未満である。
【００１６】
いくつかの実装形態は、ソフトウェア指示を格納する非一時的なコンピュータ可読媒体を含んでもよい。ソフトウェア指示が１つまたは複数のプロセッサにより実行されると、１つまたは複数のプロセッサに操作を実行させる。操作は、複数のフレームを含むビデオを受信することと、ビデオ内に顔を検出することと、を含んでもよい。ビデオは物理カメラによって第１の視点で撮られる。ビデオは複数のフレームに対応する深度情報を含む。顔は、ビデオの複数のフレームの前景部分内にある。操作は、複数のフレームに対応する深度情報の１つまたは複数の深度値に基づいて、複数のフレームの前景部分を決定することと、第１の視点とは異なる第２の視点に仮想カメラを位置決めすることと、を含んでもよい。
【００１７】
更に、操作は、仮想カメラに基づいて前景部分の第２の視点に対応する投影マトリックスを取得することと、変更された前景部分を含む変更されたビデオを投影マトリックスに基づいて生成することと、を含んでもよい。また、操作は、変更されたビデオの変更された前景部分を安定させることを含んでもよい。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよい。検出することは、顔の前景部分を背景から押し出すことを含む。
【図面の簡単な説明】
【００１８】
【図１】ビデオ通話に使用されるユーザデバイスの一例であって、低品質なビデオを生成する可能性のある角度でユーザを撮っているユーザデバイスを示す図。
【図２】ビデオ通話に使用されるユーザデバイスの一例であって、低品質なビデオを生成する可能性のある角度でユーザを撮っているユーザデバイスと、いくつかの実装形態において高品質なビデオを作成するためにユーザのポーズ補正に使用される仮想視点と、を示す図。
【図３】低品質なビデオを生成する可能性のある角度で撮られたビデオのビデオ通話を示す例示的なユーザデバイスの図。
【図４】補正されたポーズおよびより高品質なビデオを生成するために再投影されたビデオのビデオ通話を示す例示的なユーザデバイスの図。
【図５】いくつかの実装形態におけるポーズ補正方法の一例を示すフローチャート。
【図６】いくつかの実装形態におけるポーズ補正方法の一例を示すフローチャート。
【図７】いくつかの実装形態におけるポーズ補正するよう構成された演算装置の一例を示す図。
【発明を実施するための形態】
【００１９】
いくつかの実装形態は、ビデオ通話またはビデオ会議でのユーザのポーズを変更または補正する方法およびシステムを含む。ユーザは、低品質なビデオを生成する可能性のある角度でカメラを使用してビデオ通話に参加していたり、通話中のある時点でそのような角度に移動していたりする場合がある。例えば、ユーザの電話の持ち方によって、ユーザが見上げているようにビデオに映る場合がある。現在、スマートフォン、ラップトップ、タブレットなど、ほとんどのビデオ通話機器は、機器の上端にカメラを備えている。このような配置では、ビデオ通話に最適ではない画像が生成されることがしばしばある。実装形態におけるポーズ補正に適した画像は、写真、シネマグラフ、その他のアニメーション画像、ビデオなどの単一の画像を含む。
【００２０】
いくつかの実装形態では、ユーザが補正されたポーズ（例えば、直接カメラを向いているポーズなど）となる角度で現れるような仮想視点（または仮想カメラアングル）を使用してユーザのビデオ画像を再投影することにより、調整されたビデオ通話を表示させることができる。また、いくつかの実装形態は、カメラの歪み補正（例えば、鼻の拡大作用の除去）、ジッターの影響の低減（例えば、ユーザの手の動きによるもの）、などを含んでもよい。
【００２１】
実装形態は、ビデオフレームから色と深度情報を取得することにより、前景の深度を押し出してもよい。システムは、デバイスの物理カメラとは異なる角度で仮想カメラを（例えば、ユーザが他の人から直接見られているような効果が得られるように）配置することが可能である。
【００２２】
いくつかの実装形態は、１）フレーム内顔検出、２）ポーズ補正、３）視線補正、の３つの主要操作を含んでもよい。いくつかの実装形態において、フレーム内顔検出は、顔のポーズ角度（例えば、３次元オイラー角）とフレーム内の顔の位置を取得する技術（ＡＲＫｉｔ（商標）やＡＲＣｏｒｅ（商標）など）を使用することを含んでもよい。ポーズ角度は、カメラに対する顔の角度を含んでもよい（例えば、真っ直ぐ前を見る位置が０，０，０であり、顔が１つの軸を中心に回転すると、その軸に対応する角度が３次元オイラー角度で変化する）。この位置は、カラー画像内のｘ、ｙ位置であり、これによりデバイスはデバイスに対する相対位置（例えば、ｘ、ｙ、ｚ位置）を決定することができる。追加のパディングをフレームに加えて、バッファーを設けてもよい。カメラに対するユーザの顔の角度が、しきい値（すなわち、安全な）範囲内（例えば、ｘ軸またはｙ軸の周りにプラスマイナス約２０度）にある毎に、システムは高信頼値を返す。高信頼値は、本明細書記載のポーズ補正技術が効果を奏する可能性が最も高くなるような配置で、ユーザの顔がビデオのフレーム内に配置されていることを示す。ユーザの顔の画像がパディング領域にある場合、信頼度は低い（例えば、このようなユーザの顔の位置では、本明細書のポーズ補正技術の効果が低下する可能性があることを示す）。パディング内の顔の部分が増加するにつれて信頼度は低下する。ユーザが許容範囲（例えば、フレームおよび／またはパディング）外にいる場合、信頼度は返されない（あるいは、ゼロまたはゼロに近い信頼値が返される）。
【００２３】
フレーム内顔検出に基づいて、信頼度、理由または根拠、および／またはユーザへのガイダンスを提供してもよい。上述したように、信頼度は、ビデオまたは他の画像のフレーム内の所与の顔の位置に対してポーズ補正技術が効果的に適用される信頼性のレベルを示す。理由または根拠は、信頼度スコアが低い可能性がある理由を示してもよい（例えば、顔が境界線に近すぎるなど）。ガイダンスは、信頼度スコア低下の原因となった問題をユーザが修正できるようシステムが（例えば、グラフィカルユーザインターフェースを介して）提供する指示の表示を含んでもよい。例えば、信頼度が低い場合、理由を特定し、その理由に基づくフィードバック（例えば、信頼性が低くなるほど透明度が高くなる黒い影や、フレーム内に戻るようユーザに指示する小さな矢印）をユーザに提供してもよい。これは、信頼度が高いビデオが撮られるようユーザに変更を促すのに役立つ。
【００２４】
撮像デバイスが深度データ、例えば、深度センサーまたはデバイスのその他のハードウェアを使用して取得されたリアルタイム深度データ、を提供する場合、実装形態は、そのようなデータを顔のポーズとともに考慮することができる。カメラのＲＧＢフィードは、カメラの前方（例えば、カメラのレンズからカメラが撮っている被写体に向かって前方を指すベクトル）に垂直、且つ、視錐台の基部全体に広がる平面として表されてもよい。いくつかの実装形態において、ポーズ補正は、背景検出、押し出し、回転の３つの操作を含んでもよい。
【００２５】
いくつかの実装形態において、背景検出は、背景を検出または決定するために深度データを使用することを含んでもよい。ライブの深度フレームを使用した背景検出には、ノイズとにじみ現象（例えば、縁部付近のデータ欠落のために発生するハロー（ｈａｌｏ）のようなアーティファクト）という２つの主な技術的問題がある。いくつかの実装形態において、背景として処理できる領域の縁部を検出するためにソーベルフィルターを適用することにより、にじみ現象問題の解決策を提供する。空間ノイズや時間ノイズなどのノイズの問題に対処するために、平滑化アルゴリズムを使用してもよい。
【００２６】
所与の点が背景か前景かの信頼性を定義する範囲（例えば［０，１］）の値を返す上記の機能にシェーダーを実装してもよい（すなわち、前景部分の縁部周りのフェード作用に使用できる情報を提供する）。シェーダーは、効率性を得るためにＣＰＵではなくＧＰＵで実行処理を実行するピクセル毎分類子を含んでもよい。シェーダーは、入力としてカラー画像を取得し、出力画像として前景／背景マスクを生成する（例えば、赤＝前景、黒＝背景）。別のシェーダーは、カラー画像、深度画像、前景／背景マスク、および／またはカメラの内在要素（カメラの焦点距離、その他のカメラパラメーターまたはカメラ設定など）を入力として使用して、ポーズ補正を実行する。
【００２７】
いくつかの実装形態は、１つまたは複数のビデオフレーム（または他の画像）の少なくとも一部の押し出しおよび回転を含んでもよい。押し出しおよび回転は、平滑化視差マップデータの使用を含んでもよい。視差マップデータを（カメラ平面表示の）画像の前景部分に適用して、前景ピクセルをカメラに近づけてもよい。視差マップは、深度データを表す（例えば、デバイスカメラからある点までの距離を表す）別の方法である。
【００２８】
いくつかの実装形態では、仮想カメラの位置は、１つまたは複数のフレーム（例えば、第１のフレーム）において顔面に垂直になるように更新される。仮想カメラ位置の更新は、カメラの前方ベクトルを顔アンカーの前方ベクトルの反対に設定することを含む。顔アンカーは、顔検出時に計算された顔の位置と顔の回転角を含む。いくつかの実装形態において、意図的な顔の動きが無効にならないよう、デバイスが移動する毎に実行され顔のポーズと「正面ポーズ」との現在の差異が考慮される計算を使用して、カメラの投影マトリックスが画像平面の４つの縁を通過するよう更新してもよい。いくつかの実装形態において、前景ピクセルが見えることを条件に、前景ピクセルの投影マトリックスを維持し、背景ピクセルの投影を省略してもよい。これにより、計算時間が短縮する。前景で背景を覆い、そして、前景を拡大して顔の回転によって作られた全てのギャップが覆われるように、前景を拡大して背景との不一致を隠してもよい。
【００２９】
いくつかの実装形態は、背景処理を含んでもよい。いくつかの実装形態において、背景処理は、回転によって引き伸ばされる可能性のある背景の調整を含んでもよい。背景が邪魔とならないように、背景にぼかし効果を使用してもよい。
【００３０】
本明細書に記載されたシステムおよび方法は、従来のビデオ通話システムおよび方法の欠点を克服する。例えば、従来のビデオ通話システムにおいては、カメラアングルを検出、補正、または調整する機能を持たないものがある。そのため、低品質なビデオが撮られたり、特徴の誇張および／または動作の影響などビデオフレームの他の問題が引き起されたりする可能性がある。デジタルカメラ、カメラ内蔵電話、カメラ付きウェアラブルデバイス、頭部装着デバイス、タブレット、パーソナルコンピュータなどのデジタル撮像機器が簡単に利用できるため、ユーザは頻繁にビデオを撮影または送信することができる。
【００３１】
本明細書に記載されたシステムおよび方法は、ビデオまたは他の画像の自動ポーズ補正をユーザに提供することで、従来のビデオ通話システムおよび方法の欠点を克服する。従来のシステムにおいて、画像分析およびそれに対応する信頼度スコアに基づいて姿勢を検出および修正しないという技術的な問題を有するものがある。本開示の主題は、ビデオまたはその他の画像のポーズを修正する技術および／またはビデオまたは画像のその他の問題を自動的に修正する技術に関する。本開示の主題のいくつかの実装形態は、上記の技術的問題に対する解決策を提供する。例えば、いくつかの実装形態において、ビデオを再投影することにより、カメラアングルに関係なく高品質なビデオが可能である。
【００３２】
本明細書では、ビデオを例として主題を説明する。その他の種類の画像を、主題の実装形態とともに使用してもよい。画像は、静止画像（例えば、動きのない単一フレーム）、アニメーション画像、ビデオ（例えば、複数のフレームを使用）などを使用してもよい。例えば、静止画像は１つ以上の物体を描写し、アニメーション画像は画像内で変化する１つ以上の物体を描写してもよい（例えば、目を閉じた状態と開いた状態の間で移行する顔や、口が笑っていない位置から笑った位置へ移動する顔を撮ったライブ写真）。ビデオは、１つまたは複数の人物または物体を描写する複数のフレームを含んでもよい。ポーズ補正は、任意の種類の画像に実行することができ、同じおよび／または異なる種類の画像群を含んでもよい。
【００３３】
図１は、ユーザデバイス１０４を使用してビデオ通話をするユーザ１０２の一例を示す。ユーザの顔に対するユーザデバイス１０４の角度は、図３に例示される低品質なビデオフレームのような低品質なビデオが生成される可能性がある角度でユーザのビデオが撮られる角度である。
【００３４】
ユーザ１０２の顔に対するユーザデバイス１０４の角度によって、カメラからユーザの頭頂部までの第１の距離１０６は、ユーザデバイス１０４のカメラからユーザ１０２の顔の底部までの第２の距離１０８とは異なる（例えば、距離１０８より長い）。ユーザデバイス１０４の上向き角度に起因する距離１０６、１０８の差により、高品質なビデオが提供されない可能性がある（例えば、図３のデバイス３０２に示されるような）ポーズが作成される（例えば、歪みの原因となる）。
【００３５】
低品質なビデオを生成する可能性のある角度でのポーズに加えて、（例えば、ユーザ１０２による手の動きまたはジッターによる）動きの影響およびユーザデバイス１０４のレンズによる画像への影響（例えば、鼻の拡大作用）などの他の問題がビデオ内で起こり得る。これらの問題は、ユーザデバイス上のカメラの物理的な配置（例えば、デバイスの上部）に起因する場合や、携帯電話やウェアラブルデバイス（例えば、スマートウォッチやその他のデバイス）などのユーザデバイスを保持する一般的な姿勢が電話（または他のデバイス）を持つ手がユーザの顔に対して下向きの角度になることに起因する場合がある。画像の前景部分の歪み（例えば、低品質ビデオ３０４を生成する可能性のある角度で撮られたポーズ）に加えて、カメラアングルによって背景３０６が歪む場合がある。
【００３６】
図２は、ビデオ通話をするために使用されるユーザデバイス１０４であって、低品質なビデオ（例えば、１０６と１０８の違い）を生成し得る角度でユーザ１０２を撮っているユーザデバイス１０４を例示している。また、図２は、ユーザ１０２の画像を再投影し、ユーザのポーズを修正するために使用される仮想視点２０２も示している。仮想視点２０２は、ユーザ１０２の顔面に対して略平行であり（または、少なくともユーザデバイス１０４よりも顔面に対して平行に近い）、仮想視点２０２からユーザ１０２の顔の頂部までの第１の距離２０４と、仮想視点２０２からユーザ１０２の顔の底部までの第２の距離２０６とはほぼ同じである。仮想視点を使用して、本明細書に記載のようにビデオ内のユーザの顔を再投影して、図４に示すような調整されたポーズ４０４を生成してもよい。図４では、再投影されたビデオを受信するデバイス４０２は、ユーザの調整されたポーズ４０４と、図３の回転されていない背景３０６と比較して歪みを低減するために回転された背景４０６と、を含む。仮想視点２０２は、顔の前にある（例えば、デバイスから顔までの距離は同じであるが、回転してユーザの顔の真正面にある）。
【００３７】
各ユーザデバイス（またはクライアントデバイス）は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイル機器、カメラ、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、またはエンターテインメントデバイス、ウェアラブルデバイス（ディスプレイグラスまたはゴーグル、ヘッドマウントディスプレイ（ＨＭＤ）、腕時計、ヘッドセット、アームバンド、ジュエリーなど）、仮想現実（ＶＲ）および／または拡張現実（ＡＲ）対応デバイス、携帯情報端末（ＰＤＡ）、メディアプレーヤー、ゲームデバイスなどの任意の種類の電子機器であってもよい。クライアントデバイスは、データベース１０６と同様のローカルデータベースまたは他の記憶装置を有してもよい。他の実装形態では、ネットワーク環境１００は、表示されるコンポーネントの全ては有さなくてもよく、および／または、本明細書記載の要素に代えてまたは加えて他の種類の要素を含む他の要素を有してもよい。
【００３８】
ユーザインターフェースを使用して、画像、画像構成、データ、その他のコンテンツのほか、通信、プライバシー設定、通知、その他のデータをクライアントデバイスに表示できる。このようなインターフェースは、クライアントデバイス上のソフトウェア、サーバデバイス上のソフトウェア、および／またはサーバデバイス上で実行されるクライアントソフトウェアとサーバソフトウェアの組み合わせ、例えば、サーバシステムと通信するアプリケーションソフトウェアまたはクライアントソフトウェア、を使用して表示できる。ユーザインターフェースは、クライアントデバイスまたはサーバデバイスのディスプレイデバイス、例えば、ディスプレイスクリーン、プロジェクターなどによって表示することができる。いくつかの実装形態では、サーバシステム上で実行されるアプリケーションプログラムは、クライアントデバイスと通信して、クライアントデバイスでユーザ入力を受信し、クライアントデバイスで視覚データや音声データなどのデータを出力してもよい。
【００３９】
いくつかの実装形態では、１つまたは複数のクライアントデバイスおよび／またはサーバシステムは、ポーズ補正を提供することができる。ポーズ補正により、システム（例えば、クライアントデバイスまたはサーバデバイス）は、撮像問題のあるビデオのポーズ補正を自動的に行うことができ、そのいくつかの例は本明細書に記載されている。ポーズ補正システムおよび方法は、１つまたは複数の関連するユーザインターフェースに補正されたビデオを提供することが可能であり、ユーザインターフェースは補正されたビデオを受信するクライアントデバイスに関連するディスプレイデバイスに表示される。本明細書記載の１つまたは複数の特徴とともに、画像管理アプリケーション、ブラウザ、通信アプリケーションなどの他のアプリケーションを使用してもよい。
【００４０】
本明細書記載の特徴の様々な実装形態は、任意の種類のシステムおよび／またはサービスを使用してもよい。例えば、ソーシャルネットワーキングサービス、画像収集および共有サービス、アシスト付きメッセージングサービスまたは他のネットワークサービス（例えば、インターネットに接続されたサービス）は、クライアントおよびサーバデバイスによってアクセスされる本明細書に記載された１つまたは複数の特徴を含んでもよい。本明細書記載の特徴は任意の種類の電子機器に利用されてよい。いくつかの実装形態は、コンピュータネットワークから切断されたクライアントデバイスまたはサーバデバイス上、または断続的に接続されるクライアントデバイスまたはサーバデバイス上に、本明細書記載の１つまたは複数の特徴を提供することができる。いくつかの例では、ディスプレイデバイスを含むまたはディスプレイデバイスに接続されたクライアントデバイスは、クライアントデバイスにローカルな（例えば、通信ネットワークを介して接続されていない）記憶装置に格納された画像を検査および表示することが可能であり、本明細書記載の特徴および結果をユーザに見えるように提供する。
【００４１】
図５は、いくつかの実装形態におけるポーズ補正方法５００の一例を示すフローチャートである。いくつかの実装形態において、方法５００は、例えば、クライアントデバイス、１つまたは複数のサーバデバイス、および／またはサーバデバイスとクライアントデバイスの両方に実装さてもよい。本明細書記載の例では、実装システムは、１つまたは複数のデジタルハードウェアプロセッサまたは処理回路（「プロセッサ」）、および１つまたは複数の記憶装置を含む。いくつかの実装形態では、１つまたは複数のクライアントデバイスおよび／またはサーバデバイスの異なるコンポーネントは、方法５００の異なるブロックまたは方法５００の他の部分を実行してもよい。
【００４２】
いくつかの実装形態において、ユーザ入力に基づいて方法５００を開始してもよい。ユーザは、例えば、表示されたユーザインターフェースから方法５００の開始を選択してもよい。いくつかの実装形態では、ユーザ入力を介したユーザによる指示によって、方法５００またはその一部が実行されてもよい。
【００４３】
いくつかの実装形態では、デバイスによって、方法５００または方法５００の一部が自動的に開始されてもよい。例えば、方法（またはその一部）は、１つまたは複数の特定のイベントまたは条件の発生に基づいて実行されてもよい。例えば、そのようなイベントまたは条件は、低品質なビデオを生成する可能性のあるカメラアングルでユーザが参加するビデオ通話、および／または方法５００を実行するデバイスの設定で規定される１つまたは複数の他のイベントまたは条件が発生することを含んでもよい。
【００４４】
ブロック５０２において、方法５００の実行におけるユーザデータの使用に対するユーザ同意（例えば、ユーザ許可）が取得されているかどうかが判定される。例えば、ユーザデータはユーザのビデオや画像を含んでもよい。本明細書記載の方法の１つまたは複数のブロックは、このようなユーザデータをいくつかの実装形態（例えば、顔検出および／またはポーズ補正）において使用してもよい。ブロック５０２は、共有の提案のフレームワークの一部として実行されてもよく、および／または機能的画像アーカイブの提案の実行に対するユーザの同意が機能的画像アーカイブの提案のフレームワークレベルで得られた場合にのみブロック５０４以降が実行されるよう、機能的画像アーカイブの提案のフレームワークレベルでの同意を照合するために実行されてもよい。方法５００におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、ブロック５０４において、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定され、方法はブロック５０６に移行する。ユーザの同意が得られていない場合、ブロック５０６において、ユーザデータを使用せずにブロックを実行することが決定され、方法はブロック５０６に移行する。いくつかの実装形態では、ユーザの同意が得られていない場合、方法５００の残りの部分は実行されない、および／またはユーザデータを必要とする特定のブロックは実行されない。
【００４５】
５０８において、ビデオフレーム内の顔の位置が決定される。顔の位置を決定することは、第１の視点で物理カメラ（例えば、デバイス１０４内のカメラ）によって撮られたビデオであって複数のフレームを含むビデオを受信することを含んでもよい。いくつかの実装形態では、ビデオは、複数のフレームのうちの１つまたは複数の深度情報を含むことができる。また、顔の位置を決定することは、ビデオ内の顔を検出することを含んでもよく、顔はビデオの１つまたは複数のフレームの前景部分内にある。いくつかの実装形態では、顔検出は、既知の顔検出技術を使用して実行してもよい。処理は５１０に移行する。
【００４６】
５１０において、ポーズ補正が実行される。ポーズ補正は、ビデオ内の顔および／または背景を再投影して、調整された顔のポーズを作成する、および／またはレンズの影響やその他の画像の歪みを低減することを含む。ポーズ補正については、図６を参照して以下で詳しく説明する。処理は５１２に移行する。
【００４７】
５１２において、オプションで、ポーズ補正されたビデオに対して視線補正が実行される。視線補正は、５０４で実行されたポーズ補正に対応するようにビデオ内の顔の目の部分を変更することを含んでもよい。処理は５１４に移行する。
【００４８】
５１４において、オプションで、ポーズ補正された顔を安定させる。安定させることは、顔のポーズを安定させるための変換として、ユーザデバイスの動きに基づく逆変換を適用することを含む。例えば、安定させることは、ユーザデバイスの動きのみを考慮し、ビデオの異なるフレーム間の顔の動きを考慮しなくてもよい。
【００４９】
いくつかの実装形態では、ブロック５０２〜５１４を実行する。その他実装形態では、ブロック５０２〜５１４のサブセットを実行する。例えば、ブロック５０８および５１０が実行される。別の実装形態では、ブロック５０８、５１０、および５１４が実行される。さらに別の実装形態では、ブロック５０８、５１０、および５１２が実行される。上記の実装形態では、異なる順序でブロックが実行されてもよい（例えば、５１０および５０８；５１４、５１０、および５０８；または５１２、５１０、および５０８など）。
【００５０】
また、安定させることは、ビデオの深度情報の時間履歴（例えば、特定の期間に亘って撮られた異なるビデオフレームで取得された深度情報の時系列）を決定すること、および深度情報の時間履歴を使用してビデオの再投影にヒステリシス（または、定義されたラグ）を提供することを含んでもよい。ヒステリシスを使用することで、再投影される顔の前を移動する一時的な物体にポーズ補正方法が反応しない（例えば、再投影に含めない）ような再投影の連続性を維持することができる。例えば、顔の前を移動する一時的な物体（例えば、ユーザの手やその他の物体）は、しきい値期間未満で検出または再投影される物体を含んでもよい。ビデオ再投影のヒステリシスによって提供されるラグは、再投影された顔の前または近くを通過する一時的な物体によって再投影されたビデオが邪魔されないように、一時的な物体を再投影から除外するのに十分な長さ（例えば、しきい値期間以上）であってもよい。
【００５１】
図５では、複数のブロック（例えば、ブロック５０２〜５１４）が順番に実行されるように示されている。しかし、これらのブロックは、特定の実施形態に合うよう適宜再配置されてもよく、また、いくつかの実装形態においてこれらのブロックまたはその一部は同時に実行されてもよい。また、いくつかの例において、いくつかのブロックを省略、追加のブロックに分割、および／または他のブロックと組み合わせてもよい。
【００５２】
図６は、いくつかの実装形態におけるポーズ補正方法６００の一例を示すフローチャートである。いくつかの実装形態において、方法６００は、例えば、クライアントデバイス、１つまたは複数のサーバデバイス、および／またはサーバデバイスとクライアントデバイスの両方に実装されてもよい。本明細書記載の例において、実装システムは、１つまたは複数のデジタルハードウェアプロセッサまたは処理回路（「プロセッサ」）、および１つまたは複数の記憶装置を含む。いくつかの実装形態では、１つまたは複数のクライアントデバイスおよび／またはサーバデバイスの異なるコンポーネントは、方法６００の異なるブロックまたは方法６００の他の部分を実行してもよい。
【００５３】
いくつかの実装形態において、ユーザ入力に基づいて方法６００を開始してもよい。ユーザは、例えば、表示されたユーザインターフェースから方法６００の開始を選択してもよい。いくつかの実装形態では、ユーザ入力を介したユーザによる指示によって、方法６００またはその一部が実行されてもよい。
【００５４】
いくつかの実装形態において、デバイスによって、方法６００または方法の一部が自動的に開始されてもよい。例えば、方法（またはその一部）は、１つまたは複数の特定のイベントまたは条件の発生に基づいて実行されてもよい。例えば、そのようなイベントまたは条件は、低品質なビデオを生成する可能性のあるカメラアングルでユーザが参加するビデオ通話、および／または方法６００を実行するデバイスの設定で規定される１つまたは複数の他のイベントまたは条件が発生することを含んでもよい。
【００５５】
ブロック６０２において、方法６００の実行におけるユーザデータの使用に対するユーザ同意（例えば、ユーザ許可）が取得されているかどうかが判定される。例えば、ユーザデータはユーザのビデオや画像を含んでもよい。本明細書記載の方法の１つまたは複数のブロックは、このようなユーザデータをいくつかの実装形態（例えば、顔検出および／またはポーズ補正）において使用してもよい。ブロック６０２は、共有の提案のフレームワークの一部として実行されてもよく、および／または機能的画像アーカイブの提案の実行に対するユーザの同意が機能的画像アーカイブの提案のフレームワークレベルで得られた場合にのみブロック６０４以降が実行されるよう、機能的画像アーカイブの提案のフレームワークレベルでの同意を照合するために実行されてもよい。方法６００におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、ブロック６０４において、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定され、方法はブロック６０６に移行する。ユーザの同意が得られていない場合、ブロック６０６において、ユーザデータを使用せずにブロックを実行することが決定され、方法はブロック６０６に移行する。いくつかの実装形態では、ユーザの同意が得られていない場合、方法６００の残りの部分は実行されない、および／またはユーザデータを必要とする特定のブロックは実行されない。
【００５６】
６０８において、複数のフレームを含むビデオまたはビデオの一部が受信される。ビデオは、第１の視点で物理カメラ（例えば、デバイス１０４のカメラ）によって撮ってもよい。ビデオは、ユーザデバイスによって撮られ１つまたは複数の他のデバイスに送信されるライブビデオを含んでもよい。ビデオの１つまたは複数のフレームを最初に受信し、次に１つまたは複数の追加のビデオフレームを受信してもよい。撮影されたビデオのフレーム毎に対してポーズ補正が実行されてもよい。いくつかの実装形態では、１つまたは複数のビデオフレームが深度情報を含む。深度マップと視差マップデータは、深度センサーから取得してもよい。深度センサーは、任意の適切な深度センサーであってもよい。ビデオ内で検出された顔は、歪みまたは通常低品質なビデオとなりうる角度で撮られたポーズを含む場合がある。写りの悪いポーズは、上述のように、顔検出の回転（例えば、顔のポーズ角度）によって判断可能である。いくつかの実装形態では、システムは、意図的な頭の回転（例えば、うなずき）を検出し、意図的な回転を修正しないよう構成されてもよい。顔のポーズと深度情報をリアルタイムまたはほぼリアルタイムで取得してもよい。処理は６１０に移行する。
【００５７】
６１０において、ビデオフレームの前景部分と背景部分が判断される。例えば、いくつかの実装形態は、複数のフレームに対応する深度情報の１つまたは複数の深度値に基づいて複数のフレームの前景部分を判断することを含んでもよい。また、前景部分と背景部分を判断することは、縁部を検出するソーベルフィルター（または他のエッジ検出方法）を適用することを含んでもよい。縁部は背景や前景であり得る。いくつかの実装形態において、下記の２つの問題に対処するために、非縁部と比較して、前景と背景を含む可能性のある縁部に対してより重いスムージング操作を適用してもよい。問題１）深度データは凹凸のあるマップであり、各深度ポイント間の接続が滑らかになるようにスムージングが必要である。問題２）縁部周辺の調和を向上するには、縁部はより重いスムージングを必要とする。縁部の深度データの信頼性はない可能性があるため縁部でのアーティファクトを減らすために縁部をスムージングする。
【００５８】
いくつかの実装形態において、顔を検出することは、背景面から顔を抽出することを含んでもよく、背景面は深度情報に基づいて決定される。いくつかの実装形態において、ビデオの１つまたは複数のフレームの前景部分内に顔があることがある。いくつかの実装形態において、前景部分を決定することは、顔および背景を検出することを含んでもよく、検出することは顔の前景部分を背景から押し出すことを含む。
【００５９】
いくつかの実装形態では、顔および背景を検出することは、深度情報に基づいて顔の深さを含み得る押し出しを検出すること、顔の外縁のフレーム内の深さを決定すること、および顔の外縁の深さおよび顔の外縁を超える深さにフレームの一部を含むように背景を設定すること、を含んでもよい。処理は６１２に移行する。
【００６０】
６１２において、空間ノイズや時間ノイズなどのノイズが除去される。例えば、いくつかの実装形態において、平滑化アルゴリズムを適用して、１つまたは複数のビデオフレーム（または画像）の空間ノイズおよび／または時間ノイズを除去してもよい。処理は６１４に移行する。
【００６１】
６１４において、オプションで、前景／背景と背景部分が識別され、シェーダーを使用してラベル付けされる。例えば、ユーザデバイスは、値（例えば、［０，１］の範囲内）を返すシェーダー技術を実装して、画像内の点を背景部分または前景部分のいずれかとして定義してもよい。いくつかの実装形態において、ステップ６１４はシェーダー（およびＧＰＵ）によって実装されてもよく、６０８はＣＰＵによって実装されてもよい。処理は６１６に移行する。
【００６２】
６１６において、視差マップが適用される。例えば、いくつかの実装形態では、視差マップデータが画像の前景部分に適用されて、カメラ面の表示（例えば、顔のポーズが向いているカメラ面）を識別する。処理は６１８へ移行する。
【００６３】
６１８において、６１６で決定されたカメラ面が回転される。例えば、カメラ面は、第１の方向（例えば、カメラによって撮られた元の方向）から第２の方向（例えば、カメラが顔の真正面にあるように見えるようにカメラ面と顔面が略平行となるような仮想カメラの方向）に回転してもよい。いくつかの実装形態では、回転は、顔のポーズの前方ベクトルと反対になるようにカメラの前方ベクトルを設定することを含んでもよい。また、回転は、第２の視点で仮想カメラに面するように背景面を回転させることを含んでもよい。顔追跡部は、デバイスの座標空間または仮想カメラの座標空間とは異なりうる座標空間で、ビデオまたは画像の特定のフレームの変換（例えば、位置および顔ポーズ角度または回転）を提供する。まず、角度と２Ｄ位置が変換から計算される。角度は任意の座標系に移動可能である。投影マトリックスが変換に適用され、顔が２Ｄ画像のどこにあるかを判断する。これにより、デバイスの座標で使用可能な位置と回転が得られる。実際の角度と制限角度（例えば、２０度）のうち小さい方の角度が、前方ベクトルの各軸に適用される。次に、顔の前方ベクトル（例えば、顔が向いているベクトル）は、回転に前方（例えば、０，０，１）を乗算することで決定される。仮想カメラの位置を計算するために、システムは現在のカメラと顔との距離を計算し、顔の位置を乗算し、距離と前方の顔の積を加算してもよい。カメラの仮想位置とカメラは顔の前方と反対を向くことが分かる。ビュー変換を計算することができる。ビュー変換は、上方向（例えば重力に基づく）と前方向（例えば、カメラの位置から顔に向かう方向、つまり、顔の前方ベクトルと反対）に基づいて計算してもよい。上方と前方のクロス積を取ると、左ベクトルが生成される。次に、ビュー変換は、前方、左側、および位置に基づいて決定できる。処理は６２０に移行する。
【００６４】
６２０において、１つまたは複数のビデオフレームの投影マトリックスが、カメラ面の回転に基づいて更新（または再投影）される。例えば、ビュー変換は、投影、色画像、深度画像、カメラの内在要素、および前景および背景マップとともに描画シェーダーに提供されてもよい。各前景ピクセルに対して、位置が計算され、投影マトリックスが適用されることで、画像の前景ピクセルが再投影されポーズが修正される。背景ピクセルは、元の画像（またはフレーム）と同じ２Ｄ位置のより高いＺ値に適用されることで、前景が背景を遮る。処理は６２２に移行する。
【００６５】
６２２において、オプションで、再投影された画像が調整され、オプションで、背景がぼかされる。例えば、画像平面を引き伸ばして顔のポーズの表示全体を覆ってもよく、背景をぼかしてもよい（例えば、回転中に歪んだ可能性のある背景の強調を低減するため）。いくつかの実装形態において、前景を拡大して全てのギャップ（回転によって生成された空白領域など）を覆ってもよい。いくつかの実装形態において、カメラの投影マトリックスを更新することは、画像平面の４つの縁部を通過するようにビデオフレームを再投影することを含んでもよい。
【００６６】
図６では、複数のブロック（例えば、ブロック６０２〜６２２）が順番に実行されるように示されている。しかし、これらのブロックは、特定の実施形態に合うよう適宜再配置されてもよく、また、いくつかの実装形態においてこれらのブロックまたはその一部は同時に実行されてもよい。また、いくつかの例において、いくつかのブロックを省略、追加のブロックに分割、および／または他のブロックと組み合わせてもよい。
【００６７】
上述した通り、方法５００または方法６００について、方法５００または方法６００の一方または両方の実行におけるユーザデータ（例えば、ビデオ）の使用に対するユーザの同意（例えば、ユーザ許可）が取得されているかどうかを判断することができる。例えば、ユーザデータは、ユーザ設定、ユーザビデオ、ユーザ画像などを含んでもよい。いくつかの実装形態において、本明細書記載の方法の１つまたは複数のブロックが、このようなユーザデータを使用してもよい。例えば、１つまたはボアブロックは、ポーズ補正の実行に対するユーザの同意が得られた場合にのみ該ブロックおよびそれに続くブロックが実行されるよう、ポーズ補正の一部として実行されてもよい。本方法におけるユーザデータの使用に対するユーザの同意が関連するユーザから得られた場合、本明細書記載の方法のブロックが記載の通りユーザデータを使用して実行可能と決定される。ユーザの同意が得られていない場合、本方法全体が実行されないよう構成されてもよく、および／またはユーザデータを必要とする特定のブロックが実行されないよう構成されてもよい。
【００６８】
いくつかの実装形態において、ユーザデバイスでフレームごとにビデオを処理し、ポーズ補正を適用し、フレームをビデオ通話サービスに送信してもよい。したがって、本明細書記載の技術が提供するポーズ補正は、ビデオ通話のエラー、中断、または干渉の影響を受けない。いくつかの実装形態において、ユーザの深度画像を使用することで、ユーザのポーズ補正を実行し、ユーザデバイスが取得した深度マップに隠された領域またはギャップが存在する可能性のある領域を全て埋めてもよい。
【００６９】
いくつかの実装形態において、ユーザの顔を一時的に遮る物体を無視し、履歴データを使用して顔の位置を予測し、その予測に基づいてポーズ補正を実行し、物体が移動したときに通常のポーズ補正操作機能に復元してもよい。いくつかの実装形態において、物体がユーザの顔の前にある場合、ポーズ補正は補正を次第に弱め、履歴データに依存しないよう構成されてもよい。
【００７０】
いくつかの実装形態において、深度画像に浮動小数点値のベクトルを含めてもよく、投影（元のカメラまたは仮想カメラ）に、位置と方向（前方、上方、後方）のマッピングを含む立方体にカメラの円錐をマッピングする４×４マトリックスを含めてもよい。
【００７１】
いくつかの実装形態において、２つ以上の顔がビデオフレームに存在する場合、２人（または２人以上）のユーザを分離し、２つ（または２つ以上）の前景として扱うよう構成してもよい。いくつかの実装形態において、２人（または２人以上）のユーザが検出された場合、ポーズ補正を取り消してもよい。
【００７２】
いくつかの実装形態において、顔の上にある物体は、本明細書記載のポーズ補正技術によって調整されてもよい。例えば、メガネや帽子が対応可能である。理論上は、顔の上にある物体または顔の前にある物体は、ポーズ補正の問題となりうる。ユーザの顔の上にある物体は、深度データをより大きいスムージングで処理してもよく、穴（例えば、物体により遮られるが補正により表示される顔の領域）が検出されると、システムはポーズ補正を取り消す。ポーズ補正を取り消すことは、補正の適用量を減らすことを含んでもよい。例えば、最大制限の初期値は２０度であってもよい。ポーズ補正を取り消すには、２０度を０度まで徐々に下げる。効果を滑らかに再適用するために、０度を２０度まで徐々に戻してもよい。
【００７３】
いくつかの実装形態において、システムは、デバイスの動きに基づいて補正角度を調整してもよい（例えば、ビデオ通話中のデバイスの動きを相殺するため）。いくつかの実装形態において、穴（例えば、遮られるが補正により表示される顔の領域）が検出されると、ポーズ補正は適用されない。実装形態を、防犯カメラ内やその他のカメラ内のポーズ補正に使用してもよい。いくつかの実装形態を、通話相手側のユーザに基づいて視差効果を作成するのに使用してもよい。
【００７４】
図７は、本明細書記載の１つまたは複数の特徴を実現するために使用されるデバイス７００の一例を示すブロック図である。一例では、デバイス７００を使用して、ユーザデバイス（例えば、図１、図３、および図４にそれぞれ示されるユーザデバイス１０４、３０２、４０２）を実現することができる。また、デバイス７００は、サーバデバイスを実現することができる。実装において、デバイス７００を使用して、クライアントデバイス、サーバデバイス、またはこれらの組み合わせを実現することができる。デバイス７００は、上記のシステムおよび／または方法のうちの１つまたは複数を実現するための任意の適切なコンピュータシステム、サーバ、またはその他の電子デバイスまたはハードウェアデバイスであってもよい。
【００７５】
本明細書記載の１つまたは複数の方法（例えば、５００および／または６００）は、任意の種類のコンピューティングデバイス上で実行可能なスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイスで実行されるモバイルアプリケーション（「アプリ」）で実行可能である。モバイルコンピューティングデバイスの例として、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス（腕時計、アームバンド、ジュエリー、帽子、仮想現実ゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネ、ヘッドマウントディスプレイなど）、ラップトップコンピュータが挙げられる。
【００７６】
一例では、クライアント／サーバアーキテクチャを使用することができ、例えば、（クライアントデバイスとしての）モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、サーバから出力用（例えば、表示用）の最終出力データを受信する。別の例では、全ての計算が、モバイルコンピューティングデバイス上のモバイルアプリ（および／または他のアプリ）内で実行されてもよい。別の例では、モバイルコンピューティングデバイスと１つまたは複数のサーバデバイスとの間で計算を分割してもよい。
【００７７】
いくつかの実装形態では、デバイス７００は、プロセッサ７０２、メモリ７０４、およびＩ／Ｏインターフェース７０６を含む。プロセッサ７０２は、プログラムコードを実行しデバイス４００の基本的な動作を制御する１つまたは複数のプロセッサおよび／または処理回路であってもよい。「プロセッサ」は、データ、信号、またはその他の情報を処理する適切なハードウェアシステム、メカニズム、またはコンポーネントを含む。プロセッサは、１つまたは複数のコア（例えば、シングルコア、デュアルコア、またはマルチコア構成）を備えた汎用中央処理装置（ＣＰＵ）、複数の処理装置（例えば、マルチプロセッサ構成）、グラフィックスプロセッシングユニット（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、機能を実現するための専用回路、ニューラルネットワークモデルベースの処理を実行する特定用途回路、ニューラル回路、マトリックス計算（マトリックス乗算など）用に最適化されたプロセッサ、またはその他のシステムを含んでもよい。
【００７８】
いくつかの実装形態では、プロセッサ７０２は、ニューラルネットワーク処理を実行する１つまたは複数のコプロセッサを含んでもよい。いくつかの実装形態では、プロセッサ７０２は、データを処理して確率的出力を生成するプロセッサであってもよく、例えば、プロセッサ７０２によって生成される出力は、不正確、または、期待される出力からの範囲内で正確であり得る。処理は地理的に特定の場所に限定される必要はなく、時間的な制限もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などで機能を実行してもよい。処理の一部は、異なる（または同じ）処理システムによって、異なる時間および異なる場所で実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
【００７９】
メモリ７０４は、通常、プロセッサ７０２によるアクセス可能にデバイス７００に設けられる。メモリ７０４は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリなどのプロセッサにより実行される指示を記憶するのに適した任意のプロセッサ可読記憶媒体であってもよい。メモリ７０４は、プロセッサ７０２とは別に配置、および／またはプロセッサ７０２と一体化されてよい。メモリ７０４は、プロセッサ７０２によってデバイス７００上で動作するソフトウェアを格納可能であり、オペレーティングシステム７０８、ポーズ補正アプリケーション７３０、その他のアプリケーション７１２、およびアプリケーションデータ７１４を含む。その他のアプリケーション７１２は、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含み得る。いくつかの実装形態において、ポーズ補正アプリケーション７３０およびその他のアプリケーション７１２はそれぞれ、本明細書記載の機能、例えば、図５および／または図６の方法の一部または全部、をプロセッサ７０２に実行させる指示を含んでもよい。あるいは、メモリ７０４内の任意のソフトウェアを、任意の適切な他の記憶場所またはコンピュータ可読媒体に記憶してもよい。その他、任意の種類の記憶装置（磁気ディスク、光ディスク、磁気テープ、または他の有形媒体）が「ストレージ」または「記憶装置」と見なしてよい。
【００８０】
Ｉ／Ｏインターフェース７０６は、デバイス７００を他のシステムおよびデバイスに接続可能にする機能を提供してもよい。インターフェースにより接続されたデバイスは、デバイス７００の一部として含まれてもよく、あるいは、独立してデバイス７００と通信してもよい。例えば、ネットワーク通信デバイス、記憶装置、および入力／出力デバイスは、Ｉ／Ｏインターフェース７０６を介して通信することができる。いくつかの実装形態において、Ｉ／Ｏインターフェースは、入力デバイス（キーボード、ポインティングデバイス、タッチスクリーン、マイク、カメラ、スキャナー、センサーなど）および／または出力デバイス（ディスプレイデバイス、スピーカーデバイス、プリンター、モーターなど）などのインターフェースデバイスに接続可能である。
【００８１】
Ｉ／Ｏインターフェース７０６に接続可能なインターフェースデバイスの例として、１つ以上のディスプレイデバイス７２０、１つ以上のカメラ７２２、および１つ以上のデータストア７３８（上述のように）が挙げられる。コンテンツ表示に使用可能なディスプレイデバイス７２０は、例えば、本明細書記載の出力アプリケーションのユーザインターフェースである。ディスプレイデバイス７２０は、ローカル接続（例えば、ディスプレイバス）を介して、および／またはネットワーク接続を介してデバイス７００に接続可能であり、任意の適切なディスプレイデバイスであってもよい。ディスプレイデバイス７２０は、ＬＣＤ、ＬＥＤ、またはプラズマディスプレイスクリーン、ＣＲＴ、テレビ、モニター、タッチスクリーン、３Ｄディスプレイスクリーンまたはその他の視覚的ディスプレイデバイスなどの任意の適切なディスプレイデバイスを含むことができる。例えば、ディスプレイデバイス７２０は、モバイル機器に設けられたフラットディスプレイスクリーン、ゴーグルまたはヘッドセットデバイスに設けられた複数のディスプレイスクリーン、またはコンピュータデバイスのモニタースクリーンであってもよい。カメラデバイス７２２は、画像および／または画像に映るシーンに関する深度情報を取得するための１つまたは複数のカメラ（または撮像デバイス）を含むことができる。例えば、深度情報は、各ピクセル（またはピクセル群）の値を含んでもよく、その値は、ピクセルによって表される物体のカメラからの距離を表す。
【００８２】
Ｉ／Ｏインターフェース７０６は、その他の入力および出力デバイスに接続可能である。いくつかの例は、画像を撮る１つ以上のカメラを含む。いくつかの実装形態は、音声を捕らえるマイク（例えば、撮られた画像の一部、音声コマンド）、音声を出力するためのオーディオスピーカーデバイス、またはその他の入力および出力デバイスを提供してもよい。
【００８３】
図示を容易にするために、図７は、プロセッサ７０２、メモリ７０４、Ｉ／Ｏインターフェース７０６、およびソフトウェアブロック７０８、７１２、および７３０のそれぞれを１つのブロックで表している。これらのブロックは、１つまたは複数のプロセッサまたは処理回路、１つまたは複数のオペレーティングシステム、１つまたは複数のメモリ、１つまたは複数のＩ／Ｏインターフェース、１つまたは複数のアプリケーション、および／または１つまたは複数のソフトウェアモジュールを表してもよい。他の実装形態において、デバイス７００は、図示された構成要素のすべてを有さなくてもよく、および／または本明細書に図示されるものの代わりまたはそれに加えて、他の種類の要素を含む他の要素を有してもよい。いくつかのコンポーネントが本明細書の実装形態で説明されるようにブロックおよび操作を実行するものとして説明されたが、デバイス７００の任意の適切なコンポーネントまたはコンポーネントの組み合わせ、類似するシステム、またはそのようなシステムに関連する任意の適切な１つまたは複数のプロセッサがこれらのブロックおよび操作を実行してもよい。
【００８４】
例として挙げられた上記手持ちデバイスに加えて、他の実装形態は、高い位置に取り付けられてユーザの上の角度からポーズを生成する可能性がある会議室カメラを含んでもよい。いくつかの実装形態において、カメラに対し横側の角度に座っているユーザのポーズ補正を含んでもよい（例えば、歪みは上下の角度ではなく、左側／右側の角度によって引き起こされる）。いくつかの実装形態において、ユーザの顔に近すぎるカメラのポーズ補正を含んでもよい。
【００８５】
いくつかの実装形態において、発呼者または被呼者が、ポーズ補正をオンまたはオフにするよう構成されてもよく、ポーズ補正の実行を要求するよう構成されてもよい。いくつかの実装形態において、ポーズ補正は、他の理由、例えば、バッテリー寿命やプロセッサ能力に応じて、手動または自動でオフにされる。
【００８６】
本明細書記載の１つまたは複数の方法（例えば、方法５００または６００）は、コンピュータ上で実行することができるコンピュータプログラム指示またはコードによって実施されてもよい。例えば、コードは、１つまたは複数のデジタルプロセッサ（例えば、マイクロプロセッサまたは他の処理回路）によって実装可能であり、磁気、光学、電磁、または半導体の記憶媒体を含む非一時的なコンピュータ可読媒体（例えば、記憶媒体）を含むコンピュータプログラム製品に格納することができる。これらの記憶媒体は、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、リジッド磁気ディスク、光ディスク、ソリッドステートメモリドライブを含む。プログラム指示は、例えば、サーバ（例えば、分散システムおよび／またはクラウドコンピューティングシステム）から配信されるサービスとしてのソフトウェア（ＳａｓＳ）の形で電子信号に含まれ、電子信号として提供されてもよい。あるいは、１つまたは複数の方法をハードウェア（論理ゲートなど）、またはハードウェアとソフトウェアの組み合わせで実現してもよい。ハードウェアの例は、プログラム可能なプロセッサ（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス）、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路（ＡＳＩＣ）である。１つまたは複数の方法は、システムで実行されるアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションやオペレーティングシステムと組み合わせて実行されているアプリケーションまたはソフトウェアとして実行されてもよい。
【００８７】
本明細書記載の１つまたは複数の方法は、任意の種類のコンピューティングデバイスで実行できるスタンドアロンプログラム、ウェブブラウザで実行されるプログラム、モバイルコンピューティングデバイス（例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス（腕時計、アームバンド、ジュエリー、ヘッドウェア、ゴーグル、メガネなど）、ラップトップコンピュータなど）で実行されるモバイルアプリケーション（「アプリ」）で実行することができる。一例では、クライアント／サーバアーキテクチャを使用することができ、例えば、（クライアントデバイスとして）モバイルコンピューティングデバイスがユーザ入力データをサーバデバイスに送信し、サーバから出力用（例えば、表示用）の最終出力データを受信する。別の例では、全ての計算が、モバイルコンピューティングデバイス上のモバイルアプリ（および／または他のアプリ）内で実行されてもよい。別の例では、モバイルコンピューティングデバイスと１つまたは複数のサーバデバイスとの間で計算を分割してもよい。
【００８８】
明細書では、特定の実装形態に関して説明されてきたが、これらの特定の実装形態は単に例示的なものであり、限定的なものではない。例に示されている概念は、他の例や実装形態に適用できる。
【００８９】
修正ポーズを生成する性質のため、本明細書記載の実装形態では、ビデオ、画像などのユーザデータへのアクセスが必要な場合がある。本明細書記載の特定の実装形態がユーザに関する個人情報（例えば、ユーザビデオまたは画像データ）を収集または使用する可能性がある場合、ユーザには、個人情報を収集させるかどうか、個人情報を保存させるかどうか、個人情報を使用させるかどうか、およびユーザに関する情報の収集方法、保存方法、および使用方法、を制御する１つまたは複数の機会が提供される。すなわち、本明細書記載のシステムおよび方法は、ユーザの個人情報を収集、保存、および／または使用する明示的な許可を関連するユーザから明確に受け取ったときにユーザの個人情報を収集、保存、および／または使用する。さらに、特定のデータは、保存または使用される前に１つ以上の方法で処理され、個人を特定できる情報が削除されてもよい（例えば、共有の提案システムは、名前やユーザ名などの個人を特定可能な情報以外の特徴によって重要な人物を匿名で識別してもよい）。一例として、ユーザＩＤは、個人を特定できる情報が特定できないように扱われてもよい。別の例として、ユーザの地理的位置またはユーザ画像に関連付けられた位置は、ユーザの特定の位置を決定できないように、より大きな領域に一般化されてもよい。
【００９０】
本開示で説明される機能ブロック、動作、特徴、方法、デバイス、およびシステムは統合されてもよく、当業者が知っているであろうシステム、デバイス、および機能ブロックの異なる組み合わせに分割されてもよい。任意の適切なプログラミング言語およびプログラミング技術を使用して特定の実装形態のルーチンを実現してもよい。例えば、手順または物体に合わせて、異なるプログラミング技術を使用してもよい。ルーチンは、単一の処理デバイスまたは複数のプロセッサで実行してもよい。ステップ、操作、または計算は特定の順序で示されている場合があるが、特定の実装において順序が変更されてもよい。いくつかの実装形態において、本明細書で順次的に示されたステップまたは操作は同時に実行されてもよい。
【図１】
2021526693.tif 000003
【図２】
2021526693.tif 000004
【図３】
2021526693.tif 000005
【図４】
2021526693.tif 000006
【図５】
2021526693.tif 000007
【図６】
2021526693.tif 000008
【図７】
2021526693.tif 000009
【国際調査報告】
2021526693.tif 000010
2021526693.tif 000011