(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-12
(54)【発明の名称】画像再投影のためのシステムおよび方法
(51)【国際特許分類】
G06T 15/20 20110101AFI20250204BHJP
H04N 23/68 20230101ALI20250204BHJP
H04N 23/60 20230101ALI20250204BHJP
H04N 23/63 20230101ALI20250204BHJP
G06V 20/20 20220101ALI20250204BHJP
G06T 7/223 20170101ALI20250204BHJP
【FI】
G06T15/20
H04N23/68
H04N23/60 500
H04N23/63
H04N23/60 300
G06V20/20
G06T7/223
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024539048
(86)(22)【出願日】2022-12-21
(85)【翻訳文提出日】2024-06-26
(86)【国際出願番号】 US2022082189
(87)【国際公開番号】W WO2023129855
(87)【国際公開日】2023-07-06
(32)【優先日】2021-12-31
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-09-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ピア・ゾーベル
(72)【発明者】
【氏名】ユヴァル・シュワルツ
(72)【発明者】
【氏名】タル・ザディック
(72)【発明者】
【氏名】イスハーク・マルツィアーノ
(72)【発明者】
【氏名】ロイ・ハードゥーン
(72)【発明者】
【氏名】メイア・ツール
(72)【発明者】
【氏名】ロン・ガイズマン
(72)【発明者】
【氏名】イェフダ・パステルナーク
【テーマコード(参考)】
5C122
5L096
【Fターム(参考)】
5C122DA03
5C122EA41
5C122FA04
5C122FA18
5C122FH04
5C122FH11
5C122FH12
5C122FH18
5C122FJ03
5C122FK09
5C122FK12
5C122FK21
5C122GC14
5C122GC52
5C122HA75
5C122HA88
5C122HB01
5C122HB05
5C122HB10
5L096AA09
5L096EA15
5L096EA16
5L096EA26
5L096HA04
(57)【要約】
撮像システムは、深度センサから(環境に対応する)深度データを受信し、画像センサから第1の画像データ(環境の描写)を受信する。撮像システムは、深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の動きベクトルを生成する。撮像システムは、第1の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の動きベクトルを生成する。撮像システムは、第2の動きベクトルに従って第1の画像データを修正することによって第2の画像データを生成する。第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む。いくつかの画像再投影アプリケーション(例えば、フレーム補間)は、深度データなしで実行することができる。
【特許請求の範囲】
【請求項1】
画像処理のための装置であって、
少なくとも1つのメモリと、
前記少なくとも1つのメモリに結合される少なくとも1つのプロセッサであって、
環境に対応する深度情報を含む深度データを受信することと、
画像センサによってキャプチャされた第1の画像データを受信することであって、前記第1の画像データは前記環境の描写を含む、受信することと、
少なくとも前記深度データに基づいて、前記第1の画像データ内の前記環境の前記描写の視点の変化に対応する第1の複数の動きベクトルを生成することと、
前記第1の複数の動きベクトルに基づくグリッド反転を使用して、前記視点の変化について前記第1の画像データにおける前記環境の前記描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成することと、
前記第2の複数の動きベクトルに従って前記第1の画像データを少なくとも部分的に修正することによって第2の画像データを生成することであって、前記第2の画像データは、前記第1の画像データとは異なる視点からの前記環境の第2の描写を含む、生成することと、
前記第2の画像データを出力することと
を行うように構成される、少なくとも1つのプロセッサと
を備える、装置。
【請求項2】
前記第2の画像データは、第1の時間と第3の時間との間の第2の時間に前記環境を描写するように構成される補間画像を含み、前記第1の画像データは、前記第1の時間または前記第3の時間のうちの少なくとも1つにおける前記環境を描写する少なくとも1つの画像を含む、請求項1に記載の装置。
【請求項3】
前記第1の画像データは、視差移動を含むビデオデータの複数のフレームを含み、前記第2の画像データは、前記視差移動を低減するビデオデータの前記複数のフレームの安定化された変形を含む、請求項1に記載の装置。
【請求項4】
前記第1の画像データは、第1の角度から前記画像センサを見ている人物を含み、前記第2の画像データは、前記第1の角度とは異なる第2の角度から前記画像センサを見ている前記人物を含む、請求項1に記載の装置。
【請求項5】
視点の変化は、角度に従い軸を中心とした視点の回転を含む、請求項1に記載の装置。
【請求項6】
視点の変化は、方向および距離に従った視点の並進を含む、請求項1に記載の装置。
【請求項7】
視点の変化は変換を含む、請求項1に記載の装置。
【請求項8】
前記視点の変化は、前記第1の画像データにおける前記環境の前記描写の元の視点と前記環境におけるオブジェクトの位置との間の軸に沿った移動を含み、前記オブジェクトの少なくとも一部は、前記第1の画像データ内に描写される、請求項1に記載の装置。
【請求項9】
前記少なくとも1つのプロセッサが、
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のギャップを識別し、
前記第2の画像データを出力する前に補間を使用して前記第2の画像データ内の前記1つまたはまたは複数のギャップを少なくとも部分的に埋めることによって前記第2の画像データを修正する、
ように構成される、請求項1に記載の装置。
【請求項10】
前記少なくとも1つのプロセッサが、
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、
前記第2の画像データを出力する前にインペインティングを使用して前記第2の画像データ内の前記1つまたは複数のギャップを少なくとも部分的に埋めることによって前記第2の画像データを修正する
ように構成される、請求項1に記載の装置。
【請求項11】
前記少なくとも1つのプロセッサが、
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、
前記第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して前記第2の画像データ内の前記1つまたは複数のギャップを少なくとも部分的に埋めることによって前記第2の画像データを修正する
ように構成される、請求項1に記載の装置。
【請求項12】
前記少なくとも1つのプロセッサが、
前記第2の複数の動きベクトル内の前記第1の画像データからの1つまたは複数の競合値に基づいて、前記第2の画像データ内の1つまたは複数の競合を識別し、
前記第2の複数の動きベクトルに関連付けられた移動データに基づいて、前記第1の画像データから前記1つまたは複数の競合値のうちの1つを選択する、
ように構成される、請求項1に記載の装置。
【請求項13】
前記深度情報は、第1の視点からの環境の三次元表現を含む、請求項1に記載の装置。
【請求項14】
前記深度データは、少なくとも1つの深度センサから受信される、請求項1に記載の装置。
【請求項15】
ディスプレイであって、前記第2の画像データを出力するために、前記少なくとも1つのプロセッサは、少なくとも前記ディスプレイを使用して前記第2の画像データを表示するように構成される、ディスプレイ
をさらに備える、請求項1に記載の装置。
【請求項16】
通信インターフェースであって、前記第2の画像データを出力するために、前記少なくとも1つのプロセッサは、少なくとも前記通信インターフェースを使用して少なくとも受信側デバイスに少なくとも前記第2の画像データを送信するように構成される、通信インターフェース
をさらに備える、請求項1に記載の装置。
【請求項17】
前記装置は、ヘッドマウントディスプレイ(HMD)、モバイルハンドセット、またはワイヤレス通信デバイスのうちの少なくとも1つを含む、請求項1に記載の装置。
【請求項18】
画像処理のための方法であって、
環境に対応する深度情報を含む深度データを受信するステップと、
画像センサによってキャプチャされた第1の画像データを受信するステップであって、前記第1の画像データは前記環境の描写を含む、ステップと、
少なくとも前記深度データに基づいて、前記第1の画像データ内の前記環境の前記描写の視点の変化に対応する第1の複数の動きベクトルを生成するステップと、
前記第1の複数の動きベクトルに基づくグリッド反転を使用して、前記視点の変化について前記第1の画像データにおける前記環境の前記描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成するステップと、
前記第2の複数の動きベクトルに従って前記第1の画像データを少なくとも部分的に修正するステップによって第2の画像データを生成するステップであって、前記第2の画像データは、前記第1の画像データとは異なる視点からの前記環境の第2の描写を含む、ステップと、
前記第2の画像データを出力するステップと
を含む、方法。
【請求項19】
前記第2の画像データは、第1の時間と第3の時間との間の第2の時間に前記環境を描写するように構成される補間画像を含み、前記第1の画像データは、前記第1の時間または前記第3の時間のうちの少なくとも1つにおける前記環境を描写する少なくとも1つの画像を含む、請求項18に記載の方法。
【請求項20】
前記第1の画像データは、視差移動を含むビデオデータの複数のフレームを含み、前記第2の画像データは、前記視差移動を低減するビデオデータの前記複数のフレームの安定化された変形を含む、請求項18に記載の方法。
【請求項21】
前記第1の画像データは、第1の角度から前記画像センサを見ている人物を含み、前記第2の画像データは、前記第1の角度とは異なる第2の角度から前記画像センサを見ている前記人物を含む、請求項18に記載の方法。
【請求項22】
視点の変化は、角度に従い軸を中心とした視点の回転を含む、請求項18に記載の方法。
【請求項23】
視点の変化は、方向および距離に従った視点の並進を含む、請求項18に記載の方法。
【請求項24】
視点の変化は変換を含む、請求項18に記載の方法。
【請求項25】
前記視点の変化は、前記第1の画像データにおける前記環境の前記描写の元の視点と前記環境におけるオブジェクトの位置との間の軸に沿った移動を含み、前記オブジェクトの少なくとも一部は、前記第1の画像データ内に描写される、請求項18に記載の方法。
【請求項26】
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のギャップを識別するステップと、
前記第2の画像データを出力する前に補間を使用して前記第2の画像データ内の前記1つまたは複数のギャップを少なくとも部分的に埋めるステップによって前記第2の画像データを修正するステップと、
をさらに含む、請求項18に記載の方法。
【請求項27】
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のオクルージョン領域を識別するステップと、
前記第2の画像データを出力する前にインペインティングを使用して前記第2の画像データ内の前記1つまたは複数のギャップを少なくとも部分的に埋めるステップによって前記第2の画像データを修正するステップと、
をさらに含む、請求項18に記載の方法。
【請求項28】
前記第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて前記第2の画像データ内の1つまたは複数のオクルージョン領域を識別するステップと、
前記第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して前記第2の画像データ内の前記1つまたは複数のギャップを少なくとも部分的に埋めるステップによって前記第2の画像データを修正するステップと、
をさらに含む、請求項18に記載の方法。
【請求項29】
前記第2の複数の動きベクトル内の前記第1の画像データからの1つまたは複数の競合値に基づいて、前記第2の画像データ内の1つまたは複数の競合を識別するステップと、
前記第2の複数の動きベクトルに関連付けられた移動データに基づいて、前記第1の画像データから前記1つまたは複数の競合値のうちの1つを選択するステップと、
をさらに含む、請求項18に記載の方法。
【請求項30】
前記第2の画像データを出力するステップは、少なくとも1つのディスプレイを使用して前記第2の画像データを表示させるステップを含む、請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、画像処理に関する。より具体的には、本出願は、例えばグリッド反転を使用して、第2の視点からキャプチャされたように見える第2の画像を生成するために第1の視点からキャプチャされた第1の画像を再投影するシステムおよび方法に関する。
【背景技術】
【0002】
カメラは、画像センサを使用して、光を受け入れるとともに静止画像またはビデオフレームなどの画像フレームをキャプチャするデバイスである。カメラは、カメラの視野に対応する視点から環境を描写する画像をキャプチャする。
【0003】
エクステンデッドリアリティ(XR)デバイスは、例えば、ヘッドマウントディスプレイ(HMD)またはモバイルハンドセットを通して、環境をユーザに表示するデバイスである。環境は、ユーザがいる現実世界の環境とは少なくとも部分的に異なる。ユーザは、一般に、例えば、HMDまたは他のデバイスを傾けるかまたは移動させることによって、環境のビューを対話式に変更することができる。仮想現実(Virtual reality、VR)、拡張現実(augmented reality、AR)、および複合現実(mixed reality、MR)は、XRの例である。XRデバイスは、環境から情報をキャプチャするセンサを含むことができる。
【発明の概要】
【0004】
いくつかの例では、画像処理のためのシステムおよび技術が説明される。いくつかの例では、撮像システムは、(環境に対応する)深度データを受信する。撮像システムは、画像センサによってキャプチャされた(環境の描写を含む)第1の画像データを受信する。撮像システムは、深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の動きベクトルを生成する。撮像システムは、第1の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の動きベクトルを生成する。撮像システムは、第1の動きベクトルおよび/または第2の動きベクトルに従って第1の画像データを修正することによって第2の画像データを生成する。第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む。撮像システムは、第2の画像データを出力する。いくつかの画像再投影アプリケーション(例えば、フレーム補間)は、深度データなしで実行することができる。
【0005】
一例では、画像処理のための装置が提供される。装置は、メモリと、メモリに結合された1つまたは複数のプロセッサ(例えば、回路で実装される)とを含む。1つまたは複数のプロセッサは、環境に対応する深度情報を含む深度データを受信し、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含む、第1の画像データを受信し、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成し、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成し、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む、第2の画像データを生成し、第2の画像データを出力する、ように構成されており、これらを行うことができる。
【0006】
別の例では、画像処理の方法が提供される。方法は、環境に対応する深度情報を含む深度データを受信することと、画像センサによってキャプチャされた第1の画像データであって、第1の画像データ環境の描写を含む、第1の画像データを受信することと、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成することと、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成することと、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む、第2の画像データを生成することと、第2の画像データを出力することと、を含む。
【0007】
別の例では、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、環境に対応する深度情報を含む深度データを受信させ、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含む、第1の画像データを受信させ、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成させ、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成させ、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データを生成させ、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含み、第2の画像データを出力させる命令を記憶した、非一時的コンピュータ可読媒体が提供される。
【0008】
別の例では、画像処理のための装置が提供される。装置は、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含む、第1の画像データを受信する手段と、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成する手段と、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成する手段と、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む、第2の画像データを生成する手段と、第2の画像データを出力する手段と、を含む。
【0009】
いくつかの態様では、第2の画像データは、第1の時間と第3の時間との間の第2の時間に環境を描写するように構成される補間画像を含み、第1の画像データは、第1の時間または第3の時間のうちの少なくとも1つにおける環境を描写する少なくとも1つの画像を含む。
【0010】
いくつかの態様では、第1の画像データは、視差移動を含むビデオデータの複数のフレームを含み、第2の画像データは、視差移動を低減するビデオデータの複数のフレームの安定化された変形を含む。
【0011】
いくつかの態様では、第1の画像データは、第1の角度から画像センサを見ている人物を含み、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含む。
【0012】
いくつかの態様では、視点の変化は、角度に従い軸を中心とした視点の回転を含む。いくつかの態様では、視点の変化は、方向および距離に従った視点の並進を含む。いくつかの態様では、視点の変化は変換を含む。いくつかの態様では、視点の変化は、第1の画像データにおける環境の描写の元の視点と環境におけるオブジェクトの位置との間の軸に沿った移動を含み、オブジェクトの少なくとも一部は、第1の画像データ内に描写される。
【0013】
いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体の1つまたは複数は、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別することと、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む。
【0014】
いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体の1つまたは複数は、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別することと、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む。
【0015】
いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体の1つまたは複数は、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別することと、第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む。
【0016】
いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体のうちの1つまたは複数は、第2の複数の動きベクトル内の第1の画像データからの1つまたは複数の競合値に基づいて第2の画像データ内の1つまたは複数の競合を識別することと、第2の複数の動きベクトルに関連付けられた移動データに基づいて第1の画像データから1つまたは複数の競合値のうちの1つを選択することと、をさらに含む。
【0017】
いくつかの態様では、深度情報は、第1の視点からの環境の三次元表現を含む。いくつかの態様では、深度データは少なくとも1つの深度センサから受信され、少なくとも1つの深度センサは、少なくとも1つの飛行時間センサを含む。
【0018】
いくつかの態様では、第2の画像データを出力することは、少なくとも1つのディスプレイを使用して第2の画像データを表示させることを含む。いくつかの態様では、第2の画像データを出力することは、少なくとも通信インターフェースを使用して少なくとも受信側デバイスに第2の画像データを送信させることを含む。
【0019】
いくつかの態様では、第1の画像データにおける環境の描写は、第1の視点からの環境を描写し、視点の変化は、第1の視点と、第2の画像データにおける環境の第2の描写に対応する異なる視点との間の変化である。
【0020】
いくつかの態様では、視点の変化は、視点の視差移動または軸を中心とした視点の回転のうちの少なくとも1つを含み、ユーザインターフェースを介して、視点の視差移動の距離の指示、または視点の回転の角度もしくは軸の指示のうちの1つを受信することをさらに含む。
【0021】
いくつかの態様では、上述の方法、装置、およびコンピュータ可読媒体のうちの1つまたは複数は、第1の複数の動きベクトルのそれぞれのエンドポイントにおける1つまたは複数のギャップに基づいて、第2の画像データ内に1つまたは複数のギャップを引き起こす第2の複数の動きベクトルにおける1つまたは複数のギャップを識別することと、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む。
【0022】
いくつかの態様では、装置は、ウェアラブルデバイス、エクステンデッドリアリティデバイス(例えば、仮想現実(virtual reality、VR)デバイス、拡張現実(augmented reality、AR)デバイス、または複合現実(mixed reality、MR)デバイス)、ヘッドマウントディスプレイ(HMD)デバイス、ワイヤレス通信デバイス、モバイルデバイス(例えば、携帯電話および/もしくはモバイルハンドセット並びに/またはいわゆる「スマートフォン」または他のモバイルデバイス)、カメラ、パーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、車両もしくは車両のコンピューティングデバイスもしくは構成要素、別のデバイス、あるいはそれらの組み合わせであり、それらの一部であり、および/またはそれらを含む。いくつかの態様では、装置は、1つまたは複数の画像をキャプチャするための1つのカメラまたは複数のカメラを含む。いくつかの態様では、装置は、1つまたは複数の画像、通知、および/または他の表示可能なデータを表示するためのディスプレイをさらに含む。いくつかの態様では、上記で説明された装置は、1つまたは複数のセンサ(例えば、1つまたは複数のジャイロスコープ、1つまたは複数のジャイロメータ、1つまたは複数の加速度計、それらの任意の組み合わせ、および/または他のセンサなどの、1つまたは複数の慣性測定ユニット(inertial measurement units、IMUs)を含み得る。
【0023】
本概要では、特許請求される主題の主要なまたは必須の特徴を特定することは意図されず、特許請求される主題の範囲を決定するために独立して使用されることも意図されない。本主題は、この特許の明細書全体、いずれかまたは全ての図面、および各請求項の適切な部分を参照することによって理解されるはずである。
【0024】
上記のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付図面を参照すると、より明らかになろう。
【0025】
本出願の例示的な実施形態について、以下の図面を参照して以下で詳細に説明する。
【図面の簡単な説明】
【0026】
【
図1】いくつかの例による、画像キャプチャおよび処理システムの例示的なアーキテクチャを示すブロック図である。
【
図2】いくつかの例による、様々な用途のための再投影動作を実行するための撮像システムの例示的なアーキテクチャを示すブロック図である。
【
図3A】いくつかの例による、エクステンデッドリアリティ(XR)システムとして使用されるヘッドマウントディスプレイ(HMD)を示す斜視図である。
【
図3B】いくつかの例による、ユーザによって装着されている
図3Aのヘッドマウントディスプレイ(HMD)を示す斜視図である。
【
図4A】いくつかの例による、前向きカメラを含み、エクステンデッドリアリティ(XR)システムとして使用することができるモバイルハンドセットの前面を示す斜視図である。
【
図4B】いくつかの例による、後ろ向きカメラを含み、エクステンデッドリアリティ(XR)システムとして使用することができるモバイルハンドセットの背面を示す斜視図である。
【
図5】いくつかの例による、グリッド反転の例を示すブロック図である。
【
図6】いくつかの例による、深度ベースの再投影の例を示す概念図である。
【
図7】いくつかの例による、タイムワープエンジンによって実行されるタイムワープの例を示す概念図である。
【
図8】いくつかの例による、深度センササポートエンジンによって実行される深度センササポートの例を示す概念図である。
【
図9】いくつかの例による、3D安定化エンジンによって実行される3D安定化の例を示す概念図である。
【
図10】いくつかの例による、3Dズームエンジンによって実行される3Dズーム(またはシネマティックズーム)の例を示す概念図である。
【
図11】いくつかの例による、再投影SATエンジンによって実行される再投影の例を示す概念図である。
【
図12】いくつかの例による、頭部姿勢補正エンジンによって実行される頭部姿勢補正の例を示す概念図である。
【
図13】いくつかの例による、XRレイトステージ再投影エンジンによって実行されるXRレイトステージ再投影の例を示す概念図である。
【
図14】いくつかの例による、特殊効果エンジンによって実行される特殊効果の例を示す概念図である。
【
図15】いくつかの例による、行列演算に基づく画像再投影変換を示す概念図である。
【
図16】いくつかの例による、深度データに基づくグリッド反転変換および3D変換を示すブロック図である。
【
図17】いくつかの例による、動きベクトルに基づく画像再投影変換を示すブロック図である。
【
図18】いくつかの例による、オクルージョンに対処するためのインペインティングの例を示す概念図である。
【
図19】いくつかの例による、再投影およびグリッド反転システムのアーキテクチャを示すブロック図である。
【
図20】いくつかの例による、三角歩行動作の例を示す概念図である。
【
図21】いくつかの例による、オクルージョンマスキングの例を示す概念図である。
【
図22】いくつかの例による、穴埋めの例を示す概念図である。
【
図23】いくつかの例による、タイムワープエンジンによって実行されるタイムワープの追加の例を示す概念図である。
【
図24】いくつかの例による、タイムワープエンジンのいくつかの例における、再投影エンジンの例示的なアーキテクチャを示すブロック図である。
【
図25】いくつかの例による、時間的ブレ除去を伴うタイムワープエンジンのいくつかの例における、時間的ブレ除去を伴う再投影エンジンの例示的なアーキテクチャを示すブロック図である。
【
図26】いくつかの例による、飛行時間(ToF)センサのための深度センササポートエンジンの例示的なアーキテクチャを示すブロック図である。
【
図27】いくつかの例による、深度センササポートエンジンによって実行される深度センササポートの追加の例を示す概念図である。
【
図28】いくつかの例による、画像再投影エンジンおよびおよび/または3D安定化エンジンを含む撮像システムの例示的なアーキテクチャを示すブロック図である。
【
図29】いくつかの例による、タイムワープエンジン処理を伴わない画像と比較した、タイムワープエンジンを用いて実行されるタイムワープの追加の例を示す概念図である。
【
図30】いくつかの例による、3D安定化エンジンによって実行される3D安定化の追加の例を示す概念図である。
【
図31】いくつかの例による、3Dズームエンジンによって実行される3Dズーム(またはシネマティックズーム)の追加の例を示す概念図である。
【
図32】いくつかの例による、再投影SATエンジンによって実行される再投影の追加の例を示す概念図である。
【
図33】いくつかの例による、頭部姿勢補正エンジンによって実行される頭部姿勢補正の追加の例を示す概念図である。
【
図34】いくつかの例による、グリッド反転の追加の例を示す概念図である。
【
図35】いくつかの例による、ディープラーニングベースのインペインティングの使用の例を示す概念図である。
【
図36】いくつかの例による、ディープラーニングを使用しないインペインティングの例を示す概念図である。
【
図37】いくつかの例による、エッジ上でのエッジフィルタおよび深度フィルタの使用の例を示す概念図である。
【
図38】いくつかの例による、再投影の例を示す概念図である。
【
図39】いくつかの例による、メディア処理動作に使用することができるニューラルネットワークの例を示すブロック図である。
【
図40】いくつかの例による、メディア処理のためのプロセスを示すフロー図である。
【
図41】本明細書に記載される特定の態様を実施するためのコンピューティングシステムの例を示す図である。
【発明を実施するための形態】
【0027】
本開示の特定の態様および実施形態が、以下で提供される。当業者に明らかになるように、これらの態様および実施形態のうちのいくつかが独立して適用されてもよく、それらのうちのいくつかは組み合わせて適用されてもよい。以下の説明では、説明の目的のために、本出願の実施形態の完全な理解を提供するために具体的な詳細が記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実践され得ることが明らかであろう。図および説明は限定を意図するものではない。
【0028】
以下の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定することを意図しない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載の本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が加えられてよいことを理解されたい。
【0029】
カメラは、画像センサを使用して、光を受け入れるとともに静止画像またはビデオフレームなどの画像フレームをキャプチャするデバイスである。「画像」、「画像フレーム」、および「フレーム」という用語は、本明細書では互換的に使用される。カメラは、様々な画像キャプチャおよび画像処理設定を用いて構成され得る。異なる設定は、外観の異なる画像をもたらす。ISO、露光時間、開口サイズ、F/ストップ、シャッタ速度、焦点、および利得などのいくつかのカメラ設定は、1つまたは複数の画像フレームのキャプチャの前またはその間に決定されて適用される。例えば、設定またはパラメータは、1つまたは複数の画像フレームをキャプチャするための画像センサに適用され得る。コントラスト、明るさ、飽和度、鮮明さ、レベル、曲線、または色の変更などの他のカメラ設定は、1つまたは複数の画像フレームの後処理を構成し得る。例えば、設定またはパラメータは、画像センサによってキャプチャされた1つまたは複数の画像フレームを処理するためのプロセッサ(例えば、画像信号プロセッサまたはISP)に適用され得る。
【0030】
深度センサは、深度センサから、深度センサがある環境の1つまたは複数の部分までの深度、範囲、または距離を測定するセンサである。深度センサの例は、光検出および測距(LIDAR)センサ、無線検出および測距(RADAR)センサ、音響検出および測距(SODAR)センサ、音響航法および測距(SONAR)センサ、飛行時間(ToF)センサ、構造化光センサ、またはこれらの組み合わせを含む。深度センサによってキャプチャされた深度データは、点群、3Dモデル、および/または深度画像を含むことができる。
【0031】
エクステンデッドリアリティ(XR)システムまたはデバイスは、仮想コンテンツをユーザに提供することができ、かつ/または物理環境(場面)の実世界ビューと(仮想コンテンツを含む)仮想環境とを組み合わせることができる。XRシステムは、そのような組み合わされたXR環境とのユーザ対話を容易にする。実世界ビューは、実世界オブジェクト(物理的オブジェクトとも呼ばれる)、例えば人、車両、建物、テーブル、椅子、および/または他の実世界オブジェクトもしくは物理的オブジェクトなどを含むことができる。XRシステムまたはデバイスは、異なるタイプのXR環境との対話を容易にすることができる(例えば、ユーザは、XRシステムまたはデバイスを使用してXR環境と対話することができる)。XRシステムは、仮想現実(VR)環境との対話を容易にするVRシステム、拡張現実(AR)環境との対話を容易にするARシステム、複合現実(MR)環境との対話を容易にするMRシステム、および/または他のXRシステムを含み得る。XRシステムまたはデバイスの例は、特に、ヘッドマウントディスプレイ(HMDs)、スマートグラスを含む。場合によっては、XRシステムは、ユーザが仮想コンテンツのアイテムと対話することを可能にするためにユーザの部分(例えば、ユーザの手および/または指先)を追跡することができる。
【0032】
撮像システムは、カメラの深度センサおよび画像センサを含むことができる。深度センサは、環境の点群、3Dモデル、深度画像、視差値のセット、および/または3D表現など、環境に対応する深度情報を含む深度データをキャプチャする。画像センサは、環境の2D描写を含む第1の画像データをキャプチャする。
【0033】
撮像システムは、動きベクトルの第1のセットを生成するために深度データを使用する。動きベクトルの第1のセットは、第1の視点から第2の視点への、第1の画像データにおける環境の描写の視点の変化に対応する。
【0034】
撮像システムは、動きベクトルの第2のセットを生成するために、動きベクトルの第1のセットにグリッド反転を適用する。動きベクトルの第2のセットは、第1の視点から第2の視点への視点の変化について、第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す。場合によっては、グリッド反転を適用するために、撮像システムは、小さい動きよりも大きい動きを優先させることによって、および/または環境内でより遠いオブジェクトの動きよりも環境内でより近いオブジェクトの動きを優先させることによって、グリッド反転との競合を解決する。場合によっては、グリッド反転を適用するために、撮像システムは、補間を使用して欠落領域を埋める。
【0035】
撮像システムは、動きベクトルの第2のセットに従って画像データを修正することによって第2の画像データを生成する。例えば、撮像システムは、第1の画像データにおける環境の描写のそれぞれの画素の画素データを、動きベクトルの第2のセットによって示されるそれぞれの距離だけ移動させることによって、動きベクトルの第2のセットに従って画像データを修正することができる。第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む。撮像システムは、例えば、第2の画像データを表示することによって、または第2の画像データを受信側デバイスに送信することによって、第2の画像データを出力する。
【0036】
グリッド反転に基づく動きベクトルの第2のセットに基づく第1の画像データの修正を通じて第2の画像データを生成することによって実行される視点の変化には、様々な有用な用途がある。例えば、視点の変化は、例えばユーザの手がカメラを不安定に保持することによって、および/またはユーザの歩みによって生じる可能性のある視差移動を低減または排除するために、ビデオデータの3D安定化に使用することができる。視点の変化は、2つの既存フレーム間に中間フレームを生成することによってビデオの有効フレームレートを増加させるために、フレーム補間に使用することができる。視点の変化は、アップスケーリングではなく環境内に進む真の前進により類似して見えるように、環境の背景よりも迅速に環境の前景をスケーリングする「3Dズーム」効果に使用することができる。視点の変化は、2つのセンサ(例えば、2つのカメラ、カメラと深度センサなど)間のオフセットに適応するために使用することができる。視点の変化は、例えば、ビデオ会議の場合によくあるように、カメラが実際には人物の上方または上方にあるときにカメラが人物の頭部と同じ高さに見えるようにするために、頭部姿勢補正に使用することができる。視点の変化は、異なる視点がレンダリングを終了していない場合であっても、環境上で異なる視点を迅速にシミュレートするために、XRに使用することができる。視点の変化は、場面内のオブジェクトを中心とする回転をシミュレートする効果など、様々な特殊効果に使用することができる。
【0037】
いくつかの例では、画像処理のためのシステムおよび技術が説明される。いくつかの例では、撮像システムは、深度センサによってキャプチャされた(環境に対応する)深度データを受信し、撮像システムは、画像センサによってキャプチャされた第1の画像データ(環境の描写)を受信する。撮像システムは、深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の動きベクトルを生成する。撮像システムは、第1の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の動きベクトルを生成する。撮像システムは、第1の動きベクトルおよび/または第2の動きベクトルに従って第1の画像データを修正することによって第2の画像データを生成する。第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む。撮像システムは、第2の画像データを出力する。
【0038】
本明細書に記載される撮像システムおよび技術は、従来の画像処理システムに対するいくつかの技術的改善を提供する。例えば、本明細書に記載される画像処理システムおよび技術は、視点の任意の並進および/または回転移動について、異なる視点への再投影を提供することができる。本明細書に記載される画像処理システムおよび技術は、オプティカルフローを使用してビデオフレーム品質を改善すること、2つのセンサ間のオフセット距離を克服するために深度と画像データとを位置合わせすること、3D深度ベースビデオ安定化、3D深度ベースズーム(シネマティックズームとも呼ばれる)、2つのセンサ間のオフセット距離を克服するために2つの異なるカメラからの画像データを位置合わせすること、頭部姿勢補正、エクステンデッドリアリティ(XR)のための後期再投影、特殊効果、またはこれらの組み合わせを含む様々な用途のために、この再投影およびこれをサポートするグリッド反転技術を使用することができる。グリッド反転の使用は、効率の増加、計算負荷の減少、使用電力の減少、発熱の減少、および熱放散構成要素の必要性の減少を提供する。
【0039】
適用例の様々な態様が、図に関して説明される。
図1は、画像キャプチャおよび処理システム100のアーキテクチャを示すブロック図である。画像キャプチャおよび処理システム100は、1つまたは複数の場面の画像(例えば、場面110の画像)をキャプチャして処理するために使用される様々な構成要素を含む。画像キャプチャおよび処理システム100は、スタンドアロン画像(または写真)をキャプチャすることができ、かつ/または、特定の順序で複数の画像(またはビデオフレーム)を含むビデオをキャプチャすることができる。システム100のレンズ115は、場面110に面し、場面110から光を受け入れる。レンズ115は、画像センサ130に向かって光を曲げる。レンズ115によって受けられた光は、1つまたは複数の制御機構120によって制御される開口を通過し、画像センサ130によって受けられる。いくつかの例では、場面110は環境内の場面である。いくつかの例では、場面110はユーザの少なくとも一部の場面である。例えば、場面110は、ユーザの眼の一方もしくは両方、および/またはユーザの顔の少なくとも一部分の場面であり得る。
【0040】
1つまたは複数の制御機構120は、画像センサ130からの情報に基づいて、かつ/または画像プロセッサ150からの情報に基づいて、露光、焦点、および/またはズームを制御し得る。1つまたは複数の制御機構120は、複数の機構および構成要素を含み得る。例えば、制御機構120は、1つまたは複数の露光制御機構125A、1つまたは複数の焦点制御機構125B、および/または1つまたは複数のズーム制御機構125Cを含み得る。1つまたは複数の制御機構120は、アナログ利得、フラッシュ、HDR、被写界深度、および/または他の画像キャプチャ特性を制御する制御機構などの、示されるもの以外の追加の制御機構を含んでもよい。
【0041】
制御機構120の焦点制御機構125Bは、焦点設定を取得することができる。いくつかの例では、焦点制御機構125Bは、メモリレジスタ内に焦点設定を記憶する。焦点設定に基づいて、焦点制御機構125Bは、画像センサ130の位置に対してレンズ115の位置を調整することができる。例えば、焦点設定に基づいて、焦点制御機構125Bは、モータまたはサーボを作動させることによって画像センサ130のより近くまたは画像センサ130からより遠くにレンズ115を動かし、それによって、焦点を調整することができる。場合によっては、画像センサ130の各フォトダイオードの上方の1つまたは複数のマイクロレンズなどの追加のレンズがシステム100の中に含まれてよく、それらは各々、光がフォトダイオードに到達する前に、レンズ115から受けられる光を対応するフォトダイオードに向かって曲げる。焦点設定は、コントラスト検出自動焦点(contrast detection autofocus、CDAF)、位相検出自動焦点(PDAF)、またはそれらの何らかの組み合わせを介して決定されてよい。焦点設定は、制御機構120、画像センサ130、および/または画像プロセッサ150を使用して決定されてよい。焦点設定は、画像キャプチャ設定および/または画像処理設定と呼ばれることがある。
【0042】
制御機構120の露光制御機構125Aは、露光設定を取得することができる。場合によっては、露光制御機構125Aは、メモリレジスタ内に露光設定を記憶する。この露光設定に基づいて、露光制御機構125Aは、開口のサイズ(例えば、開口サイズまたはF/ストップ)、開口が開放されている持続時間(例えば、露光時間またはシャッタ速度)、画像センサ130の感度(例えば、ISO速度またはフィルム速度)、画像センサ130によって適用されるアナログ利得、またはそれらの任意の組み合わせを制御することができる。露光設定は、画像キャプチャ設定および/または画像処理設定と呼ばれることがある。
【0043】
制御機構120のズーム制御機構125Cは、ズーム設定を取得することができる。いくつかの例では、ズーム制御機構125Cは、メモリレジスタ内にズーム設定を記憶する。ズーム設定に基づいて、ズーム制御機構125Cは、レンズ115および1つまたは複数の追加のレンズを含むレンズ要素の組立体(レンズ組立体)の焦点距離を制御することができる。例えば、ズーム制御機構125Cは、1つまたは複数のモータまたはサーボを作動させてレンズのうちの1つまたは複数を互いに対して移動させることによって、レンズ組立体の焦点距離を制御することができる。ズーム設定は、画像キャプチャ設定および/または画像処理設定と呼ばれることがある。いくつかの例では、レンズ組立体は、同焦点ズームレンズまたは可変焦点ズームレンズを含んでよい。いくつかの例では、レンズ組立体は、場面110から光を最初に受け入れる(場合によっては、レンズ115であり得る)集束レンズを含んでよく、次いで、光が画像センサ130に到達する前に、集束レンズ(例えば、レンズ115)と画像センサ130との間の無限焦点ズームシステムを光が通過する。場合によっては、無限焦点ズームシステムは、等しいかまたは類似の焦点距離(例えば、閾値差内)の2つの正の(例えば、収束、凸)レンズを、それらの間の負の(例えば、発散、凹)レンズとともに含んでよい。場合によっては、ズーム制御機構125Cは、負のレンズ、および正のレンズのうちの一方または両方などの、無限焦点ズームシステムの中のレンズのうちの1つまたは複数を動かす。
【0044】
画像センサ130は、フォトダイオードまたは他の感光素子の1つまたは複数のアレイを含む。各フォトダイオードは、画像センサ130によって生み出される画像の中の特定の画素に最終的には対応する光の量を測定する。場合によっては、異なるフォトダイオードは、異なるカラーフィルタによって覆われてよく、したがって、フォトダイオードを覆うフィルタの色に整合する光を測定してよい。例えば、ベイヤーカラーフィルタは、赤のカラーフィルタ、青のカラーフィルタ、および緑のカラーフィルタを含み、画像の各画素は、赤のカラーフィルタで覆われる少なくとも1つのフォトダイオードからの赤い光のデータ、青のカラーフィルタで覆われる少なくとも1つのフォトダイオードからの青い光のデータ、および緑のカラーフィルタで覆われる少なくとも1つのフォトダイオードからの緑色の光のデータに基づいて生成される。他のタイプの色フィルタは、赤色、青色、および/または緑色フィルタの代わりに、またはそれらに加えて、黄色、マゼンダ、および/またはシアン(「エメラルド」とも呼ばれる)色フィルタを使用してよい。いくつかの画像センサは、カラーフィルタが完全になくてよく、代わりに、画素アレイ全体にわたって(場合によっては、垂直方向に積層された)異なるフォトダイオードを使用してもよい。画素アレイ全体にわたる異なるフォトダイオードは、異なるスペクトル感度曲線を有することができ、したがって、光の異なる波長に応答する。モノクロ画像センサも色フィルタがなくてよく、したがって、色深度もなくてよい。
【0045】
場合によっては、画像センサ130は、代替または追加として、ある時間において、かつ/またはいくつかの角度から、いくつかのフォトダイオードまたはいくつかのフォトダイオードの部分に光が到達するのを阻止する不透明なかつ/または反射性のマスクを含んでよく、それは位相検出自動焦点(PDAF)のために使用されてよい。画像センサ130はまた、フォトダイオードによって出力されたアナログ信号を増幅するためのアナログゲイン増幅器、並びに/または、フォトダイオードから出力された(および/もしくはアナログゲイン増幅器によって増幅された)アナログ信号をデジタル信号に変換するためのアナログデジタル変換器(ADC)を含んでよい。場合によっては、その代わりにまたは追加として、制御機構120のうちの1つまたは複数に関して論じるいくつかの構成要素または機能が画像センサ130内に含まれてよい。画像センサ130は、電荷結合デバイス(charge-coupled device、CCD)センサ、電子増倍CCD(electron-multiplying CCD、EMCCD)センサ、アクティブ画素センサ(active-pixel sensor、APS)、相補型金属酸化物半導体(complimentary metal-oxide semiconductor、CMOS)、n型金属酸化物半導体(N-type metal-oxide-semiconductor、NMOS)、ハイブリッドCCD/CMOSセンサ(例えば、sCMOS)、またはそれらの何らかの他の組み合わせであってよい。
【0046】
画像プロセッサ150は、1つまたは複数の画像信号プロセッサ(image signal processors、ISPs)(ISP154を含む)、1つまたは複数のホストプロセッサ(ホストプロセッサ152を含む)、および/またはコンピューティングシステム4100に関して論じる任意の他のタイプのプロセッサ4110のうちの1つまたは複数などの、1つまたは複数のプロセッサを含んでよい。ホストプロセッサ152は、デジタル信号プロセッサ(digital signal processor、DSP)および/または他のタイプのプロセッサであり得る。いくつかの実装形態では、画像プロセッサ150は、ホストプロセッサ152およびISP154を含む単一の集積回路またはチップ(例えば、システムオンチップまたはSoCと呼ばれる)である。場合によっては、チップは、1つまたは複数の入力/出力ポート(例えば、入力/出力(input/output、I/O)ポート156)、中央処理ユニット(central processing units、CPUs)、グラフィックス処理ユニット(graphics processing units、GPUs)、ブロードバンドモデム(例えば、3G、4GまたはLTE、5Gなど)、メモリ、接続性構成要素(例えば、Bluetooth、全地球測位システム(Global Positioning System、GPS)など)、それらの任意の組み合わせ、および/または他の構成要素を含んでもよい。I/Oポート156は、インターインテグレーテッドサーキット2(Inter-Integrated Circuit 2、I2C)インターフェース、インターインテグレーテッドサーキット3(Inter-Integrated Circuit 3、I3C)インターフェース、シリアル周辺インターフェース(Serial Peripheral Interface、SPI)インターフェース、シリアル汎用入力/出力(General Purpose Input/Output、GPIO)インターフェース、モバイルインダストリプロセッサインターフェース(Mobile Industry Processor Interface、MIPI)(例えば、MIPI CSI-2物理(physical、PHY)層ポートもしくはインターフェースなど)、高度高性能バス(Advanced High-performance Bus、AHB)バス、それらの任意の組み合わせ、および/または他の入力/出力ポートなどの、1つまたは複数のプロトコルまたは仕様による、任意の好適な入力/出力ポートまたはインターフェースを含み得る。1つの例示的な例では、ホストプロセッサ152は、I2Cポートを使用して画像センサ130と通信することができ、ISP154は、MIPIポートを使用して画像センサ130と通信することができる。
【0047】
画像プロセッサ150は、デモザイク処理、色空間変換、画像フレームダウンサンプリング、画素補間、自動露光(automatic exposure、AE)制御、自動利得制御(automatic gain control、AGC)、CDAF、PDAF、自動ホワイトバランス、HDR画像を形成するための画像フレームの統合、画像認識、オブジェクト認識、特徴認識、入力の受け入れ、出力の管理、メモリの管理、またはこれらの何らかの組み合わせなどの、いくつかのタスクを実施してもよい。画像プロセッサ150は、画像フレームおよび/または処理された画像を、ランダムアクセスメモリ(random access memory、RAM)140および/もしくは4120、読み取り専用メモリ(read-only memory、ROM)145および/もしくは4125、キャッシュ、メモリユニット、別の記憶デバイス、またはそれらの何らかの組み合わせに記憶することができる。
【0048】
様々な入力/出力(I/O)デバイス160が、画像プロセッサ150に接続されてよい。I/Oデバイス160は、ディスプレイスクリーン、キーボード、キーパッド、タッチスクリーン、トラックパッド、タッチ感知画面、プリンタ、任意の他の出力デバイス4135、任意の他の入力デバイス4145、またはそれらの何らかの組み合わせを含み得る。場合によっては、I/Oデバイス160の物理キーボードもしくはキーパッドを通じて、またはI/Oデバイス160のタッチスクリーンの仮想キーボードもしくはキーパッドを通じて、キャプションが画像処理デバイス105Bに入力されてもよい。I/O160は、システム100と1つまたは複数の周辺デバイスとの間の有線接続を可能にする、1つまたは複数のポート、ジャック、または他のコネクタを含んでよく、システム100は、それを介して、1つまたは複数の周辺デバイスからデータを受信してよく、かつ/または1つまたは複数の周辺デバイスへデータを送信してよい。I/O160は、システム100と1つまたは複数の周辺デバイスとの間のワイヤレス接続を可能にする、1つまたは複数のワイヤレストランシーバを含んでよく、システム100は、それを介して、1つまたは複数の周辺デバイスからデータを受信してよく、かつ/または1つまたは複数の周辺デバイスへデータを送信してよい。周辺デバイスは、前に説明したタイプのI/Oデバイス160のうちのいずれかを含んでよく、ポート、ジャック、ワイヤレストランシーバ、または他の有線および/もしくはワイヤレスのコネクタに結合されると、それら自体がI/Oデバイス160と見なされてよい。
【0049】
場合によっては、画像キャプチャおよび処理システム100は、単一のデバイスであってもよい。場合によっては、画像キャプチャおよび処理システム100は、画像キャプチャデバイス105A(例えば、カメラ)および画像処理デバイス105B(例えば、カメラに結合されたコンピューティングデバイス)を含む、2つ以上の別々のデバイスであってもよい。いくつかの実装形態では、画像キャプチャデバイス105Aおよび画像処理デバイス105Bは、例えば、1つまたは複数のワイヤ、ケーブル、もしくは他の電気的なコネクタを介して、かつ/または1つまたは複数のワイヤレストランシーバを介してワイヤレスに、結合されてよい。いくつかの実装形態では、画像キャプチャデバイス105Aおよび画像処理デバイス105Bは、互いから切り離されていてよい。
【0050】
図1に示すように、垂直の破線は、
図1の画像キャプチャおよび処理システム100を、画像キャプチャデバイス105Aおよび画像処理デバイス105Bをそれぞれ表す2つの部分へと分割する。画像キャプチャデバイス105Aは、レンズ115と、制御機構120と、画像センサ130とを含む。画像処理デバイス105Bは、画像プロセッサ150(ISP154およびホストプロセッサ152を含む)と、RAM140と、ROM145と、I/O160とを含む。場合によっては、ISP154および/またはホストプロセッサ152などの、画像キャプチャデバイス105Aに示すいくつかの構成要素は、画像キャプチャデバイス105Aの中に含まれてよい。
【0051】
画像キャプチャおよび処理システム100は、モバイルもしくは固定の電話ハンドセット(例えば、スマートフォン、携帯電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(Internet Protocol、IP)カメラ、または任意の他の好適な電子デバイスなどの、電子デバイスを含み得る。いくつかの例では、画像キャプチャおよび処理システム100は、セルラーネットワーク通信、802.11 wi-fi通信、ワイヤレスローカルエリアネットワーク(wireless local area network、WLAN)通信、またはこれらの何らかの組み合わせなどの、ワイヤレス通信のための1つまたは複数のワイヤレストランシーバを含み得る。いくつかの実装形態では、画像キャプチャデバイス105Aおよび画像処理デバイス105Bは、異なるデバイスであり得る。例えば、画像キャプチャデバイス105Aはカメラデバイスを含んでよく、画像処理デバイス105Bは、モバイルハンドセット、デスクトップコンピュータ、または他のコンピューティングデバイスなどの、コンピューティングデバイスを含み得る。
【0052】
画像キャプチャおよび処理システム100はいくつかの構成要素を含むものとして示されるが、画像キャプチャおよび処理システム100は
図1に示すものより多数の構成要素を含み得ることを、当業者は理解されよう。画像キャプチャおよび処理システム100の構成要素は、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアの1つまたは複数の組み合わせを含み得る。例えば、いくつかの実装形態では、画像キャプチャおよび処理システム100の構成要素は、1つまたは複数のプログラマブル電子回路(例えば、マイクロプロセッサ、GPU、DSP、CPU、および/または他の適切な電子回路)を含み得る、電子回路もしくは他の電子ハードウェアを含んでよく、かつ/もしくはそれらを使用して実装されてよく、かつ/または、本明細書において説明する様々な動作を実施するために、コンピュータソフトウェア、ファームウェア、またはこれらの任意の組み合わせを含んでよく、かつ/もしくはそれらを使用して実装されてよい。ソフトウェアおよび/またはファームウェアは、コンピュータ可読記憶媒体上に記憶され、画像キャプチャおよび処理システム100を実装する電子デバイスの1つまたは複数のプロセッサによって実行可能である、1つまたは複数の命令を含み得る。
【0053】
図2は、様々な用途のための再投影動作を実行するための撮像システム200の例示的なアーキテクチャを示すブロック図である。いくつかの例では、撮像システム200は、少なくとも1つの画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、またはそれらの組み合わせ(単数または複数)を含む。いくつかの例では、撮像システム200は、少なくとも1つのコンピューティングシステム4100を含む。いくつかの例では、撮像システム200は、少なくとも1つのニューラルネットワーク3900を含む。
【0054】
いくつかの例では、撮像システム200は、1つまたは複数のセンサ205を含む。センサ205は、環境の態様に関する情報を測定および/または追跡するセンサデータをキャプチャし、撮像システム200および/または撮像システム200のユーザがその環境内にある。いくつかの例では、センサ205は、ユーザの身体および/またはユーザによる挙動に関する情報を測定および/または追跡するセンサデータをキャプチャすることができる。いくつかの例では、センサ205は、環境および/またはユーザの少なくとも一部に面する1つまたは複数のカメラを含む。1つまたは複数のカメラは、環境および/またはユーザの少なくとも一部の画像をキャプチャする1つまたは複数の画像センサを含むことができる。いくつかの例では、センサ205は、環境および/またはユーザの少なくとも一部に面する1つまたは複数の深度センサを含む。1つまたは複数の深度センサは、環境および/またはユーザの少なくとも一部の深度データ(例えば、深度画像、点群、3Dモデル、深度センサと環境の一部との間の範囲、深度センサと環境の一部との間の深度、および/または深度センサと環境の一部との間の距離)をキャプチャすることができる。いくつかの例では、深度データ(上記で列挙された深度データのタイプのいずれかなど)はまた、立体深度感知を使用して、ステレオカメラからの画像データを使用して決定することができる。いくつかの例では、深度データは、トレーニングデータに基づいてトレーニングされたトレーニング済み機械学習モデル(単数または複数)に画像データを入力することによって、ステレオカメラからの画像データを使用して決定することができる。トレーニングデータは、対応する深度データとともに、ステレオカメラ(または同様の立体視構成の他のカメラ)によってキャプチャされた他の画像を含む。いくつかの例では、センサ205は、マイクロフォン、加速度計、ジャイロスコープ、測位受信機、慣性計測ユニット(IMUs)、バイオメトリックセンサ、またはこれらの組み合わせなど、1つまたは複数の他のタイプのセンサを含む。
図2では、1つまたは複数のセンサ205は、カメラアイコンおよびマイクロフォンアイコンとして示されている。
【0055】
センサ205は、1つまたは複数のカメラ、画像センサ、マイクロフォン、心拍数モニタ、オキシメータ、バイオメトリックセンサ、測位トランシーバ、慣性計測ユニット(IMUs)、加速度計、ジャイロスコープ、ジャイロメータ、気圧計、温度計、高度計、深度センサ、本明細書で説明される他のセンサ、またはこれらの組み合わせを含むことができる。深度センサの例は、光検出および測距(LIDAR)センサ、無線検出および測距(RADAR)センサ、音響検出および測距(SODAR)センサ、音響航法および測距(SONAR)センサ、飛行時間(ToF)センサ、構造化光センサ、またはこれらの組み合わせを含む。測位受信機の例は、全地球的航法衛星システム(GNSS)受信機、全地球測位システム(GPS)受信機、セルラー信号トランシーバ、Wi-Fiトランシーバ、ワイヤレスローカルエリアネットワーク(WLAN)トランシーバ、Bluetoothトランシーバ、ビーコントランシーバ、近距離通信(NFC)トランシーバ、パーソナルエリアネットワーク(PAN)トランシーバ、無線周波数識別(RFID)トランシーバ、通信インターフェース4140、またはこれらの組み合わせを含む。いくつかの例では、1つまたは複数のセンサ205は、少なくとも1つの画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、またはこれらの組み合わせ(単数または複数)を含む。いくつかの例では、1つまたは複数のセンサ205は、コンピューティングシステム4100の少なくとも1つの入力デバイス4145を含む。いくつかの実装形態では、センサ(単数または複数)205のうちの1つまたは複数は、他のセンサ(単数または複数)205からのセンサ読み取り値を補完または精緻化し得る。例えば、アプリケーションエンジン210および/または画像再投影エンジン215は、画像データおよび/または深度データを精緻化および/または補完するために、測位受信機、慣性計測ユニット(IMUs)、加速度計、ジャイロスコープ、および/または他のセンサからのセンサデータを使用することができる。例えば、アプリケーションエンジン210および/または画像再投影エンジン215は、画像データおよび/または深度データのキャプチャ中に、および/または画像安定化および/または動き補償を用いて、環境内の撮像システム200の姿勢(例えば、3D位置座標および/または配向(例えば、ピッチ、ヨー、および/またはロール))を判定するのを支援するために、このようなセンサデータを使用することができる。
【0056】
いくつかの例では、撮像システム200は、仮想コンテンツを生成する仮想コンテンツ生成器207を含む。仮想コンテンツは、二次元(2D)形状、三次元(3D)形状、2Dオブジェクト、3Dオブジェクト、2Dモデル、3Dモデル、2Dアニメーション、3Dアニメーション、2D画像、3D画像、テクスチャ、他の画像の部分、文字、文字列、またはこれらの組み合わせを含むことができる。いくつかの例では、撮像システム200は、メディアデータ285を形成するために、仮想コンテンツ生成器207によって生成された仮想コンテンツをセンサ(単数または複数)205からのセンサデータと結合することができる。いくつかの例では、撮像システム200は、仮想コンテンツ生成器207によって生成された仮想コンテンツをメディアデータ285と結合することができる。
図2では、仮想コンテンツ生成器207によって生成された仮想コンテンツは、四面体として示されている。いくつかの例では、仮想コンテンツ生成器207は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、またはこれらの組み合わせなど、撮像システム200の1つまたは複数のプロセッサ上で実行される、1つまたは複数のプログラムに対応する1つまたは複数の命令セットなどの1つまたは複数のソフトウェア要素を含む。いくつかの例では、仮想コンテンツ生成器207は、1つまたは複数のハードウェア要素を含む。例えば、仮想コンテンツ生成器207は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、またはこれらの組み合わせなどのプロセッサを含むことができる。いくつかの例では、仮想コンテンツ生成器207は、1つまたは複数のソフトウェア要素と1つまたは複数のハードウェア要素との組み合わせとを含む。
【0057】
撮像システム200は、アプリケーションエンジン210のセットを含む。アプリケーションエンジン210は、センサ(単数または複数)205からメディアデータ285を受信する。メディアデータ285は、センサ(単数または複数)205によってキャプチャされる。メディアデータ285は、例えば1つまたは複数の画像またはこれらの一部を含む、画像データを含むことができる。画像データは、例えばビデオのビデオフレームを含むビデオデータを含むことができる。メディアデータ285は、例えば、深度画像、点群、3Dモデル、深度センサと環境の一部との間の範囲、深度センサと環境の一部との間の深度、および/または深度センサと環境の一部との間の距離、またはこれらの組み合わせを含む、深度データを含むことができる。メディアデータ285は、例えば、センサ(単数または複数)205の1つまたは複数のマイクロフォンによって記録されたオーディオを含むオーディオデータを含むことができる。場合によっては、オーディオデータは、画像データのビデオに対応するオーディオトラックを含むことができる。場合によっては、オーディオデータは、センサ(単数または複数)205の複数のマイクロフォンからのマルチチャネルオーディオとすることができ、例えば、環境内の異なる方向からセンサ(単数または複数)205に到達するオーディオに対応する別個のオーディオトラックを可能にする。メディアデータ285は、例えば、環境内の撮像システム200の位置(例えば、緯度、経度、および/または高度)、撮像システム200の配向(例えば、ピッチ、ヨー、および/またはロール)、撮像システム200の移動速度、撮像システム200の加速度、撮像システム200の速度、撮像システム200の運動量、撮像システム200の回転、またはこれらの組み合わせを含む姿勢データを含むことができる。いくつかの例では、姿勢データは、撮像システム200の測位受信機、慣性計測ユニット(IMUs)、加速度計、および/またはジャイロスコープを使用してキャプチャすることができる。いくつかの例では、撮像システム200は、画像データ、深度データ、および/またはオーディオデータなどの他のタイプのメディアデータ285に基づく姿勢判定に基づいて、姿勢データの態様を推測することができ、姿勢データを精緻化することができる。
【0058】
アプリケーションエンジン210は、動きベクトルエンジン220およびグリッド反転エンジン225を有する画像再投影エンジン215を含む。画像再投影エンジン215の動きベクトルエンジン220は、環境の第1の視点から環境の第2の視点への移動に対応する動きベクトルの第1のセットを決定および/または生成することができる。いくつかの例では、動きベクトルエンジン220は、センサ(単数または複数)205の深度センサによってキャプチャされた深度データおよび/またはセンサ(単数または複数)205の画像センサによってキャプチャされた画像データに基づいて、環境の3D表現を識別または生成することができる。動きベクトルエンジン220は、環境の3D表現を、第1の視点からの環境を表すものから第2の視点からの環境を表すものに回転、並進、および/または変換することができる。動きベクトルエンジン220は、第1の視点から第2の視点へのこの視点の変化に基づいて動きベクトルの第1のセットを決定することができる。
【0059】
画像再投影エンジン215の動きベクトルエンジン220によって出力された動きベクトルは、グリッド反転エンジン225に出力することができる。画像再投影エンジン215のグリッド反転エンジン225は、動きベクトルの第2のセットを生成するために、動きベクトルに対してグリッド反転を実行することができる。画像再投影エンジン215は、修正済みメディアデータ290を生成するようにメディアデータ285の少なくともサブセットを修正するために、動きの第2のセットを使用することができる。例えば、画像再投影エンジン215は、第3の視点からの環境を描写するメディアデータ285の画像を受信することができ、修正済みメディアデータ290の修正された画像を生成するために動きベクトルの第2のセットを画像に適用することができる。修正された画像は、第4の視点からの環境を描写することができる。第3の視点から第4の視点への変化は、例えば同じ量、距離(単数または複数)、および/または角度(単数または複数)の回転、並進、および/または変換を適用する、第1の視点から第2の視点への変化と一致することができる。例えば、いくつかの例では、第1の視点から第2の視点への変化は、ある角度に従った視点の回転を含み、第3の視点から第4の視点への変化は、その角度に従った視点の回転を含む。いくつかの例では、第1の視点から第2の視点への変化は、ある方向および距離に従った視点の並進を含み、第3の視点から第4の視点への変化は、その方向および距離に従った視点の並進を含む。いくつかの例では、第1の視点から第2の視点への変化は変換を含み、第3の視点から第4の視点への変化は、変換に従った視点の並進を含む。
【0060】
いくつかの例では、画像再投影エンジン215は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、またはこれらの組み合わせなど、撮像システム200の1つまたは複数のプロセッサ上で実行される、1つまたは複数のプログラムに対応する1つまたは複数の命令セットなどの1つまたは複数のソフトウェア要素を含む。いくつかの例では、画像再投影エンジン215は、1つまたは複数のハードウェア要素を含む。例えば、画像再投影エンジン215は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、および/またはこれらの組み合わせなどのプロセッサを含むことができる。いくつかの例では、画像再投影エンジン215は、1つまたは複数のソフトウェア要素と1つまたは複数のハードウェア要素との組み合わせを含む。
【0061】
いくつかの例では、画像再投影エンジン215は、センサ(単数または複数)205および/または仮想コンテンツ生成器207からメディアデータ285を入力として受信する、MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)を含む。MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)は、メディアデータ285および仮想コンテンツに基づいて修正済みメディアデータ290を出力する。場合によっては、MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)は、修正済みメディアデータ290が、メディアデータ285内の環境の描写(単数または複数)および/または表現(単数または複数)の視点とは異なる視点からの環境の描写(単数または複数)および/または表現(単数または複数)を含むように、メディアデータ285および/または仮想コンテンツを修正することができる。いくつかの例では、画像再投影エンジン215のMLシステムおよび/またはトレーニング済みMLモデルは、1つまたは複数のニューラルネットワーク(NNs)(例えば、ニューラルネットワーク3900)、1つまたは複数の畳み込みニューラルネットワーク(CNNs)、1つまたは複数のトレーニング済み時間遅延ニューラルネットワーク(TDNNs)、1つまたは複数のディープネットワーク、1つまたは複数のオートエンコーダ、1つまたは複数のディープビリーフネット(DBNs)、1つまたは複数のリカレントニューラルネットワーク(RNNs)、1つまたは複数の敵対的生成ネットワーク(GANs)、1つまたは複数の他のタイプのニューラルネットワーク、1つまたは複数のトレーニング済みサポートベクターマシン(SVMs)、1つまたは複数のトレーニング済みランダムフォレスト(RFs)、1つまたは複数のコンピュータビジョンシステム、1つまたは複数のディープラーニングシステム,またはこれらの組み合わせを含み得る。
【0062】
アプリケーションエンジン210は、様々な用途のために様々な方法で画像再投影エンジン215(例えば、動きベクトルエンジン220および/またはグリッド反転エンジン225を含む)による画像再投影を適用するいくつかのエンジンを含む。アプリケーションエンジン210のこれらのエンジンは、タイムワープエンジン230、深度センササポートエンジン235、3D安定化エンジン240、3Dズームエンジン245、再投影SATエンジン250、頭部姿勢補正エンジン255、エクステンデッドリアリティ(XR)後期再投影エンジン260、および特殊効果エンジン265を含む。再投影SATエンジン250内の「SAT」は、センサ位置合わせ、空間位置合わせ変換またはその両方を指すことができる。再投影SATエンジン250は、センサ位置合わせ、空間位置合わせ変換またはその両方を使用し得る。アプリケーションエンジン210のこれらのエンジンは、修正済みメディアデータ290を生成するようにメディアデータ285の少なくともサブセットを修正し、例えば、そうするために画像再投影エンジン215(例えば、動きベクトルエンジン220および/またはグリッド反転エンジン225を含む)による画像再投影を利用する。
【0063】
いくつかの例では、アプリケーションエンジン210のうちの少なくとも1つは、センサ(単数または複数)205および/または仮想コンテンツ生成器207からメディアデータ285を入力として受信するMLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)を含む。MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)は、メディアデータ285および仮想コンテンツに基づいて修正済みメディアデータ290を出力する。場合によっては、MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)は、修正済みメディアデータ290が、メディアデータ285内の環境の(単数または複数)描写および/または表現(単数または複数)の視点とは異なる視点からの環境の描写(単数または複数)および/または表現(単数または複数)を含むように、メディアデータ285および/または仮想コンテンツを修正することができる。いくつかの例では、アプリケーションエンジン210のうちの少なくとも1つのMLシステムおよび/またはトレーニング済みMLモデルは、1つまたは複数のNN、1つまたは複数のCNN、1つまたは複数のTDNN、1つまたは複数のディープネットワーク、1つまたは複数のオートエンコーダ、1つまたは複数のDBN、1つまたは複数のRNN、1つまたは複数のGAN、1つまたは複数のトレーニング済みSVM、1つまたは複数のトレーニング済みRF、1つまたは複数のコンピュータビジョンシステム、1つまたは複数のディープラーニングシステム、またはこれらの組み合わせを含み得る。
【0064】
いくつかの例では、画像再投影エンジン215を含むアプリケーションエンジン210は、メディアデータ285に組み込まれた仮想コンテンツ生成器207によって生成された仮想コンテンツを有するメディアデータ285を(例えば動きベクトルを判定するために)分析、処理、および/または修正することができる。いくつかの例では、画像再投影エンジン215を含むアプリケーションエンジン210は、メディアデータ285に組み込まれた仮想コンテンツ生成器207によって生成された仮想コンテンツのないメディアデータ285を(例えば動きベクトルを判定するために)分析、処理、および/または修正することができる。いくつかの例では、画像再投影エンジン215を含む、アプリケーションエンジン210によって出力された修正済みメディアデータ290は、例えば仮想コンテンツが、アプリケーションエンジン210に入力されたメディアデータ285に組み込まれた場合、仮想コンテンツ生成器207によって生成された仮想コンテンツを既に含むことができる。いくつかの例では、画像再投影エンジン215を含む、アプリケーションエンジン210によって出力された修正済みメディアデータ290は、例えば仮想コンテンツが、アプリケーションエンジン210に入力されたメディアデータ285に組み込まれなかった場合、仮想コンテンツ生成器207によって生成された仮想コンテンツを欠いている。このような例では、仮想コンテンツ生成器207によって生成された仮想コンテンツは、修正済みメディアデータ290がアプリケーションエンジン210によって出力された後、ただし修正済みメディアデータ290が出力デバイス(単数または複数)270および/またはトランシーバ(単数または複数)275を使用して出力される前に、修正済みメディアデータ290に追加されることが可能である。
【0065】
いくつかの例では、アプリケーションエンジン210のうちの少なくとも1つは、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、またはこれらの組み合わせなど、撮像システム200の1つまたは複数のプロセッサ上で実行される、1つまたは複数のプログラムに対応する1つまたは複数の命令セットなどの1つまたは複数のソフトウェア要素を含む。いくつかの例では、アプリケーションエンジン210のうちの少なくとも1つは、1つまたは複数のハードウェア要素を含む。例えば、アプリケーションエンジン210のうちの少なくとも1つは、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、および/またはこれらの組み合わせなどのプロセッサを含むことができる。いくつかの例では、アプリケーションエンジン210のうちの少なくとも1つは、1つまたは複数のソフトウェア要素と1つまたは複数のハードウェア要素との組み合わせを含む。
【0066】
いくつかの例では、撮像システム200は、修正済みメディアデータ290を出力するように構成されており、出力することができる1つまたは複数の出力デバイス270を含む。いくつかの例では、出力デバイス(単数または複数)270は、画像および/またはビデオなどの視覚メディアを表示するように構成されており、表示することができるディスプレイ(単数または複数)を含む。いくつかの例では、出力デバイス(単数または複数)270は、ラウドスピーカまたはヘッドホンまたは撮像システム200をラウドスピーカもしくはヘッドホンに接続するように構成されるコネクタなどのオーディオ出力デバイス(単数または複数)を含む。オーディオ出力デバイス(単数または複数)は、音楽、音響効果、ビデオに対応するオーディオトラック、(例えばセンサ(単数または複数)205の)マイクロフォン(単数または複数)によって記録されたオーディオ記録、またはこれらの組み合わせなどのオーディオメディアを再生するように構成されており、再生することができる。出力デバイス(単数または複数)270は、環境の表現(例えば、センサ(単数または複数)205によってキャプチャされたメディアデータ285)、(例えば、仮想コンテンツ生成器207によって生成された)仮想コンテンツ、環境の表現と仮想コンテンツとの組み合わせ、環境の表現(単数または複数)および/または仮想コンテンツおよび/または(例えば、アプリケーションエンジン210および/または画像再投影エンジン215によって修正された)組み合わせに対する修正(単数または複数)、またはこれらの組み合わせを含むメディアを出力し得る。いくつかの例では、出力デバイス(単数または複数)270は、撮像システム200のユーザに面することができる。例えば、出力デバイス(単数または複数)270のディスプレイ(単数または複数)は、撮像システム200のユーザに面することができ、および/または撮像システム200のユーザに(例えば、向かって)視覚メディアを表示することができる。同様に、出力デバイス(単数または複数)270のオーディオ出力デバイス(単数または複数)は、撮像システム200のユーザに面することができ、撮像システム200のユーザに(例えば、向かって)オーディオメディアを再生することができる。いくつかの例では、出力(単数または複数)デバイス270は、出力デバイス4135を含む。いくつかの例では、出力デバイス(単数または複数)4135は、出力デバイス270を含むことができる。
図2では、出力デバイス(単数または複数)270は、視覚メディアデータを表示するディスプレイおよびオーディオメディアデータを再生する対応するラウドスピーカとして示されている。
【0067】
撮像システム200はまた、例えば受信側デバイスにメディアを送信することによって、(例えば、画像再投影エンジン215を含む)アプリケーションエンジン210によって生成された修正済みメディアデータ290を出力するために撮像システム200が使用することができる1つまたは複数のトランシーバ275も含む。受信側デバイスは、例えば、出力デバイス(単数または複数)のディスプレイ(単数または複数)を使用してメディアの視覚メディアデータを表示することによって、および/または出力デバイス(単数または複数)のオーディオ出力デバイス(単数または複数)を使用してメディアのオーディオメディアデータを再生することによって、それ自体の出力デバイス(単数または複数)を使用してメディアを出力することができる。トランシーバ(単数または複数)275は、有線またはワイヤレストランシーバ(単数または複数)、通信インターフェース(単数または複数)、アンテナ(単数または複数)、接続、結合、結合システム、またはこれらの組み合わせを含み得る。いくつかの例では、トランシーバ(単数または複数)275は、コンピューティングシステム4100の通信インターフェース4140を含み得る。いくつかの例では、コンピューティングシステム4100の通信インターフェース4140は、トランシーバ(単数または複数)275を含み得る。
図2では、トランシーバ(単数または複数)275は、メディアデータを送信するワイヤレストランシーバ(単数または複数)275として示されている。
【0068】
いくつかの例では、撮像システム200は、フィードバックエンジン280を含む。フィードバックエンジン280は、撮像システムのユーザインターフェースを通してユーザから受信したフィードバックを検出することができる。フィードバックエンジン280は、撮像システム200の他のエンジンから受信した撮像システム200の1つのエンジンに関するフィードバック、例えば1つのエンジンが他のエンジンからのデータを使用すると決定するか否かを検出することができる。フィードバックは、画像再投影エンジン215、動きベクトルエンジン220、グリッド反転エンジン225、タイムワープエンジン230、深度センササポートエンジン235、3D安定化エンジン240、3Dズームエンジン245、再投影SATエンジン250、頭部姿勢補正エンジン255、XRレイトステージ再投影エンジン260、特殊効果エンジン265、またはこれらの組み合わせなど、アプリケーションエンジン210のいずれかに関するフィードバックであり得る。フィードバックエンジン280によって受信されるフィードバックは、正のフィードバックまたは負のフィードバックとすることができる。例えば、撮像システム200の1つのエンジンが撮像システム200の他のエンジンからのデータを使用する場合、フィードバックエンジン280は、これを正のフィードバックとして解釈することができる。撮像システム200の1つのエンジンが撮像システム200の他のエンジンからのデータを拒否する場合、フィードバックエンジン280は、これを負のフィードバックとして解釈することができる。正のフィードバックはまた、センサ(単数または複数)205からのセンサデータの属性、および/またはユーザが微笑む、笑う、うなずく、正のフィードバックに関連付けられたボタンを押す、正のフィードバックに関連付けられたジェスチャを行う(例えば、親指を上げる)、肯定的な発言を行う(例えば、「はい」、「確認済み」、「オーケー」、「次」)、またはメディアに対して他の方法で肯定的に反応することなど、ユーザインターフェースからの入力に基づくことができる。負のフィードバックはまた、センサ(単数または複数)205からのセンサデータの属性、および/またはユーザが顔をしかめる、泣く、(例えば、「いいえ」の動きで)首を振る、負のフィードバックに関連付けられたボタンを押す、負のフィードバックに関連付けられたジェスチャを行う(例えば、親指を下げる)、否定的な発言を行う(例えば、「いいえ」、「否定」、「悪い」、「これではない」)、または仮想コンテンツに対して他の方法で否定的に反応することなど、ユーザインターフェースからの入力に基づくことができる。
【0069】
いくつかの例では、フィードバックエンジン280は、撮像システム200の1つまたは複数のMLシステムを更新するために、トレーニングデータとして撮像システム200の1つまたは複数のMLシステムにフィードバックを提供する。例えば、フィードバックエンジン280は、画像再投影エンジン215、動きベクトルエンジン220、グリッド反転エンジン225、タイムワープエンジン230、深度センササポートエンジン235、3D安定化エンジン240、3Dズームエンジン245、再投影SATエンジン250、頭部姿勢補正エンジン255、XRレイトステージ再投影エンジン260、特殊効果エンジン265、またはこれらの組み合わせなど、アプリケーションエンジン210のいずれかのMLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)にトレーニングデータとしてフィードバックを提供することができる。正のフィードバックは、MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)の出力に関連付けられた重みを強化および/または補強するために使用することができる。負のフィードバックは、MLシステム(単数または複数)および/またはトレーニング済みMLモデル(単数または複数)の出力に関連付けられた重みを弱化および/または除去するために使用することができる。
【0070】
いくつかの例では、フィードバックエンジン280は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、および/またはこれらの組み合わせなどのプロセッサ上で実行される、プログラムに対応する命令セットなどのソフトウェア要素を含む。いくつかの例では、フィードバックエンジン280は、1つまたは複数のハードウェア要素を含む。例えば、フィードバックエンジン280は、コンピューティングシステム4100のプロセッサ4110、画像プロセッサ150、ホストプロセッサ152、ISP154、および/またはこれらの組み合わせなどのプロセッサを含むことができる。いくつかの例では、フィードバックエンジン280は、1つまたは複数のソフトウェア要素と1つまたは複数のハードウェア要素との組み合わせを含む。
【0071】
図3Aは、エクステンデッドリアリティ(XR)システム200として使用されるヘッドマウントディスプレイ(HMD)310を示す斜視
図300である。HMD310は、例えば、拡張現実(AR)ヘッドセット、仮想現実(VR)ヘッドセット、複合現実(MR)ヘッドセット、エクステンデッドリアリティ(XR)ヘッドセット、またはそれらの何らかの組み合わせであってもよい。HMD310は、撮像システム200の例であり得る。HMD310は、HMD310の前部に沿って第1のカメラ330Aおよび第2のカメラ330Bを含む。第1のカメラ330Aおよび第2のカメラ330Bは、撮像システム200のセンサ(単数または複数)205の例であり得る。HMD310は、ユーザの眼(単数または複数)がディスプレイ(単数または複数)340に面するときにユーザの眼(単数または複数)に面する第3のカメラ330Cおよび第4のカメラ330Dを含む。第3のカメラ330Cおよび第4のカメラ330Dは、撮像システム200のセンサ205の例であり得る。いくつかの例では、HMD310は、単一の画像センサを有する単一のカメラのみを有し得る。いくつかの例では、HMD310は、第1のカメラ330A、第2のカメラ330B、第3のカメラ330C、および第4のカメラ330Dに加えて、1つまたは複数の追加のカメラを含んでもよい。いくつかの例では、HMD310は、第1のカメラ330A、第2のカメラ330B、第3のカメラ330C、および第4のカメラ330Dに加えて1つまたは複数の追加のセンサを含んでもよく、これは他のタイプのセンサ205および/または撮像システム200のセンサ(単数または複数)205も含み得る。いくつかの例では、第1のカメラ330A、第2のカメラ330B、第3のカメラ330C、および/または第4のカメラ330Dは、画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、またはそれらの組み合わせの例であり得る。
【0072】
HMD310は、ユーザ320の頭部にHMD310を装着しているユーザ320に見える1つまたは複数のディスプレイ340を含んでもよい。HMD310の1つまたは複数のディスプレイ340は、撮像システム200の出力デバイス(単数または複数)270の1つまたは複数のディスプレイの例とすることができる。いくつかの例では、HMD310は、1つのディスプレイ340と2つのビューファインダとを含むことができる。2つのビューファインダは、ユーザ320の左眼用の左ビューファインダと、ユーザ320の右眼用の右ビューファインダとを含むことができる。左ビューファインダは、ユーザ320の左眼がディスプレイの左側を見るように向けることができる。右ビューファインダは、ユーザ320の左眼がディスプレイの右側を見るように向けることができる。いくつかの例では、HMD310は、ユーザ320の左眼にコンテンツを表示する左ディスプレイと、ユーザ320の右眼にコンテンツを表示する右ディスプレイとを含む、2つのディスプレイ340を含んでもよい。HMD310の1つまたは複数のディスプレイ340は、デジタル「パススルー」ディスプレイまたは光学「シースルー」ディスプレイであり得る。
【0073】
HMD310は、HMD310のユーザの1つまたは複数の耳にオーディオを出力するスピーカおよび/またはヘッドホンとして機能することができる、1つまたは複数のイヤピース335を含んでもよい。
図3Aおよび
図3Bには1つのイヤピース335が示されているが、HMD310は、ユーザの各耳(左耳および右耳)に1つのイヤピースを有する2つのイヤピースを含むことができることを理解されたい。いくつかの例では、HMD310はまた、1つまたは複数のマイクロフォン(図示せず)を含むことができる。1つまたは複数のマイクロフォンは、撮像システム200のセンサ(単数または複数)205の例とすることができる。1つまたは複数のイヤピースは、撮像システム200の出力デバイス(単数または複数)270の例とすることができる。いくつかの例では、HMD310によって1つまたは複数のイヤピース335を通してユーザに出力されるオーディオは、1つまたは複数のマイクロフォンを使用して記録されたオーディオを含む、またはそれに基づくことができる。
【0074】
図3Bは、ユーザ320によって装着されている
図3Aのヘッドマウントディスプレイ(HMD)を示す斜視
図350である。ユーザ320は、ユーザ320の眼の上でユーザ320の頭部にHMD310を装着する。HMD310は、第1のカメラ330Aおよび第2のカメラ330Bを用いて画像をキャプチャすることができる。いくつかの例では、HMD310は、ディスプレイ(単数または複数)340を使用して、ユーザ320の眼に向かって1つまたは複数の出力画像を表示する。いくつかの例では、出力画像は、仮想コンテンツ生成器207によって生成され、コンポジタを使用して合成され、および/または出力デバイス(単数または複数)270のディスプレイ(単数または複数)によって表示された仮想コンテンツを含むことができる。出力画像は、例えば仮想コンテンツがオーバーレイされた状態で、第1のカメラ330Aおよび第2のカメラ330Bによってキャプチャされた画像に基づくことができる。出力画像は、場合によっては、仮想コンテンツがオーバーレイされた、および/または他の修正を伴う、環境の立体視ビューを提供することができる。例えば、HMD310は、第1のカメラ330Aによってキャプチャされた画像に基づく第1の表示画像を、ユーザ320の右眼に表示することができる。HMD310は、第2のカメラ330Bによってキャプチャされた画像に基づく第2の表示画像を、ユーザ320の左眼に表示することができる。例えば、HMD310は、第1のカメラ330Aおよび第2のカメラ330Bによってキャプチャされた画像の上にオーバーレイされた表示画像内に、オーバーレイされた仮想コンテンツを提供することができる。第3のカメラ330Cおよび第4のカメラ330Dは、ユーザがディスプレイ(単数または複数)340によって表示された表示画像を見る前、見ている間、および/または見た後に、眼の画像をキャプチャすることができる。このようにして、第3のカメラ330Cおよび/または第4のカメラ330Dからのセンサデータは、ユーザの眼(および/またはユーザの他の部分)による仮想コンテンツに対する反応をキャプチャすることができる。HMD310のイヤピース335は、ユーザ320の耳内に示されている。HMD310は、イヤピース335を通して、および/またはユーザ320の他方の耳(図示せず)内にあるHMD310の別のイヤピース(図示せず)を通して、オーディオをユーザ320に出力していてもよい。
【0075】
図4Aは、前向きカメラを含み、エクステンデッドリアリティ(XR)システム200として使用することができるモバイルハンドセット410の前面を示す斜視
図400である。モバイルハンドセット410は、撮像システム200の例であり得る。モバイルハンドセット410は、例えば、携帯電話、衛星電話、ポータブルゲームコンソール、音楽プレーヤ、健康追跡デバイス、ウェアラブルデバイス、ワイヤレス通信デバイス、ラップトップ、モバイルデバイス、本明細書に記載する任意の他のタイプのコンピューティングデバイスもしくはコンピューティングシステム、またはそれらの組み合わせであってもよい。
【0076】
モバイルハンドセット410の前面420は、ディスプレイ440を含む。モバイルハンドセット410の前面420は、第1のカメラ430Aおよび第2のカメラ430Bを含む。第1のカメラ430Aおよび第2のカメラ430Bは、撮像システム200のセンサ205の例であり得る。第1のカメラ430Aおよび第2のカメラ430Bは、コンテンツ(例えば、メディア修正エンジン235に世って出力された修正済みメディア)がディスプレイ440に表示されている間、ユーザの眼(単数または複数)を含む、ユーザに面することができる。ディスプレイ440は、撮像システム200の出力デバイス(単数または複数)270のディスプレイ(単数または複数)の例であり得る。
【0077】
第1のカメラ430Aおよび第2のカメラ430Bは、モバイルハンドセット410の前面420上のディスプレイ440の周りのベゼル内に示されている。いくつかの例では、第1のカメラ430Aおよび第2のカメラ430Bは、モバイルハンドセット410の前面420上のディスプレイ440から切り抜かれたノッチまたは切り欠きに配置することができる。いくつかの例では、第1のカメラ430Aおよび第2のカメラ430Bは、ディスプレイ440とモバイルハンドセット410の残りの部分との間に配置されたアンダーディスプレイカメラであってもよく、その結果、光は、第1のカメラ430Aおよび第2のカメラ430Bに到達する前にディスプレイ440の一部分を通過する。斜視
図400の第1のカメラ430Aおよび第2のカメラ430Bは、前向きカメラである。第1のカメラ430Aおよび第2のカメラ430Bは、モバイルハンドセット410の前面420の平面に垂直な方向を向いている。第1のカメラ430Aおよび第2のカメラ430Bは、モバイルハンドセット410の1つまたは複数のカメラのうちの2つであってもよい。第1のカメラ430Aおよび第2のカメラ430Bは、それぞれ第1および第2の画像センサであってもよい。いくつかの例では、モバイルハンドセット410の前面420は、単一のカメラのみを有することができる。
【0078】
いくつかの例では、モバイルハンドセット410の前面420は、第1のカメラ430Aおよび第2のカメラ430Bに加えて、1つまたは複数の追加のカメラを含むことができる。1つまたは複数の追加のカメラもまた、撮像システム200のセンサ205の例であり得る。いくつかの例では、モバイルハンドセット410の前面420は、第1のカメラ430Aおよび第2のカメラ430Bに加えて、1つまたは複数の追加のセンサを含むことができる。1つまたは複数の追加のセンサもまた、撮像システム200のセンサ205の例であり得る。場合によっては、モバイルハンドセット410の前面420は、2つ以上のディスプレイ440を含む。モバイルハンドセット410の前面420の1つまたは複数のディスプレイ440は、撮像システム200の出力デバイス(単数または複数)270のディスプレイ(単数または複数)の例とすることができる。例えば、1つまたは複数のディスプレイ440は、1つまたは複数のタッチスクリーンディスプレイを含むことができる。
【0079】
モバイルハンドセット410は、モバイルハンドセット410のユーザの1つまたは複数の耳にオーディオを出力することができる、1つまたは複数のスピーカ435Aおよび/または他のオーディオ出力デバイス(例えば、イヤホンまたはヘッドホンまたはそれらへのコネクタ)を含んでもよい。1つのスピーカ435Aが
図4Aに示されているが、モバイルハンドセット410は、2つ以上のスピーカおよび/または他のオーディオデバイスを含むことができることを理解されたい。いくつかの例では、モバイルハンドセット410はまた、1つまたは複数のマイクロフォン(図示せず)を含むことができる。1つまたは複数のマイクロフォンは、センサ205、および/または撮像システム200のセンサ(単数または複数)205の例とすることができる。いくつかの例では、モバイルハンドセット410は、モバイルハンドセット410の前面420に沿って、および/またはこれに隣接して1つまたは複数のマイクロフォンを含むことができ、これらのマイクロフォンは、撮像システム200のセンサ205の例である。いくつかの例では、モバイルハンドセット410によって1つまたは複数のスピーカ435Aおよび/または他のオーディオ出力デバイスを通してユーザに出力されるオーディオは、1つまたは複数のマイクロフォンを使用して記録されたオーディオを含む、またはそれに基づくことができる。
【0080】
図4Bは、後ろ向きカメラを含み、エクステンデッドリアリティ(XR)システム200として使用することができるモバイルハンドセットの背面460を示す斜視
図450である。モバイルハンドセット410は、モバイルハンドセット410の背面460上に第3のカメラ430Cおよび第4のカメラ430Dを含む。斜視
図450の第3のカメラ430Cおよび第4のカメラ430Dは、後ろ向きである。第3のカメラ430Cおよび第4のカメラ430Dは、
図2の撮像システム200のセンサ(単数または複数)205の例であり得る。第3のカメラ430Cおよび第4のカメラ430Dは、モバイルハンドセット410の背面460の平面に垂直な方向を向いている。
【0081】
第3のカメラ430Cおよび第4のカメラ430Dは、モバイルハンドセット410の1つまたは複数のカメラのうちの2つであってもよい。いくつかの例では、モバイルハンドセット410の背面460は、単一のカメラのみを有することができる。いくつかの例では、モバイルハンドセット410の背面460は、第3のカメラ430Cおよび第4のカメラ430Dに加えて、1つまたは複数の追加のカメラを含むことができる。1つまたは複数の追加のカメラもまた、撮像システム200のセンサ(単数または複数)205の例であり得る。いくつかの例では、モバイルハンドセット410の背面460は、第3のカメラ430Cおよび第4のカメラ430Dに加えて、1つまたは複数の追加のセンサを含むことができる。1つまたは複数の追加のセンサもまた、撮像システム200のセンサ(単数または複数)205の例であり得る。いくつかの例では、第1のカメラ430A、第2のカメラ430B、第3のカメラ430C、および/または第4のカメラ430Dは、画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、またはそれらの組み合わせの例であり得る。
【0082】
モバイルハンドセット410は、モバイルハンドセット410のユーザの1つまたは複数の耳にオーディオを出力することができる、1つまたは複数のスピーカ435Bおよび/または他のオーディオ出力デバイス(例えば、イヤホンまたはヘッドホンまたはそれらへのコネクタ)を含んでもよい。1つまたは複数のスピーカ435Bは、撮像システム200の出力デバイス(単数または複数)270の例とすることができる。1つのスピーカ435Bが
図4Bに示されているが、モバイルハンドセット410は、2つ以上のスピーカおよび/または他のオーディオデバイスを含むことができることを理解されたい。いくつかの例では、モバイルハンドセット410はまた、1つまたは複数のマイクロフォン(図示せず)を含むことができる。1つまたは複数のマイクロフォンは、センサ205、および/または撮像システム200のセンサ(単数または複数)205の例とすることができる。いくつかの例では、モバイルハンドセット410は、モバイルハンドセット410の背面460に沿って、および/またはこれに隣接して1つまたは複数のマイクロフォンを含むことができ、これらのマイクロフォンは、撮像システム200のセンサ(単数または複数)205の例である。いくつかの例では、モバイルハンドセット410によって1つまたは複数のスピーカ435Bおよび/または他のオーディオ出力デバイスを通してユーザに出力されるオーディオは、1つまたは複数のマイクロフォンを使用して記録されたオーディオを含む、またはそれに基づくことができる。
【0083】
モバイルハンドセット410は、前面420上のディスプレイ440をパススルーディスプレイとして使用することができる。例えば、ディスプレイ440は、出力画像を表示することができる。出力画像は、第3のカメラ430Cおよび/または第4のカメラ430Dによってキャプチャされた画像に基づくことができ、例えば、仮想コンテンツがオーバーレイされ、および/またはメディア修正エンジン235による修正が適用されている。第1のカメラ430Aおよび/または第2のカメラ430Bは、ディスプレイ440上の仮想コンテンツを伴う出力画像の表示の前、その間、および/またはその後に、ユーザの眼(および/またはユーザの他の部分)の画像をキャプチャすることができる。このようにして、第1のカメラ430Aおよび/または第2のカメラ430Bからのセンサデータは、ユーザの眼(および/またはユーザの他の部分)による仮想コンテンツに対する反応をキャプチャすることができる。
【0084】
図5は、グリッド反転の例を示す概念図である。グリッド反転への入力は、動きベクトル(MV)グリッドとして
図5の第1の画像Img1 510から第2の画像Img2 515への黒い実線矢印を使用して示される、動きベクトルの第1のセットを含む。動きベクトルグリッドは、画素(または画素のグループ)ごとに、動きベクトル(MV)グリッド505内の動きベクトルを使用して、その画素(または画素のグループ)が環境内の第1の画像Img1 510(例えば、視覚または深度)とその環境内の第2の画像Img2 515(例えば、視覚または深度)との間でどの程度移動しようとしているかを示す。動きベクトルグリッド505は、画像の動きベクトルマップと呼ばれることがある。動きベクトルグリッド505の動きベクトルは、動きベクトルエンジン220を使用して、例えばオプティカルフローを使用して、決定することができる。
【0085】
グリッド反転エンジン225は、動きベクトルの第2のセット(逆MVグリッド520)を生成するために動きベクトルの第1のグループ(動きベクトルグリッド505)内の動きベクトルの特性(単数または複数)(例えば、方向、原点、位置、長さ、および/またはサイズ)を変更する、グリッド反転を実行することができる。(MVグリッド505におけるように)Img1 510からの各画素がImg2 515にどのように移動するかを示す代わりに、動きベクトルの第2のセット(逆MVグリッド520)の動きベクトルは、Img2 515からの各画素がImg1 510にどのように戻ることができるかを示す。動きベクトルの第2のセット(逆MVグリッド520)の動きベクトルは、
図5の第2の画像Img2 515から第1の画像Img1 510に向かう黒い破線矢印を使用して示されている。
【0086】
図5の様々な黒いアイコンは、2つの画像Img1 510およびImg2 515に描写される環境内の様々な要素を表す。例えば、要素は、家、鳥、人物、車、および木を含む。MVグリッド505によれば、家および木は、MVグリッド505において0で表されるように、Img1 510からImg2 515まで移動していない。同様に、逆MVグリッド520でも、家および木は、Img2 515からImg1 510まで移動していない。家は、両方とも家が位置するセル0におけるMVグリッド505および逆MVグリッド520内の0で表される。木は、木が位置するセル8における逆MVグリッド内の0によって表すことができるが、以下で論じられる車との競合があり、黒丸によって表される。鳥は、Img1 510からImg2 515へ(セル1からセル2へ)1グリッドセルだけ右に移動し、これはMVグリッド505内のセル1の1によって表される。鳥は、Img2 515からImg1 510へ(セル2からセル1へ)1グリッドセルだけ左に移動し、これは逆MVグリッド520内のセル2の-1によって表される。値は、MVグリッド505から逆MVグリッド520に反転される(-1を乗じる)だけでなく、Img1 510内の要素の古い位置に対応するセルからImg2 515内の要素の新しい位置に対応するセルに移動もされる。鳥がImg1 510内にいたがImg2 515にはいないセル1の黒い星は、セル1に対応する画像の領域が欠落しており、逆MVグリッド520において、(例えば、補間および/またはインペインティングを用いて)埋める必要があり得ることを示している。人物は、Img1 510からImg2 515へ(セル6からセル4へ)2グリッドセルだけ左に移動し、これはMVグリッド505内のセル6の-2によって表される。人物は、Img2 515からImg1 510へ(セル4からセル6へ)2グリッドセルだけ右に移動し、これは逆MVグリッド520内のセル4の2によって表される。人物がImg1 510内にいたがImg2 515からはいなくなっているセル6の黒い星は、逆MVグリッド520において、セル1に対応する画像の領域が欠落しており、(例えば、補間および/またはインペインティングを用いて)埋める必要があり得ることを示している。車は、Img1 510からImg2 515へ(セル7からセル8へ)1グリッドセルだけ右に移動し、これはMVグリッド505内の1によって表される。車は、Img2 515からImg1 510へ(セル8からセル7へ)1グリッドセルだけ左に移動し、これは逆MVグリッド520内の-1によって表すことができる。しかしながら、車および木は、Img2 515内の同じグリッドセル(セル8)内にあり、したがって赤い丸は、逆MVグリッド520のそのセル内の競合値(例えば、木については0、車については-1)を示す。
【0087】
図6は、深度ベースの再投影の例を示す概念
図600である。深度ベースの再投影は、画像再投影エンジン215によって実行される。この例は、工具箱が乗せられ、その周りにいくつかの椅子がある机を有する環境(世界場面605と呼ばれる)のカメラ画像610を示す。画像再投影エンジン215は、再投影画像615を生成するためにカメラ画像610を再投影するために、(例えば世界場面605の)環境の深度データ620を使用する。再投影画像615は、カメラ画像610(例えば、世界場面605)と同じ環境を描写するが、カメラ画像610と比較して再投影画像615内の異なる視点または地点から環境がキャプチャされたかのように再投影されている。
図6に示される例では、再投影画像615は、カメラ画像610に描写された環境の視点または地点の左に並進した環境の視点または地点からキャプチャされたように見える。いくつかの例では、画像再投影エンジン215は、例えば深度データ620に基づいて、グリッド反転エンジン225によって生成された逆MVグリッド(例えば、逆MVグリッド520)を使用して画像再投影を実行することができる。
【0088】
図7は、タイムワープエンジン230によって実行されるタイムワープ705の例を示す概念
図700である。左側には、大きな、または密な動きベクトルマップ720が黒い実線矢印として示され、画素が画像フレームnと画像フレームn-4との間でどのように移動するかを示している。画像フレームnおよび画像フレームn-4は、高い垂直線として示されている。タイムワープ705は、例えば画像フレームnから画像フレームn-1へ、画像フレームn-1から画像フレームn-2へ、画像フレームn-2から画像フレームn-3へ、および画像フレームn-3から画像フレームn-4へのより短い垂直矢印として示される、より小さい動きベクトルマップを作成するために、大きな、または密な動きベクトルマップ720上で(グリッド反転エンジン225を使用して)グリッド反転を使用する。
【0089】
より小さいベクトルマップを作成するために、タイムワープエンジン230はリサンプリングを使用する。例えば、より小さいベクトルマップを生成するために、タイムワープエンジン230は、例えば値に1/4を乗じることによって、動きベクトルマップ内の(フレームnとフレームn-4との間の要素の移動の距離を表す)値を小さくする。加えて、タイムワープエンジン230は、
図5のグリッド反転における値の移動と同様に、対応するフレーム内の各要素の新しい位置に値を移動させる。
【0090】
タイムワープ705は、例えばオプティカルフローがkフレームごとにのみ実行される場合、既存の動きベクトルマップ間の動きベクトルマップを補間するために使用することができる。オプティカルフローは、実行するために多くの電力を使用する可能性がある計算コストが高い演算であるが、ここで実証されるタイムワープ705は、より低コストで低電力の演算である。したがって、オプティカルフローは、計算コストおよび電力使用量を削減するために控えめに使用することができるが、タイムワープ705は依然として、撮像システム200が任意の2つの隣接するフレーム間(および場合により、任意の2つのフレーム間)のフレーム遷移ごとに動きベクトルを取得することを可能にすることができる。
【0091】
いくつかの例では、タイムワープ705によって生成されたより小さい動きベクトルマップは、例えばビデオのフレームレートを第1のフレームレートから第1のフレームレートよりも高い第2のフレームレートに増加させるために、ビデオの既存のフレーム間に追加のフレームを補間するために使用することができる。
【0092】
いくつかの例では、タイムワープ705によって生成されたより小さい動きベクトルマップは、ビデオの特定のフレームの品質を向上させるために使用することができる。例えば、ビデオの特定のフレームが不鮮明であるか、大量の圧縮アーチファクトを含むか、画像の撮影された場面を明瞭に見えにくくする圧縮アーチファクトを含むか、そうでなければ低品質に悩まされる場合には、タイムワープ705は、ビデオのこのようなフレームの品質を改善することができる。タイムワープ705は、ビデオの1つまたは複数の隣接または近くのフレームから動きベクトルマップを決定するために使用することができ、これらのフレームからの画像データは、問題の特定のフレームの画質を改善するように、問題の特定のフレームを置き換えるための修正された画像を生成するために使用することができる。概念
図700は、タイムワープ705が適用されていない左側の第1の画像710、およびタイムワープ705が適用されている右側の第2の画像715の、少年の画像の2つの事例を示しており、第1の画像710と比較して、第2の画像715の少年の描写の明確さを改善している。タイムワープ705を使用して改善された右側の画像715は、画像715における少年の描写の様々な線およびエッジを表すために実線を使用して示されるように、特に少年の描写における様々なエッジおよびその付近において、画像710よりも鮮明で明瞭に見える。加えて、いくつかの例では、ヘアパターン、ファブリックパターン、他のパターン、テキスト、ロゴ、および/または他のデザインなどのパターンは、タイムワープ705が適用されていない画像(例えば、左側の画像710)よりもタイムワープ705が適用されている画像(例えば、右側の画像715)の方が明瞭で鮮明に見える可能性がある。
【0093】
タイムワープ705の追加の例、およびタイムワープ705を使用する画像の改善が、
図23および
図29に示されている。
【0094】
図8は、深度センササポートエンジン235によって実行される深度センササポート805の例を示す概念
図800である。飛行時間(ToF)センサを含み得る、画像センサ810のセットおよび深度センサ815のセットを含む、撮像システム200上のセンサ205のクラスタが示されている。場合によっては、画像処理において、画像センサ810からの画像データおよび深度センサ815からの深度データは、例えばボケ、シミュレートされた被写界深度のブレ、オブジェクト認識などを生成するために、一緒に使用するのに有用であり得る。しかしながら、画像センサ810および深度センサ815は併置されない。代わりに、画像センサ810および深度センサ815は、オフセット820だけ互いにオフセットされる。したがって、画像センサ810からの画像データおよび深度センサ815からの深度データの使用は、オフセット820に起因する視点のわずかな不一致による視差問題をもたらす可能性がある。したがって、深度データ内の深度は、画像データ内に描写されたオブジェクトと一致しない場合がある。この不一致は、センサに近い環境内のオブジェクトに対して特に顕著であり得、画像データ対深度データにおいてかなり異なる位置に出現し得る。より遠くのオブジェクトは、画像データおよび深度データではより類似して見えることがある。
【0095】
この不一致を補正するために、いくつかの例では、画像再投影エンジン215は、画像センサ810の視点から来るように見えるように、深度センサ815からの深度データを再投影することができる。いくつかの例では、画像再投影エンジン215は、深度センサ815の視点から来るように見えるように、画像センサ810からの画像データを再投影することができる。画像再投影エンジン215が再投影を実行するために深度データが必要とされ得るので、画像再投影エンジン215は、適切な深度データについて、画像センサ810と深度センサ815との間の外部較正に依存することができる。
【0096】
図9は、3D安定化エンジン240によって実行される3D安定化905の例を示す概念
図900である。従来の安定化技術は、回転移動を補償することができるが、一般に、現実世界における並進(例えば、視差)移動を補償することはできない。環境の深度データに基づいて画像再投影エンジン215を使用する画像再投影は、並進移動、回転移動、またはその両方を含む視差移動を補正する真の3D安定化905を提供することができる。
図9におけるオリジナル(オリジナル」)とラベル付けされた4つのビデオフレームを含む、センサ(単数または複数)205を使用してキャプチャされたビデオの各ビデオフレームについて、元のビデオフレームの安定化された変形(「安定」)を生成するために、画像再投影エンジン215を使用して再投影が実行される。結果的な再投影されたビデオフレームは、それらのそれぞれの視点が、線に垂直な任意の視差移動、または線に対応する軸(もしくは任意の他の軸)を中心とする任意の回転なしに、仮想安定化移動経路を表す線上に全て収まるように再投影される。線は、湾曲した移動経路を表すために湾曲していてもよいが、このような視差移動または回転に対応するいかなるギザギザのエッジも有さない。
【0097】
撮影された3D安定化905について、ビデオフレームによって示される入力ビデオは、異なる方向に、すなわち並進的に上方に、並進的に下方に、並進的に左に、並進的に右に、並進的に前方に、並進的に航法に、および/または回転的に(例えば、ピッチ、ヨー、およびロール)揺れている。画像再投影エンジン215は、環境上の視点を変更するために画像を再投影するので、揺れにおけるこれらの移動の全ては、画像再投影エンジン215を使用する再投影によって安定化される。
【0098】
場合によっては、ブランク領域は、安定化されたフレーム内に、例えばフレームのエッジに、および/またはフレーム内の人々の周りに(例えば、
図9の右下の4つ目の安定化されたフレーム内の女性の右側に)出現する可能性がある。これらは、元の画像に対応するデータがないオクルージョン領域を表すことができる。これらのオクルージョン領域は、例えば補間および/またはインペインティング(例えば、ディープラーニングベースのインペインティング)を使用して、画像再投影エンジン215によって埋めることができる。3D安定化905の追加の例3205が、
図30に示されている。いくつかの例では、これらのブランク領域は黒色に見えてもよい。いくつかの例では、これらのブランク領域は白色に見えてもよい。
図9では、これらのブランク領域は、白色で示されている。
【0099】
いくつかの例では、3D安定化のため、並びに画像再投影エンジン215の特定の他の用途のために、あたかも無限の距離にあるかのように遠くの画素を扱い、このような画素の位置を再投影下で不変にすることは、有用であり得る。いくつかの例では、画像再投影エンジン215は、あたかも無限の距離にあるかのように遠くの画素を扱うために無限遠を表す値に向かって並進値を滑らかに遷移させるために、並進減衰を使用することができる。
【0100】
図10は、3Dズームエンジン245によって実行される3Dズーム1005(シネマティックズームとも呼ばれる)の例を示す概念
図1000である。3Dズームエンジン245によって実行される3Dズーム1005は、画像へのズームイン(例えば、画像の他の部分を除去しながら画像の特定の部分を拡大すること)、仮想カメラを異なる方向に移動させること(例えば、パン、回転など)、および/または他のタイプのズームを含むことができる。場合によっては、画像に対してデジタルズームを実行するために、
図10においてデジタルズーム(「dig.zm.」)としてラベル付けされた4つの画像のシーケンスに示されるように、全体画像が、従来はアップスケールされ、クロップされる。画像は、家の前のスケートボーダーを示している。デジタルズーム(またはいくつかの例では、光学ズームレンズまたはカメラおよび/もしくはレンズ間のスイッチを使用する光学ズーム)を実行することで、家の視野のかなりの部分が失われる。しかしながら、カメラがスケートボーダーに近付けられると、家の視野は、デジタルズームを使用して失われるほど多くは失われない。これは、スケートボーダーが家よりもカメラに近いからである。言い換えると、スケートボーダーは前景にあり、家は背景にある。
【0101】
3Dズーム1005、または深度ベースのズームもしくはシネマティックズームは、環境におけるカメラの前方への移動、この場合はスケートボーダーに近付く移動をシミュレートするために、環境の深度データ1020に基づいて画像再投影エンジン215を使用する画像再投影を使用する。
図10で深度ベースのズーム(「depth.zm.」)としてラベル付けされた4つの画像のシーケンスに示されるように、スケートボーダーは、デジタルズームの場合と同程度にサイズが増加するが、家の被写界深度はあまり失われない。例えば、シーケンス内の4つの画像の最後において、家の4つの窓の範囲は、デジタルズーム下で少なくとも部分的にフレーム内にあるが、家の6つの窓の範囲は、3D深度ベースズーム下で少なくとも部分的にフレーム内にある(ただしこれらの窓のうちの1つは完全にスケートボーダーの後ろにある)。したがって、3D深度ベースズーム(またはシネマティックズーム)は、特に背景要素の視野の損失を最小限に抑える。3Dズーム1005(または深度ベースのズームまたはシネマティックズーム)は、
図31に示されている。
【0102】
図11は、再投影SATエンジン250によって実行される再投影1105の例を示す概念
図1100である。撮像システム200のセンサ205のクラスタが、望遠センサ1110、広角センサ1115、および他のセンサ1125とともに
図11に示されている。場合によっては、撮像システム200は、例えば環境の画像に異なるレベルのズームを提供するために、望遠センサ1110と広角センサ1115との間で切り替えてもよい。しかしながら、
図8の画像センサ810および深度センサ815を用いるシナリオと同様に、望遠センサ1110および広角センサ1115は併置されない。代わりに、望遠センサ1110と広角センサ1115との間にオフセット1120がある。したがって、望遠センサ1110と広角センサ1115との間で切り替えることで、視差効果を生じる。例えば、望遠センサ1110を使用してキャプチャされた望遠画像1130が撮影され(「tele」とラベル付けされる)、広角センサ1115を使用してキャプチャされ、望遠の視野に一致するようにクロップされた、すなわち望遠センサに移行する前にデジタルズームされた広角画像1135が撮影される(「wide」とラベル付けされる)。両方の画像は、遠くの背景の前の男性を描写している。望遠画像1130では、男性は、広角画像1135における男性の位置よりもわずかに右に写っている。
【0103】
図8の深度センササポート805と同様に、再投影SATエンジン250は、深度データ1160に基づいてオフセット1120を補正するために再投影1105を実行することができる。例えば、再投影SATエンジン250は、修正済み望遠画像1140(「modif.tele」とラベル付けされる)が(例えば、望遠画像1130のように)望遠センサ1110の視点ではなく(例えば、広角画像1135のように)広角センサ1115の視点からキャプチャされたように見えるように視点を修正するために望遠画像を修正するために、再投影1105を実行することができる。修正済み望遠画像1140では、男性は、未修正望遠画像1130における男性の位置よりもわずかに左に写っている。修正済み望遠画像1140では、男性は、広角画像1135における男性の位置と同様の位置に写っている。背景に対して男性を描写する画像データの視差移動によって引き起こされる黒い影が、修正済み望遠画像1140における男性の右に現れる。黒い影は、例えばさらに説明される補間および/またはインペインティングを使用して、画像データで埋めることができる「穴」を表す。
【0104】
いくつかの例では、再投影SATエンジン250は、代わりに、修正された広角画像(図示せず)が、広角センサ1115の視点ではなく望遠センサ1110の視点からキャプチャされたように見えるように視点を修正するために広角画像を修正するために、深度データ1160に基づいて再投影1105を実行することができる。1つのセンサからのデジタルズーム画像のセットがスイッチの前の第2のセンサと一致するという画像推定に基づいてワープされる、センサ間の変換とは異なり、再投影SATエンジン250は、深度データに基づいてオフセットを補正することができ、特により近いオブジェクト(例えば、前景にあるオブジェクトおよび/または閾値深度未満のオブジェクト)について、視差問題(例えば、視差誤差)を低減する。再投影1105の追加の例が
図32に示されている。
【0105】
図12は、頭部姿勢補正エンジン255によって実行される頭部姿勢補正1205の例を示す概念
図1200である。場合によっては、ユーザの画像は、準最適角度および/または実際より良く見せない角度(例えば、ユーザの顔に垂直な垂直角度以外の角度)からキャプチャすることができる。例えば、ユーザが自分の自撮り画像をキャプチャするとき、またはビデオ会議のためにカメラを自分に向けるとき、画像がキャプチャされる角度は、ユーザが下、上、左、および/または右を見ているように見えるように、ユーザの頭部姿勢と整合しない場合が多い。場合によっては、長時間にわたって電話または他の撮像システム200を保持することからユーザの手が疲れ、および/または不快になる可能性があり、これにより、ユーザの手が落ちるかまたは知覚の表面に寄りかかる際にこの問題を悪化させる可能性がある。
【0106】
頭部姿勢補正エンジン255によって実行される頭部姿勢補正1205は、ユーザの顔に垂直な垂直角度からの視点など、より最適なおよび/またはより良く見せる視点について仮想センサ位置を一致させるために実際のセンサを再投影するために、画像再投影エンジン215を使用して再投影を実行することができる。
【0107】
例えば、入力画像1210における女性の元の頭部姿勢は、女性の頭部の高さよりわずかに下からの実際より良く見せない角度からキャプチャされ、女性の首および顎領域を強調している。頭部姿勢補正1205は、ユーザの顔に垂直な垂直角度からの視点からの再投影画像1215を生成するために、入力画像1210および深度データ1220に基づいて画像再投影エンジン215を使用する。再投影画像1215は、はるかに良く見せる垂直角度から女性の顔を見ているように見え、入力画像1210のように女性の首および顎よりも女性の顔の特徴を強調している。頭部姿勢補正1205の追加の例が、
図33に示されている。
【0108】
図13は、XRレイトステージ再投影エンジン260によって実行されるXRレイトステージ再投影1305の例を示す概念
図1300である。いくつかのXRデバイス(例えば、HMD1320)または他のモバイルデバイスは、バッテリ電力を節約するために、低フレームレートでそれらのセンサ205を使用してセンサデータ(例えば、画像、ビデオ、深度画像、および/または点群)をキャプチャする。フレームレートを改善するために低フレームレートセンサデータのフレーム間に追加のフレームを生成するために、補間を使用することができる。低フレームレートXRは、ユーザに吐き気をもたらす可能性があり、および/またはXRをジッタがあり非現実的であるように見せる可能性があるため、高フレームレートはXRアプリケーションにとって重要であり得る。
【0109】
補間技術は、XRデバイス(例えば、HMD1320)の視点の全ての変化を常に現実的に表すことができるとは限らない。例えば、補間は、ユーザがオブジェクトに近付いたり遠ざかったりすることをシミュレートするためにデジタルズームを使用してもよく、これは、
図10の3Dズーム1005に関して説明されたものと同様の視野の不一致を引き起こす可能性がある。補間技術はまた、例えばXRデバイス(例えば、HMD1320)の並進移動によって引き起こされる、視差移動に困難を有する場合もある。補間技術はまた、例えばXRデバイス(例えば、HMD1320)の配向(例えば、ピッチ、ロール、および/またはヨー)の変化よって引き起こされる、回転移動に困難を有する場合もある。
【0110】
XRレイトステージ再投影エンジン260によって実行されるXRレイトステージ再投影1305は、XRデバイスの位置の変化に基づいて環境の画像を再投影するために、画像再投影エンジン215を使用して画像再投影を実行することができる。XRデバイス(例えば、HMD1320)の位置の変化は、XRデバイス(例えば、HMD1320)の姿勢センサからのセンサデータに基づいて決定することができ、これは画像センサまたは深度センサよりも少ない帯域幅および/または電力を使用し得る。XRデバイス(例えば、HMD1320)の位置の変化は、XRデバイス(例えば、HMD1320)のセンサ205の画像センサ、深度センサ、および/またはマイクロフォンからの画像データ、深度データ、および/またはオーディオデータに基づいて推測することができる。
【0111】
例えば、入力画像1310が示されており、これに基づいてXRレイトステージ再投影エンジン260は、XRデバイスの一例であるHMD1320の配向の図示される変化に基づいてXRレイトステージ再投影1305を使用して再投影画像1315を生成する。
【0112】
図14は、特殊効果エンジン265によって実行される特殊効果1405の例を示す概念
図1400である。特殊効果エンジン265によって実行される特殊効果1405は、オブジェクトの周りで回転するため、オブジェクトに沿ってパンするため、軸の周りで視点を回転させるため、経路に沿って視点を移動させるため、またはこれらの何らかの組み合わせのために入力画像1410を再投影するために、画像再投影エンジン215を使用して画像再投影を実行することができる。
図14に示される例では、環境の入力画像1410は、再投影画像1415を形成するために環境の異なる視点から再投影される。再投影画像1415における環境上の視点は、入力画像1410における環境上の視点の左にあり、例えば、工具箱を、入力画像1410に対して再投影画像1415において右に回転および/または傾斜するように見せる。
【0113】
図15は、行列演算に基づく画像再投影変換を示す概念
図1500である。概念
図1500は、キャプチャ画像1510とは異なる視点から環境の再投影画像1515を生成するために、画像再投影エンジン215が環境のキャプチャ画像1510をどのように再投影することができるかを示す。画像再投影エンジン215は、センサ(単数または複数)205から、具体的にはカメラからキャプチャ画像1510を受信する。キャプチャ画像は、第1の視点(「first persp.」)からの環境を描写する。キャプチャ画像1510の例が
図15に示されている。例えば、焦点距離fおよび深度とともにピンホールカメラパラダイムを使用して、撮像システムは、カメラに対して環境内のどこにオブジェクトがあるかを判定することができる。画像再投影エンジン215は、第1のカメラから第2のカメラに移動または再投影するために、第1のカメラ(オリジナルカメラ、ソースカメラ、または第1の視点としても知られる)を描写する内部行列3D世界における第2のカメラまたは仮想カメラ(ターゲットカメラ、または第2の視点としても知られる)を描写する第2の内部行列、および3D変換行列を使用することができる。いくつかの例では、画像再投影エンジンは、本明細書に記載される画像再投影と同じ原理に基づいて、第2の視点からの環境を描写する第2の深度マップを作成するために、深度再投影を実行することができる。さらに、レンズ歪み(例えば、径方向歪み)を考慮に入れる変換パラダイムなど、画像および/または深度再投影のために様々な変換パラダイムを使用することができる。
【0114】
画像再投影エンジン215は、例えば深度センサから、および/またはカメラ(例えば、立体深度感知、ToFセンサ、および/または構造化光)を使用する深度の判定に基づいて、深度マップ(「画像領域上の深度」)(例えば、深度データ620)を受信する。深度マップに基づいて、画像再投影エンジン215は、キャプチャ画像1510内に描写された椅子、またはテーブル、または工具箱のいずれかなど、キャプチャ画像1510内の任意の所与のオブジェクトの3D座標(例えば、X、Y、およびZ)における正確な位置を判定することができる。例えば、オブジェクトの深度、カメラ(Intrinsic
cam)の内部行列、およびキャプチャ画像1510内のオブジェクトの座標
【数1】
に基づいて、環境内のオブジェクトのX、Y、およびZ座標を判定するための式のセットが、
図15において識別される。式は以下の通りである。
【数2】
【0115】
カメラの内部行列(Intrinsic
cam)は、3Dカメラ座標を2D画像座標に変換するために使用することができ、以下に示されるように、焦点距離の測定値(単数または複数)(f
xおよび/またはf
y)および/または主点オフセット(単数または複数)(c
xおよび/またはc
y)に基づくことができる。
【数3】
【0116】
3D変換は、例えば以下に示されるように、ソースカメラ位置および再投影に対応するターゲットカメラ位置における内部行列に基づくことができる。
【数4】
【0117】
画像再投影エンジン215は、再投影の環境内で視点がどのように移動すべきか(例えば、カメラのシミュレートされた移動)を示す再投影行列を受信および/または決定する。
図15に描写される再投影行列内の値は、R11、R12、R13、Tx、R21、R22、R23、Ty、R31、R32、R33、およびTzとラベル付けされる。別の例では、画像再投影エンジンは、(例えば、上記で示された計算の少なくともいくつかを実行することなく)変換を直接3D変換行列として得ることができる。再投影行列の形態で、環境内で視点がどのように移動すべきかを画像再投影エンジン215が知ると、画像再投影エンジン215は、以下のようにX
out、Y
out、およびZ
outを決定することによって、(例えば、再投影画像1515内で)カメラ移動の後のオブジェクトの環境内の新しい3D位置を決定することができる。
【数5】
【0118】
画像再投影エンジン215は、それぞれ
【数6】
として示される、再投影画像1515におけるオブジェクトの新しい座標を決定するために、座標X
out、Y
out、およびZ
outによって定義される、環境内のオブジェクトの新しい位置を使用することができる。再投影画像1515内のオブジェクトの新しい座標
【数7】
は、以下のように画像再投影エンジン215によって決定される。
【数8】
【0119】
画像再投影エンジン215は、キャプチャ画像1510から再投影画像1515へのオブジェクトの動きベクトルを決定するためにキャプチャ画像1510内のオブジェクトの座標
【数9】
と、再投影画像1515内のオブジェクトの新しい座標
【数10】
とを使用することができる。画像再投影エンジン215は、以下のように、動きベクトルの水平値をMV
xとして、動きベクトルの垂直値をMV
yとして、決定することができる。
【数11】
【0120】
画像再投影エンジン215は、キャプチャ画像1510内の任意のオブジェクトの任意の画素について、その画素が再投影画像1515内のどこに入るべきかを知るために、動きベクトルMVxおよびMVyを使用することができる。例示的な例では、椅子の一部は、キャプチャ画像1510から再投影画像1515へ右に4画素移動し得る。一方、工具箱は椅子よりもカメラに近いので、工具箱の一部は、キャプチャ画像1510から再投影画像1515へ右に10画素移動し得る。したがって、オブジェクトごとに、画像再投影エンジン215は、キャプチャ画像1510と比較して、再投影画像1515内のどこにオブジェクトが移動すべきかを計算することができる。
【0121】
動きベクトルは、第2の画像データ内の画素位置への第1の画像データ内の各画素の画素変位を表すことができ、この変位は、第1および第2の視点の相対的な観察地点と深度の逆数とに依存する。上述のように、動きベクトルは、深度データ(例えば、上記の式における「Depth」)に基づいて決定することができる。例えば、いくつかの例では、動きベクトルは、深度データに基づいてキャプチャされた画像データから決定され得る3D座標(例えば、X、Y、Z)など、環境内のオブジェクト(単数または複数)の位置(単数または複数)に基づいて決定することができる。いくつかの例では、動きベクトルは、オブジェクト(単数または複数)の3D座標(例えば、X、Y、Z)の変換(例えば、3D変換)の出力(単数または複数)(例えば、Xout、Yout、Zout)など、環境内のオブジェクト(単数または複数)の位置(単数または複数)の変換の出力(単数または複数)に基づいて決定することができる。
【0122】
いくつかの例では、カメラの焦点距離fもまた、上記の式のいくつかに組み込まれてもよい。例えば、環境内のオブジェクトのXおよびY座標の決定は、焦点距離fと、例えば以下に示されるように、再投影画像1515内のオブジェクトの座標の決定
【数12】
とに基づいてもよい。
【数13】
【0123】
図16は、深度データおよび3D変換に基づくグリッド反転変換を示すブロック
図1600である。グリッド反転変換は、(例えば、再投影行列の形態の)3D変換1605および深度マップ1610を取得し、
図15に示されるように、MV計算1615を使用して、キャプチャ画像1510から再投影画像1515への環境内のオブジェクトの動きを示す動きベクトル(MV)1620を生成する。いくつかの例では、初期の動きベクトルは、既存の動きベクトルと呼ぶこともできる。グリッド反転変換は、既存のMV1620に対して逆動きベクトル1630へのグリッド反転1625を実行する。いくつかの例では、逆動きベクトルは、必要動きベクトルとも呼ばれることがある。
【0124】
図17は、動きベクトルに基づく画像再投影変換を示すブロック
図1700である。ワープエンジン1705が示されており、これは画像再投影エンジン215の一部であってもよい。ワープエンジン1705は、最初に決定された動きベクトル(
図15~
図16のMV)ではなく逆動きベクトル1730(例えば、
図15~
図16の逆MV)を使用する。これは、逆動きベクトル1730がアウトからインへの動きベクトルであるのに対して、最初に決定された動きベクトル(MV)はインからアウトへの動きベクトルだからである。アウトからインへの動きベクトル変換は、インからアウトへの動きベクトル変換よりも計算コストがかからない。特に、ワープエンジン1705が、逆動きベクトル1730などのアウトからインへの動きベクトルを使用して再投影画像1715を生成する場合には、ワープエンジン1705は、再投影画像のラスタ順(または逆ラスタ順、または任意の他の順序)で画素ごとに再投影画像1715を生成することができる。再投影画像1715内の画素ごとに、アウトからインへの逆動きベクトル1730はワープエンジン1705に、キャプチャ画像1710内の特定の位置から画素データを引き出し、キャプチャ画像1710からのその画素データで再投影画像1715のその画素を埋めるように指示する。例えば、再投影画像1715内の特定の画素について、ワープエンジン1705は、その画素の値がキャプチャ画像1710内で左に4画素の画素から取られるべきであると決定するなどのために、アウトからインへの逆動きベクトル1730を読み取ることができる。
【0125】
インからアウトへの動きベクトルは、(初期視点からの)場面の初期画像から(ターゲット視点からの)場面のターゲット画像への画素の動きを示す動きベクトルを指すことができる。最初に決定された動きベクトル(例えば、
図15~
図16のMV)は、インからアウトへの動きベクトルの例とすることができる。アウトからインへの動きベクトルは、(ターゲット視点からの)場面のターゲット画像から(初期視点からの)場面の初期画像への画素の動きを示す動きベクトルを指すことができる。逆MV1730は、アウトからインへの動きベクトルの例とすることができる。
【0126】
ワープエンジン1705が(例えば、キャプチャ画像1710から再投影画像1715への)ワープを実行するとき、ワープのためのアウトからインへの動きベクトル(例えば、逆動きベクトル1730)の使用は、ワープのためのインからアウトへの動きベクトル(例えば、
図15~
図16のMV)の使用に対する計算リソースの消費の削減を提供することができる。インからアウトへの動きベクトル(例えば、
図15~
図16のMV)は、再投影画像1715に基づいて編成されるのではなくキャプチャ画像1710に基づいて編成される。一方、アウトからインへの動きベクトル(例えば、逆動きベクトル1730)は、代わりに、再投影画像1715に基づいて編成される。ワープエンジン1705が再投影画像1715を生成するためにワープを実行するとき、キャプチャ画像1710に基づく画素順に従って(例えば、キャプチャ画像1710に従うラスタ順で)再投影画像1715を生成するのではなく、再投影画像1715に基づく画素順に従って(例えば、再投影画像1715に従うラスタ順で)再投影画像1715を生成することが最適である。ワープのためのアウトからインへの動きベクトル(例えば、逆動きベクトル1730)の使用は、ワープエンジン1705が、再投影画像1715に基づく画素順に従って(例えば、再投影画像1715に従うラスタ順で)再投影画像1715を生成することを可能にすることができる。例えば、逆動きベクトル1730を使用して、ワープエンジン1705は、
図5に関して説明されたように、任意の競合または欠落領域が既に解決された状態で、再投影画像1715の各画素を生成することができる。一方、ワープエンジン1705がインからアウトへの動きベクトルを使用して再投影画像1715内の画素のラスタ順で再投影画像1715を生成するために、ワープエンジン1705は、再投影画像1715のその特定の画素内で終わるべきデータを見つけるために、再投影画像1715の各特定の画素について、キャプチャ画像1710およびインからアウトへの動きベクトルの画素ごとの検索を通じて動きベクトルを介して繰り返し検索する。キャプチャ画像1710およびインからアウトへの動きベクトルを通じた繰り返し検索は、計算コストが高く、かなりの電力を使用する。場合によっては、ワープエンジン1705は、競合を解決するかまたは欠落領域を埋める必要がさらにあり得、これらの検索が誤った順序で動きベクトルを持ち出した場合、例えば遠くのオブジェクトよりも近くのオブジェクトを優先させるのではなく、近くのオブジェクトよりも遠くのオブジェクトを誤って優先させた場合に、競合を解決するかまたは欠落領域を埋める場合がある。したがって、インからアウトへの動きベクトル(例えば、
図15~
図16の動きベクトル)からアウトからインへの動きベクトル(例えば、逆動きベクトル1730)を生成するためにいくらかの計算コストがかかるとしても、ワープのためにアウトからインへの動きベクトル(例えば、逆動きベクトル1730)を使用することの最終結果は、依然として計算リソースの節約および精度の向上である。
【0127】
いくつかの例では、インからアウトへのMVを決定することは高コストであり得るので、インからアウトへのMV(既存のMV)は低解像度で、例えばキャプチャ画像の解像度の1/4で決定される。インからアウトへのMVにグリッド反転を適用することによってアウトからインへのMV(必要MV)を生成することは、計算コストが高くない。さらにアウトからインへのMV(必要MV)を使用する再投影は、計算コストが高くない。これらの演算の計算コストが高くない性質は、キャプチャ画像のフル解像度などのより高い解像度であっても、グリッド反転および/またはアウトからインへのMV(必要MV)を使用する再投影が効率的に実行されることを可能にする。したがって、ワープエンジン1705は、より低い解像度でインからアウトへのMV(既存のMV)を決定するにもかかわらず、キャプチャ画像の完全な再投影となるように再投影画像を生成することができる。これは、計算リソースおよび電力の更なる節約を可能にする。
【0128】
グリッド反転エンジン225は、反転されたMVグリッドにおける欠落データおよび/または競合を処理するためのいくつかの機構を含む。先に説明されたように、グリッド反転エンジンは、ターゲット画像(例えば、再投影画像1715)内の画素の位置を相関させるために、MVの位置を変更する。場合によっては、入力グリッド内のMVが指し示していない画素があり、したがって、反転のみを使用してこれらの位置にMVが配置されることはない。グリッド反転エンジンは、補間によるそのプロセス中に、反転されたMVグリッド内のこれらのセルを埋める。再び
図5を参照すると、逆MVグリッド520は、グリッド反転を介して生成され、星を使用してマークされた欠落セルを含む。例えば、逆MVグリッド520内のセル1は、MVグリッド505からの対応する動きベクトルを有さず、代わりにインペインティングを使用して埋められる。補間のための1つのオプションは、その隣接するセル0および2の値を使用してセル1の値を補間することである。例えば、補間のための重みは、距離によるものとすることができ、したがって、セル0では値0、セル2では値-1に基づいて、セル1の補間値は-1/2とすることができる。セル3、5、6、および7についても、同様のタイプの補間を実行することができる。
【0129】
グリッド反転エンジン225は、反転されたMVグリッドにおける競合を処理するための機構も含むことができる。場合によっては、MVグリッド505内の複数のMVは、第2の画像(例えば、第2の画像Img2 515、再投影画像1715)内の同じ画素を指すことができ、こうして反転されたMVグリッド520内のMVの競合を作成し、グリッド反転エンジンが逆MVグリッド525内の所与のセルについて競合値のうちの1つを選ぶ必要がある。このような競合の例が、逆MVグリッド520のセル8に示されている。第1の画像Img1 510のセル7の車および第1の画像Img1 510のセル8の木の両方は、MVグリッド505内のセル7および8から延在する動きベクトルごとに、第2の画像Img2 515内のセル8に対応する同じ画素内で終わる。その結果、逆MVグリッド520のセル8に入れるために、グリッド反転エンジンがどの値を選ぶべきかが不明瞭になる可能性がある。
【0130】
競合を解決するために、グリッド反転エンジン225は、いずれかの値を選択することができる。いくつかの例では、競合値の加重平均を使用することができる。グリッド反転エンジン225が(例えば、深度データ620からの)2つのオブジェクトに対応する深度情報を有する場合、グリッド反転エンジン225は、センサ205により近いオブジェクトに対応する値を選択することができる。これは、多くの場合、より近いオブジェクトがより遠くのオブジェクトのビューを覆い、妨害し、または遮蔽するからである。グリッド反転エンジン225が2つのオブジェクトに対応する深度情報を欠いている場合、グリッド反転エンジン225は、他のヒューリスティックスまたは技術に基づいて値を選択することができ、例えば、より大きい動き、またはより大きく見えるオブジェクトに対応する値を選択することができる。移動が同じ速度であっても、より近いオブジェクトは、より遠くのオブジェクトの移動よりもセンサ205の視野のより多くの量を覆うように見えるので、より大きい動きを経験しているオブジェクトは、オブジェクトのサイズにかかわらず、センサ205により近い可能性がより高い。いくつかの例では、より大きく見えるオブジェクトもまた、センサ205により近い可能性がある。
【0131】
いくつかの例では、
図5を参照すると、第1の画像Img1 510のセル7から第2の画像Img2 515のセル8に移動する車は、木よりもセンサ205に近く、その場合、グリッド反転エンジン225は、逆MVグリッド520のセル8の値を(MVグリッド505のセル7の1の対応する値の逆数となるように)-1になるように選択することができる。いくつかの例では、
図5において、木は車よりもセンサ205に近く、その場合、グリッド反転エンジン225は、逆MVグリッド520のセル8の値を(MVグリッド505のセル8の0の対応する値に基づいて)0になるように選択することができる。いくつかの例では、グリッド反転エンジン225は、木と比較して、車の相対的な深度に関する情報を欠いている場合がある。そのような場合、車はより大きい動き(その値は、木の値0と比較してMVグリッド505内で1である)を経験しているので、車は木よりもセンサ205に近い可能性が高いため、逆MVグリッド520のセル8の値は-1となるように選択される。いくつかの例では、車が画像(単数または複数)内で木よりも大きく見える場合、車は木よりもセンサ205に近い可能性が高いため、逆MVグリッド520のセル8の値は-1となるように選択される。いくつかの例では、逆MVグリッド520のセル8の値は、MVグリッド505のセル7および8の値の逆数の平均として、-1/2となるように選択される。
【0132】
異なる種類の補間を実行することができ、一例では、補間は、隣接するセルまでの距離に基づいて値を重み付けすることができる。別の例では、補間は、隣接するものの深度に基づいて値を重み付けすることができる。他の方法を適用することもできる。例えば、逆MVグリッド520のセル5、6、および7のようにより大きいギャップでは、補間は、近くのセルからの情報を遠くのセルからの情報よりも高く重み付けすることができる。例えば、逆MVグリッド520のセル6の値は、逆MVグリッド520のセル4の値(2)と逆MVグリッド520のセル8の値との間の平均とすることができる。逆MVグリッド520のセル8の値は、上述のように、セル8における競合がどのように解決されるかに依存し得る。逆MVグリッド520のセル8の値が-1であると仮定すると、逆MVグリッド520のセル6の値は」1/2とすることができる。逆MVグリッドのセル5の値は、その補間において、逆MVグリッド520のセル4の値(2)を逆MVグリッド520のセル8の値より高く重み付け520することができ、例えば逆MVグリッド520のセル4の値と逆MVグリッド520のセル6の補間値との平均である。同様に、逆MVグリッド520のセル7の値は、その補間において、逆MVグリッド520のセル4の値(2)を逆MVグリッド520のセル8の値より低く重み付けすることができ、例えば逆MVグリッド520のセル8の値と逆MVグリッド520のセル6の補間値との平均である。例えば、逆MVグリッドのセル8の値が-1であると仮定すると、逆MVグリッドのセル5の値を1.25に設定することができ、その一方で逆MVグリッドのセル7の値は-0.25に設定することができる。
【0133】
図18は、オクルージョンに対処するためのインペインティングの例を示す概念
図1800である。特定の再投影画像内のいくつかの領域は、入力画像からの適切なデータを有していない場合があり、したがって、このような再投影画像内のギャップまたはオクルージョンを表す場合がある。再投影画像1805において、オクルージョン領域は黒い領域として現れる。例えば、オクルージョン領域は、椅子の各々(特に左端の椅子)の左、工具箱の左、およびテーブルの左に見える。これらのオクルージョン領域は、センサ205に近いオブジェクトが左右に移動されるときに発生する可能性がある。再投影画像1805のオクルージョンマップ1810は、オクルージョン領域を白で示し、全ての非オクルージョン領域を黒で示す。撮像システム200は、インペインティング画像1815を生成するために、インペインティングを使用してオクルージョン領域を埋めるように再投影画像1805を修正する。いくつかの例では、ディープラーニングベースのインペインティングが使用され、これは、再投影画像1805およびオクルージョンマップ1810に示されるオクルージョンと同様に、画像の原本およびオクルージョンを有する画像の第2のコピーを含むトレーニングデータに基づいてトレーニングされていてもよい、ディープラーニングベースのインペインティングに使用されるディープラーニングモデルのトレーニングに基づいてインテリジェントにインペインティングして高品質なインペインティングを提供する。ディープラーニングベースのインペインティングの例が、インペインティング画像1815に示されている。
【0134】
いくつかの例では、インペインティング動作のために、利用可能な計算帯域幅、および/または撮像システム200の電力許容量に基づいて、補間またはインラインまたは最も近い値のインペインティングなど、より計算コストの低い形態のインペインティングを使用することができる。例えば補間および/またはインラインまたは最も近い値のインペインティングを使用する、補間ベースのインペインティングの例が、
図18の下部に3D深度ベースズームを使用して示されている。3D深度ベースズーム画像1825が
図18に示されており、スケートボードの以前の位置で、スケートボーダーの脚の間にオクルージョン領域1835が見えている。インペインティング画像1830は、このオクルージョン領域1835をインペインティングするために、補間ベースのインペインティング、例えば補間またはインラインまたは最も近い値のインペインティングを使用して示されている。
【0135】
図19は、再投影およびグリッド反転システム1905のアーキテクチャを示すブロック
図1900である。再投影およびグリッド反転システム1905は、ラスタ順にデータを読み取ることができる。いくつかの例では、再投影およびグリッド反転システム1905は、ラスタ順にMVグリッド1910を読み取り、および/またはラスタ順に深度データを(例えば、深度センサから)読み取り(例えば、第1のオプション1915)、3D行列を得る。入力内の画素ごとに、入力内の各動きベクトルおよび/または深度値について、再投影およびグリッド反転システム1905は、出力内のある位置に出力内の画素を置く。各タイル番号は、出力における画素のグループを表す。ラスタ順に進むと、矢印1930で示される画素はタイル1に進み、矢印1935で示される画素はタイル2に進む。入力グリッド内で互いに近くない画素は、出力グリッド内ではより近付くことができる。これに基づいて、再投影およびグリッド反転システム1905がより多くのデータをタイルに書き込む必要がある場合、タイルをキャッシュ内に保持することは有用であり得る。例えば、再投影およびグリッド反転システム1905がタイル1から始まり、その後タイル2に移動する場合、再投影およびグリッド反転システム1905は、後に再びタイル1を必要とする場合がある。(再投影およびグリッド反転システム1905が最も長く使われていない(LRU)キャッシングシステムに基づくことができる限り)キャッシュ内にタイルを保持することで、再投影およびグリッド反転システム1905は、タイルを再び迅速に修正し、これをDRAMから読み取らないことが可能になる。
【0136】
場合によっては、深度ベースの再投影を使用して、より近いオブジェクトは、遠くのオブジェクトよりも多く移動することができる。したがって、入力画像内の異なる領域からのオブジェクトは、再投影画像内の同じ領域に現れることができる。画素/矢印1930および画素/矢印1940は、入力(例えば、MVグリッド1910)内の異なる位置から生じるが、出力内の同じ領域、例えばタイル1に収まる、これの一例である。したがって、再投影およびグリッド反転システム1905は、タイル1を修正する(例えば、タイル1を矢印1940によって示される画素の値で上書きする)ことができるように、メモリ内にタイル1を保持することができる。メモリハードウェア内に出力バッファ全体を保持することは過剰であり得るので、再投影およびグリッド反転システム1905は、メモリハードウェア内にタイルを保持するためのキャッシング機構を含むことができる。
【0137】
再投影およびグリッド反転システム1905がラスタ順の最初に始まり、これが再投影およびグリッド反転システム1905がタイルに(例えば、矢印1930によって示される画素の値をタイル1に)書き込むことを望む第1の時間である場合、再投影およびグリッド反転システム1905は、タイル1を単にリセットし、最初にDRAMからタイルを読み取る必要なく、問題の値をタイル1に書き込む。いくつかの例では、タイル1からの値は、キャッシュからDRAMに移動することができる。再投影およびグリッド反転システム1905は、読み取り/修正/書き込み動作をあまり多く実行する必要がないようキャッシュを使用するが、再投影およびグリッド反転システム1905は、必要なときには読み取り/修正/書き込み動作の能力を有する。タイルがキャッシュ内にある限り、再投影およびグリッド反転システム1905は、これらに直ちにアクセスすることができる。いずれかの時点で、キャッシュはフルになる可能性があり、再投影およびグリッド反転システム1905は、(LRUに基づいて)他のタイルのための空間を作るために、タイルをキャッシュからDRAMに送信することができる。いずれかの他の時点で、再投影およびグリッド反転システム1905は、キャッシュからDRAMに送信されたタイルを再び必要とし、すると再投影およびグリッド反転システム1905は、これを修正するためにタイルをDRAMからキャッシュに戻すことができ、いずれかの他の時点で、タイルをDRAMに書き込むことができる。
【0138】
加えて、再投影およびグリッド反転システム1905は、DRAMからタイルを読み取ることによるレイテンシの問題を回避するために、再投影およびグリッド反転システム1905が必要なファイルを処理の前に前もって立ち上げることを可能にするプリフェッチ機構を有する。再投影およびグリッド反転システム1905は、順序付けられた方法で動作し、プリフェッチ機構は、再投影およびグリッド反転システム1905がキャッシュ内に必要とするものを常に有することを保証することができる。再投影およびグリッド反転システム1905は、再投影およびグリッド反転システム1905が順序付けられた方法でデータの全てを処理し、処理を必要とする全てのものをキャッシュ内に有することができることを確実にするために、プリフェッチと処理との間でランダムではなく決まったやり方で切り替えることができる。
【0139】
再投影およびグリッド反転システム1905は、第1のオプション1915において、深度データおよび3D行列を受信することができる。いくつかの例では、再投影およびグリッド反転システム1905は、深度データおよび3D行列からMVグリッド1910を生成することができる。再投影およびグリッド反転システム1905は、第2のオプション1920において、深度データおよび2D行列を有するMVグリッドを受信することができる。いくつかの例では、再投影およびグリッド反転システム1905は、深度データおよび2D行列を有するMVグリッドからMVグリッド1910を生成することができる。再投影およびグリッド反転システム1905が深度および3D行列を受信する場合(第1のオプション1915)、または再投影およびグリッド反転システム1905がMVグリッドおよび/または2D行列を受信する場合(第2のオプション1920)、再投影およびグリッド反転システム1905は、出力座標(outCoord)および出力データ(outData)を計算するためにその座標計算システムを使用する。いくつかの例では、出力データは、出力動きベクトル(outMV)および出力深度(outDepth)を含むことができる。再投影およびグリッド反転システム1905はまた、オクルージョン領域がどこにあるかを判定するために、信頼度(outConf)および/またはオクルージョン(outOcc)など、(outDataの一部として)追加の出力データを出力することができる。再投影およびグリッド反転システム1905からの出力は、1つまたは複数のバッファ、キャッシュ、または他のメモリへの出力データとして出力することができる。例示的な一例では、
図19の右側に示されている出力バッファ(またはキャッシュまたは他のメモリ)は、深度のための出力バッファ(またはキャッシュまたは他のメモリ)、(例えば深度および/または信頼度を有する)MVグリッドのための出力バッファ(またはキャッシュまたは他のメモリ)、およびオクルージョンのための出力バッファ(またはキャッシュまたは他のメモリ)を含む。これらの出力バッファ(またはキャッシュまたは他のメモリ)は、複数の出力画像として出力することができる。プリフェッチ機構およびキャッシング機構は、3つのバッファを一度に処理することができる。各出力バッファは各タイルに異なる量のビットを記憶することができるので、プリフェッチ機構およびキャッシング機構は、全ての段階において全ての異なるレベルのビットおよび異なるサイズのタイルの間の同期を処理することができる。
【0140】
いくつかの例では、再投影およびグリッド反転システム1905は、動きベクトル操作、座標計算、キャッシング、プリフェッチ、および出力バッファの生成において特に効率的であるように設計された専用ハードウェアを使用する。いくつかの態様では、CPUまたはGPUなどのプロセッサを使用して、特定の動作を実行することができる。
【0141】
いくつかの例では、出力信頼度(outConf)は、特に再投影のために生成されるものではなく、深度センサからの深度測定の副産物である。いくつかの例では、取得された深度は、測定の不正確さおよび/または信頼度マップによって表すことができる他の問題に悩まされる可能性がある。信頼度マップおよび/または視覚(RGB)画像に基づいて深度を改善することは、有益であり得る。再投影およびグリッド反転システム1905は、視覚(RGB)画像と一致し、信頼度が再投影画像内の正しい領域で使用できるように、深度および信頼度を再投影することができる。深度がRGB画像と一致すると、再投影およびグリッド反転システム1905は、深度を改善するために信頼度を使用することができる。
【0142】
いくつかの例では、撮像システムは、入力画像(例えば、第1の画像Img1 510、キャプチャ画像1710)からの所与の画素が再投影画像(例えば、第2の画像Img2 515、再投影画像1715)内のどこに移動すべきかを決定するために、「三角歩行」動作を使用することができる。
【0143】
図20は、三角歩行動作の例を示す概念
図2000である。いくつかの例では、入力画像からの異なる画素を、再投影画像内の異なる位置に移動させることができる。システムは、X個の入力を一度に処理することができ、Xは任意の整数値(例えば、3、4、5、6、10など)に等しい。システムは、(入力のセットごとに)Y個の出力三角形を生成することができ、Yは任意の整数値(例えば、6、7、8、9、10、15など)に等しい。入力内の画素は、画素a、画素b、画素cなどを含む。いくつかの例では、入力画像内の画素aからの画素データは、再投影画像内の位置のうちの第1の位置に移動させることができ、入力画像内の画素bからの画素データは、再投影画像内の位置のうちの第2の位置に移動させることができ、入力画像内の画素cからの画素データは、再投影画像内の位置のうちの第3の位置に移動させることができ、以下同様である。マップ(例えば、MVグリッド505または逆MVグリッド520)を通して、システムは、入力画像内の各画素が再投影画像内のどこに行くべきかを見出す。したがって、例示的な例では、入力画像の画素aは出力の画素2010で終わり、入力の画素bは出力の画素2015で終わり、入力の画素1は出力の画素2020で終わり、以下同様である。入力画素ごとに、撮像システムは、入力画素の値が出力のどこで終わるように構成されるかを計算する。出力における特定の画素間の領域(例えば、画素2010、2015、および2020の間の網掛け三角形領域)では、撮像システムは、補間を使用して領域を埋める。補間を実行するために、撮像システムは、プロセッサ(例えば、GPUまたは他のプロセッサ)に、三角形の各々を別々に調べさせ、各出力画素について個別に1つずつ補間させることができる。
【0144】
しかしながら、効率を向上させるために、撮像システムは、
図20の出力側に大きな多角形、すなわち(画素2010、2015、および2020を有する三角形を含む)三角形の全ての組み合わせから作られる多角形を形成するように、三角形をまとめることができる。撮像システムは、補間に効果的であるように特に設計された専用ハードウェアプロセッサを有するか、または他のプロセッサに補間を実行させることができる(例えば、GPUまたは他のプロセッサ)。これらの三角形の多くは、互いに近く、類似した画像データを含むので、三角形の各々を別々に調べ、各出力画素について個別に補間するために撮像システムがプロセッサ(例えば、GPU)を使用することは、非効率的であり得る。効率を改善するために、撮像システムは、三角形を多角形に統合することができ、プロセッサ(例えば、GPU)に多角形全体を一度に調べさせ、多角形全体の画素にわたって補間を実行させることができる。
【0145】
撮像システムは、主歩行エンジン2025と、N個の三角形制御エンジン2030(Nは6、8、10、または他の値などの任意の整数値に等しくすることができる)と、M個の画素補間エンジン2035(Mは6、8、10、または他の値などの任意の整数値に等しくすることができ、いくつかの実装形態ではNと等しくてもよい)とを含む。白色の破線のボックスとして示されている主歩行エンジン2025は、多角形全体を一度に調べる。N個の三角形制御エンジン2030は、そのうちの2つが破線と明るい網掛けのボックスとして示されており、各々が三角形のうちの1つを担当する。主歩行エンジン2025は、多角形全体を横断し、画像再投影のために撮像システムによって使用される出力位置および/または領域を効果的にプレスキャンし、データをキャッシュし、それによってさもなければDRAMからのデータの回収によって引き起こされる可能性のある遅延(例えば、充填、補間、または他の画像処理動作)を低減または排除するために、撮像システムにDRAMからデータ(例えば、タイル)をプリフェッチおよび/または回収させる。
【0146】
図21は、クルージョンマスキングの例を示す概念
図2100である。オクルージョン領域は、画像再投影エンジン215が利用可能な画像データを有していない再投影画像の領域である。前述したように、画像再投影エンジン215は、最初にキャプチャされた画像において特定の値を持たない領域に対して補間を実行する。オクルージョン領域であっても、例えばこれらの領域が信頼できないデータで埋められるのを回避するために(例えば、DRAMに何が起ころうと)、依然としてこの補間が実行される。画像2110は、このような信頼できないデータを使用する充填の例であり得る。再投影を実行するために、工具箱などの特定のオブジェクトは、特定の方向(例えば、水平方向)にわずかに伸張されてもよいが、この伸張は、一般に、悪影響を及ぼすほど重大ではなく、場合によっては、再投影画像における新しい視点の外観を向上させることができる。しかしながら、特定の領域では、穴またはギャップは、補間が信頼できなくなる閾値サイズを超え、これは画像再投影エンジン215によってオクルージョン領域であると判定することができる。
【0147】
いくつかの例では、画像再投影エンジン215は、コーナー深度に基づいてオクルージョン領域が存在すると判定することができる。例えば、画像再投影エンジン215は、領域のコーナーに置ける深度間の差が閾値差を越える場合に、(例えば、
図20の三角形または他の形状のように)オクルージョン領域が領域内に存在すると判定し得る。閾値差は、深度の最小値に基づいて変化し得る。
【0148】
(例えば、閾値差を超える領域のコーナーに置ける深度間の差に基づいて)オクルージョン領域が存在すると画像再投影エンジン215が判定すると、画像再投影エンジン215は、再投影画像のオクルージョン領域(単数または複数)を画像データで埋めるためにインペインティングを実行することができる。画像2110内の「信頼できない残りもの」は、オクルージョン領域内の工具箱の画像データの一部を使用する、インペインティングの1つの形態を表すことができる。場合によっては、このタイプのインペインティングは、画像2110内で異常に見える場合であっても、うまく機能し得る。いくつかの例では、オクルージョンは、ディープラーニングを使用して、例えば1つまたは複数のトレーニング済みMLモデルを使用して、実行されてもよい。
【0149】
図22は、穴埋めの例を示す概念
図2200である。穴埋めは、動きベクトルデータが存在しないギャップにおける補間を指す。フロー2220は、穴埋めがオフにされた状態で、再投影画像は多くの視覚的アーチファクトを有し、例えば、工具箱およびカメラの近くにある他のオブジェクト上で特に顕著である視覚的アーチファクトパターンに黒と白のドットがあることを示している。穴埋めがオンにされると、再投影画像内の穴は補間を使用して埋められ、画像は、そのような視覚的アーチファクトまたは視覚的アーチファクトパターンなしできれいに見える。いくつかの例では、穴埋めは、補間の代わりに、または補間に加えて、ディープラーニングベースのインペインティングなどのインペインティングを使用することができる。
【0150】
図23は、タイムワープエンジン230によって実行されるタイムワープ705の追加の例を示す概念
図2300である。タイムワープエンジン230は、ここではそれぞれフレームn+1とフレームnとの間、およびフレームnとフレームn-1との間の密なオプティカルフローを計算する。入力フレームレート(フレーム毎秒(FPS)単位)はFinに等しく、これは30 FPS、60 FPS、120 FPS、240 FPS、または他のフレームレートとすることができる。出力フレームレートはFoutに等しく、これは60 FPS、120 FPS、240 FPS、480 FPSまたは他のフレームレートとすることができる。これらの密なオプティカルフローは、高品質で計算されるが、計算コストが高く、および/または大量の電力を使用する可能性がある。タイムワープエンジン230は、
図7のタイムワープ705と同様に、他のフレーム間、例えばフレームn-1とnとの間、またはフレームnとn+1との間により小さい部分オプティカルフローを生成するために、密なオプティカルフローを分割する。例えば、タイムワープエンジン230は、フレームn+3/4、n+1/2、n+1/4、n-1/4、n-1/2、およびn-3/4についてより小さい部分オプティカルフローを生成するために、密なオプティカルフローを分割する。これらの部分オプティカルフローは、あたかも部分オプティカルフローの各々がオプティカルフロー計算を使用して直接計算されたかのように、オプティカルフローへの置換として機能することができる。これらの部分オプティカルフローは、この例のように4分の1に、または他の同様の分数に分解することができる。これらの部分オプティカルフローは、存在する場合、フレームn+3/4、n+1/2、n+1/4、n-1/4、n-1/2、およびn-3/4において、既存のフレームを改善するために使用することができる。これらの部分オプティカルフローは、フレームn+3/4、n+1/2、n+1/4、n-1/4、n-1/2、およびn-3/4において新しい補間フレームを生成するために使用することができる。いくつかの例では、タイムワープ705は、最初により低いフレームレート(例えば、30または60fps)でビデオのための密なオプティカルを生成し、計算された密なオプティカルフローをその間のフレームのためのオプティカルフローに分割するためにタイムワープ705を使用することによって、高フレームレート(例えば、90、120、240、480、または960fps)でビデオのためのオプティカルフローを生成するために使用することができる。
【0151】
いくつかの例では、タイムワープエンジン230は、オプティカルフローのための動きベクトルを取得し、動きベクトルをグローバル行列と結合し、結合の後にタイムワープ705のように、結果を部分オプティカルフローまたは動きベクトルに分割することができる。
【0152】
タイムワープ705なしの画像およびタイムワープ705を使用する画像の画像鮮明化の利点の追加の例が示されている。詳細は、矢印で示される領域、例えば中央の画像の少年の髪、耳、およびTシャツ、並びに右側の画像のマーキングに示されるように、タイムワープ705を使用して復元される。特に、ブレて見えるエッジおよび/または領域は破線を使用して表され、明瞭で鮮明に見えるエッジおよび/または領域は実線を使用して表される。
【0153】
図24は、タイムワープエンジン230のいくつかの例における、再投影エンジン24341の例示的なアーキテクチャを示すブロック
図2400である。オプティカルフローエンジン2420は、画像センサ2410およびダイナミックランダムアクセスメモリ(DRAM)2415を有するカメラ2405から、フレームnおよびフレームn-Mを受信する。オプティカルフローエンジン2420は、動き情報を生成する。いくつかの例では、動き情報は、グローバル動きおよびローカル動きを含む、2つのタイプの動き情報を含む。例えば、行列(例えば、グローバル行列)は、場合によってはグローバル動きを表すことができる。オプティカルフローエンジンは、ローカル動きおよび3D動きを示すために、動きベクトルの密なグリッドを生成することができる。別の例では、動きベクトルの密なグリッドはまた、グローバル動き、および/またはローカル動き、3D動き、およびグローバル動きの組み合わせを示すことができる。
【0154】
グリッド反転エンジン2425は、オプティカルフローエンジン2420から動き情報(例えば、動きベクトルの密なグリッドおよび場合によってはグローバル動きを表す行列)を受信する。グリッド反転エンジン2425は複数回(M回)実行され、各実行が動きベクトルを分割し、動きベクトルの異なる部分を出力する。グリッド反転エンジン2425は、M個の動きベクトルを出力する。場合によっては、動きベクトルに係数を乗じることができる。動きベクトルは、異なる解像度を提供するために、ワープエンジン2430を使用してダウンスケールすることができる。ワープエンジン2430は、密なグリッドから動きベクトルを受信し、密な動きグリッドに対して何らかのワープ、スケーリング、および/または他の操作を実行することができる。いくつかの例では、ワープエンジン2430はまた、変換行列を取得し、これに基づいて密なグリッドをワープすることもできる。別の例では、ワープエンジン2430は、変換行列を取得し、これを密なグリッドと結合することができる。グリッド反転エンジン2425および/またはワープエンジン2430によって出力された逆動きベクトルは、逆動きベクトルに基づいて再投影画像を生成するために、画像処理エンジン2440に出力される。
【0155】
図25は、時間的ブレ除去を伴うタイムワープエンジン230のいくつかの例における、時間的ブレ除去を伴う再投影エンジン2535の例示的なアーキテクチャを示すブロック
図2500である。
図25のアーキテクチャは、
図24のアーキテクチャと同様であるが、システムの時間的ブレ除去エンジン2505は、どのM個のフレームがブレているかを(例えば、動き検出および/または画像分析に基づいて)判定し、ブレたフレームをブレ除去および/または鮮明化するために、グリッド反転エンジン2425によって生成された部分動きベクトルを使用する。いくつかの例では、再投影エンジン2535の時間ディープラーニングアルゴリズムは、姿勢センサデータを分析し、各フレームのキャプチャ中にどの程度の移動(およびどの程度のブレ)があったかを見る。いくつかの例では、元の動きベクトルは、場合によっては更なる変換2520(例えば、縮小)の後に、オプティカルフローエンジン2420から画像処理エンジン2440に提供される。
【0156】
図26は、深度センササポートエンジン235の例示的なアーキテクチャを示すブロック
図2600である。飛行時間(ToF)センサは深度センサの例であるが、深度センササポートエンジン235は、いくつかの例では、本明細書に記載されるような異なるタイプの深度センサを使用することができる。例えば外れ値をフィルタリングすることおよび/またはノイズを正規化することによって、より高品質の深度値を提供するために深度センサからの深度値をクリーンアップするために、後処理を適用することができる。場合によっては、後処理は、深度とともに信頼度マップも受信してもよく、後処理はその後、信頼度マップをクリーンにすることもでき、および/または深度処理を支援するために信頼度マップを使用することができる。深度、および場合によっては信頼度が再投影エンジンに送信され、再投影エンジンは、例えば画像センサ(例えば、広角または望遠)と位置合わせするために、3D変換に基づいて深度画像および信頼度マップを再投影することができる。再投影エンジンは、再投影された深度値および信頼度値を生成してもよく、深度値および信頼度値をクリーンアップするためにもう一度深度後処理を通して実行され得る。深度後処理はまた、広角センサおよび望遠センサからの画像、および/または二次深度センサからの二次深度センサデータ(例えば、DFS深度)を受け付けてもよく、深度後処理は、これをさらに改善して元の深度から生じる不正確さを補正するように深度を調整することができる。3D変換は、画像センサと深度センサとの間の3D較正に基づくことができる。深度センサおよび画像センサが互いに対して移動する場合(例えば、焦点変更、ズーム、OIS、および/またはその他)、3D較正は、これを考慮し、3D変換を更新し得る。
図26の下部の二次深度フロー(すなわち、広角および望遠画像を有するDFS)は、例示的な例であることを理解されたい。別の例では、二次深度は、他の深度センサ、ディープラーニング深度エンジン、および/または任意の他の深度ソースから得ることができる。いくつかの例では、深度後処理は二次深度を有しない。いくつかの例では、深度後処理は、3つ以上の深度ソースを有することができる。
【0157】
図27は、深度センササポートエンジン235によって実行される深度センササポート805の追加の例を示す概念
図2700である。これらの追加の例では、主画像センサ(例えば、RGB3)および深度センサ(例えば、TOFシステム)は、回路基板上に示されている。深度マップおよび画像の両方が示されている。左側の例(投影位置合わせ2705)では、いくつかの要素が位置合わせされているが、図のテディベアまたは頭部など、カメラからの距離が異なる他のオブジェクトは、画像データと深度データとの間で位置合わせされていない。例えば、熊の深度データ(例えば、破線を使用して示される)は、熊の画像データと比較して右にある(視差シフト)。同様に、図の深度データ(例えば、破線を使用して示される)は、図の画像データと比較して右にある(視差シフト)。一方、右側の例(深度ベースの位置合わせ2710)では、視差が固定され、各オブジェクトの深度データおよび画像データが位置合わせされている。
【0158】
図28は、画像再投影エンジン215および3D安定化エンジン240を含む撮像システムの例示的なアーキテクチャを示すブロック
図2800である。撮像システムは、入力を取得し、環境内の新しい位置に視点を再投影する。3D安定化の場合、任意の移動が揺れまたは震えを全く(またはほとんど)含まないように、カメラの揺れを低減または排除するために、および/またはカメラが安定しているおよび/または安定化された状態をシミュレートするために行うことができる。例えば、撮像システムの3D安定化エンジン240は、あたかも震えおよび/または揺れをほとんどまたは全く含まない仮想経路に沿ってビデオがキャプチャされたかのように、仮想経路を作成することができる。撮像システムはまた、タイムワープ、頭部姿勢補正、センササポートなど、本明細書に記載される画像再投影の他の用途のうちの少なくともいくつかに使用することができる。撮像システムは、入力として、画像データおよび/または深度データを受信し、データ内の任意の歪みを安定化または他の方法で補正し、次いで再投影エンジンにデータを提供する。3D安定化では、撮像システムの3D安定化エンジン240は、安定した滑らかな仮想経路を示す行列を作成することができる。撮像システムは、画像の視点を変更するために3D変換を作成することができる。例えば、3D安定化では、3D変換は、画像のそれぞれの視点が仮想経路(例えば、安定した滑らかな仮想経路)に沿った原点を有するように、一連の画像のそれぞれの視点を変更することができる。3D変換、および場合によっては仮想経路は、再投影エンジンに供給することができる。再投影エンジンは、(例えば、キャプチャ視点が仮想経路に沿うように)画像を識別された視点にワープさせるために、動きベクトル(MVグリッド)を生成することができる。いくつかの例では、撮像システムは、別の動きベクトルグリッドを使用して、レンズおよび/またはローリングシャッタからのいかなる歪みも低減するために、画像に対してレンズ歪み補正(LDC)および/またはローリングシャッタ補正(RSC)を実行することができる。別の例では、動きベクトルおよび/または行列を使用して、他の歪みおよび/または変換誤差も補正することができる。
図30に示されるように、いくつかの例では、LDCおよびRSCのための3D安定化およびグリッドは、両方からの動きベクトルを結合することによって互いに結合され、一緒にワープされる。MVの新しいセットは、3D安定化およびLDCおよびRSCの両方を行うことができる。いくつかの例では、LDCおよびRSC MVグリッドは、3D安定化MVグリッドよりもまばらであり得、その場合、LDCおよびRSC MVグリッドは、結合の前にアップスケールされてもよい。いくつかの例では、3D安定化MVグリッドは、LDCおよびRSC MVグリッドよりもまばらであり得、その場合、3D安定化MVグリッドは、結合の前にアップスケールされてもよい。結合されたMVグリッドは、ワープを実行するワープエンジンに送信することができる。(再投影を介した)3D安定化、LDC、およびRSCが適用された、結果的な画像が示されている。
【0159】
オクルージョン領域は、3D安定化のための再投影の使用により、結果的な画像内に依然として残る可能性がある。深度再投影、オクルージョンマップ、画像の低解像度コピー(例えば、全視野(FoV)を有する)、および/または画像からのQ個の高解像度パッチ(例えば、64×64のサイズの500個のパッチ、または任意の適切なサイズを有する他の数のパッチ)を、インペインティングを実行するために、ディープラーニングエンジン(NSP)に送信することができる。例えば、3D安定化エンジン240は、1つの領域からパッチを取ることができるが、他の領域を読み取る必要はない。3D安定化エンジン240は、オクルージョンマップにより、高解像度パッチでどの領域に焦点を合わせるべきかを知っている。いくつかの例では、パッチおよびオクルージョンマップは小さく(例えば、オクルージョンマップはバイナリであるか、または3ビット、4ビット、6ビットなど、少数のビットを含むことができる)、パッチを、インペインティングを実行するためのディープラーニングエンジン(NSP)への低コストな入力にする。深度再投影は、インペインティングに正しいタイプの材料が使用されることを保証するのに役立つことができる。例えば、ディープラーニングエンジン(NSP)は、背景領域のインペインティングを行うために工具箱のように近くのオブジェクトを使用せず、背景領域のインペインティングのために使用する唯一のものは、同様の深度の背景領域からの画像データである。このスマートなインペインティングは効率的であり、より少ない電力を使用する。
【0160】
いくつかの例では、インペインティングは、時間フィルタリングを使用することができ、例えば、特定の領域の画像コンテンツを取り込むためにビデオ内の前の画像を使用する。例えば、前の画像が現在の画像フレーム内のオクルージョン領域に描写された場面の領域に明瞭な画像コンテンツを有する場合、前の画像からの画像データは、揺れを緩和させるために、インペインティングおよび/または3D安定化に使用することができる。パッチは、ディープラーニングエンジン(NSP)によって出力されたインペインティングパッチを、結果的な画像の関連部分についてメモリ内に(例えば、直接DRAM内に)移動できるように、圧縮タイルと位置合わせすることができる。
【0161】
図29は、タイムワープエンジン230処理を伴わない画像と比較した、タイムワープエンジン230を用いて実行されるタイムワープ705の追加の例を示す概念
図2900である。タイムワープエンジン230を用いる例は、特に画像内のエッジおよびコーナー並びにその周囲において、タイムワープエンジン230を用いない画像よりも明瞭で鮮明に見える。例えば、ブレて見えるエッジは、
図29の破線を使用して再投影されるが、共有されて鮮明に見えるエッジは、
図29の実線を使用して再投影される。
【0162】
図30は、3D安定化エンジン240によって実行される3D安定化905の追加の例3005を示す概念
図3000である。追加の例3005は、元の(安定化されていない)形態および安定化された形態の両方で示される、ビデオの4つのビデオフレームを含む。再投影は、前述のように、揺れおよび/または視差移動を除去するために使用される。
【0163】
図31は、3Dズームエンジン245によって実行される3Dズーム1005の追加の例の概念
図3100である。デジタルズーム3105は、図の左側の破線のボックスおよび破線を使用して示されるように、クロップおよびアップスケールする。スケートボーダーの深度画像は、3D深度ベースズームと並んで示されている。3D深度ベースズームは、電話を男性に近付ける説明
図3110に示されるように、カメラをスケートボーダーに近付けることをシミュレートするために、深度画像に基づく再投影を使用する。
【0164】
図32は、再投影SATエンジン250によって実行される再投影1105の追加の例を示す概念
図3200である。再投影1105は、1つのセンサの視点から異なるセンサの視点への再投影を使用して、オフセット分だけ視点をシフトさせる。
【0165】
図33は、頭部姿勢補正エンジン255によって実行される頭部姿勢補正1205の追加の例の概念
図3300である。再投影の基礎である女性の頭部の深度画像3515が示されている。再投影画像1215のオクルージョンマップ3320も示されている。カメラに対する人物の相対位置の描写は、入力画像1210の下に示され、カメラが、わずかに上向きに角度を付けて、ユーザの顔のわずかに下から写真を撮影していることを示している。カメラに対する人物のシミュレートされた相対位置の描写は、再投影画像1215の下に示され、シミュレートされたカメラ位置が、入力画像1210がキャプチャされた位置からオフセット距離3305だけ離れて、および入力画像1210がキャプチャされた角度からオフセット角度3310だけ離れて、ユーザの顔の高度または高さと一致する高度または高さから写真を撮影していることを示している。再投影画像1215のキャプチャ角度は、人物の顔、身体、および/または重力に対して垂直である。
【0166】
図34は、グリッド反転の追加の例を示す概念
図3400である。元のMVグリッドおよび逆MVグリッドが、太陽および雲を有するターゲット画像について示されている。欠けているコンテンツが(補間および/またはインペインティングを介して)埋められることになる例は、星を使用して示されており、例えば、太陽の一部が入力画像では雲によって遮られたが、再投影画像では遮られていない。競合値の例は、丸を使用して示されており、例えば、雲と太陽の両方のデータがあり、雲が太陽の前にあるので、最終的に雲のデータが勝つ。
【0167】
図35は、ディープラーニングベースのインペインティングの使用の例を示す概念
図3500である。画像のセットが示されており、画像のセットの各々は、セットの画像のうちの1つにオクルージョン領域3505を含む。オクルージョン領域は、ニューラルネットワーク3900などのトレーニングされたディープラーニングインペインティングエンジンを使用して埋められる前は、空白として示されている。
【0168】
図36は、ディープラーニングを使用しないインペインティングの使用の例を示す概念
図3600である。画像のセットは、縦列に配置して示されている。第1の列は、オクルージョン領域3605を含むグリッド反転エンジン(RGE)によって出力された画像を含み、これらは空白として示されている。第2の列は、グリッド反転エンジン(RGE)によって出力された画像を含み、オクルージョン領域3605を埋めるためにインペインティングが行われている。例えば、
図36のインペインティングは、補間および/またはインラインまたは最も近い値のインペインティングを使用することができる。インペインティングのためのパッチは、図示されるように類似性および/または優先度に基づいて選択することができる。第3の列は、オクルージョン領域3605のないグリッド反転エンジン(RGE)によって出力された画像を含む。第3の列の画像は、オクルージョン領域3605が画像の第1の列にあるエッジのうちのいくつかの周りにブレまたは視覚的な「汚れ」を含み、これはモーションブラーと類似している能に見える可能性があり、グリッド反転エンジン(RGE)を使用して変換されている最初にキャプチャされた画像からのオブジェクトの他の位置および/または描写によって引き起こされる可能性がある。
【0169】
図37は、エッジ上でのエッジフィルタおよび深度フィルタの使用の例を示す概念
図3700である。エッジフィルタは、いくつかの例では、深度データおよび/または画像データにおけるブロック状のエッジを平滑化するために使用することができ、画像再投影の視覚的アーチファクトを低減することができる。フィルタは、3×3のサイズを有するように示されているが、場合により、フィルタはもっと大きくすることができる(例えば、4×4、6×6など)。エッジフィルタは、深度マップのエッジを検出することができる。エッジ上の深度フィルタは、補間された深度値を低減することができ、これらはいずれのオブジェクトにも属さない。
【0170】
図38は、再投影の例を示す概念
図3800である。センサ205は、3D場面の画像(単数または複数)および深度データ(cam1 depth)をキャプチャするカメラcam1を含む。カメラ間3D並進は、透視カメラcam2を使用するために3D空間において画像(単数または複数)に描写された3D場面を再投影するために使用される。順方向マッピング(例えば、動きベクトルグリッド)は、破線を使用して示されている。逆方向マッピング(例えば、逆動きベクトルグリッド)は、cam2からcam1に戻る実線を使用して示されている。
【0171】
図39は、メディア処理動作に使用することができるニューラルネットワーク(NN)3900の例を示すブロック図である。ニューラルネットワーク3900は、畳み込みニューラルネットワーク(convolutional neural network、CNN)、オートエンコーダ、ディープビリーフネット(deep belief net、DBN)、回帰型ニューラルネットワーク(Recurrent Neural Network、RNN)、敵対的生成ネットワーク(Generative Adversarial Network、GAN)、および/または他のタイプのニューラルネットワークなど、任意のタイプのディープネットワークを含むことができる。ニューラルネットワーク3900は、画像再投影エンジン215、動きベクトルエンジン220、グリッド反転エンジン225、タイムワープエンジン230、深度センササポートエンジン235、3D安定化エンジン240、3Dズームエンジン245、再投影SATエンジン250、頭部姿勢補正エンジン255、XRレイトステージ再投影エンジン260、特殊効果エンジン265、またはこれらの組み合わせなどのアプリケーションエンジン210のいずれかのニューラルネットワークなど、撮像システム200の1つまたは複数のトレーニングされたニューラルネットワークのうちの1つの例であり得る。
【0172】
ニューラルネットワーク3900の入力層3910は入力データを含む。入力層3910の入力データは、メディアデータ285、センサ(単数または複数)205からのセンサデータ、仮想コンテンツ生成器207からの仮想コンテンツ、またはこれらの組み合わせなど、1つまたは複数の入力画像フレームの画素を表すデータを含むことができる。入力層3910の入力データは、深度センサ(単数または複数)からの深度データを含むことができる。入力層3910の入力データは、動きベクトルおよび/またはオプティカルフローを含むことができる。入力層3910の入力データは、行列を含むことができる。入力層3910の入力データは、オクルージョンマップを含むことができる。
【0173】
画像は、生の画素データ(例えば、ベイヤーフィルタに基づいて画素ごとに単一の色を含む)を含む画像センサからの画像データ、または処理された画素値(例えば、RGB画像のRGB画素)を含み得る。ニューラルネットワーク3900は、複数の隠れ層3912A、3912Bから3912Nを含む。隠れ層3912A、3912Bから3912Nは、「N」個の隠れ層を含み、ここで、「N」は、1以上の整数である。隠れ層の個数は、所与の適用例にとって必要とされるのと同数の層を含むようにされ得る。ニューラルネットワーク3900は、隠れ層3912A、3912Bから3912Nによって実行される処理から生じる出力を提供する出力層3914をさらに含む。
【0174】
いくつかの例では、出力層3914は、修正済みメディアデータ290、本明細書で説明される任意の再投影画像、本明細書で説明される任意の再投影された深度データ、本明細書で説明される任意の動きベクトルまたはオプティカルフロー、本明細書で説明される任意のインペインティング画像データ、またはこれらの組み合わせなど、出力画像またはそれらの一部を提供することができる。
【0175】
ニューラルネットワーク3900は、相互接続されたフィルタの多層ニューラルネットワークである。各フィルタは、入力データを表す特徴を学習するようにトレーニングされ得る。フィルタに関連する情報は異なる層の間で共有され、情報が処理されるにつれて各層が情報を保持する。場合によっては、ニューラルネットワーク3900はフィードフォワードネットワークを含むことができ、その場合、ネットワークの出力がそれ自体にフィードバックされるフィードバック接続はない。場合によっては、ネットワーク3900再帰ニューラルネットワークを含むことができ、これは、入力を読み取る間に、ノードにわたって情報が搬送されることを可能にするループを有することができる。
【0176】
場合によっては、様々な層間のノードとノードの相互接続を通じて、情報を層間で交換することができる。場合によっては、ネットワークは畳み込みニューラルネットワークを含むことができ、これは、ある層の中のあらゆるノードを次の層の中のあらゆる他のノードにつながないことがある。情報が層間で交換されるネットワークでは、入力層3910のノードは、第1の隠れ層3912A中のノードのセットをアクティブ化することができる。例えば、図示のように、入力層3910の入力ノードの各々が第1の隠れ層3912Aのノードの各々に接続され得る。隠れ層のノードは、各入力ノードの情報を、この情報にアクティブ化関数(例えば、フィルタ)を適用することによって、変換することができる。変換から導出された情報は、次いで、次の隠れ層3912Bのノードに渡され、それらのノードをアクティブ化することができ、それらのノードは、それら自体の指定された関数を実行することができる。例示的な機能には、畳み込み機能、ダウンサンプリング、アップスケーリング、データ変換、および/または任意の他の適切な機能がある。隠れ層3912Bの出力は、次いで、次の隠れ層のノードをアクティブ化することができ、以下同様である。最後の隠れ層3912Nの出力は、出力層3914の1つまたは複数のノードをアクティブ化することができ、出力層3914は、処理された出力画像を提供する。場合によっては、ニューラルネットワーク3900の中のノード(例えば、ノード3916)は、複数の出力線を有するものとして示されるが、ノードは単一の出力を有し、ノードから出力されるものとして示される全ての線が同じ出力値を表す。
【0177】
場合によっては、各ノードまたはノード間の相互接続は、ニューラルネットワーク3900のトレーニングから導出されるパラメータのセットである、重みを有することができる。例えば、ノード間の相互接続部は、相互接続されたノードについて学習された情報を表すことができる。相互接続は、(例えば、トレーニングデータセットに基づいて)調整され得る調整可能な数値重みを有することができ、ニューラルネットワーク3900が、入力に対して適応的であること、およびますます多くのデータが処理されるにつれて学習できることを可能にする。
【0178】
ニューラルネットワーク3900は、出力層3914を通して出力を提供するために、異なる隠れ層3912A、3912Bから3912Nを使用して入力層3910中のデータからの特徴を処理するように事前トレーニングされる。
【0179】
図40は、メディア処理のためのプロセスを示すフロー図である。プロセス4000は、メディア処理システムよって実施され得る。いくつかの例では、メディア処理システムは、例えば、画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、画像プロセッサ150、ISP154、ホストプロセッサ152、撮像システム200、HMD310、モバイルハンドセット410、再投影およびグリッド反転システム2490、
図25のシステム、
図26のシステム、
図27のシステム、
図28のシステム、ニューラルネットワーク3900、コンピューティングシステム4100、プロセッサ4110、またはこれらの組み合わせを含むことができる。
【0180】
動作4005において、メディア処理システムは、環境に対応する深度情報を含む深度データを受信するように構成されており、受信することができる。いくつかの例では、深度情報は、第1の視点からの環境の表現の深度測定値を含み得る。いくつかの例では、深度情報は、環境に対応する点群を含む。いくつかの例では、深度データは、1つまたは複数の光検出および測距(LIDAR)センサ、無線検出および測距(RADAR)センサ、音響検出および測距(SODAR)センサ、音響航法および測距(SONAR)センサ、飛行時間(ToF)センサ、構造化光センサ、またはこれらの組み合わせなどの1つまたは複数の深度センサを使用してキャプチャされ得る。いくつかの例では、深度データは、例えばステレオカメラ構成を使用する立体深度感知に基づいて、1つまたは複数のカメラおよび/または画像センサを使用してキャプチャされてもよい。いくつかの例では、深度データは、画像キャプチャおよび処理システム100、センサ205、カメラ330A~330B、カメラ430A~430D、画像センサ810、深度センサ815、望遠センサ1110、広角センサ1115、センサ1125、画像センサ2610、
図38のcam1、
図38のcam2、本明細書に記載される任意の他のセンサ、またはこれらの組み合わせを使用してキャプチャされ得る。深度データの例は、メディアデータ285、深度データ620、深度データ1020、深度データ1160、深度データ1220、
図15の深度データ、深度マップ1610、第1のオプション1915に関連付けられた深度データ、深度入力2402、
図26の深度、
図27の深度データ、
図28の深度データ、深度データ3315、深度画像3410、
図37の深度マップ、
図38のCam1 depth、本明細書に記載される任意の他の深度データ、またはこれらの組み合わせを含む。
【0181】
動作4010において、メディア処理システムは、画像センサによってキャプチャされた第1の画像データを受信するように構成されており、受信することができ、第1の画像データは環境の描写を含む。いくつかの例では、第1の画像データは、画像キャプチャおよび処理システム100、センサ205、カメラ330A~330B、カメラ430A~430D、画像センサ810、深度センサ815、望遠センサ1110、広角センサ1115、センサ1125、画像センサ2610、
図38のcam1、
図38のcam2、本明細書に記載される任意の他のセンサ、またはこれらの組み合わせを使用してキャプチャされ得る。第1の画像データの例は、ディアデータ285、第1の画像Img1 510、カメラ画像610、画像710、
図9の「オリジナル」画像、
図10の元の非ズーム画像(ズーム前)、望遠画像1130、入力画像1210、入力画像1310、入力画像1410、キャプチャ画像1510、キャプチャ画像1710、フロー2310フロー2320の入力画像画像1、
図25のタイムワープ705のない入力画像、
図24~
図25のフレームnおよびn-M、
図25のm個のブレたフレーム、
図26の広角および望遠画像、
図27の入力画像、
図30の「オリジナル」画像、
図31の非ズーム入力画像、
図34の入力画像、
図35の入力画像、
図36の入力画像、
図38の元の画素、入力層3910に提供される画像(単数または複数)、本明細書に記載される他の画像データ、またはこれらの組み合わせを含む。
【0182】
動作4015において、メディア処理システムは、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成するように構成されており、生成することができる。第1の複数の動きベクトルの例は、MVグリッド505内の動きベクトル、
図15の動きベクトル(例えば、MV
in、MV
x、MV
y)、MV1620、
図23の密なMV、オプティカルフローエンジン2420に関連付けられた動きベクトル、
図28のMVグリッド
図34の元のMVおよびMVグリッド、
図38の順方向マッピング、本明細書に記載される他の動きベクトル、またはこれらの組み合わせを含む。
【0183】
動作4020において、メディア処理システムは、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成するように構成されており、生成することができる。第2の複数の動きベクトルの例は、逆MVグリッド520内の動きベクトル、逆MV1630、逆MV1730、グリッド反転エンジン2425に関連付けられた逆動きベクトル、
図28のMVグリッド、
図24の逆MVおよびMVグリッド、
図38の逆方向マッピング、本明細書に記載される他の逆動きベクトル、またはこれらの組み合わせを含む。
【0184】
動作4025において、メディア処理システムは、第2の複数の動きベクトルに従って第1の画像データを少なくとも部分的に修正することによって第2の画像データを生成するように構成されており、生成することができ、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む。第2の画像データの例は、修正済みメディアデータ290、第2の画像Img2 515、再投影画像615、画像715、
図9の「安定」画像、
図10の3Dズーム画像、修正された望遠画像1140、再投影画像1215、入力画像1315、再投影画像1415、再投影画像1515、再投影画像1715、再投影画像1805、インペインティング画像1815、再投影画像2110、再投影画像2115、フロー2210の再投影画像、フロー2220の再投影画像、
図23のタイムワープ705を用いる再投影画像、画像処理エンジン2440を使用して出力される画像、
図27の深度ベースの位置合わせ2710画像、
図29のタイムワープ画像、
図30の「安定」画像、
図31の深度ベース3Dズーム画像、
図34の出力画像、
図35の出力画像、
図36の出力画像、
図38の再投影された画素、出力層3914を使用して出力される画像(単数または複数)、本明細書に記載される他の画像データ、またはこれらの組み合わせを含む。
【0185】
いくつかの例では、第2の画像データは、第1の時間と第3の時間との間の第2の時間における環境を描写するように構成される補間画像を含む。このような例では、第1の画像データは、第1の時間または第3の時間のうちの少なくとも1つにおける環境を描写する少なくとも1つの画像を含む。このような画像補間の例は、
図7および/または
図23のようにタイムワープ705を使用して実行することができる。いくつかの例では、撮像システムは、深度データを使用せずに補間画像を生成することができる。
【0186】
いくつかの例では、第1の画像データは、視差移動を示すビデオデータの複数のフレームを含み、第2の画像データは、視差移動を低減するビデオデータの複数のフレームの安定化された変形を含む。例えば、3D安定化905は、
図9および/または
図30のように、視差移動、回転、またはこれらの組み合わせを安定化、低減、および/または排除することができる。
【0187】
いくつかの例では、第1の画像データは、第1の角度から画像センサを見ている人物を含み、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含む。この例は、
図12および/または
図33のように、頭部姿勢補正1205を含む。
【0188】
いくつかの例では、視点の変化は、角度に従い軸を中心とした視点の回転を含む。いくつかの例では、視点の変化は、方向および距離に従った視点の並進を含む。いくつかの例では、視点の変化は変換を含む。いくつかの例では、視点の変化は、第1の画像データにおける環境の描写の元の視点と環境におけるオブジェクトの位置との間の軸に沿った移動を含み、オブジェクトの少なくとも一部は、第1の画像データ内に描写される。いくつかの例では、回転、並進、変換、および/または移動は、例えば
図7~
図14のいずれかにおいて、本明細書に記載される再投影および/またはワープのタイプのいずれかを実行するために必要とされるものに基づいて識別することができる。いくつかの例では、回転、並進、変換、および/または移動は、ユーザインターフェースを使用して識別することができる。いくつかの例では、視点の変化は、視点の視差移動または軸を中心とした視点の回転のうちの少なくとも1つを含み、ユーザインターフェースを介して、視点の視差移動の距離の指示、または視点の回転の角度もしくは軸の指示のうちの1つを受信することをさらに含む。
【0189】
動作4030において、メディア処理システムは、(例えば、出力デバイス(単数または複数)270を使用して)第2の画像データを出力するように構成されており、出力することができる。例えば、メディア処理システムは、第2の画像データを表示し、更なる処理のために第2の画像データを出力し、第2の画像データを記憶し、これらの任意の組み合わせを行い、および/または他の方法で第2の画像データを出力してもよい。
【0190】
いくつかの例では、第2の画像データを出力することは、少なくとも1つのディスプレイを使用して第2の画像データを表示させることを含む。いくつかの例では、第2の画像データを出力することは、少なくとも通信インターフェースを使用して少なくとも受信側デバイスに第2の画像データを送信させることを含む。
【0191】
いくつかの例では、メディア処理システムは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別し、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成されており、これらを行うことができる。いくつかの例では、メディア処理システムは、第1の複数の動きベクトルのそれぞれのエンドポイントにおける1つまたは複数のギャップに基づいて、第2の画像データ内に1つまたは複数のギャップを引き起こす第2の複数の動きベクトル内の1つまたは複数のギャップを識別し、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成されており、これらを行うことができる。ギャップの例は、
図5の星によって示される逆MVグリッド520(および/または第2の画像Img2 515)内のギャップを含む。
【0192】
いくつかの例では、メディア処理システムは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成されており、これらを行うことができる。インペインティングは、補間、機械学習、ニューラルネットワーク、またはこれらの組み合わせを使用することができる。インペインティングの例は、
図18、
図21、
図22、
図28、
図33、
図34、
図35、
図36、および/または
図37に示されている。
【0193】
いくつかの例では、メディア処理システムは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成されており、これらを行うことができる。インペインティングは、補間、機械学習、ニューラルネットワーク、またはこれらの組み合わせを使用することができる。インペインティングの例は、
図18、
図21、
図22、
図28、
図33、
図34、
図35、
図36、および/または
図37に示されている。
【0194】
いくつかの例では、メディア処理システムは、第2の複数の動きベクトル内の第1の画像データからの1つまたは複数の競合値に基づいて第2の画像データ内の1つまたは複数の競合を識別し、第2の複数の動きベクトルに関連付けられた移動データに基づいて第1の画像データから1つまたは複数の競合値のうちの1つを選択するように構成されており、これらを行うことができる。1つまたは複数の競合の例は、逆MVグリッド520のセル8における競合を含む。
【0195】
いくつかの例では、第1の画像データにおける環境の描写は、第1の視点からの環境を描写し、視点の変化は、第1の視点と、第2の画像データにおける環境の第2の描写に対応する異なる視点との間の変化である。いくつかの例では、第1の複数の動きベクトルは、第1の視点から異なる視点を指し、第2の複数の動きベクトルは、異なる視点から第1の視点を指す。
【0196】
いくつかの例では、本明細書に記載されるプロセス(例えば、プロセス4000および/または本明細書に記載される他のプロセス)は、コンピューティングデバイスまたは装置によって実行されてもよい。いくつかの例では、本明細書に記載されるプロセスは、画像キャプチャおよび処理システム100、画像キャプチャデバイス105A、画像処理デバイス105B、画像プロセッサ150、ISP154、ホストプロセッサ152、撮像システム200、HMD310、モバイルハンドセット410、再投影およびグリッド反転システム2490、
図23のシステム、
図24のシステム、
図25のシステム、
図26のシステム、
図28のシステム、
図29のシステム、ニューラルネットワーク3900、コンピューティングシステム4100、プロセッサ4110、またはこれらの組み合わせによって実行することができる。
【0197】
コンピューティングデバイスは、本明細書に記載されるプロセスを実行するためのリソース能力を有する、モバイルデバイス(例えば、携帯電話)、デスクトップコンピューティングデバイス、タブレットコンピューティングデバイス、ウェアラブルデバイス(例えば、VRヘッドセット、ARヘッドセット、AR眼鏡、ネットワーク接続されたウォッチもしくはスマートウォッチ、または他のウェアラブルデバイス)、サーバコンピュータ、自律ビークルもしくは自律ビークルのコンピューティングデバイス、ロボットデバイス、テレビ、および/または任意の他のコンピューティングデバイスなどの任意の好適なデバイスを含むことができる。場合によっては、コンピューティングデバイスまたは装置は、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、1つまたは複数のカメラ、1つまたは複数のセンサ、および/または本明細書で説明するプロセスのステップを実行するように構成される他の構成要素(単数または複数)などの、様々な構成要素を含み得る。いくつかの例では、コンピューティングデバイスは、ディスプレイ、データを通信および/または受信するように構成されるネットワークインターフェース、それらの任意の組み合わせ、および/または他の構成要素(単数または複数)を含んでよい。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータもしくは他のタイプのデータを通信および/または受信するように構成され得る。
【0198】
コンピューティングデバイスの構成要素は、回路に実装され得る。例えば、構成要素は、1つまたは複数のプログラマブル電子回路(例えば、マイクロプロセッサ、グラフィックス処理ユニット(GPUs)、デジタル信号プロセッサ(DSPs)、中央処理ユニット(CPUs)、および/または他の好適な電子回路)を含み得る、電子回路もしくは他の電子ハードウェアを含むことができる、および/もしくはそれらを使用して実装されることが可能であり、並びに/または本明細書で説明する様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、もしくはそれらの任意の組み合わせを含むことができる、および/もしくはそれらを使用して実装されることが可能である。
【0199】
本明細書で説明するプロセスは、論理フロー図、ブロック図、または概念図として示されており、その動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせで実施され得る動作のシーケンスを表す。コンピュータ命令のコンテキストでは、動作は、1つまたは複数のプロセッサによって実行されたとき、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体上に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、任意の数の説明される動作は、プロセスを実装するために任意の順序で、および/または並列に組み合わせることができる。
【0200】
加えて、本明細書において説明されるプロセスは、実行可能命令を用いて構成される1つまたは複数のコンピュータシステムの制御下で実行されてもよく、1つまたは複数のプロセッサ上で、ハードウェアによって、またはそれらの組み合わせで、まとめて実行するコード(例えば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装されてもよい。上述のように、コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータ可読記憶媒体または機械可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体または機械可読記憶媒体は、非一時的であってもよい。
【0201】
図41は、本技術の特定の体要素実施するためのシステムの例を示す図である。特に、
図41は、例えば、システムの構成要素が接続4105を使用して互いに通信している、内部コンピューティングシステム、リモートコンピューティングシステム、カメラ、またはこれらの任意の構成要素を構成する、任意のコンピューティングデバイスであり得るコンピューティングシステム4100の一例を示す。接続4105は、バスを使用する物理接続、またはチップセットアーキテクチャなどにおけるプロセッサ4110への直接接続とすることができる。接続4105はまた、仮想接続、ネットワーク接続、または論理接続とすることもできる。
【0202】
いくつかの実施形態では、コンピューティングシステム4100は、本開示において説明する機能が、1つのデータセンタ、複数のデータセンタ、ピアネットワークなどに分散され得る分散型システムである。いくつかの実施形態では、説明するシステム構成要素の1つまたは複数は、構成要素の説明の対象である機能のうちのいくつかまたは全てを各々実施するような多くの構成要素を表す。いくつかの実施形態では、構成要素は物理デバイスまたは仮想デバイスとすることができる。
【0203】
例示的なシステム4100は、少なくとも1つの処理装置(CPUまたはプロセッサ)4110と、読み取り専用メモリ(ROM)4120およびランダムアクセスメモリ(RAM)4125などのシステムメモリ4115を含む様々なシステム構成要素をプロセッサ4110に結合する接続4105とを含む。コンピューティングシステム4100は、プロセッサ4110と直接接続されるか、プロセッサ4110に極めて近接しているか、またはプロセッサ4110の一部として統合される、高速メモリのキャッシュ4112を含むことができる。
【0204】
プロセッサ4110は、任意の汎用プロセッサと、記憶デバイス4130内に記憶され、プロセッサ4110、並びにソフトウェア命令が実際のプロセッサ設計に組み込まれた専用プロセッサを制御するように構成される、サービス4132、4134、および4136などのハードウェアサービスまたはソフトウェアサービスとを含むことができる。プロセッサ4110は基本的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称であってもよく、または非対称であってもよい。
【0205】
ユーザ対話を可能にするために、コンピューティングシステム4100は、発話のためのマイクロフォン、ジェスチャ入力またはグラフィカル入力のためのタッチ感知画面、キーボード、マウス、モーション入力、発話などの、任意の数の入力機構を表すことができる、入力デバイス4145を含む。コンピューティングシステム4100は、いくつかの出力機構の1つまたは複数であり得る出力デバイス4135も含むことができる。場合によっては、マルチモーダルシステムは、コンピューティングシステム4100と通信するためにユーザが複数のタイプの入力/出力を提供することを可能にし得る。コンピューティングシステム4100は、一般に、ユーザ入力およびシステム出力を支配し管理することができる通信インターフェース4140を含むことができる。通信インターフェースは、オーディオジャック/プラグ、マイクロフォンジャック/プラグ、ユニバーサルシリアルバス(universal serial bus、USB)ポート/プラグ、Apple(登録商標)Lightning(登録商標)ポート/プラグ、Ethernetポート/プラグ、光ファイバーポート/プラグ、プロプライエタリ有線ポート/プラグ、BLUETOOTH(登録商標)ワイヤレス信号転送、BLUETOOTH(登録商標)低エネルギー(low energy、BLE)ワイヤレス信号転送、IBEACON(登録商標)ワイヤレス信号転送、無線周波識別(radio-frequency identification、RFID)ワイヤレス信号転送、近距離通信(near-field communications、NFC)ワイヤレス信号転送、専用短距離通信(dedicated short range communication、DSRC)ワイヤレス信号転送、802.11 Wi-Fiワイヤレス信号転送、ワイヤレスローカルエリアネットワーク(WLAN)信号転送、可視光通信(Visible Light Communication、VLC)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(Worldwide Interoperability for Microwave Access、WiMAX)、赤外線(infrared、IR)通信ワイヤレス信号転送、公衆交換電話網(Public Switched Telephone Network、PSTN)信号転送、統合サービスデジタルネットワーク(Integrated Services Digital Network、ISDN)信号転送、3G/4G/5G/LTEセルラーデータネットワークワイヤレス信号転送、アドホックネットワーク信号転送、電波信号転送、マイクロ波信号転送、赤外線信号転送、可視光信号転送、紫外光信号転送、電磁スペクトルに沿ったワイヤレス信号転送、またはそれらの何らかの組み合わせを利用するものを含む、有線および/またはワイヤレスのトランシーバを使用する有線通信またはワイヤレス通信の受信および/または送信を実施し得るか、または容易にし得る。通信インターフェース4140はまた、1つまたは複数の全地球的航法衛星システム(Global Navigation Satellite System、GNSS)システムに関連する1つまたは複数の衛星からの1つまたは複数の信号の受信に基づいて、コンピューティングシステム4100の位置を決定するために使用される、1つまたは複数のGNSS受信機またはトランシーバを含んでもよい。GNSSシステムは、限定はしないが、米国の全地球測位システム(GPS)、ロシアの全地球航法衛星システム(Global Navigation Satellite System、GLONASS)、中国の北斗航法衛星システム(BeiDou Navigation Satellite system、BDS)、および欧州のGalileo GNSSを含む。任意の特定のハードウェア配列で動作することに対して制約がなく、したがって、ここでの基本的な特徴は、それらが開発されるにつれて、改善されたハードウェア配列またはファームウェア配列のために容易に置き換えられてよい。
【0206】
記憶デバイス4130は、不揮発性および/または非一時的および/またはコンピュータ可読メモリデバイスとすることができ、磁気カセット、フラッシュメモリカード、固体メモリデバイス、デジタル多用途ディスク、カートリッジ、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、磁気ストリップ/ストライプ、任意の他の磁気記憶媒体、フラッシュメモリ、メモリスタメモリ、任意の他の固体メモリ、コンパクトディスク読み取り専用メモリ(compact disc read only memory、CD-ROM)光ディスク、再書き込み可能コンパクトディスク(compact disc、CD)光ディスク、デジタルビデオディスク(digital video disk、DVD)光ディスク、ブルーレイディスク(blu-ray disc、BDD)光ディスク、ホログラフィック光ディスク、別の光媒体、セキュアデジタル(secure digital、SD)カード、マイクロセキュアデジタル(micro secure digital、microSD)カード、メモリスティック(登録商標)カード、スマートカードチップ、EMVチップ、加入者識別モジュール(subscriber identity module、SIM)カード、ミニ/マイクロ/ナノ/ピコSIMカード、別の集積回路(integrated circuit、IC)チップ/カード、ランダムアクセスメモリ(RAM)、スタティックRAM(static RAM、SRAM)、ダイナミックRAM(dynamic RAM、DRAM)、読み取り専用メモリ(ROM)、プログラマブル読み取り専用メモリ(programmable read-only memory、PROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(electrically erasable programmable read-only memory、EEPROM)、フラッシュEPROM(flashEPROM、FLASHEPROM)、キャッシュメモリ(L1/L2/L3/L4/L5/L#)、抵抗性ランダムアクセスメモリ(resistive random-access memory、RRAM/ReRAM)、位相変化メモリ(phase change memory、PCM)、スピン転送トルクRAM(spin transfer torque RAM、STT-RAM)、別のメモリチップもしくはカートリッジ、および/またはそれらの組み合わせなどの、コンピュータによってアクセス可能であるデータを記憶できるハードディスクまたは他のタイプのコンピュータ可読媒体とすることができる。
【0207】
記憶デバイス4130は、このようなソフトウェアを定義するコードがプロセッサ4110によって実行されると、システムに機能を実施させる、ソフトウェアサービス、サーバ、サービスなどを含むことができる。いくつかの実施形態では、特定の機能を実施するハードウェアサービスは、機能を実行するために、プロセッサ4110、接続4105、出力デバイス4135などの必要なハードウェア構成要素に関してコンピュータ可読媒体内に記憶された、ソフトウェア構成要素を含むことができる。
【0208】
本明細書で使用する「コンピュータ可読媒体」という用語は、限定はしないが、携帯型または非携帯型の記憶デバイス、光記憶デバイス、並びに命令(単数または複数)および/またはデータを記憶、格納、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶され、かつワイヤレスでもしくは有線接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含んでもよい。非一時的媒体の例は、磁気ディスクもしくはテープ、コンパクトディスク(compact disk、CD)もしくはデジタル多用途ディスク(digital versatile disk、DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含み得るがこれらに限定されない。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組み合わせを表し得る、その上に記憶されているコードおよび/または機械実行可能命令を有し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を受け渡すことおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む、任意の適切な手段を使用して渡され、転送され、または伝送されてもよい。
【0209】
いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含み得る。しかしながら、非一時的コンピュータ可読記憶媒体に言及するとき、エネルギー、キャリア信号、電磁波、および信号自体などの媒体は明確に除外される。
【0210】
本明細書で提供する実施形態および例の完全な理解を与えるために、上記の説明において具体的な詳細が提供されている。しかしながら、実施形態がこれらの具体的な詳細なしに実践され得ることが当業者によって理解されよう。説明を分かりやすくするために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアの中で具現される方法におけるステップもしくはルーチン、またはハードウェアとソフトウェアとの組み合わせを備える機能ブロックを含む、個々の機能ブロックを含むものとして提示されることがある。図の中に示されおよび/または本明細書で説明するもの以外の、追加の構成要素が使用されてよい。例えば、不必要な詳細で実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他の構成要素がブロックダイアグラムの形態で構成要素として示されることがある。他の事例では、実施形態を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示すことがある。
【0211】
個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上記で説明されてもよい。フローチャートは、動作を逐次プロセスとして説明することがあるが、動作の多くは並列にまたは同時に実行することができる。加えて、工程の順番は並べ替えられてもよい。プロセスは、その動作が完了するときに終了するが、図に含まれていない追加のステップを有することがある。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに対応することができる。
【0212】
上記で説明した例によるプロセスおよび方法は、コンピュータ可読媒体に記憶されているか、あるいはそこから入手可能なコンピュータ実行可能命令を使用して実装され得る。そのような命令は、例えば、汎用コンピュータ、専用コンピュータ、もしくは処理デバイスにいくつかの機能もしくは機能の群を実施させるか、または場合によっては、いくつかの機能もしくは機能の群を実施するように汎用コンピュータ、専用コンピュータ、もしくは処理デバイスを構成する、命令およびデータを含み得る。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能とすることができる。コンピュータ実行可能命令は、例えば、アセンブリ言語、ファームウェア、ソースコードなどの、バイナリ、中間フォーマット命令であってもよい。命令、使用される情報、および/または説明する例による方法の間に作成される情報を記憶するために使用されることがあるコンピュータ可読媒体の例としては、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続された記憶デバイスなどが挙げられる。
【0213】
これらの開示に従ってプロセスおよび方法を実施するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組み合わせを含むことができ、様々なフォームファクタのうちのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(例えば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体に記憶され得る。プロセッサ(単数または複数)は必要なタスクを実行し得る。フォームファクタの典型的な例は、ラップトップ、スマートフォン、携帯電話、タブレットデバイスまたは他の小スペース型パーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明する機能性はまた、周辺装置またはアドインカードの中で具現され得る。このような機能性はまた、更なる例として、単一デバイス上の異なるチップ間で、またはそれにおいて実行される異なるプロセス間で、回路基板上において実装され得る。
【0214】
命令、このような命令を運ぶための媒体、それらを実行するためのコンピューティングリソース、およびこのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明した機能を提供するための例示的な手段である。
【0215】
上記の説明では、本出願の態様はそれらの特定の実施形態を参照しながら説明されるが、本出願がそれらに限定されないことを当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、本発明の概念が別のやり方で様々に具現および採用され得ること、並びに従来技術によって限定される場合を除き、添付の特許請求の範囲がこのような変形を含むものと解釈されることが意図されることを理解されたい。上記で説明した本出願の様々な特徴および態様は、個別にまたは共同で使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明するもの以外の任意の数の環境および適用例において利用することができる。よって、本明細書および図面は限定的ではなく例示的と見なされるべきである。例示の目的のために、方法は特定の順序で説明された。代替実施形態では、方法は説明された順序とは異なる順序で実行され得ることを理解されたい。
【0216】
当業者は、本明細書で使用するよりも小さい(「<」)およびよりも大きい(「>」)という記号または用語は、本説明の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられ得ることを理解するであろう。
【0217】
構成要素が特定の動作を実行する「ように構成される」ものとして説明される場合、このような構成は、例えば、動作を実行するように電子回路もしくは他のハードウェアを設計することによって、動作を実行するようにプログラマブル電子回路(例えば、マイクロプロセッサ、または他の適切な電子回路)をプログラムすることによって、またはそれらの任意の組み合わせで達成され得る。
【0218】
「~に結合される」という句は、直接もしくは間接的のいずれかで別の構成要素に物理的に接続される任意の構成要素、および/または直接もしくは間接的のいずれかで別の構成要素と通信している(例えば、ワイヤード接続もしくはワイヤレス接続および/または他の好適な通信インターフェースを介して他の構成要素に接続される)任意の構成要素を指す。
【0219】
集合のうちの「少なくとも1つ」および/または集合のうちの「1つまたは複数」と記載する請求項の文言または他の文言は、集合の1つのメンバーまたは集合の(任意の組み合わせの)複数のメンバーが請求項を満たすことを示す。例えば、「AおよびBのうちの少なくとも1つ」と記載する請求項の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」と記載する請求項の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。集合のうちの「少なくとも1つ」および/または集合のうちの「1つまたは複数」という文言は、集合の中で列挙されるアイテムにその集合を限定するものではない。例えば、「AおよびBのうちの少なくとも1つ」を記述する請求項の文言は、A、B、またはAおよびBを意味することができ、加えて、AおよびBの集合に列挙されていない項目をさらに含むことができる。
【0220】
本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組み合わせとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、それらの機能性の観点から上記で概略的に説明した。このような機能性がハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、特定の適用例およびシステム全体に課される設計上の制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本出願の範囲から逸脱する原因として解釈されるべきではない。
【0221】
本明細書で説明する技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実装され得る。このような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのうちのいずれかにおいて実装され得る。モジュールまたは構成要素として説明する特徴はいずれも、集積化論理デバイスとして一体に、または個別であるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装される場合、技法は、実行されると、上で説明された方法のうちの1つまたは複数を実施する命令を含むプログラムコードを備える、コンピュータ可読データ記憶媒体によって少なくとも部分的に実現されてよい。コンピュータ可読データ記憶媒体は、梱包材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期ダイナミックランダムアクセスメモリ(synchronous dynamic random access memory、SDRAM)などのランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、不揮発性ランダムアクセスメモリ(non-volatile random access memory、NVRAM)、電気的消去可能プログラマブル読み取り専用メモリ(electrically erasable programmable read-only memory、EEPROM)、FLASHメモリ、磁気または光データ記憶媒体などの、メモリまたはデータ記憶媒体を備え得る。技法は加えて、または代わりに、伝搬される信号または波などの、コンピュータによってアクセスされ、読み取られ、および/または実行され得る命令またはデータ構造の形態でのプログラムコードを搬送または通信するコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【0222】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(digital signal processors、DSPs)、汎用マイクロプロセッサ、特定用途向け集積回路(application specific integrated circuits、ASICs)、フィールドプログラマブル論理アレイ(field programmable logic arrays、FPGAs)、または他の等価な集積化もしくは個別の論理回路構成などの1つまたは複数のプロセッサを含み得る、プロセッサによって実行され得る。このようなプロセッサは、本開示に記載の技法のいずれかを実施するように構成され得る。汎用プロセッサは、マイクロプロセッサであってもよい代わりとして、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンでもあってもよい。プロセッサはまた、例えば、DSPとマイクロプロセッサとの組み合わせなどのコンピューティングデバイスの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、または任意の他のこのような構成として実装されてよい。よって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組み合わせ、または本明細書で説明する技法の実装に適した任意の他の構造もしくは装置のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能性は、符号化および復号のために構成される専用のソフトウェアモジュールもしくはハードウェアモジュール内に設けられてよく、または複合ビデオエンコーダデコーダ(combined video encoder-decoder、CODEC)内に組み込まれてよい。
【0223】
本開示の例示的な態様は以下を含む。
【0224】
態様1A.画像処理のための装置であって、装置は、少なくとも1つのメモリと、少なくとも1つのメモリに結合された少なくとも1つのプロセッサとを備え、少なくとも1つのプロセッサは、eするように構成される。
【0225】
態様2A.第2の画像データは、第1の時間と第3の時間との間の第2の時間に環境を描写するように構成される補間画像を含み、第1の画像データは、第1の時間または第3の時間のうちの少なくとも1つにおける環境を描写する少なくとも1つの画像を含む、態様1Aに記載の装置。
【0226】
態様3A.第1の画像データは、視差移動を含むビデオデータの複数のフレームを含み、第2の画像データは、視差移動を低減するビデオデータの複数のフレームの安定化された変形を含む、態様1Aから2Aのいずれか一項に記載の装置。
【0227】
態様4A.第1の画像データは、第1の角度から画像センサを見ている人物を含み、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含む、態様1Aから3Aのいずれか一項に記載の装置。
【0228】
態様5A.視点の変化は、角度に従い軸を中心とした視点の回転を含む、態様1Aから4Aのいずれか一項に記載の装置。
【0229】
態様6A.視点の変化は、方向および距離に従った視点の並進を含む、態様1Aから5Aのいずれか一項に記載の装置。
【0230】
態様7A.視点の変化は変換を含む、態様1Aから6Aのいずれか一項に記載の装置。
【0231】
態様8A.視点の変化は、第1の画像データにおける環境の描写の元の視点と環境におけるオブジェクトの位置との間の軸に沿った移動を含み、オブジェクトの少なくとも一部は、第1の画像データ内に描写される、態様1Aから7Aのいずれか一項に記載の装置。
【0232】
態様9A.少なくとも1つのプロセッサは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別し、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Aから8Aのいずれか一項に記載の装置。
【0233】
態様10A.少なくとも1つのプロセッサは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Aから9Aのいずれか一項に記載の装置。
【0234】
態様11A.少なくとも1つのプロセッサは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Aから10Aのいずれか一項に記載の装置。
【0235】
態様12A.少なくとも1つのプロセッサは、第2の複数の動きベクトル内の第1の画像データからの1つまたは複数の競合値に基づいて第2の画像データ内の1つまたは複数の競合を識別し、第2の複数の動きベクトルに関連付けられた移動データに基づいて第1の画像データから1つまたは複数の競合値のうちの1つを選択するように構成される、態様1Aから11Aのいずれか一項に記載の装置。
【0236】
態様13A.深度情報は、第1の視点からの環境の三次元表現を含む、態様1Aから12Aのいずれか一項に記載の装置。
【0237】
態様14A.深度データは、少なくとも1つの深度センサから受信される、態様1Aから13Aのいずれか一項に記載の装置。
【0238】
態様15A.ディスプレイをさらに備え、第2の画像データを出力するために、少なくとも1つのプロセッサは、少なくともディスプレイを使用して第2の画像データを表示するように構成される、態様1Aから14Aのいずれか一項に記載の装置。
【0239】
態様16A.通信インターフェースをさらに備え、第2の画像データを出力するために、少なくとも1つのプロセッサは、少なくとも通信インターフェースを使用して少なくとも受信側デバイスに少なくとも第2の画像データを送信するように構成される、態様1Aから15Aのいずれか一項に記載の装置。
【0240】
態様17A.装置は、ヘッドマウントディスプレイ(HMD)、モバイルハンドセット、またはワイヤレス通信デバイスのうちの少なくとも1つを含む、態様1Aから16Aのいずれか一項に記載の装置。
【0241】
態様18A.第1の画像データにおける環境の描写は、第1の視点からの環境を描写し、視点の変化は、第1の視点と、第2の画像データにおける環境の第2の描写に対応する異なる視点との間の変化である、態様1Aから17Aのいずれか一項に記載の装置。
【0242】
態様19A.視点の変化は、視点の視差移動または軸を中心とした視点の回転のうちの少なくとも1つを含み、少なくとも1つのプロセッサは、ユーザインターフェースを介して、視点の視差移動の距離の指示、または視点の回転の角度もしくは軸の指示のうちの1つを受信するように構成される、態様1Aから18Aのいずれか一項に記載の装置。
【0243】
態様20A.少なくとも1つのプロセッサは、第1の複数の動きベクトルのそれぞれのエンドポイントにおける1つまたは複数のギャップに基づいて、第2の画像データ内に1つまたは複数のギャップを引き起こす第2の複数の動きベクトルの1つまたは複数のギャップを識別し、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Aから19のいずれか一項に記載の装置。
【0244】
態様21A.画像処理のための方法であって、方法は、環境に対応する深度情報を含む深度データを受信することと、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含む、第1の画像データを受信することと、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成することと、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成することと、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む、第2の画像データを生成することと、第2の画像データを出力することと、を含む方法。
【0245】
態様22A.第2の画像データは、第1の時間と第3の時間との間の第2の時間に環境を描写するように構成される補間画像を含み、第1の画像データは、第1の時間または第3の時間のうちの少なくとも1つにおける環境を描写する少なくとも1つの画像を含む、態様21Aに記載の方法。
【0246】
態様23A.第1の画像データは、視差移動を含むビデオデータの複数のフレームを含み、第2の画像データは、視差移動を低減するビデオデータの複数のフレームの安定化された変形を含む、態様21Aから22Aのいずれか一項に記載の方法。
【0247】
態様24A.第1の画像データは、第1の角度から画像センサを見ている人物を含み、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含む、態様21Aから23Aのいずれか一項に記載の方法。
【0248】
態様25A.視点の変化は、角度に従い軸を中心とした視点の回転を含む、態様21Aから24Aのいずれか一項に記載の方法。
【0249】
態様26A.視点の変化は、方向および距離に従った視点の並進を含む、態様21Aから25Aのいずれか一項に記載の方法。
【0250】
態様27A.視点の変化は変換を含む、態様21Aから26Aのいずれか一項に記載の方法。
【0251】
態様28A.視点の変化は、第1の画像データにおける環境の描写の元の視点と環境におけるオブジェクトの位置との間の軸に沿った移動を含み、オブジェクトの少なくとも一部は、第1の画像データ内に描写される、態様21Aから27Aのいずれか一項に記載の方法。
【0252】
態様29A.第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別することと、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様21Aから28Aのいずれか一項に記載の方法。
【0253】
態様30A.第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別することと、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様21Aから29Aのいずれか一項に記載の方法。
【0254】
態様31A.第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別することと、第2の画像データを出力する前に1つまたは複数のトレーニング済み機械学習モデルを使用するインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様21Aから30Aのいずれか一項に記載の方法。
【0255】
態様32A.第2の複数の動きベクトル内の第1の画像データからの1つまたは複数の競合値に基づいて第2の画像データ内の1つまたは複数の競合を識別することと、第2の複数の動きベクトルに関連付けられた移動データに基づいて第1の画像データから1つまたは複数の競合値のうちの1つを選択することと、をさらに含む、態様21Aから31Aのいずれか一項に記載の方法。
【0256】
態様33A.深度情報は、第1の視点からの環境の三次元表現を含む、態様21Aから32Aのいずれか一項に記載の方法。
【0257】
態様34A.深度データは、少なくとも1つの深度センサから受信される、態様21Aから33Aのいずれか一項に記載の方法。
【0258】
態様35A.第2の画像データを出力することは、少なくとも1つのディスプレイを使用して第2の画像データを表示させることを含む、態様21Aから34Aのいずれか一項に記載の方法。
【0259】
態様36A.第2の画像データを出力することは、少なくとも通信インターフェースを使用して少なくとも受信側デバイスに第2の画像データを送信させることを含む、態様21Aから35Aのいずれか一項に記載の方法。
【0260】
態様37A.方法は、ヘッドマウントディスプレイ(HMD)、モバイルハンドセット、またはワイヤレス通信デバイスのうちの少なくとも1つを含む装置を使用して実行される、態様21Aから36Aのいずれか一項に記載の方法。
【0261】
態様38A.第1の画像データにおける環境の描写は、第1の視点からの環境を描写し、視点の変化は、第1の視点と、第2の画像データにおける環境の第2の描写に対応する異なる視点との間の変化である、態様21Aから37Aのいずれか一項に記載の方法。
【0262】
態様39A.視点の変化は、視点の視差移動または軸を中心とした視点の回転のうちの少なくとも1つを含み、ユーザインターフェースを介して、視点の視差移動の距離の指示、または視点の回転の角度もしくは軸の指示のうちの1つを受信することをさらに含む、態様21Aから38Aのいずれか一項に記載の方法。
【0263】
態様40A.第1の複数の動きベクトルのそれぞれのエンドポイントにおける1つまたは複数のギャップに基づいて、第2の画像データ内に1つまたは複数のギャップを引き起こす第2の複数の動きベクトル内の1つまたは複数のギャップを識別することと、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様21Aから39Aのいずれか一項に記載の方法。
【0264】
態様41A.1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、環境に対応する深度情報を含む深度データを受信させ、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含み、第1の画像データを受信させ、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成させ、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成させ、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データを生成させ、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含み、第2の画像データを出力させる命令を記憶した、非一時的コンピュータ可読媒体。
【0265】
態様42A.態様2Aから20Aのいずれか一項、および/または態様22Aから40Aのいずれか一項に記載の動作をさらに備える、態様41Aに記載の非一時的コンピュータ可読媒体。
【0266】
態様43A.画像処理のための装置であって、装置は、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは環境の描写を含む、第1の画像データを受信する手段と、少なくとも深度データに基づいて、第1の画像データにおける環境の描写の視点の変化に対応する第1の複数の動きベクトルを生成する手段と、第1の複数の動きベクトルに基づくグリッド反転を使用して、視点の変化について第1の画像データにおける環境の描写のそれぞれの画素が移動したそれぞれの距離を示す第2の複数の動きベクトルを生成する手段と、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第1の画像データとは異なる視点からの環境の第2の描写を含む、第2の画像データを生成する手段と、第2の画像データを出力する手段と、を備える装置。
【0267】
態様44A.態様2Aから20Aのいずれか一項、および/または態様22Aから40Aのいずれか一項に記載の動作をさらに備える、態様43Aに記載の装置。
【0268】
態様1B.画像処理のための装置であって、装置は、少なくとも1つのメモリと、少なくとも1つのメモリに結合された1つまたは複数のプロセッサと、を備え、1つまたは複数のプロセッサは、深度センサによってキャプチャされた深度データを受信し、深度データは第1の視点からの環境の表現の三次元表現を含み、少なくとも深度データに基づいて、第1の視点から第2の視点への変化に対応する第1の複数の動きベクトルを判定し、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは第3の視点からの環境を描写する、第1の画像データを受信し、第1の複数の動きベクトルに基づくグリッド反転を使用して、第3の視点から第4の視点への変化に対応する第2の複数の動きベクトルを判定し、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データを生成し、第2の画像データは第4の視点からの環境を描写し、第2の画像データを出力する、ように構成される装置。
【0269】
態様2B.第2の画像データは、第1の時間と第3の時間との間の第2の時間に環境を描写するように構成される補間画像を含み、第1の画像データは、第1の時間における環境を描写する第1の画像と、第3の時間における環境を描写する第2の画像とを含む、態様1Bに記載の装置。
【0270】
態様3B.第1の画像データは、視差移動を含むビデオデータを含み、第2の画像データは、視差移動のないビデオデータの安定化された変形を含む、態様1Bから2Bのいずれか一項に記載の装置。
【0271】
態様4B.第1の画像データは、第1の角度から画像センサを見ている人物を含み描写し、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含み描写する、態様1Bから3Bのいずれか一項に記載の装置。
【0272】
態様5B.第4の視点は第1の視点である、態様1Bから4Bのいずれか一項に記載の装置。
【0273】
態様6B.第4の視点は第2の視点である、態様1Bから5Bのいずれか一項に記載の装置。
【0274】
態様7B.第1の視点から第2の視点への変化は、角度に従った視点の回転を含み、第3の視点から第4の視点への変化は、角度に従った視点の回転を含む、態様1Bから6Bのいずれか一項に記載の装置。
【0275】
態様8B.第1の視点から第2の視点への変化は、ある方向および距離に従った視点の並進を含み、第3の視点から第4の視点への変化は、その方向および距離に従った視点の並進を含む、態様1Bから7Bのいずれか一項に記載の装置。
【0276】
態様9B.第1の視点から第2の視点への変化は変換を含み、第3の視点から第4の視点への変化は変換を含む、態様1Bから8Bのいずれか一項に記載の装置。
【0277】
態様10B.1つまたは複数のプロセッサは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別し、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Bから9Bのいずれか一項に記載の装置。
【0278】
態様11B.1つまたは複数のプロセッサは、第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別し、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正するように構成される、態様1Bから10Bのいずれか一項に記載の装置。
【0279】
態様12B.画像処理のための方法であって、方法は、深度センサによってキャプチャされた深度データであって、深度データは、第1の視点方の環境の三次元表現を含む、深度データを受信することと、少なくとも深度データに基づいて、第1の視点から第2の視点への変化に対応する第1の複数の動きベクトルを判定することと、画像センサによってキャプチャされた第1の画像データであって、第1の画像データは、第3の視点からの環境を描写する、第1の画像データを受信することと、第1の複数の動きベクトルに基づくグリッド反転を使用して、第3の視点から第4の視点への変化に対応する第2の複数の動きベクトルを判定することと、第2の複数の動きベクトルに対応する第1の画像データを少なくとも部分的に修正することによって第2の画像データであって、第2の画像データは、第4の視点からの環境を描写する、第2の画像データを生成することと、第2の画像データを出力することと、を含む方法。
【0280】
態様13B.第2の画像データは、第1の時間と第3の時間との間の第2の時間に環境を描写するように構成される補間画像を含み、第1の画像データは、第1の時間における環境を描写する第1の画像と、第3の時間における環境を描写する第2の画像とを含む、態様12Bに記載の方法。
【0281】
態様14B.第1の画像データは、視差移動を含むビデオデータを含み、第2の画像データは、視差移動のないビデオデータの安定化された変形を含む、態様12Bから13Bのいずれか一項に記載の方法。
【0282】
態様15B.第1の画像データは、第1の角度から画像センサを見ている人物を含み描写し、第2の画像データは、第1の角度とは異なる第2の角度から画像センサを見ている人物を含み描写する、態様12Bから14Bのいずれか一項に記載の方法。
【0283】
態様16B.第4の視点は第1の視点である、態様12Bから15BBのいずれか一項に記載の方法。
【0284】
態様17B.第4の視点は第2の視点である、態様12Bから16Bのいずれか一項に記載の方法。
【0285】
態様18B.第1の視点から第2の視点への変化は、角度に従った視点の回転を含み、第3の視点から第4の視点への変化は、角度に従った視点の回転を含む、態様12Bから17Bのいずれか一項に記載の方法。
【0286】
態様19B.第1の視点から第2の視点への変化は、ある方向および距離に従った視点の並進を含み、第3の視点から第4の視点への変化は、その方向および距離に従った視点の並進を含む、態様12Bから18Bのいずれか一項に記載の方法。
【0287】
態様20B.第1の視点から第2の視点への変化は変換を含み、第3の視点から第4の視点への変化は変換を含む、態様12Bから19Bのいずれか一項に記載の方法。
【0288】
態様21B.第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のギャップを識別することと、第2の画像データを出力する前に補間を使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様12Bから20Bのいずれか一項に記載の方法。
【0289】
態様22B.第2の複数の動きベクトル内の1つまたは複数のギャップに基づいて第2の画像データ内の1つまたは複数のオクルージョン領域を識別することと、第2の画像データを出力する前にインペインティングを使用して第2の画像データ内の1つまたは複数のギャップを少なくとも部分的に埋めることによって第2の画像データを修正することと、をさらに含む、態様12Bから21Bのいずれか一項に記載の方法。
【0290】
態様23B.1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、態様1Bから22Bのいずれか一項に記載の動作を実行させる命令を記憶した、非一時的コンピュータ可読媒体。
【0291】
態様24B.画像処理のための装置であって、態様1Bから22Bのいずれか一項に記載の動作を実行するための1つまたは複数の手段を備える装置。
【国際調査報告】