(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】モバイルカメラを用いたパノラマ生成
(51)【国際特許分類】
G06T 3/4038 20240101AFI20241007BHJP
【FI】
G06T3/4038
(21)【出願番号】P 2022567146
(86)(22)【出願日】2020-06-02
(86)【国際出願番号】 US2020035692
(87)【国際公開番号】W WO2021247006
(87)【国際公開日】2021-12-09
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】チェン,リン
(72)【発明者】
【氏名】ホン,ウェイ・アレックス
【審査官】▲徳▼田 賢二
(56)【参考文献】
【文献】特表2014-519739(JP,A)
【文献】Olli Silv´en; et al.,New Video Applications on Mobile Communication Devices,PROCEEDINGS OF SPIE,米国,SPIE,2008年,vol.6821,https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=df6cfb12242d9018a449ad8d35afa8bf9564063d
(58)【調査した分野】(Int.Cl.,DB名)
G06T 3/4038
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
コンピューティングデバイスが、複数の画像フレームを取得することと、
前記コンピューティングデバイスが、前記複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することと、
前記コンピューティングデバイスが、前記複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することとを備え、特定された前記1つ以上の関心領域の特定された各関心領域は、選択された前記ベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれ、前記方法はさらに、
前記コンピューティングデバイスが、選択された前記ベースフレームのセットをつなぎ合わせて、合成画像を作成することを備える、方法。
【請求項2】
前記1つ以上の関心領域の各々は、顔を含む領域に対応する、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記複数の画像フレームの各画像フレームに関連付けられた前記それぞれの品質尺度は、前記画像フレームのモーションブラー、前記画像フレームの焦点、または前記画像フレームの露出のうちの少なくとも1つに基づくメトリックを含む、請求項1
または2に記載のコンピュータ実装方法。
【請求項4】
前記それぞれの品質尺度は、特定された前記1つ以上の関心領域内に位置する画素により大きな重みを与えるように、計算的にバイアスされる、請求項1
から3のいずれか1項に記載のコンピュータ実装方法。
【請求項5】
前記ベースフレームのセットを選択することは、
前記複数の画像フレームから、画像フレームの複数のサブセットを決定することを含み、前記サブセットの各々は、同じ1つ以上の関心領域を含む画像フレームを含み、前記選択することはさらに、
前記サブセットの各々から、前記サブセット内の各画像フレームに関連付けられた前記それぞれの品質尺度に基づいて、ベースフレームを選択することを含む、請求項1
から4のいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記サブセットの各々から前記ベースフレームを選択することは、前記サブセットの前記画像フレームの中から、品質尺度が最も高い画像フレームを選択することを含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記1つ以上の関心領域を特定することは、前記1つ以上の関心領域の各々について固有の識別子を決定することを含み、前記サブセットの各々は、同じ固有の識別子を含む1つ以上の画像フレームを備える、請求項5
または6に記載のコンピュータ実装方法。
【請求項8】
前記複数の画像フレームの各画像フレームは、それぞれの回転角度でカメラデバイスによってキャプチャされており、画像フレームのサブセットを決定することは、
回転角度に基づいて、前記複数の画像フレームを順序付けることと、
前記複数の画像フレームから開始画像フレームを指定することと、
前記開始画像フレームから開始して、反復されるべき次の画像フレームが前記開始画像フレームと異なる少なくとも1つの固有の識別子を有する画像フレームとなるまで、前記順序付けに従って前記複数の画像フレームを反復することとを含み、前記画像フレームのサブセットは、反復された前記画像フレームを含む、請求項7に記載のコンピュータ実装方法。
【請求項9】
前記回転角度は、前記カメラデバイスの水平角に基づく尺度を含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記開始画像フレームを指定することは、前記順序付けから1番目の画像フレームを指定することを含む、請求項8
または9に記載のコンピュータ実装方法。
【請求項11】
前記画像フレームのサブセットは、画像フレームの第1のサブセットであり、画像フレームの第2のサブセットを決定することは、
前記複数の画像フレームから、第2の開始画像フレームを指定することと、
前記第2の開始画像フレームから開始して、反復されるべき次の画像フレームが前記第2の開始画像フレームと異なる少なくとも1つの固有の識別子を有する画像フレームとなるまで、前記順序付けに従って前記複数の画像フレームを反復することとを含み、
前記画像フレームの第2のサブセットは、前記第2の開始画像フレームから開始して反復された前記画像フレームを含む、請求項8
から10のいずれか1項に記載のコンピュータ実装方法。
【請求項12】
前記第2の開始画像フレームを指定することは、前記開始画像フレームと異なる少なくとも1つの固有の顔識別子を有する前記画像フレームを指定することを含む、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記ベースフレームのセットをつなぎ合わせて、前記合成画像を作成することは、前記複数の画像フレームからの各画像フレームが少なくとも1回反復された後に行われる、請求項8
から12のいずれか1項に記載のコンピュータ実装方法。
【請求項14】
前記ベースフレームのセットをつなぎ合わせて、前記合成画像を作成することは、特定された前記1つ以上の関心領域からの画素を含むシームに計算バイアスを追加することを含むシーム発見プロセスを含む、請求項1
から13のいずれか1項に記載のコンピュータ実装方法。
【請求項15】
前記計算バイアスは、ペナルティ項を、特定された1つ以上の関心領域からの画素を含む任意のシームに追加することを含む、請求項14に記載のコンピュータ実装方法。
【請求項16】
オプティカルフローシーム修復ステップをさらに備え、前記オプティカルフローシーム修復ステップは、
選択された前記ベースフレームのセットのオーバーラップする領域を決定することと、
前記オーバーラップする領域の各々について、それぞれのオプティカルフローフィールドを計算することと、
計算された前記オプティカルフローフィールドを適用して、前記オーバーラップする領域を整列させることとを含む、請求項1
から15のいずれか1項に記載のコンピュータ実装方法。
【請求項17】
前記複数の画像フレームは、カメラデバイスによって1つの連続ストリームでキャプチャされる、請求項1
から16のいずれか1項に記載のコンピュータ実装方法。
【請求項18】
前記複数の画像フレームは、カメラデバイスの前面カメラを使用してキャプチャされる、請求項1
から17のいずれか1項に記載のコンピュータ実装方法。
【請求項19】
コンピューティングデバイスであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、前記コンピューティングデバイスに動作を実行させるコンピュータ読取可能命令を少なくとも記憶した非一時的データストレージとを備え、前記動作は、
複数の画像フレームを取得することと、
前記複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することと、
前記複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することとを含み、特定された前記1つ以上の関心領域の特定された各関心領域は、選択された前記ベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれ、前記動作はさらに、
選択された前記ベースフレームのセットをつなぎ合わせて、合成画像を作成することを含む、コンピューティングデバイス。
【請求項20】
請求項1から18のいずれか1項に記載の方法をコンピューティングデバイスに実行させる、プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
画像処理において、「画像ステッチング」とは、複数の個々の画像フレームを合成して合成画像、たとえばパノラマ画像にする処理である。多くの手法が存在するが、ステッチングアルゴリズムのほとんどは、少なくとも複数のオーバーラップする領域を含む個々の画像フレームに依存する。そのようなステッチングアルゴリズムは、概して、オーバーラップする領域内の特有の特徴を特定し、次に、特徴のマッチングを行って、個々の画像フレーム間の対応を確立する。その後、ステッチングアルゴリズムは、概して、オーバーラップする領域において対応する画像フレームをブレンドして、最終的な合成画像を作成する。
【発明の概要】
【0002】
概要
実施形態例は、画像ステッチングを実行するコンピューティングデバイスを含む。コンピューティングデバイスは、複数の画像フレームから1つ以上のベースフレームを選択するように動作可能なベースフレーム選択モジュールを含み得る。コンピューティングデバイスはまた、選択された1つ以上のベースフレームをつなぎ合わせるように動作可能なステッチングモジュールを含み得る。これらの2つのモジュールを使用して、コンピューティングデバイスは、パノラマ画像などの合成画像を作成し、次に、これらの合成画像をユーザに表示することができる。
【0003】
第1の態様では、コンピュータ実装方法が提供される。方法は、コンピューティングデバイスが、複数の画像フレームを取得することを備える。方法はさらに、コンピューティングデバイスが、複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することを備える。方法はさらに、コンピューティングデバイスが、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することを備え、特定された1つ以上の関心領域の特定された各関心領域は、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれている。方法はさらに、コンピューティングデバイスが、選択されたベースフレームのセットをつなぎ合わせて、合成画像を作成することを備える。
【0004】
第2の態様では、コンピューティングデバイスが提供される。コンピューティングデバイスは、1つ以上のプロセッサを含み得る。コンピューティングデバイスはさらに、1つ以上のプロセッサによって実行されると、コンピューティングデバイスに動作を実行させるコンピュータ読取可能命令を少なくとも記憶する非一時的データストレージを備え得る。動作は、複数の画像フレームを取得することを含み得る。動作はさらに、複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することを含み得る。動作はさらに、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することを含み得、特定された1つ以上の関心領域の特定された各関心領域は、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれている。動作はさらに、選択されたベースフレームのセットをつなぎ合わせて、合成画像を作成することを含み得る。
【0005】
第3の態様では、製品が提供される。製品は、コンピューティングデバイスの1つ以上のプロセッサによって実行されると、コンピューティングデバイスに動作を実行させるコンピュータ読取可能命令を少なくとも記憶する非一時的データストレージを含み得る。動作は、複数の画像フレームを取得することを含み得る。動作はさらに、複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することを含み得る。動作はさらに、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することを含み得、特定された1つ以上の関心領域の特定された各関心領域は、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれている。動作はさらに、選択されたベースフレームのセットをつなぎ合わせて、合成画像を作成することを含み得る。
【0006】
第4の態様では、システムが提供される。本システムは、複数の画像フレームを取得する手段を備え得る。システムはさらに、複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定する手段を備え得る。システムはさらに、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択する手段を備え得、特定された1つ以上の関心領域の特定された各関心領域は、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれている。システムはさらに、選択されたベースフレームのセットをつなぎ合わせて、合成画像を作成する手段を備え得る。
【0007】
他の態様、実施形態、および実施態様は、適宜添付の図面を参照して以下の詳細な説明を読むことによって、当業者に明らかになるであろう。
【図面の簡単な説明】
【0008】
【
図1】実施形態例に係るコンピューティングデバイスを示す図である。
【
図2】実施形態例に係る、ベースフレーム選択モジュールおよびステッチングモジュールの動作の概要を示す図である。
【
図3】実施形態例に係る、ベースフレーム選択モジュールの動作を示す図である。
【
図4】実施形態例に係る、画像フレームサブセットの例を示す図である。
【
図5】実施形態例に係る、ステッチングモジュールの動作を示す図である。
【
図6】実施形態例に係る、画像フレーム投影の例を示す図である。
【
図7】実施形態例に係るシームの例を示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
方法、デバイス、およびシステムの例が本明細書で説明される。「例(example)」および「例示的な(exemplary)」という用語は、本明細書において、「例、事例、または例示として役立つこと」を意味するために使用されることを理解されたい。「例」または「例示的な」として本明細書に記載されるいかなる実施形態または特徴も、そのように示されない限り、必ずしも他の実施形態もしくは特徴よりも好ましいまたは有利であると解釈されるべきではない。本明細書に提示される主題の範囲から逸脱することなく、他の実施形態を利用することができ、他の変更を行うことができる。
【0010】
したがって、本明細書で説明される実施形態例は、限定的であることを意味しない。本明細書で概して説明され、図に示される本開示の態様は、多種多様な異なる構成で配置、置換、組み合わせ、分離、および設計できることが容易に理解されよう。
【0011】
この説明を通して、冠詞「a」または「an」は、実施形態例の要素を導入するために使用される。「1つの(a)」または「1つの(an)」といういかなる表現も、「少なくとも1つの(at least one)」を指し、「その(the)」といういかなる表現も、特に指定がない限り、または文脈上明らかにそうでない限り、「その少なくとも1つの(the at least one)」を指す。少なくとも2つの用語の記載されたリスト内の接続語「または」を使用する意図は、列挙された用語のいずれかまたは列挙された用語の任意の組み合わせを示すことである。
【0012】
「第1の」、「第2の」、および「第3の」などの序数の使用は、それらの要素の特定の順序を示すのではなく、それぞれの要素を区別するためである。この説明の目的で、「複数(multiple)」および「複数(a plurality of)」という用語は、「2つ以上」または「1つより多い」ことを指す。
【0013】
さらに、文脈が他に示唆しない限り、各図に示される特徴は、相互に組み合わせて使用されてもよい。したがって、図面は概して、1つ以上の全体的な実施形態の構成要素の態様として見られるべきであり、各実施形態についてすべての図示された特徴が必要であるとは限らないことを理解されたい。図面において、文脈上別段の指示がない限り、同様の記号は、典型的には同様の構成要素を特定する。さらに、特に断りのない限り、図は縮尺通りに描かれておらず、例示のみを目的として使用されている。さらに、図は代表的なものに過ぎず、すべての構成要素が示されているわけではない。たとえば、付加的な構造または制限的な構成要素は、示されない場合がある。
【0014】
くわえて、本明細書もしくは特許請求の範囲における要素、ブロック、またはステップのいかなる列挙も、明確にするためのものである。したがって、そのような列挙は、これらの要素、ブロック、もしくはステップが特定の配置に従うこと、または特定の順序で実行されることを要求または暗示すると解釈されるべきではない。
【0015】
I.概観
いくつかの画像ステッチングプロセスの例は、ベースフレーム選択、特徴検出、位置合わせ、およびブレンディングの4つの段階を含む。ベースフレーム選択段階は、候補ベースフレームのセットから1つ以上のベースフレームを選択することを含む。特徴検出段階は、選択された1つ以上のベースフレーム内の対応する特徴を特定することを含む。位置合わせ段階は、選択された1つ以上のベースフレームのうちの少なくとも一部を変換して、特定された特徴を位置合わせすることを含む。そして、ブレンディング段階は、位置合わせされたフレームを合成して単一の合成画像にすることを含む。
【0016】
画像ステッチングプロセスの多くは、関心オブジェクトと背景オブジェクトとの区別を試みないベースフレーム選択段階を含む。結果として、そのような画像ステッチングプロセスでは、その内部の関心オブジェクト、すなわち、ぼやけた、露出不足の、および/または何らかの方法で歪んだ関心オブジェクトの低品質表現を含むベースフレームが選択されることがある。この問題は、画像忠実度の点で不利である可能性があり、これらの画像ステッチングプロセスから作成される合成画像の全体的な品質を低下させる可能性がある。特に、関心オブジェクトに対する歪みが比較的小さい場合であっても、これらの歪みは、合成画像上で特に顕著になる可能性があり、画質の有意な劣化を表し得る。
【0017】
画像ステッチングプロセスの多くは、関心オブジェクトと背景オブジェクトとの区別を試みないブレンディング段階を含む。その結果、2つの画像フレームのブレンディングを行うと、そのような画像ステッチングプロセスでは、関心オブジェクトの上に直接シームが配置されることが多く、それによって、これらの関心オブジェクト上にアーチファクトおよび/または他の歪みが生じる。この問題は、画像忠実度の点で不利な場合もあり、また、これらの画像ステッチングプロセスから作成される合成画像の全体品質を低下させる可能性がある。
【0018】
本開示は、これらの問題に対処するのに役立ち得る画像ステッチングプロセスを提供する。より具体的には、画像ステッチングプロセスの例では、候補ベースフレームのセット内の関心オブジェクトの品質を考慮することによって、ベースフレームがインテリジェントに選択される。画像ステッチングプロセスの例ではまた、ブレンディング段階中に関心オブジェクト上に配置されたシームにペナルティが課されることがある。有利なことに、開示される画像ステッチングプロセスによって、高品質の関心オブジェクトを含む合成画像の作成が可能になる。
【0019】
開示されるプロセスは、モバイルデバイス、サーバデバイス、または別のタイプのコンピューティングデバイスなどのコンピューティングデバイスによって実施され得る。コンピューティングデバイスは、複数の画像フレームを受信し、それに応答して複数の画像フレーム内の関心領域を特定するように動作可能なベースフレーム選択モジュールを含み得る。関心領域は、他の可能性の中でもとりわけ、人間の顔、建物、車両、または動物などの関心オブジェクトを含む領域に対応し得る。関心領域を特定した後、ベースフレーム選択モジュールは、複数の画像フレームからベースフレームのセットを選択することができる。特に、この選択は、特定された各関心領域が、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれるようにすることができる。
【0020】
コンピューティングデバイスはまた、ベースフレーム選択モジュールによって選択されたベースフレームのセットを受信し、ベースフレームのセットをつなぎ合わせて合成画像を作成するように動作可能なステッチングモジュールを含み得る。ステッチングを実行する間、ステッチングモジュールは、ベースフレームのセット内の関心領域に配置されたシームに計算バイアスを追加するシーム発見プロセスを実施することができる。いくつかの例では、この計算バイアスは、関心領域からの画素を含む任意のシームにペナルティ項を追加することを含む。
【0021】
いくつかの例では、開示されるプロセスは、1つ以上の画像フレームをキャプチャしたのと同じデバイスによって実施される。たとえば、ベースフレーム選択モジュールおよびステッチングモジュールは、コンピューティングデバイス上にインストール可能である。次に、コンピューティングデバイスが1つ以上の画像フレームをキャプチャした後、ベースフレーム選択モジュールを呼び出して、1つ以上の画像フレームからベースフレームのセットを選択することができる。次に、ステッチングモジュールを呼び出して、ベースフレームのセットから合成画像を作成することができる。合成画像は、表示、通信、記憶、および/または他の態様で利用することができ、たとえば、紙に印刷することができる。他の例では、ベースフレーム選択および/またはステッチングプロセスは、別個であるが、1つ以上の画像フレームをキャプチャしたデバイスに通信可能に結合されたデバイスによって実施され得る。
【0022】
いくつかの例では、フレームは、連続する画像ストリーム(たとえば、ビデオストリーム)からつなぎ合わされ得る。画像ストリームは、コンピューティングデバイスの前面カメラ(たとえば、ユーザ面)、コンピューティングデバイスの後面カメラ(たとえば、非ユーザ面)、またはコンピューティングデバイスの別のカメラによってキャプチャされ得る。場合によっては、連続画像ストリームは、コンピューティングデバイスの複数のカメラ、たとえば、前向きカメラおよび後向きカメラを使用してキャプチャされ得る。
【0023】
いくつかの例では、合成画像は、最小限のユーザ入力で、またはユーザ入力なしで作成され得る。たとえば、合成画像は、ユーザが関心領域、関心オブジェクト、または画像フレームの他の態様を特定することを要求することなく作成され得る。さらに、合成画像は、ユーザが特定のジェスチャ(たとえば、コンピューティングデバイスを用いたシーンの水平走査)を使用して1つ以上の画像フレームをキャプチャすることを要求することなく作成され得る。自動画像ステッチングアプリケーションは、そのようなユーザ入力を必要としないことによって利益を得ることができる。しかしながら、1つ以上のタイプのユーザ入力を伴う、本明細書に説明されるプロセスの変形例も、同様に検討される。
【0024】
いくつかの例では、コンピューティングデバイスは、コンピューティングデバイスによるベースフレーム選択判断に基づいて訓練される機械学習モデルを使用することによって、ベースフレームを選択し得る。たとえば、コンピューティングデバイスが、本明細書で説明されるベースフレーム選択モジュールを使用して、いくつか(たとえば、4~10)のベースフレーム選択判断を行った後、コンピューティングデバイスは、ベースフレーム選択判断を使用して、機械学習モデルを訓練することができる。訓練が完了した後、コンピューティングデバイスは、記述されたベースフレーム選択モジュールと組み合わせて訓練された機械学習モデルを使用して、ベースフレームをインテリジェントに選択することができる。ベースフレームを選択する他の方法も可能である。
【0025】
機械学習モデルを使用してベースフレームを選択すること、コンピューティングデバイスによるサーバデバイスとの相互作用、または他の態様では他のコンピューティングデバイスとのベースフレームまたは合成画像の共有を含む実施形態に関して、ユーザに、本明細書に記載のシステム、プログラム、デバイス、または機能がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクション、または活動、職業、ユーザの好み、またはユーザの現在位置に関する情報)の収集を可能にするかどうか、およびいつ収集するかの両方についてユーザが選択できるコントロールを提供可能であり、かつ、ユーザがサーバからコンテンツまたは通信を送信されるかどうかについて、ユーザが選択できるコントロールを提供可能である。さらに、特定のデータは、個人的に識別可能な情報が削除されるように、記憶または使用される前に1つ以上の方法で扱われ得る。たとえば、ユーザのアイデンティティは、ユーザについて個人的に識別可能な情報が判定できないように扱われてもよい、またはユーザの地理的位置は、ユーザの特定の位置が判定できないように位置情報が取得される場所(たとえば、都市、郵便番号、または州レベルなど)で一般化されてもよい。したがって、ユーザは、どの情報がユーザに関して収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかに対する制御を有し得る。
【0026】
これらおよび他の態様、利点、ならびに代替形態は、適宜添付の図面を参照して以下の説明を読む人に明らかになるであろう。さらに、本概要および本明細書の他の場所における議論は、例としてのみ提供され、多数の変形例が可能であることを理解されたい。
【0027】
II.コンピューティングデバイスの例
図1は、実施形態例に係るコンピューティングデバイス100を示す。コンピューティングデバイス100は、複数の画像フレームからベースフレームを選択し、次に、選択されたベースフレームをつなぎ合わせて合成画像を作成することができるコンピューティングデバイスの例であり得る。コンピューティングデバイス100は、サーバデバイス、モバイルデバイス、カメラデバイス、または何らかの他の形態のデバイスといった、さまざまな形態をとり得る。
【0028】
図1に示すように、コンピューティングデバイス100は、カメラ110を備え得る。カメラ110は、光をキャプチャし、キャプチャした光を1つ以上の画像フレーム内に記録するように装備される、静止および/またはビデオカメラ等の1つ以上の画像キャプチャデバイスを含み得る。すなわち、カメラ110は、キャプチャされた光の画像フレーム(複数可)を作成することができる。1つ以上の画像フレームは、1つ以上の静止画像フレームおよび/またはビデオ画像(たとえば、画像フレームの連続ストリーム)において利用される1つ以上の画像フレームであり得る。カメラ110は、可視光、赤外線、紫外線として、および/または1つ以上の他の周波数の光として放出される光および/または電磁放射線をキャプチャすることができる。
【0029】
カメラ110は、コンピューティングデバイス100の前向きカメラ(たとえば、ユーザに向いている)および/または後向きカメラ(たとえば、ユーザに向いていない)として構成され得る。いくつかの実施態様では、カメラ110は、事前構成されたフレームレートで画像フレームをキャプチャすることができる。すなわち、X秒ごとに、カメラ110は画像フレームをキャプチャすることができる。フレームレートの例は、他の可能性の中でもとりわけ、24フレーム/秒(FPS)、30FPS、または50FPSを含む。
【0030】
いくつかの例では、カメラ110は、特定の回転角度で方向を合わせることが可能であり、その回転角度で画像フレームをキャプチャし得る。いくつかの実施態様では、回転角度は水平角である。すなわち、回転角度は、初期ポインティング方向からのカメラ110の水平回転でもよい。他の実施態様では、回転角度は垂直角である。すなわち、回転角度は、初期ポインティング方向からのカメラ110の垂直回転でもよい。実施形態例では、初期ポインティング方向は、画像フレームのストリーム内の1番目の画像フレームをキャプチャする際のカメラ110のポインティング方向に対応し得る。
【0031】
実施形態例では、カメラ110によってキャプチャされる各画像フレームは、品質尺度と関連付けられてもよい。この品質尺度は、他の可能性の中でもとりわけ、キャプチャされた画像フレームのモーションブラー、キャプチャされた画像フレームの全体的な焦点、および/またはキャプチャされた画像フレームの露出に基づいて計算される定量的メトリックでもよい。いくつかの実施態様では、キャプチャされた画像フレームの品質尺度は、キャプチャされた画像フレーム内に配置された関心領域内に位置する画素により大きい重みを与えるように、計算的にバイアスされ得る。たとえば、露出不足の関心領域を有するが、適切に露出された背景オブジェクトを有する画像フレームの品質尺度は、適切に露出された関心領域を有するが、露出不足の背景オブジェクトを有する画像フレームの品質尺度よりも低い場合がある。
【0032】
ディスプレイ構成要素112は、1つ以上のスクリーン(タッチスクリーンを含む)、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)、デジタル光処理(DLP)技術を用いたディスプレイ、および/または他の同様の技術によってユーザに出力信号を提供するように構成され得る。また、ディスプレイ構成要素112は、スピーカ、スピーカジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホン、および/または他の同様のデバイスなどを用いて可聴出力を生成するように構成され得る。ディスプレイ構成要素112はさらに、振動および/もしくはコンピューティングデバイス100とのタッチならびに/または物理的接触によって検出可能な他の出力などの触覚出力を生成することができる1つ以上の触覚構成要素で構成されてもよい。
【0033】
ネットワークインターフェイス114は、コンピューティングデバイス100と他のコンピューティングデバイスとの間のインターフェイスとして機能し得る。ネットワークインターフェイス114は、ネットワークを介して通信するように構成可能な1つ以上の無線インターフェイスおよび/または有線インターフェイスを含み得る。無線インターフェイスは、Bluetooth(登録商標)送受信機、Zigbee(登録商標)送受信機、Wi-Fi(登録商標)送受信機、WiMAX(登録商標)送受信機、および/または無線ネットワークを介して通信するように構成可能な他の同様のタイプの無線送受信機など、1つ以上の無線送信機、受信機、および/または送受信機を含み得る。有線インターフェイスは、イーサネット(登録商標)送受信機、ユニバーサルシリアルバス(USB)送受信機、またはツイストペアワイヤ、同軸ケーブル、光ファイバリンク、もしくは有線ネットワークへの同様の物理的接続を介して通信するように構成可能な同様の送受信機といった、1つ以上の有線送信機、受信機、および/または送受信機を含み得る。
【0034】
いくつかの実施形態では、ネットワークインターフェイス114は、信頼できる、安全な、および/または認証された通信を提供するように構成可能である。本明細書で説明する通信ごとに、信頼できる通信(たとえば、保証されたメッセージ配信)を容易にするための情報を、おそらくメッセージヘッダおよび/またはフッタ(たとえば、パケット/メッセージシーケンス情報、カプセル化ヘッダおよび/またはフッタ、サイズ/時間情報、ならびに巡回冗長検査(CRC)および/またはパリティチェック値などの送信検証情報)の一部として提供することができる。通信は、データ暗号化標準(DES)、AES(Advanced Encryption Standard)、RSA(Rivest-Shamir-Adelman)アルゴリズム、Diffie-Hellmanアルゴリズム、SSL(Secure Sockets Layer)またはTLS(Transport Layer Security)などのセキュアソケットプロトコル、および/またはDSA(Digital Signature Algorithm)等であるが、それらに限定されない、1つ以上の暗号プロトコルおよび/またはアルゴリズムを使用して、安全にすること(たとえば、符号化または暗号化)が可能であり、および/または解読/復号可能である。他の暗号プロトコルおよび/またはアルゴリズムが、通信をセキュアにする(次に、解読/復号する)ために、同様に、または本明細書に列挙されるものに加えて、使用可能である。
【0035】
電源116(複数可)は、コンピューティングデバイス100のさまざまな構成要素に電力を供給するように構成可能である。電源116(複数可)は、油圧システム、電気システム、バッテリ、または他の種類の電源を含み得る。コンピューティングデバイス100のいくつかの構成要素は、各々異なる電源に接続してもよく、同じ電源によって電力供給されてもよく、または複数の電源によって電力供給されてもよい。電源116(複数可)は、外部電源への有線接続、無線充電、燃焼、または他の例など、さまざまなタイプの充電を使用して充電し得る。
【0036】
センサ(複数可)118は、コンピューティングデバイス100の環境における状態を測定し、その環境に関するデータを提供するように構成可能である。たとえば、センサ(複数可)118は、(i) RFID(Radio Frequency identification)リーダ、近接センサ、1次元バーコードリーダ、2次元バーコード(たとえば、クイックレスポンス(QR)コード)リーダ、およびレーザトラッカなどであるがこれらに限定されない、他のオブジェクトおよび/またはデバイスを特定するための識別センサであって、RFIDタグ、バーコード、QRコード(登録商標)などの識別子を読み取るように構成することができる識別センサ、ならびに/または、少なくとも識別情報を読み取り提供するように構成された他のデバイスおよび/もしくはオブジェクト、(ii)傾斜センサ、ジャイロスコープ、加速度計、ドップラーセンサ、全地球測位システム(GPS)デバイス、ソナーセンサ、レーダデバイス、レーザ変位センサ、およびコンパスなどであるがこれらに限定されない、コンピューティングデバイス100の位置および/または動きを測定するためのセンサ、(iii)赤外線センサ、光学センサ、光センサ、バイオセンサ、容量センサ、タッチセンサ、温度センサ、ワイヤレスセンサ、無線センサ、移動センサ、マイクロホン、音センサ、超音波センサ、および/または煙センサ等であるが、それらに限定されない、コンピューティングデバイス100の環境を示すデータを取得するための環境センサと、(iv)1つ以上の次元の力、トルク、接地力、摩擦を測定する1つ以上のセンサ、ならびに/またはゼロモーメントポイント(ZMP)および/もしくはZMPの位置を特定するZMPセンサなどだがこれに限定されない、コンピューティングデバイス100の周囲に作用する1つ以上の力(たとえば、慣性力および/またはG力)を測定するための力センサのうちの1つ以上を含み得る。多くの他のセンサ118の例も可能である。
【0037】
ベースフレーム選択モジュール120は、1つ以上の画像フレームを受信し、それに応答して、1つ以上の画像フレームからベースフレームを選択するように動作可能である、コンピューティングデバイス100内のソフトウェアアプリケーションまたはサブシステムでもよい。いくつかの実施態様では、ベースフレーム選択モジュール120は、カメラ110から1つ以上の画像フレームを受信し得る。他の実施態様では、ベースフレーム選択モジュール120は、ネットワークインターフェイス114を介して別のコンピューティングデバイスから1つ以上の画像フレームを受信し得る。ベースフレームを選択した後、ベースフレーム選択モジュール120は、選択されたベースフレームをステッチングモジュール130に送信することができる。
【0038】
ステッチングモジュール130は、ベースフレーム選択モジュール120によって選択されたベースフレームを受信し、ベースフレームをつなぎ合わせてパノラマ画像などの一つの合成画像を作成するように動作可能な、コンピューティングデバイス100内のソフトウェアアプリケーションまたはサブシステムでもよい。ステッチングモジュール130によって作成された合成画像は、ディスプレイ112を介してユーザに表示され得る、またはネットワークインターフェイス114を介して別個のコンピューティングデバイスに通信され得る。
【0039】
ベースフレーム選択モジュール120およびステッチングモジュール130の動作例を概念的に示すために、
図2が提供される。特に、
図2は、ベースフレーム選択モジュール120がどのようにカメラ110から候補画像フレーム200を受信し、候補画像フレーム200からベースフレーム230を選択することができるかを示す。選択後、ベースフレーム選択モジュール120は、ベースフレーム230をつなぎ合わせて合成画像240を作成することができるステッチングモジュール130に、ベースフレーム230を提供することができる。
【0040】
図示のように、候補画像フレーム200は、画像フレーム210、画像フレーム212、画像フレーム214、画像フレーム216、および画像フレーム218の5つの別個の画像フレームを含む。これらの5つの別々の画像フレームは、関心領域220、関心領域222、および関心領域224の3つの関心領域を含む。これらの3つの関心領域の各々は、(i)完全に画像フレームに含まれるか、(ii)部分的に画像フレームに含まれるか、または(iii)画像フレームに含まれないかのいずれかであり得る。たとえば、関心領域220は、完全に画像フレーム212に含まれ、部分的に画像フレーム210および214に含まれ、画像フレーム216および218に含まれない。同様に、関心領域222は、画像フレーム214に完全に含まれ、画像フレーム212および216に部分的に含まれ、画像フレーム210および218に含まれない。さらに、関心領域224は、画像フレーム216および218の両方に完全に含まれ、画像フレーム214に部分的に含まれ、画像フレーム210および212に含まれない。
【0041】
上記の説明に従って、ベースフレーム選択モジュール120は、候補画像フレーム200の特定された各関心領域がベースフレーム230のうちの少なくとも1つのベースフレーム内に完全に含まれるように、候補画像フレーム200からベースフレームを選択し得る。たとえば、
図2に示すように、関心領域220,222および224は、ベースフレーム230の少なくとも1つに完全に含まれている。具体的には、関心領域220は画像フレーム212に完全に含まれ、関心領域222は画像フレーム214に完全に含まれ、関心領域224は画像フレーム218に完全に含まれている。
【0042】
図2に提示される画像フレームは、例示を目的として使用され、本明細書の実施形態に関して限定することを意図していない。実際には、候補画像フレーム200およびベースフレーム230は、数百または数千のフレームを含む、より少ない数のフレームまたはより多い数のフレームを含み得る。
【0043】
図1に戻ると、コンピューティングデバイス100はまた、コントローラ140を含む。コントローラ140は、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)のうちの少なくとも1つを含み得る。追加的または代替的に、コントローラ140は、1つ以上のプロセッサ142とメモリ144とを含み得る。プロセッサ(複数可)142は、汎用プロセッサまたは専用プロセッサ(たとえば、デジタル信号プロセッサ等)を含み得る。プロセッサ(複数可)142は、メモリ144に記憶されたコンピュータ読取可能プログラム命令を実行するように構成され得る。
【0044】
メモリ144は、プロセッサ(複数可)142によって読取りまたはアクセスされ得る1つ以上のコンピュータ読取可能記憶媒体を含み得る、またはその形態をとり得る。1つ以上のコンピュータ読取可能記憶媒体は、1つ以上のプロセッサ142のうちの少なくとも1つと全体的または部分的に統合され得る、光学、磁気、有機、もしくは他のメモリもしくはディスク記憶装置等の揮発性および/または不揮発性記憶構成要素を含み得る。いくつかの実施形態では、メモリ144は、一つの物理デバイス(たとえば、1つの光学、磁気、有機もしくは他のメモリまたはディスク記憶ユニット)を使用して実装され得るが、他の実施形態では、メモリ144は、2つ以上の物理デバイスを使用して実装され得る。
【0045】
上述のように、メモリ144は、コンピューティングデバイス100の動作に関連するコンピュータ読取可能プログラム命令を含み得る。したがって、メモリ144は、本明細書で説明する機能の一部もしくはすべてを実行または容易にするするためのプログラム命令を含み得る。メモリ144は、ベースフレーム選択モジュール120および/またはステッチングモジュール130を記憶し得る。いくつかの実施形態では、コントローラ140は、メモリ144に記憶された命令を実行するプロセッサ(複数可)142によって、さまざまな動作を実行し得る。
【0046】
たとえば、コントローラ140は、1つ以上の画像キャプチャ特性に従って1つ以上の画像フレームをキャプチャするように、カメラ110に指示し得る。画像キャプチャ特性は、他の可能性の中でも、所望の開口、所望の露出時間、および/または所望の画像センサ光感度(たとえば、ISO感度)を含み得る。別の例として、コントローラ140は、1つ以上の構成特性に従ってその焦点距離を調整するように、カメラ110に指示し得る。構成特性は、他の可能性の中でも、所望の焦点距離、所望の倍率、および/または所望の画角を含み得る。
【0047】
コントローラ140は、他の動作を実行するように構成することができる。たとえば、コントローラ140は、カメラ110によってキャプチャされた画像フレームから合成画像を作成するために、ベースフレーム選択モジュール120およびステッチングモジュール130の動作を実行することができる。コントローラ140は次に、他の可能性の中でも、ディスプレイ112に合成画像を表示させ得るか、またはネットワークインターフェイス114に合成画像を遠隔コンピューティングデバイスに送信させ得る。
【0048】
III.方法例
図3は、実施形態例に係る方法300を示す。方法300は、複数の画像フレームから1つ以上のベースフレームを選択するように実施することができる。選択されたベースフレームは、ステッチングモジュール130に提供され得る、または他の目的のために使用され得る。方法300は、コンピューティングデバイス100のさまざまな構成要素、たとえば、ベースフレーム選択モジュール120および/または他の構成要素によって実行され得る。簡潔にするために、ここで、方法300の実施態様例について、ベースフレーム選択モジュール120を使用して説明する。しかしながら、開示される原理は、他の構成要素を有する他のシナリオでも適用され得ることを理解されたい。
【0049】
方法300はブロック310で開始することができ、ベースフレーム選択モジュール120は、N個の画像フレームを受信する。上記の説明に従って、N個の画像フレームは、カメラ110によってキャプチャされた画像フレームであり得る。代替的におよび/または追加的に、N個の画像フレームは、リモートネットワーク上で動作するサーバデバイスなどのリモートコンピューティングデバイスからコンピューティングデバイス100に伝達された画像フレームであり得る。
【0050】
N個の画像フレームを受信すると、ベースフレーム選択モジュール120は、N個の画像フレーム内の1つ以上の関心領域を特定することができる。場合によっては、これは、ベースフレーム選択モジュール120が、1つ以上の関心領域の各々について固有の識別子を決定することを伴い得る。たとえば、ブロック310においてN個の画像フレームを受信すると、ベースフレーム選択モジュール120は、オブジェクト検出モジュールを呼び出して、N個の画像フレーム内の関心オブジェクトを検出することができる。ベースフレーム選択モジュール120は次に、検出されたオブジェクトに一意の識別子を割り当てることができ、N個の画像フレームとともに一意の識別子をメタデータとして記憶することができる。または、ベースフレーム選択モジュール120は、別の時点で一意の識別子を判定することができる。たとえば、(以下でさらに説明するように)ブロック340を実行する間に、ベースフレーム選択モジュール120は、オブジェクト検出モジュールを呼び出して、画像フレームNkおよび画像フレームNx内の関心オブジェクトを検出することができる。ベースフレーム選択モジュール120は次に、画像フレームNxおよび画像フレームNkに固有の識別子を割り当てることができる。
【0051】
さらに、ブロック310において、ベースフレーム選択モジュール120は、回転角度によってN個の画像フレームを順序付け、それによって、N個の画像フレームの順序付けられたセットを生成することができる。これを行うために、ベースフレーム選択モジュール120は、各画像フレームに関連付けられたメタデータを評価することができ、次に、メタデータに基づいて、画像フレームをキャプチャしたカメラの回転角度を、画像フレームをキャプチャする際に判定することができる。いくつかの実施態様では、ベースフレーム選択モジュール120は、N個の画像フレームを昇順に順序付けることができる。すなわち、順序付けにおける任意の所与の画像フレームについて、順序付けにおける次の画像フレームは、所与の画像フレームの回転角度の大きさ以上の回転角度を有することになる。他の実施態様では、ベースフレーム選択モジュール120は、N個の画像フレームを降順で順序付けることができる。
【0052】
回転角度によってN個の画像フレームを順序付けた後(または回転角度によってN個の画像フレームを順序付けている間)、ベースフレーム選択モジュール120は、変数Kの値を1に設定することができる。
【0053】
ブロック320において、ベースフレーム選択モジュール120は、変数Xの値を1に設定することができる。次に、ベースフレーム選択モジュール120は、画像フレームNxを選択されたベースフレームのセットに追加することができ、画像フレームNxは、順序付けられたN個の画像フレームのセットからX番目の画像フレームに対応する。
【0054】
ブロック330において、ベースフレーム選択モジュール120は、Kの値を1だけインクリメントすることができる。すなわち、ベースフレーム選択モジュール120は、変数K=K+1とすることができる。ブロック340において、ベースフレーム選択モジュール120は次に、画像フレームNxが画像フレームNkと異なる固有の識別子を含むかどうかを判定することができ、画像フレームNkは、順序付けられたN個の画像フレームのセットからK番目の画像フレームに対応する。上記の説明に従って、ベースフレーム選択モジュール120は、記憶されたメタデータを使用して、画像フレームNxが画像フレームNkと異なる固有の識別子を含むかどうかを確立することができる。他の例では、ベースフレーム選択モジュール120は、オブジェクト検出モジュールを呼び出して、画像フレームNxが画像フレームNkと異なる固有の識別子を含むかどうかを確立することができる。いずれの場合も、画像フレームNxが画像フレームNkと異なる固有の識別子を含むとベースフレーム選択モジュール120が判定する場合、方法300はブロック350に進むことができる。そうではなく、ベースフレーム選択モジュール120が、画像フレームNxが画像フレームNkと異なる固有の識別子を含まないと判定する場合、方法300はブロック330に戻ることができる。
【0055】
ブロック330および340に関連する説明的な例として、
図4は、画像フレーム412、画像フレーム414、画像フレーム416および画像フレーム422を含むシナリオ400の例を示す。シナリオ400では、画像フレーム412,414,416および422の各々は、順序付けられたN個の画像フレームのセット内のインデックスを有する。すなわち、画像フレーム412は1の位置を有し、画像フレーム414は2の位置を有し、画像フレーム416は3の位置を有し、画像フレーム422は4の位置を有する。さらに、画像フレーム412,414,416および422の各々は、少なくとも1つの固有の識別子を含むように示されている。すなわち、画像フレーム412,414および416は固有の識別子402を含み、画像フレーム422は固有の識別子402および404を含む。
【0056】
シナリオ400の間、ベースフレーム選択モジュール120は、開始画像フレームとして画像フレーム412を指定し得る。ベースフレーム選択モジュール120は次に、画像フレーム414を評価して、画像フレーム414が画像フレーム412と同じ固有の識別子を有すると判定することができる。この判定を行うと、ベースフレーム選択モジュール120は、画像フレーム414まで反復し、画像フレーム416を評価することができる。同様に、ベースフレーム選択モジュール120は、画像フレーム416が画像フレーム414と同じ固有の識別子を有すると判定することができる。この判定を行うと、ベースフレーム選択モジュール120は、画像フレーム416まで反復し、次に、画像フレーム422を評価することができる。この時点で、ベースフレーム選択モジュール120は、画像フレーム422が画像フレーム416と異なる固有の識別子を含むと判定することができ、したがって、その反復を停止することができる。シナリオ400中に反復された画像フレーム(たとえば、画像フレーム412,414および416)は、本明細書では、画像フレーム410のサブセットであると見なされ得る。
【0057】
再び
図3を参照すると、ブロック350において、ベースフレーム選択モジュール120は、(順序付けに従って)画像フレームN
xと画像フレームN
k-1との間の各画像フレームに関連付けられた品質尺度を評価することができ、画像フレームN
k-1は、順序付けられたN個の画像フレームのセットから(K-1)番目の画像フレームに対応する。評価を実行した後、ベースフレーム選択モジュール120は、画像フレームN
xと画像フレームN
k-1との間で、最も高い品質尺度に関連付けられた画像フレームを選択することができる。または、ベースフレーム選択モジュール120は、画像フレームN
xと画像フレームN
k-1との間で、閾値高品質尺度を有する(たとえば、Xよりも大きい関連付けられた品質尺度を有する)全ての画像フレームを選択することができる。いずれのシナリオにおいても、ベースフレーム選択モジュール120は、選択された画像フレーム(複数可)を選択されたベースフレームのセットに追加することができる。
【0058】
ブロック350に関連する例は、
図4のシナリオ400に示される。特に、画像フレーム412,414,416および422の各々は、関連付けられた品質尺度を有するように示される。すなわち、画像フレーム412は7の関連品質尺度を有し、画像フレーム414は8の関連品質尺度を有し、画像フレーム416は5の関連品質尺度を有し、画像フレーム422は5の関連品質尺度を有する。シナリオ400中、ベースフレーム選択モジュール120は、ベースフレーム選択モジュール120が反復した各画像フレームに関連付けられた品質尺度を評価することができる。言い換えれば、ベースフレーム選択モジュール120は、画像フレームサブセット410内の画像フレームごとに品質尺度を評価することができる。したがって、画像フレーム414が画像フレームサブセット410内のフレームの中で最も高い品質尺度を有するので、ベースフレーム選択モジュール120は、ベースフレームとして使用するために画像フレーム414を選択することができ、ベースフレームとして使用するために画像フレーム412および416を選択することを控えることになる。
【0059】
再び
図3を参照すると、ブロック360において、ベースフレーム選択モジュール120は、変数Xの値を変数Kの値に等しく設定することができる。
【0060】
ブロック370において、ベースフレーム選択モジュール120は、変数Kの値がN(すなわち、ブロック310で受信された画像フレームの数)未満であるかどうかを判定することができる。変数Kの値がN未満であるとベースフレーム選択モジュール120が判定した場合、方法300はブロック330に戻ることができる。そうではなく、変数Kの値がN以上であるとベースフレーム選択モジュール120が判定した場合、方法300はブロック380に進むことができる。
【0061】
ブロック380において、ベースフレーム選択モジュール120は、ブロック310~370から判定された、選択されたベースフレームのセットを提供することができる。いくつかの事例では、ベースフレーム選択モジュール120は、選択されたベースフレームのセットをステッチングモジュール130に提供することができる。他の事例では、ベースフレーム選択モジュール120は、選択されたベースフレームのセットをリモートコンピューティングデバイスに提供することができる。
【0062】
図3に提示されるブロックは、例の目的で使用され、本明細書の実施形態に関して限定的であることを意図していない。ベースフレーム選択モジュール120の動作は、高度に構成可能であってもよく、方法300に示されるものよりも多くのブロック、より少ないブロック、または異なるブロックを含んでもよい。場合によっては、1つ以上のブロックは、カスタマイズされてもよい、または他の態様では上記の説明例から逸脱してもよい。
【0063】
図5は、実施形態例に係る方法500を示す。方法500は、1つ以上のベースフレームをつなぎ合わせて、一つの合成画像を作成するように実施することができる。方法500は、コンピューティングデバイス100のさまざまな構成要素、たとえば、ステッチングモジュール130および/または他の構成要素によって実行可能である。簡潔にするために、ここで、方法500の実施態様例を、ステッチングモジュール130を使用して説明する。しかしながら、開示される原理は、他の構成要素を有する他のシナリオでも適用され得ることを理解されたい。
【0064】
方法500はブロック510で開始することができ、ステッチングモジュール130は、N個のベースフレームを受信する。上記の説明に従って、N個のベースフレームは、ベースフレーム選択モジュール120によって選択されたベースフレームであり得る。代替的および/または追加的に、N個のベースフレームは、リモートネットワーク上で動作するサーバデバイスなどのリモートコンピューティングデバイスからコンピューティングデバイス100に伝達されるベースフレームであり得る。
【0065】
N個のベースフレームを受信した後、ステッチングモジュール130は、N個のベースフレームの各々に対して特徴およびキーポイント検出を実行することができる。より具体的には、ベースフレームごとに、ステッチングモジュール130は、ベースフレーム内の関心点(たとえば、キーポイント)を記述する局所的特徴の集合を検出することができる。他の可能性の中でもとりわけ、スケール不変特徴変換(SIFT)、SURF(speeded up robust features)、KAZE、ならびに指向FASTおよび回転BRIEF(ORB)を含むさまざまな手法を使用して、キーポイントを効率的に検出することができる。キーポイントおよびそれらの関連する記述が得られると、ステッチングモジュール130は、異なるベースフレームからのキーポイントをマッチングさせて、たとえば、少なくとも複数のオーバーラップする領域を含むベースフレームなどの、重複するベースフレームのペアを判定することができる。他の可能性の中でもとりわけ、カスケードハッシュ(cascade hashing)、k最近傍ベースのアプローチ、および総当たりマッチング(brute force matcher)を含む種々のアプローチが、キーポイントを効率的にマッチングするために使用可能である。
【0066】
ブロック520において、ステッチングモジュール130は、ブロック510において判定されたオーバーラップするベースフレームのペアから、ベースフレームの初期ペアを選択することができる。いくつかの実施態様では、ステッチングモジュール130は、最もキーポイントが一致するベースフレームのペアを選択して、最初のペアとしてもよい。他の実施態様では、ステッチングモジュール130は、最も高い合成品質尺度を有するベースフレームのペアを選択して初期ペアとし得る。他の実施態様も可能である。ベースフレームの初期ペアを選択した後、ステッチングモジュール130は、三角測量を適用して、ベースフレームの初期ペア内のキーポイントの3次元(3D)座標を判定することができる。他の可能性の中でも特に、直接線形三角測量(direct linear triangulation)アプローチ、中点三角測量(midpoint triangulation)アプローチ、および非線形三角測量(non-linear triangulation)アプローチを含むさまざまなアプローチを使用して、三角測量を実施することができる。
【0067】
ブロック530において、ステッチングモジュール130は、ブロック520の初期3D座標にベースフレームを漸増的に追加することができる。より具体的には、新規に追加されたベースフレームごとに、ステッチングモジュール130は、新規のベースフレームのキーポイントと以前に追加されたベースフレームとのキーポイント間の対応を評価することができ、次に、三角測量を適用して、新規のキーポイントの3D座標を判定することができる。さらに、新たに追加されたベースフレームごとに、ステッチングモジュール130は、バンドル調整を適用して、不正確さを低減し、3D座標の最適値を生成することができる。ブロック530の動作は、N個のベースフレームがすべて評価されるまで繰り返され得る。
【0068】
ブロック530に関連する例として、
図6は、ベースフレーム610、ベースフレーム612、およびベースフレーム614を含むシナリオ600の例を示す。
図6は、ベースフレーム610および612がどのように3D座標630を共有するか、ベースフレーム610,612および614がどのように3D座標632を共有するか、ならびにベースフレーム612および614がどのように3D座標634を共有するかを示す。
図6はまた、ベースフレーム610がどのように任意の他のベースフレームと共有されない3D座標620を有するか、およびベースフレーム614がどのように任意の他のベースフレームと共有されない3D座標622を有するかを示す。さらに、
図6は、どのように3D座標620,622,630,632および634をすべて投影して合成画像640を形成することができるかを示す。
【0069】
再び
図5を参照すると、ブロック540において、ステッチングモジュール130は、ブロック530において計算された3D座標をパノラマ座標系上に投影し得る。パノラマ座標系は、N個のベースフレームのうちの1つに関して選択され得る。3D座標がパノラマ座標系上にマッピングされると、ステッチングモジュール130は、N個のベース画像からの画素をパノラマ座標系上にブレンドすることができる。いくつかの実施形態では、ブレンディングは、あるベースフレームから別のベースフレームへの遷移が滑らかで見えにくくなるように、ベースフレームのペアの間のオーバーラップする領域にシームを配置するシーム発見プロセスを含み得る。いくつかの実施形態では、このシーム発見プロセスは、特定された1つ以上の関心領域からの画素を含むシームに計算バイアスを追加することを含む。たとえば、計算バイアスは、ペナルティ項を、特定された1つ以上の関心領域からの画素を含む任意のシームに追加することを含み得る。
【0070】
ブロック540に関連する例として、
図7は、合成画像710および合成画像720の合成画像の2つの例を示す。合成画像710および720の両方は、関心領域712および関心領域714を含む。合成画像710では、シーム716の一部が関心領域712上に位置し、シーム718の一部が関心領域714上に位置することに留意されたい。上記の説明に従って、シーム716および718のこのような位置決めによって、関心領域712および714に望ましくないアーチファクトが表示される可能性がある。対照的に、合成画像720において、シーム726は関心領域712上に位置せず、シーム728は関心領域714上に位置しないことに留意されたい。これは、上述したペナルティ項の結果であり、より高品質な関心領域を含む合成画像を生じる可能性がある。
【0071】
再び
図5を参照すると、ブロック550において、ステッチングモジュール130は、ブロック540からのパノラマ投影内のすべてのオーバーラップする領域の位置を特定し、次に、これらのオーバーラップする領域の各々についてオプティカルフローフィールドを計算することができる。いくつかの実施形態では、オプティカルフローフィールドは、各オーバーラップする領域を非重複セルのグリッドに分割し、それを含むセルの四隅におけるフローの双線形結合(bilinear combination)としてセル内の画素のフローを表すことによって計算される。
【0072】
オプティカルフローフィールドを計算した後、ステッチングモジュール130は、オプティカルフローフィールドを適用して、ブロック530のオーバーラップする領域からの対応する3D座標のすべてを同時に位置合わせすることができる。ステッチングモジュール130は次に、パノラマ座標系上に3D座標を再投影して、最終的な合成画像を作成することができる。
【0073】
ブロック560において、ステッチングモジュール130は、ブロック550において判定された合成画像を提供することができる。いくつかの事例では、ステッチングモジュール130は、合成画像をディスプレイ112に提供することができ、ディスプレイは、合成画像をユーザに表示することができる。他の事例では、ステッチングモジュール130は、ネットワークインターフェイス114を介してリモートコンピューティングデバイスに合成画像を提供することができる。
【0074】
IV.動作例
図8は、実施形態例に係る方法800を示す。方法800は、さまざまなブロックまたはステップを備え得る。ブロックまたはステップは、個々にまたは組み合わせて実行され得る。ブロックまたはステップは、任意の順序で、および/または連続してもしくは並列して実行され得る。さらに、ブロックまたはステップは、方法800に対して省略または追加され得る。方法800のブロックは、
図1を参照して図示および説明されるようなコンピューティングデバイス100のさまざまな要素によって実行され得る。
【0075】
ブロック810は、複数の画像フレームを取得することを含み得る。いくつかの実施形態では、複数の画像フレームは、カメラデバイスによって1つの連続ストリームでキャプチャされる。さらに、いくつかの実施形態では、複数の画像フレームは、カメラデバイスの前面カメラを使用してキャプチャされる。
【0076】
ブロック820は、複数の画像フレームのうちの1つ以上の画像フレーム内の1つ以上の関心領域を特定することを含み得る。いくつかの実施形態では、1つ以上の関心領域の各々は、顔を含む領域に対応する。
【0077】
ブロック830は、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームのセットを選択することを含み得、特定された1つ以上の関心領域の特定された各関心領域は、選択されたベースフレームのセットの少なくとも1つのベースフレーム内に完全に含まれている。
【0078】
ブロック840は、選択されたベースフレームのセットをつなぎ合わせて、合成画像を作成することを含み得る。
【0079】
いくつかの実施形態では、複数の画像フレームの各画像フレームに関連付けられたそれぞれの品質尺度は、画像フレームのモーションブラー、画像フレームの焦点、または画像フレームの露出のうちの少なくとも1つに基づくメトリックである。さらに、いくつかの実施形態では、それぞれの品質尺度は、特定された1つ以上の関心領域内に位置する画素により大きな重みを与えるように、計算的にバイアスされる。
【0080】
いくつかの実施形態では、ベースフレームのセットを選択することは、複数の画像フレームから画像フレームの複数のサブセットを決定することを含み、サブセットの各々は、同じ1つ以上の関心領域を含む画像フレームを含み、選択することはさらに、サブセットの各々から、サブセット内の各画像フレームに関連付けられたそれぞれの品質尺度に基づいて、ベースフレームを選択することを含む。
【0081】
いくつかの実施形態では、サブセットの各々からベースフレームを選択することは、サブセットの画像フレームの中から、品質尺度が最も高い画像フレームを選択することを含む。
【0082】
いくつかの実施形態では、1つ以上の関心領域を特定することは、1つ以上の関心領域の各々について固有の識別子を決定することを含み、サブセットの各々は、同じ固有の識別子を含む1つ以上の画像フレームを含む。
【0083】
いくつかの実施形態では、複数の画像フレームの各画像フレームは、それぞれの回転角度でカメラデバイスによってキャプチャされている。そのような実施形態では、画像フレームのサブセットを決定することは、回転角度に基づいて複数の画像フレームを順序付けることと、複数の画像フレームから開始画像フレームを指定することと、開始画像フレームから始まり、反復されるべき次の画像フレームが開始画像フレームと異なる少なくとも1つの固有の識別子を有する画像フレームとなるまで、順序付けに従って複数の画像フレームを反復することとを含む。そのような実施形態では、画像フレームのサブセットは、反復された画像フレームである。
【0084】
いくつかの実施形態では、回転角度は、カメラデバイスの水平角に基づく尺度を含む。
いくつかの実施形態では、開始画像フレームを指定することは、順序付けから1番目の画像フレームを指定することを含む。
【0085】
いくつかの実施形態では、画像フレームのサブセットは、画像フレームの第1のサブセットである。そのような実施形態では、画像フレームの第2のサブセットを決定することは、複数の画像フレームから第2の開始画像フレームを指定することと、第2の開始画像フレームから始まり、反復されるべき次の画像フレームが第2の開始画像フレームと異なる少なくとも1つの固有の識別子を有する画像フレームとなるまで、順序付けに従って複数の画像フレームを反復することとを含む。そのような実施形態では、画像フレームの第2のサブセットは、第2の開始画像フレームから開始して反復された画像フレームである。
【0086】
いくつかの実施形態では、第2の開始画像フレームを指定することは、開始画像フレームと異なる少なくとも1つの固有の顔識別子を有する画像フレームを指定することを含む。
【0087】
いくつかの実施形態では、ステッチングは、複数の画像フレームからの各画像フレームが少なくとも1回反復された後に行われる。
【0088】
いくつかの実施形態では、ステッチングは、特定された1つ以上の関心領域からの画素を含むシームに計算バイアスを追加することを含むシーム発見プロセスを含む。そのような実施形態では、計算バイアスは、ペナルティ項を、特定された1つ以上の関心領域からの画素を含む任意のシームに追加することを含み得る。
【0089】
いくつかの実施形態は、選択されたベースフレームのセットのオーバーラップする領域を決定することと、オーバーラップする領域の各々についてそれぞれのオプティカルフローフィールドを計算することと、計算されたオプティカルフローフィールドを適用してオーバーラップする領域を整列させることとを含むオプティカルフローシーム修復ステップを含む。
【0090】
図に示された特定の配列は、限定的であると見なされるべきではない。他の実施形態は、所与の図に示される各要素をより多くまたはより少なく含み得ることを理解されたい。さらに、図示された要素の一部は、組み合わされてもよい、または省略されてもよい。さらに、説明的な実施形態は、図に示されていない要素を含み得る。
【0091】
情報の処理を表すステップまたはブロックは、本明細書で説明する方法または技法の特定の論理機能を実行するように構成可能な回路に対応することができる。代替的または追加的に、情報の処理を表すステップまたはブロックは、モジュール、セグメント、またはプログラムコード(関連データを含む)の一部に対応することができる。プログラムコードは、方法または技法において特定の論理機能またはアクションを実施するためにプロセッサによって実行可能な1つ以上の命令を含み得る。プログラムコードおよび/または関連データは、ディスク、ハードドライブ、または他の記憶媒体を含む記憶デバイスなどの任意のタイプのコンピュータ読取可能媒体に記憶され得る。
【0092】
コンピュータ読取可能媒体はまた、レジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ(RAM)のような、短期間にわたってデータを記憶するコンピュータ読取可能媒体などの非一時的コンピュータ読取可能媒体を含み得る。コンピュータ読取可能媒体はまた、より長い期間にわたってプログラムコードおよび/またはデータを記憶する非一時的コンピュータ読取可能媒体を含み得る。したがって、コンピュータ読取可能媒体は、たとえば、読取り専用メモリ(ROM)、光ディスクもしくは磁気ディスク、コンパクトディスク読取り専用メモリ(CD-ROM)などの二次または持続的長期ストレージを含み得る。コンピュータ読取可能媒体はまた、任意の他の揮発性または不揮発性記憶システムであり得る。コンピュータ読取可能媒体は、コンピュータ読取可能記憶媒体、またはたとえば有形記憶デバイスと見なすことができる。
【0093】
さまざまな例および実施形態を開示してきたが、当業者には他の例および実施形態が明らかであろう。さまざまな開示された例および実施形態は、例示を目的としており、限定的であることを意図しておらず、真の範囲は、以下の特許請求の範囲によって示される。