(57)【要約】  方法は、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するステップを含む。同じく、方法は、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢をプロセッサにおいて推定するステップを含む。第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。方法は、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢をプロセッサにおいて推定するステップをさらに含む。キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。
2017529620.tif 000002
【特許請求の範囲】
【請求項１】
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するステップと、
前記第1の画像フレームと第2の画像フレームとを比較することによって、前記第1の画像フレームに対応するカメラ姿勢をプロセッサにおいて推定するステップであって、前記第2の画像フレームが、前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定するステップと、
前記第1の画像フレームとキーフレームとを比較することによって、前記第1の画像フレームに対応する精細化されたカメラ姿勢を前記プロセッサにおいて推定するステップとを含み、前記キーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する特定の画像フレームに対応する、方法。
【請求項２】
前記カメラ姿勢が、前記プロセッサの第1の処理スレッドの一部として推定され、前記精細化されたカメラ姿勢が、前記プロセッサの第2の処理スレッドの一部として推定される、請求項1に記載の方法。
【請求項３】
前記プロセッサが、処理スレッドを並列に実行するように構成され、前記第1の処理スレッドおよび前記第2の処理スレッドが並列に実行される、請求項2に記載の方法。
【請求項４】
前記第1の画像フレームに対応する前記カメラ姿勢を推定するステップが、
前記第1の画像フレームの取り込みと前記第2の画像フレームの取り込みとの間の、前記画像取り込みデバイスの相対運動の推定値に基づいて前記第1の画像フレームを変換することによって、曲げられたフレームを生成するステップと、
前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間のピクセル強度の差を示すピクセル強度エラーを決定するステップと、
深度エラーを決定するステップとを含み、前記深度エラーが、前記曲げられたフレームの前記1つまたは複数のピクセルと前記第2の画像フレームの前記1つまたは複数のピクセルとの間の深度の差を示し、前記深度エラーが、前記第2の画像フレームの前記1つまたは複数のピクセルの法線値に基づいて決定される、請求項1に記載の方法。
【請求項５】
前記第1の画像フレームに対応する前記精細化されたカメラ姿勢を推定するステップが、
前記第1の画像フレームの取り込みと前記キーフレームの取り込みとの間の、前記画像取り込みデバイスの相対運動の推定値に基づいて前記第1の画像フレームを変換することによって、曲げられたフレームを生成するステップと、
前記曲げられたフレームの1つまたは複数のピクセルと前記キーフレームの1つまたは複数のピクセルとの間のピクセル強度の差を示すピクセル強度エラーを決定するステップと、
深度エラーを決定するステップとを含み、前記深度エラーが、前記曲げられたフレームの前記1つまたは複数のピクセルと前記キーフレームの前記1つまたは複数のピクセルとの間の深度の差を示し、前記深度エラーが、前記キーフレームの前記1つまたは複数のピクセルの法線値に基づいて決定される、請求項1に記載の方法。
【請求項６】
前記第1の画像フレームと前記キーフレームとの間の、前記第1の画像フレームの第1のピクセル値と前記キーフレームの第2のピクセル値とのピクセルごとの比較に基づく、重複率を前記プロセッサにおいて決定するステップと、
前記重複率と重複率しきい値とを比較して比較結果を生成するステップと、
前記第1の画像フレームおよび前記キーフレームが相違していることを示す前記比較結果に基づいて前記第1の画像フレームを使用して新しいキーフレームを生成するステップとをさらに含む、請求項1に記載の方法。
【請求項７】
前記新しいキーフレームを生成するステップが、メモリ内の前記第1の画像フレームに対応するコピー画像フレームを生成するステップを含み、前記コピー画像フレームが、前記新しいキーフレームとして指定される、請求項6に記載の方法。
【請求項８】
前記第1のピクセル値が、深度値、測光値、またはそれらの組合せを含む、請求項6に記載の方法。
【請求項９】
前記精細化されたカメラ姿勢および前記一連の画像フレームを使用して3次元点群を生成するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
前記一連の画像フレームのうちの1つまたは複数の追加の画像フレームを前記画像取り込みデバイスから受信するステップと、
前記1つまたは複数の追加の画像フレームに基づいて前記3次元点群を更新するステップとをさらに含み、前記3次元点群を更新するレートが、前記1つまたは複数の追加の画像フレームを受信するレートに実質的に等しい、請求項9に記載の方法。
【請求項１１】
前記カメラ姿勢が、前記第1の画像フレームが取り込まれた特定の時間における、前記画像取り込みデバイスの位置の近似値を示す、請求項1に記載の方法。
【請求項１２】
前記第1の画像フレームが第1の解像度を有し、前記キーフレームがキーフレーム解像度を有し、前記第1の解像度が前記キーフレーム解像度と異なる、請求項1に記載の方法。
【請求項１３】
プロセッサと、
命令を記憶するメモリとを備え、前記命令が、前記プロセッサに、
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信することと、
前記第1の画像フレームと第2の画像フレームとの第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定することであって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定することと、
前記第1の画像フレームとキーフレームとの第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定することとを行わせることを、前記プロセッサによって実行可能であり、前記キーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する特定の画像フレームに対応する、装置。
【請求項１４】
前記カメラ姿勢が、前記プロセッサの第1の処理スレッドの一部として推定され、前記精細化されたカメラ姿勢が、前記プロセッサの第2の処理スレッドの一部として推定される、請求項13に記載の装置。
【請求項１５】
前記命令が、前記プロセッサに、キーフレームのセットから前記キーフレームを選択させることをさらに実行可能であり、前記キーフレームが、前記推定されたカメラ姿勢に基づいて選択される、請求項14に記載の装置。
【請求項１６】
前記命令が、前記プロセッサに、前記第1の画像フレームを変換して曲げられたフレームを生成させることをさらに実行可能であり、前記第1の画像フレームが、前記画像取り込みデバイスと前記第2の画像フレームに対応する座標との間の相対運動の推定値に基づいて変換される、請求項13に記載の装置。
【請求項１７】
前記命令が、前記プロセッサに、前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間のピクセル強度の差を示す、ピクセル強度エラーを決定させることをさらに実行可能である、請求項16に記載の装置。
【請求項１８】
前記命令が、前記プロセッサに、深度エラーを決定させることをさらに実行可能であり、前記深度エラーが、前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間の深度の差を示し、前記深度エラーが、前記第2の画像フレームの前記1つまたは複数のピクセルの法線値に基づいて決定される、請求項16に記載の装置。
【請求項１９】
前記命令が、前記プロセッサに、前記第1の画像フレームとキーフレームとの間の重複率を決定させることをさらに実行可能である、請求項13に記載の装置。
【請求項２０】
前記重複率が、前記第1の画像フレームの第1のピクセル値と前記キーフレームの第2のピクセル値とのピクセルごとの比較に基づく、請求項19に記載の装置。
【請求項２１】
前記命令が、前記プロセッサに、前記重複率と重複率しきい値との比較に基づく結果を生成させることをさらに実行可能である、請求項19に記載の装置。
【請求項２２】
前記命令が、前記プロセッサに、前記第1の画像フレームが前記キーフレームに類似していないことを示す前記結果に基づいて、前記第1の画像フレームを使用して新しいキーフレーム生成させることをさらに実行可能である、請求項21に記載の装置。
【請求項２３】
命令を記憶するコンピュータ可読記憶デバイスであって、前記命令が、プロセッサによって実行されたとき、前記プロセッサに、
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信することと、
前記第1の画像フレームと第2の画像フレームとの第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定することであって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定することと、
前記第1の画像フレームとキーフレームとの第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定することとを行わせ、前記キーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する特定の画像フレームに対応する、コンピュータ可読記憶デバイス。
【請求項２４】
前記カメラ姿勢が、前記プロセッサの第1の処理スレッドの一部として推定され、前記精細化されたカメラ姿勢が、前記プロセッサの第2の処理スレッドの一部として推定され、前記第1の処理スレッドおよび前記第2の処理スレッドが並列に実行される、請求項23に記載のコンピュータ可読記憶デバイス。
【請求項２５】
前記命令が、前記プロセッサによって実行されたとき、さらに前記プロセッサに、前記一連の画像フレームに基づいて3次元点群を生成させ、前記3次元点群を生成するレートが、前記一連の画像フレームを受信するレートに実質的に等しい、請求項23に記載のコンピュータ可読記憶デバイス。
【請求項２６】
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するための手段と、
前記第1の画像フレームと第2の画像フレームとの第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定するための手段であって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定するための手段と、
前記第1の画像フレームとキーフレームとの第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定するための手段とを含み、前記キーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する特定の画像フレームに対応する、装置。
【請求項２７】
前記第1の画像フレームと前記第2の画像フレームとの前記第1の比較を実行するための手段と、
前記第1の画像フレームと前記キーフレームとの前記第2の比較を実行するための手段とをさらに含む、請求項26に記載の装置。
【請求項２８】
キーフレームのセットから前記キーフレームを選択するための手段をさらに含む、請求項26に記載の装置。
【請求項２９】
前記第1の画像フレームに基づいて新しいキーフレームを生成するための手段をさらに含む、請求項26に記載の装置。
【請求項３０】
前記精細化されたカメラ姿勢および前記一連の画像フレームを使用して3次元点群を生成するための手段をさらに含む、請求項26に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、姿勢推定のシステムおよび方法に関する。
【背景技術】
【０００２】
技術が進歩した結果、コンピューティングデバイスがより小型に、そしてより高性能になった。たとえば、小型で軽量であり、ユーザによって容易に携帯される、モバイルフォンおよびスマートフォンなどのワイヤレス電話、タブレットおよびラップトップコンピュータを含む、様々なポータブルパーソナルコンピューティングデバイスが現存している。これらのデバイスは、ワイヤレスネットワークを介して音声およびデータパケットを通信することができる。さらに、そのようなデバイスの多くは、デジタルスチールカメラ、デジタルビデオカメラ、デジタルレコーダおよびオーディオファイルプレーヤなどの追加の機能を組み込む。また、そのようなデバイスは、インターネットへのアクセスに使用することができるウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行可能命令を処理することができる。このように、これらのデバイスは、かなりのコンピューティング能力を含み得る。
【０００３】
ワイヤレス電話および類似のデバイスは、画像を取り込むために使用されることがある。そのような画像は、対象物の3次元(3D)モデルを生成するために使用されることがある。一般に、3Dモデルを生成するためのデバイスは、リアルタイムまたは準リアルタイムで動作することはない。そうではなく、一連の画像フレームが(たとえば、カメラで)取り込まれ、その後、一連の画像フレームは(たとえば、コンピュータなどの処理システムにおいて)グループとして処理されて3Dモデルを生成する。一連の画像フレームが、完全な3Dモデルを生成するには不十分または不適切である場合、そのような不十分さまたは不適切さは、3Dモデルを生成するための処理した後まで気づかれないことがある。この場合、不完全なまたは不正確な3Dモデルが生成されることがある。より完全なまたは正確な3Dモデルを生成するために、ユーザは、対象物の新しい一連の画像を取り込んで、新しい一連の画像を処理しなければならないことがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
取り込まれた一連の画像フレームに基づいて3D点群および/または3Dモデルのリアルタイムまたは準リアルタイム生成を可能にするシステムおよび方法が開示される。一連の画像フレームは、画像取り込みデバイス(たとえば、モバイルフォンのカメラ)によって取り込まれてよい。画像取り込みデバイスのユーザ(たとえば、事業者)は、画像取り込みデバイスを対象物の周りで移動させて対象物の一連の画像フレームを取り込んでよい。
【０００５】
3D点群および/または3Dモデルは、並列処理スレッドを使用して一連の画像フレームを処理することによって、電子デバイス(たとえば、カメラを含むモバイルフォン)において生成されてよい。たとえば、第1の処理スレッドおよび第2の処理スレッドは、画像フレームのリアルタイムまたは準リアルタイム処理を可能にするために並列で処理されてよい。たとえば、第1の処理スレッドがフレーム対フレームからカメラ姿勢推定を実行し、第2の処理スレッドがフレーム対キーフレームからカメラ姿勢推定を実行することができる。
【０００６】
特定の実施形態では、第1の処理スレッドおよび第2の処理スレッドが、異なる解像度を有する画像を処理し得る。たとえば、第1の処理スレッドは、低解像度(たとえば、クォータ-クォータビデオグラフィックスアレイ(Quarter-Quarter Video Graphics Array)(QQVGA)解像度)の画像フレームを処理して、1つまたは複数の画像フレームのカメラ姿勢を推定することがある。第2の処理スレッドは、特定の画像フレームのカメラ姿勢を精細化するために、より高い解像度(たとえば、クォータビデオグラフィックスアレイ(Quarter Video Graphics Array)(QVGA)解像度)の画像フレームおよび基準画像フレーム(すなわち、キーフレーム)を処理することがある。たとえば、カメラ姿勢は、QVGA画像フレームと特定のキーフレームとを比較して、QVGA画像フレームがQQVGA解像度にダウンサンプリングされるときに失われることがある追加の情報を決定することによって精細化され得る。特定のキーフレームは、複数のキーフレームのうちの1つであってよく、複数のキーフレームの各々は、対象物に対して対応するロケーションにおける基準画像フレームとしての働きをすることがある。一連の画像フレームが取り込まれている間に、1つまたは複数の追加のキーフレームが生成されて、カメラ姿勢推定値を精細化し、3D点群および/または3Dモデルを生成する。追加のキーフレームは、対象物に対して異なるロケーションにおける一連の画像フレームと比較するために、追加の基準画像フレームとしての働きをすることがある。
【０００７】
特定の実施形態では、方法は、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイス(たとえば、カメラ)から受信するステップを含む。同じく、方法は、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢をプロセッサにおいて推定するステップを含み、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。方法は、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢をプロセッサにおいて推定するステップをさらに含み、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。
【０００８】
別の特定の実施形態では、装置がメモリおよびプロセッサを含む。プロセッサは、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するように構成される。同じく、プロセッサは、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢を推定するように構成され、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。プロセッサは、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢を推定するようにさらに構成され、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。
【０００９】
別の特定の実施形態では、コンピュータ可読記憶デバイスは、プロセッサによって実行されたとき、プロセッサに、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信させる命令を含む。同じく、命令は、プロセッサに、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢を推定させ、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。命令は、さらに、プロセッサに、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢を推定させ、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。
【００１０】
さらに別の特定の実施形態では、装置は、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するための手段を含む。同じく、装置は、第1の画像フレームと第2の画像フレームとの第1の比較に基づいて、第1の画像フレームに対応するカメラ姿勢を推定するための手段を含み、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。装置は、第1の画像フレームとキーフレームとの第2の比較に基づいて、第1の画像フレームに対応する精細化されたカメラ姿勢を推定するための手段をさらに含み、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。
【００１１】
開示する実施形態のうちの少なくとも1つによって提供される1つの特定の利点は、一連の画像フレーム内の隣接する画像フレーム間の比較に基づくカメラ姿勢の推定、および特定の画像フレームとキーフレームとの間の比較に基づく精細化されたカメラ姿勢の推定が、別々の処理スレッドを使用して同時に(たとえば、並列に)実行されてもよい。カメラ姿勢推定およびカメラ姿勢精細化の並列処理によって、3D点群または3Dモデルを生成するために一連の画像フレームをリアルタイムまたは準リアルタイム処理が可能になる。少なくとも1つの開示する実施形態によって提供される別の特定の利点は、対象物の画像フレームの取り込みに対してリアルタイムまたは準リアルタイムで対象物の3D点群を生成する能力である。
【００１２】
本開示の他の態様、利点および特徴については、以下の節、すなわち図面の簡単な説明、発明を実施するための形態および特許請求の範囲を含む本出願全体を精査すれば明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】一連の画像フレームに基づいて点群データを生成するためのシステムの特定の例示的な実施形態のブロック図である。
【図２】点群データを生成するためのシステムの別の特定の例示的な実施形態のブロック図である。
【図３】準リアルタイムで生成されている点群データのこま撮り描写の図を含む、画像取り込みデバイスによって取り込まれているシーンの斜視図である。
【図４】一連の画像フレームに基づいてカメラ姿勢または新しいキーフレームを生成するステップを示す図である。
【図５】新しいキーフレームを生成するための追加の画像フレームの使用を含む、図4の図に続く図である。
【図６】新しいキーフレームを生成するための追加の画像フレームの使用を含む、図4および図5の図に続く図である。
【図７】一連の画像フレームのうちの2つの画像フレームの間のピクセル強度エラーおよび/または深度エラーを決定するステップを示す図である。
【図８】新しいキーフレームを生成する方法の特定の例示的な実施形態のフロー図である。
【図９】一連の画像フレーム内の画像フレームのカメラ姿勢を推定する方法の特定の例示的な実施形態のフロー図である。
【図１０】コスト関数に基づいて特定の画像フレームのカメラ姿勢を推定する方法の特定の例示的な実施形態のフロー図である。
【図１１】カメラ姿勢を推定する方法および精細化されたカメラ姿勢を推定する方法の特定の例示的な実施形態の流れ図である。
【図１２】一連の画像フレームに基づいてカメラ姿勢推定を実行するように構成されたプロセッサを含むコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１４】
図1を参照すると、システム100の特定の例示的な実施形態が示されている。システム100は、プロセッサ106およびメモリ112に通信可能に結合されたカメラ102を含む。例示的な実施形態では、カメラ102、プロセッサ106およびメモリ112は、モバイルフォン、タブレットコンピュータ、パーソナルコンピュータ、メディアプレーヤデバイスなどのコンピューティングデバイスまたは電子デバイス内に一体化されてよい。
【００１５】
特定の実施形態では、システム100は、画像取り込みデバイス(たとえば、カメラ102)が対象物の周りを移動されるときの画像取り込みプロセス中に、点群データ116(たとえば、3D点群または3Dモデル)を生成するように構成される。カメラ102(または別の画像取り込みデバイス)は、一連の画像フレーム104を取り込むように構成されてよい。カメラ102が一連の画像フレーム104を取り込む間に、カメラ102は、対象物の周りを(たとえば、対象物の周りを歩き得るユーザによって)移動されることがある。図示の実施形態では、一連の画像フレーム104は5つの画像フレームを含むが、一連の画像フレーム104は、5つより多い画像フレームを含んでよく、または5つより少ない画像フレームを含んでもよい。各画像フレームは複数のピクセルを含み、各ピクセルは、深度値、測光値(たとえば、赤-緑-青(RGB)の値、強度値、クロマ値、飽和値、など)、またはそれらの組合せなど、ピクセル値のセットに対応する。
【００１６】
カメラ102は、一連の画像フレーム104をプロセッサ106の比較器108に供給してよい。特定の実施形態では、プロセッサ106は、単一のコアプロセッサであってよい。別の実施形態では、プロセッサ106は複数の処理コアを含んでよく、比較器108は、複数の処理コアのうちの少なくとも1つのコアに対応してよい(たとえば、少なくとも1つのコアによって実行されてよい)。別の特定の実施形態では、プロセッサ106は、並列に動作する複数のプロセッサを含んでよく、複数のプロセッサの各プロセッサは、比較器108などの対応する比較器を含む。例示的な実施形態では、一連の画像フレーム104内の各画像フレームは、ソース解像度(たとえば、高精細度(HD)などの高解像度)において取り込まれてよい。
【００１７】
図示しないが、一連の画像フレーム104のうちの1つまたは複数の画像フレームは、プロセッサ106によってバッファリング(たとえば、記憶)されてよい。たとえば、プロセッサ106は、ソース解像度(たとえば、高精細度(HD)などの高解像度)において一連の画像フレーム104のうちの特定の画像フレームを受信してよく、ソース解像度における画像フレームを、プロセッサ106に結合されるかまたは含まれるランダムアクセスメモリ(RAM)などのメモリに記憶してもよい。追加または代替として、プロセッサ106は、一連の画像フレーム104のうちの1つまたは複数の画像フレームをダウンサンプリングまたはリサイズするように構成されてよい。たとえば、プロセッサ106は、特定の画像フレームのうちの1つまたは複数の(ソース解像度と比較して)低減された解像度の画像フレームを生成してよい。説明のために、ソース解像度が高解像度(たとえば、HD解像度)であるとき、プロセッサ106は、特定の画像フレームの中解像度(たとえば、クォータビデオグラフィックスアレイ(QVGA)解像度)画像フレームおよび/または低解像度(たとえば、クォータ-クォータビデオグラフィックスアレイ(QQVGA)解像度)画像フレームを生成してよい。いくつかの実装形態では、プロセッサ106は、様々な(たとえば、異なる)解像度における特定の画像フレームを受信してよい。プロセッサ106は、プロセッサ106に含まれるかまたは結合されるメモリ(たとえば、RAM)に、特定の画像フレームのうちの1つまたは複数の低減された解像度の画像フレームを記憶(たとえば、バッファリング)するように構成されてよい。プロセッサ106においてまたはプロセッサ106によってバッファリングされる様々な解像度における画像フレームは、比較器108および/またはキーフレーム生成器110など、プロセッサ106の1つまたは複数の構成要素にアクセス可能であることがある。特定の画像フレームの1つまたは複数の低減された解像度バージョンは、プロセッサ106が特定の画像フレームを受信することに応答して生成されてよく、または特定の画像フレームの1つまたは複数の低減された解像度バージョンがプロセッサ106の構成要素によって必要とされる(たとえば、要求される)ときに必要に応じて生成されてよい。
【００１８】
比較器108は、プロセッサ106の1つまたは複数のハードウェアデバイス(たとえば、論理回路)、プロセッサ106によって実行可能なソフトウェア命令(たとえば、プログラムコード)、またはそれらの組合せを使用して実装されてよい。特定の実施形態では、比較器108は、一連の画像フレーム104内の画像フレームを、互いに対しておよび/またはメモリ112内に記憶されている1つまたは複数のキーフレーム114に対して、ピクセルごとの比較を実行するように構成される。特定の実施形態では、以下でさらに説明するように、比較器108は、ピクセルごとの比較を実行して重複率(overlap ratio)109を決定する。ピクセルごとの比較には、第1の画像フレーム121のピクセル値(たとえば、深度値、測光値(たとえば、赤-緑-青(RGB)値)、またはそれらの組合せ)と第2の画像フレーム122またはキーフレーム114のピクセル値との間の比較を含むことがある。
【００１９】
重複率109は、一連の画像フレーム104のうちの2つ以上の画像フレームの類似度の数値表現であり得る。たとえば、数値表現は、「類似する」ピクセルの数をピクセルの総数で割ったものであり得る。2つ以上の画像フレームのピクセルは、ピクセルが完全に一致する(たとえば、特定のピクセル値に対して同じ数値を有する)とき、またはピクセルが実質的に一致する(たとえば、第1のピクセルの数値が、第2のピクセルの対応する数値の差のしきい値内にある)ときに、類似しているものと決定され得る。代替実施形態では、重複率109は、一連の画像フレーム104のうちの2つ以上の画像フレームの間の相違点の数値表現であり得る。たとえば、重複率109は、「相違している」ピクセル(たとえば、上述のように類似していないピクセル)の数をピクセルの総数で割ったものであり得る。特定の実施形態では、重複率109を決定するステップは、ピクセルごとの比較に基づいて画像フレームとキーフレームとの間の複数の差の値を決定するステップと、(重複率のしきい値131に対応し得る)差のしきい値を満足する複数の差の値の数を決定するステップとを含み、重複率109は、その数を画像フレームのピクセルの総数で割ったものに基づく。
【００２０】
キーフレーム生成器110は、一連の画像フレーム104のうちの最初に取り込まれたフレーム(たとえば、第1の画像フレーム121)に基づいて新しいキーフレーム111を生成してよい。たとえば、一連の画像フレーム104に関連付けられたキーフレーム114がメモリ112に記憶されていないとき、第1の画像フレーム121(または第1の画像フレーム121のバージョン)が、デフォルトによって新しいキーフレーム111として使用されてよい。特定の生成されたキーフレームは、キーフレーム114のうちの1つとして記憶されてよく、取り込まれた画像フレームと同じ解像度を有してよく、または取り込まれた画像フレームと異なる解像度を有してもよい(たとえば、第1の画像フレーム121に基づいて生成されたキーフレーム111が、第1の画像フレーム121と異なる解像度を有してもよい)。たとえば、特定のキーフレームは、ソース解像度(たとえば、第1の画像フレーム121のオリジナルの解像度)における第1の画像フレーム121より低いメモリフットプリントまたは処理フットプリントを使用しながら、第1の画像フレーム121からの少なくともいくらかの詳細さを保持する、中解像度(たとえば、クォータビデオグラフィックスアレイ(QVGA)解像度)の画像フレームであってよい。特定の実施形態では、プロセッサ106(たとえば、キーフレーム生成器110)は、第1の画像フレーム121をダウンサンプリングまたはリサイズして、新しいキーフレーム111を生成するように構成されてよい。
【００２１】
追加または代替として、キーフレーム生成器110は、1つまたは複数のキーフレーム114のうちの特定のキーフレームおよび一連の画像フレーム104のうちの取り込まれた画像(たとえば、第2の画像122)に基づいて新しいキーフレーム111を生成してよい。説明のために、1つまたは複数のキーフレーム114の各々は、(たとえば、以下で説明するように、カメラ姿勢推定値を精細化するために)一連の画像フレーム104の画像フレームのうちの1つまたは複数に対する基準画像フレームとしての働きをするように利用可能であり得る。たとえば、比較器108は、1つまたは複数のキーフレーム114のうちの(第1の画像フレーム121に基づく)特定のキーフレームと第2の画像フレーム122とを比較して、第2の画像フレーム122に関連付けられたカメラ姿勢を精細化するために使用されてよい。一連の画像フレーム104の追加の画像フレームが受信されると、比較器108は、受信された画像フレームの各々またはそれの低減された解像度バージョンと、メモリ112内の1つまたは複数のキーフレーム114のうちの前に記憶されたキーフレームとのピクセルごとの比較を実行してよい。特定の実施形態では、ピクセルごとの比較は、特定のキーフレームの対応するピクセルに類似する、第2の画像フレーム122のピクセルを決定する。比較器108は、類似するピクセルの数に基づいて重複率109を計算し得る。たとえば、比較器108は、第2の画像フレーム122と特定のキーフレームとの間で類似するピクセルの数を、第2の画像フレーム122内のピクセルの総数で割ったものに基づいて、重複率109を生成し得る。代替実施形態では、重複率109は、第1の画像フレーム121と第2の画像フレーム122との間で相違するピクセルの数を、ピクセルの総数で割ったものの数値表現であってもよい。同じく、第2の画像フレーム122は、重複率109を計算するために、第1の画像フレーム121に整列するように修正されてもよい(たとえば、図6を参照しながら説明するように曲げられるかまたは変形されてもよい)。
【００２２】
キーフレーム生成器110は、重複率109と重複率しきい値131とを比較するように構成されてよい。重複率しきい値131は、百分率、ピクセル数を単位として、または何らかの他の方式で表されてよい。たとえば、重複率しきい値131は、重複率109が百分率として表されるときに百分率であってよい。特定の実施形態では、重複率109は、ピクセルの総数のうちの類似するピクセルの百分率であり、重複率しきい値131は、その百分率以上において、画像フレームがキーフレームに実質的に類似する(たとえば、90%の類似度である)と見なされる百分率である。重複率しきい値131の値は、画像フレームが実質的に類似するかどうかの決定における感度を増加または減少させるように(たとえば、ユーザによって)調整されてよい。特定の実施形態では、重複率109が重複率しきい値131以上であるときに、重複率109は、重複率しきい値131を満足し得る。重複率109が重複率しきい値131以上であるとき、画像フレームおよびキーフレームは実質的に類似しており、キーフレーム生成器110は、メモリ112に記憶するために新しいキーフレーム111(たとえば、別のキーフレーム)を生成することはない。別の特定の実施形態では、重複率109が重複率しきい値131以下であるときに、重複率109は、重複率しきい値131を満足する。重複率109が重複率しきい値131以下であるとき、画像フレームおよびキーフレームは実質的に類似しておらず、キーフレーム生成器110は、メモリ112に記憶するために新しいキーフレーム111(たとえば、別のキーフレーム)を生成する。新しいキーフレーム111を生成するステップは、一連の画像フレーム104のうちのソースフレームのコピーを生成するステップを含んでよい。特定の実施形態では、コピーは、ソースフレーム(たとえば、HD解像度)に対して低減された解像度(たとえば、QVGA解像度)を有する。
【００２３】
特定の実施形態では、画像フレームおよびキーフレームが実質的に類似しないことが、重複率109と重複率しきい値131との比較によって示されるとき、第1の画像フレーム121を取り込む間のカメラ102の第1の位置および第2の画像フレーム122を取り込む間のカメラ102の第2の位置など、カメラ102の第1の位置と第2の位置との間に実質的な変化が発生したものと決定される。したがって、重複率109と重複率しきい値131との間の比較に基づいて、第1の画像フレーム121および第2の画像フレーム122は、異なる画像データを有する実質的に異なる画像フレームであるものと決定されてよい。第1の画像フレーム121および第2の画像フレーム122が、実質的に異なる画像フレームであるものと決定されるとき、キーフレーム生成器110は、第2の画像フレーム122に基づいて新しいキーフレーム111を生成してよい。代替として、画像フレームおよびキーフレームが実質的に類似していることが、重複率109と重複率しきい値131との比較によって示されるとき、キーフレーム114および第2の画像フレーム122は実質的に同じ画像データを含むので、第2の画像フレーム122に基づいて新しいキーフレーム111が生成されることはない。キーフレーム114および第2の画像フレーム122が実質的に類似しているとき、新しいキーフレーム111の生成は不要である。生成され、比較のために利用可能な新しいキーフレームの数を低減することによって、一連の画像フレーム104は、より効率的に処理され得る。
【００２４】
一般に、一連の画像フレーム104のすべての画像フレームが、重複率しきい値131に基づいてキーフレームに類似するものと決定されることになるとは限らない。第4の画像フレーム123など、特定の画像フレームが取り込まれて比較器108に供給されるとき、カメラ102は、1つまたは複数のキーフレーム114のうちの特定のキーフレーム(たとえば、第1の画像フレーム121に基づく特定のキーフレーム)に対応する画像フレームが取り込まれたときとは実質的に異なる位置にあることがある。その結果、特定のキーフレームと第4の画像フレーム123との間の比較に対応する重複率109が決定され、重複率しきい値131と比較されて、第4の画像フレーム123および特定のキーフレームが類似しているかどうかが示され得る。したがって、第4の画像フレーム123および特定のキーフレームが、比較に基づいて類似していないものと決定されたとき、第4の画像フレーム123に基づく新しいキーフレーム111が生成され、メモリ112に記憶される。第4の画像フレーム123に基づいて新しいキーフレーム111が生成されると、一連の画像フレーム104のうちの第4の画像フレーム123に続く受信された画像フレームが、そのような画像フレーム(またはそのような画像フレームの低減された解像度バージョン)と、第4の画像フレーム123に基づいて生成された新しいキーフレーム111との追加のピクセルごとの比較を実行するために、比較器108によって使用されてよい。したがって、一連の画像フレーム104内の最初に受信された画像フレームが、キーフレームとして指定され、メモリ112に記憶された後、比較器108によって実行される比較が、メモリ112内で「直近に生成された」キーフレーム(たとえば、キーフレーム114のタイムスタンプに基づいて最後に生成されたキーフレーム)に対して実行される。代替として、比較は、メモリ112内の前に生成されたキーフレームのセットに対して比較器108によって実行されてもよい。たとえば、メモリ112は、一連の画像フレーム104の処理中に前に生成されたキーフレームを記憶してもよい。いくつかの実施形態では、図2を参照しながらさらに説明するように、前のキーフレームのうちの1つが選択され、比較器108によって実行される比較において使用されてもよい。
【００２５】
特定の実施形態では、新しいキーフレーム111は、一連の画像フレーム104のうちの画像フレームに対して低減された解像度において生成される。低減された解像度の画像フレームは、ダウンサンプリング、リサイジングおよび/または他の動作を介して画像フレームから生成されてよい。たとえば、第2の画像フレーム122がHD画像フレームであり、新しいキーフレーム111が中解像度画像フレーム(たとえば、QVGA解像度、たとえば320×240ピクセル)であってよい。キーフレーム生成器110は、新しく生成されたキーフレーム、たとえば新しいキーフレーム111をメモリ112に送信してよい。特定の実施形態では、メモリ112は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ディスクベースメモリ、ソリッドステートメモリ、またはそれらの任意の組合せを含むことがある。図1に示す実施形態では、新しいキーフレーム111は、メモリ112内のキーフレーム114のうちの1つとして記憶されてよい。一連の画像フレーム104に関連付けられた1つまたは複数のキーフレーム114は、カメラ102の動作中にメモリ112に記憶されてよい。特定の実施形態では、複数のキーフレーム114の数は、一連の画像フレーム104内の画像フレームの総数より少ない。複数のキーフレーム114は、シーン周りの異なる相対位置からのカメラ姿勢を精細化するために複数の基準画像フレームを提供してよい。特定の実施形態では、メモリ112内のキーフレーム114の各々は、比較器108による比較において基準画像フレームとして選択され、使用されるように利用可能である。たとえば、いくつかの実装形態では、図2を参照しながら本明細書でさらに説明されるように、メモリ112は複数のキーフレーム114を含んでよく、記憶されている複数のキーフレーム114のうちの最も類似するキーフレームが選択されて、一連の画像フレーム104のうちの特定の画像フレームとの比較に使用されてよい。追加または代替として、メモリ112に記憶され、一連の画像フレーム104のセットに対応する1つまたは複数のキーフレーム114は、一連の画像フレーム104に基づいて生成された各キーフレームを含んでよく、または一連の画像フレーム104に関連付けられたキーフレーム114のすべてよりも少ないキーフレームを含んでよい。たとえば、1つまたは複数のキーフレーム114は、1つまたは複数のキーフレーム114が大きいメモリフットプリントをもたらさないように、直近に生成されたキーフレームの数など、キーフレームの特定の数を含んでよい。
【００２６】
新しいキーフレーム111が生成されるとき、および追加の画像フレームがカメラ102から受信されるとき、プロセッサ106は、点群データ116を生成してよい。特定の実施形態では、点群データ116は、座標(たとえば、x、yおよびz座標または他の座標)の集合または特定の形状を表すための式など、3D空間内の点(たとえば、座標)に関するデータを含む。点群データ116の生成が、図3を参照しながらさらに説明される。例示的な実施形態では、点群データ116は、一連の画像フレーム104内の1つまたは複数の画像フレーム、メモリ112に記憶されている1つまたは複数のキーフレーム、図2を参照しながら本明細書で説明するようにプロセッサ106によって計算されたカメラ姿勢情報、またはそれらの任意の組合せの中に含まれるデータに基づいて生成されてよい。たとえば、点群データ116は、一連の画像フレーム104の取り込みに対してリアルタイムまたは準リアルタイムで生成されてよく、例示的な実施形態では、本明細書でさらに説明するように、点群データ116は、カメラ102によって取り込まれた1つまたは複数の対象物の3次元(3D)モデルを生成する間に使用されてよい。特定の実施形態では、3Dモデルは、3Dモデルの一部である3D空間内の点を識別するために座標を使用するなど、点群データ116を補間することに基づいて生成される。
【００２７】
動作中、プロセッサ106は、カメラ102から一連の画像フレーム104のうちの第1の画像フレーム121を受信してよい。第1の画像フレーム121は一連の画像フレーム104のうちの第1の(たとえば、最初の)画像フレームであり、したがって一連の画像フレーム104に関連付けられたキーフレームはメモリ112に記憶されていないので、プロセッサ106は、第1の画像フレーム121に基づいて第1のキーフレーム(たとえば、1つまたは複数のキーフレーム114のうちの第1のキーフレーム)を生成してよい。第1のキーフレームを生成するステップは、第1の画像フレーム121をダウンサンプリングして、第1の画像フレーム121が取り込まれた解像度より低い解像度(たとえば、QVGA)バージョンの第1の画像フレーム121を生成するステップを含んでよい。
【００２８】
第1の画像フレーム121を受信した後、プロセッサ106は、カメラ102から第2の画像フレーム122を受信してよい。プロセッサ106は、第2の画像フレーム122と第1のキーフレームとの間の重複率109を決定してよい。重複率109は、第2の画像フレーム122のピクセル値(たとえば、色値、強度値、またはそれらの任意の組合せ)と、キーフレーム114の対応するピクセル値とのピクセルごとの比較に基づいてよい。いくつかの実装形態では、重複率109を決定するために使用される第2の画像フレーム122の特定の解像度は、第1のキーフレームと同じ解像度(たとえば、ともにQVGA)であってもよい。他の実装形態では、重複率109を決定するために使用される第2の画像フレーム122の特定の解像度は、第1のキーフレームの解像度と異なってもよく、第2の画像フレーム122および/または第1のキーフレームの1つまたは複数のピクセル値は、ピクセルごとの比較を実行して重複率109を生成するために補間されてもよい。
【００２９】
重複率109は、重複率しきい値131と比較されてよく、第2の画像フレーム122はキーフレーム114に実質的に類似していないとの決定に基づいて、第2の画像フレーム122は、メモリ112に記憶するための新しいキーフレーム111を生成するために使用されてよい。代替として、比較に基づいて第2の画像フレーム122がキーフレーム114に実質的に類似しているものと決定されると、第2の画像フレーム122は、新しいキーフレーム111を生成するために使用されることはない。第2の画像フレーム122に基づいて新しいキーフレーム111を生成するステップは、第2の画像フレーム122をダウンサンプリングしてより低い解像度(たとえば、QVGA)バージョンの第2の画像フレーム122を生成するステップか、または前にダウンサンプリングされたバージョンの第2の画像フレーム122を使用するステップを含んでよい。
【００３０】
図1のシステム100は、生成されたキーフレームの数が一連の画像フレーム104の画像フレームの数より小さくなるように、キーフレームを選択的に生成するために使用されてよい。加えて、画像フレームを処理してキーフレームを識別するステップは、一連の画像フレーム104の受信された画像の特定の解像度と比較して、低減された解像度において実行されてよい。キーフレーム114を生成するためにより低い解像度を使用することによって、点群データ116の生成および他の処理動作は、一連の画像フレーム104が取り込まれる速度に対してリアルタイムまたは準リアルタイムで実行され得る。したがって、図1のシステムは、一連の画像フレーム104の取り込み速度に対してリアルタイムまたは準リアルタイムで点群データおよび/または3Dモデルを生成するために使用されてよい。
【００３１】
図2を参照すると、キーフレームを選択的に生成するように動作可能なシステム200の別の特定の実施形態が示されている。システム200は、カメラ202、プロセッサ206およびメモリ212を含む。プロセッサ206は、画像フレームバッファ207と、1つまたは複数のカメラ姿勢推定器208と、1つまたは複数の比較器220と、キーフレーム生成器210とを含む。画像フレームバッファ207は、カメラ202から一連の画像フレーム204を受信するように構成されたキャッシュメモリおよび/またはディスクベースメモリに対応し得る。画像フレームバッファ207からの画像フレームは、複数のフレーム(たとえば、第1の画像フレーム221および第2の画像フレーム222)が1つまたは複数のカメラ姿勢推定器208に同時に供給され得るように、1つまたは複数のカメラ姿勢推定器208に供給されてよい。
【００３２】
1つまたは複数のカメラ姿勢推定器208は、一連の画像フレーム204内の1つまたは複数の画像フレーム、および/またはキーフレーム生成器210によって生成された1つまたは複数のキーフレームに対するカメラ姿勢情報を生成してよい。いくつかの実施形態では、キーフレーム生成器210は、図1のキーフレーム生成器110に対応し得る。カメラ姿勢推定値は、特定の画像フレームを取り込む間のカメラ202の相対位置(たとえば、「原点」座標位置など、最初の位置に対する位置の差に関連する座標)および方位(たとえば、「オリジン」角度など、最初の角度に対する差に関連する角度)の近似的値であってよい。特定の実施形態では、1つまたは複数のカメラ姿勢は、特定の画像フレームを特定のロケーションに関連付ける、全地球測位衛星(GPS)データなどのロケーションデータ(たとえば、ジオタギング)とは無関係に推定される。カメラ姿勢推定値は、特定の画像フレームのピクセル値とともに、点群データ216を生成するために使用されてよい。点群データ216は、図1の点群データ116に対応し得る。例示的な実施形態では、1つまたは複数のカメラ姿勢推定器208は、複数の画像フレーム(たとえば、第1の画像フレーム221および第2の画像フレーム222)の間の比較に基づいて、特定の画像フレームに対するカメラ姿勢を推定する。たとえば、1つまたは複数のカメラ姿勢推定器208は、一連の画像フレーム204内の低解像度(たとえば、QQVGA解像度、すなわち160×120)バージョンの画像フレームを比較してよい。低解像度バージョンの画像フレームの比較に基づいて、1つまたは複数のカメラ姿勢推定器208は、カメラ姿勢推定値250を生成してよい。本明細書で説明するように、カメラ姿勢推定値250は、2つの画像フレームの後者(たとえば、第2の画像フレーム222)に対応する。説明のために、一連の画像フレーム204のうちの第1の画像フレーム221は、「オリジン」として使用されてよく、一連の画像フレーム204の後続の画像フレームの各々は、第1の画像フレーム221(たとえば、「オリジン」)に対して決定された、対応するカメラ姿勢を有してよい。たとえば、第1の画像フレーム121に関連付けられたカメラ姿勢は、ゼロの相対角度を有する基準点(たとえば、点ゼロ)として表されてよい。この例では、後続のカメラ姿勢推定値は、実空間内の相対運動を示す座標(たとえば、距離のおおよその変化を示す(x、y、z)座標)およびカメラ102の傾きの相対変化を示す角度(たとえば、10°の角度変化)として表されてよい。
【００３３】
例示的な実施形態では、2つの画像フレームのうちの(たとえば、後で受信されたおよび/または生成された)後者に対応するカメラ姿勢推定値250を生成するステップは、2つの画像フレームの間の、カメラ202とカメラ202によって取り込まれている対象物(および/またはシーン)との相対運動に基づいて、後者の取り込まれたフレームを曲げること(すなわち、変形させること)によって曲げられたフレームを生成するステップを含む。図6を参照しながら本明細書で説明するように、後者の取り込まれたフレームは曲げられて、先に取り込まれた画像フレームに、より類似するようになる。
【００３４】
特定の実施形態では、画像フレーム対画像フレームの比較に基づいて1つまたは複数のカメラ姿勢推定器208によって生成されたカメラ姿勢推定値250は、「最初の」カメラ姿勢に対応し得る。カメラ姿勢推定値250は、低解像度(たとえば、QQVGA)動作に基づいて生成されたことによって、「最初」であり得る。「最初の」カメラ姿勢は、後続の動作の間に精細化されてよい。いくつかの実施形態では、「最初の」カメラ姿勢推定値は、特定の画像フレームに対して「初期」であり得、後続の画像フレームは、それら自体のそれぞれの「最初の」カメラ姿勢推定値を有してよい。1つまたは複数の比較器220は、本明細書でさらに説明するように、キーフレーム選択器242を使用してキーフレーム214から最も類似するキーフレームを選択してよい。いくつかの実施形態では、キーフレーム選択器242は、カメラ姿勢推定値250を使用して、識別されたキーフレーム252を選択し、識別されたキーフレーム252は、カメラ姿勢推定値250に関して最も類似するキーフレームである。識別されたキーフレーム252(またはそれの表示)は、カメラ姿勢推定器208に供給されてよい。
【００３５】
カメラ姿勢推定器208は識別されたキーフレーム252を受信し、カメラ姿勢推定値250など、最初のカメラ姿勢推定値を精細化してよい。たとえば、カメラ姿勢推定器208は、QVGAバージョンの画像フレームと、一連の画像フレーム204内の前の画像フレームに対応する、QVGA解像度バージョンの識別されたキーフレーム252と比較することによって、画像フレームに対応する精細化されたカメラ姿勢推定値256を推定するように構成されてよい。いくつかの実施形態では、1つまたは複数の比較器220は、図1の比較器108に対応し得る。
【００３６】
説明のために、一連の画像フレーム204内の画像フレームのうちの1つに対応する最初のカメラ姿勢推定値が決定された後、1つまたは複数のカメラ姿勢推定器208は、画像フレームに対応する精細化されたカメラ姿勢推定値256を、その画像フレームとキーフレーム生成器210によって前に生成されたキーフレーム214とを比較することによって生成し、直近に生成されたキーフレームまたは最も類似するキーフレーム(識別されたキーフレーム252など)として、メモリ212に記憶してよい。メモリ212は、図1のメモリ112に対応し得る。画像フレーム223に対する最初のカメラ姿勢推定値250を決定するステップは、画像フレーム223と、画像フレーム222または別の画像フレームなどの前の画像フレームとを比較するステップを含んでよい。1つまたは複数の比較器220は、メモリ212からキーフレーム214を選択するように構成されたキーフレーム選択器242を含む。いくつかの実施形態では、キーフレーム選択器242は、カメラ姿勢推定値250と、1つまたは複数のキーフレーム214のうちの特定のキーフレームの対応するカメラ姿勢推定値との間の類似性に基づいてキーフレーム214を選択してよい。いくつかの実施形態では、カメラ姿勢推定値250と、特定のキーフレームの対応するカメラ姿勢推定値との間の類似性は、相対ロケーション、方位、またはそれらの組合せ(たとえば、座標および角度)の間の比較に基づくことがある。
【００３７】
たとえば、カメラ姿勢推定値250に関して最も類似するキーフレームを識別するために、キーフレーム選択器242は、カメラ姿勢推定値の相対位置(たとえば、座標)および方位(たとえば、角度)と、キーフレーム214に関連付けられた1つまたは複数のカメラ姿勢とを比較してよい。説明のために、キーフレーム214の各キーフレームは、キーフレームを生成するために使用された一連の画像フレーム204のうちの特定の画像フレームに対応するカメラ姿勢に関連付けられてよい。たとえば、第1のキーフレームは、上記で説明した「オリジン」に関連付けられてよい。第2のキーフレームは、第1の画像フレーム221に後続する特定の画像フレームに基づいて生成されてよく、第2のキーフレームは、特定のキーフレームのカメラ姿勢に関連付けられてよい。
【００３８】
キーフレーム選択器242は、カメラ姿勢推定値250の相対位置および/または相対角度に基づいてキーフレーム214の類似のキーフレーム(または最も類似するキーフレーム)を識別してよい。たとえば、キーフレーム選択器242は、カメラ姿勢推定値250の相対位置と、特定のキーフレームに関連付けられた特定のカメラ姿勢の相対位置との間の第1の差を決定してよい。追加または代替として、キーフレーム選択器242は、カメラ姿勢推定値250の相対角度と、特定のカメラ姿勢の相対角度との間の第2の差を決定してよい。キーフレーム選択器242は、キーフレーム214の各々に対する第1の差および/または第2の差を決定し、最も小さい差の値(たとえば、相対位置における最小の差および/または相対角度における最小の差)をもたらすキーフレームを、最も類似するキーフレームとして選択してよい。
【００３９】
別の例として、キーフレーム選択器242が、相対位置しきい値および/または相対距離しきい値を満足する特定のキーフレームを識別するまで、キーフレーム選択器242は、カメラ姿勢推定値250と、(キーフレーム214のうちの)1つまたは複数のキーフレームのセットとを逐次比較してよい。たとえば、キーフレーム選択器242は、第1のキーフレーム(たとえば、直近に生成されたキーフレーム)に対して第1の差および/または第2の差を決定してよい。キーフレーム選択器242は、第1の差と相対位置しきい値とを比較してよく、および/または第2の差と相対角度しきい値とを比較してもよい。第1の差が相対位置しきい値を満足する(そのしきい値以下である)場合、および/または第2の差が相対角度しきい値を満足する(そのしきい値以下である)場合、キーフレームは、カメラ姿勢推定値250に類似している(たとえば、最も類似している)として識別されてよく、カメラ姿勢推定値250は、別のキーフレーム(たとえば、直近に生成されたキーフレームより前に生成されたキーフレーム)と比較されることはない。1つまたは複数のキーフレームのセットのうちのいずれもが、相対位置しきい値および/または相対角度しきい値を満足しない場合、最も類似しているキーフレームは選択されず、キーフレーム生成器210は、カメラ姿勢推定値250に対応する画像フレームに基づいて新しいキーフレームを生成するように指示されてよい。
【００４０】
画像フレーム223に対する精細化されたカメラ姿勢推定値256を生成するステップは、画像フレーム223と、画像フレーム223に対応するカメラ姿勢推定値250のカメラ姿勢に最も類似するカメラ姿勢を有するキーフレームなど、メモリ212に記憶されている特定のキーフレームとを比較するステップを伴うことがある。いくつかの実施形態では、1つまたは複数のキーフレーム214の各キーフレームは、対応する精細化されたカメラ姿勢推定値256に関連付けられる。
【００４１】
1つまたは複数の比較器220は、一連の画像フレーム204内のQVGA解像度バージョンの特定の画像フレームと、メモリ212内の最も類似するキーフレームとのピクセルごとの比較を実行してよい。特定の画像フレームとキーフレームとの比較に基づいて、1つまたは複数の比較器220は重複率209を生成し、その重複率209をキーフレーム生成器210に供給してよい。キーフレーム生成器210は、重複率209と重複率しきい値とを比較して、特定の画像フレームおよびキーフレームが類似している(たとえば、新しいキーフレームが生成されない)かどうか、または特定の画像フレームおよびキーフレームが相違している(たとえば、追加のキーフレームが生成される)かどうかを決定してよい。たとえば、特定の画像フレームおよびキーフレームが相違しているとき、キーフレーム生成器210は、新しいキーフレーム211を生成してよい。いくつかの実施形態では、重複率209および重複率しきい値は、それぞれ、図1の重複率109および重複率しきい値131に対応する。
【００４２】
重複率209は、本明細書で説明する曲げられた比較に基づいて、1つまたは複数の比較器220によって生成されてよい。代替として、カメラ姿勢推定値250は、本明細書で説明するように、画像フレームを、先に取り込まれた(または生成された)キーフレームにより類似するように曲げることに基づいて生成されてよい。別の代替実施形態では、重複率209は、精細化されたカメラ姿勢推定値256とキーフレーム214の対応するカメラ姿勢推定値との間の比較に基づいて生成されてよい。重複率209は、百分率、ピクセル数を単位として、または何らかの他の方式で表されてよい。1つまたは複数の比較器220はピクセル強度エラーを決定してよく、ピクセル強度エラーは、曲げられたフレームの1つまたは複数のピクセルと、画像フレームのペア内の先に取り込まれたフレーム(またはキーフレーム114のうちの1つ)の1つまたは複数のピクセルとの間のピクセル強度における差を示す。次いで、1つまたは複数のカメラ姿勢推定器208は、曲げられたフレームの1つまたは複数のピクセルと、先に取り込まれたフレーム(または先のキーフレーム)の1つまたは複数のピクセルとの間の深度の差を示す深度エラーを決定してよい。ピクセル強度および深度のエラーを決定する例について、図7を参照しながらさらに説明する。ピクセル強度エラーおよび深度エラーは、後者の取り込まれた画像フレームに対するカメラ姿勢を推定するために使用されてよい。
【００４３】
特定の実施形態では、最初のカメラ姿勢情報は、プロセッサ206の第1のスレッドによって生成され、精細化されたカメラ姿勢は、プロセッサ206の第2の処理スレッドによって推定されてよい。第1の処理スレッドおよび第2の処理スレッドは、プロセッサ206によって並列に(たとえば、同時に)実行されてよい。第1の処理スレッドは、プロセッサ206の第1の処理コアを含むかまたはそれに対応してよく、第2の処理スレッドは、プロセッサ206の第2の処理コアを含むかまたはそれに対応してよい。並列処理は、第2の処理スレッドが、上記で説明したカメラ姿勢の最初の推定を妨げることなく、カメラ姿勢を精細化する動作を実行することを可能にする。例示的な実施形態では、1つまたは複数のカメラ姿勢推定器208は、プロセッサ206の異なる処理スレッドによって実行されるように構成される。異なる処理スレッドは、複数のプロセッサコア内で並列に、および/または単一のプロセッサコア内で時間多重方式で実行されてよい。第1および第2の処理スレッドは、単一のプロセッサ(たとえば、プロセッサ206)内に含まれているように説明されているが、他の実装形態では、第1の処理スレッドが第1のプロセッサ内に含まれ、第2の処理スレッドが、第1のプロセッサとは別の第2のプロセッサ内に含まれてもよい。
【００４４】
1つまたは複数のカメラ姿勢推定器208は、画像フレーム間(たとえば、第1の画像フレーム221と第2の画像フレーム222との間)、または一画像フレーム(たとえば、第2の画像フレーム222)と一キーフレーム(たとえば、キーフレーム214のうちの1つ)との間の比較を実行してよい。たとえば、1つまたは複数のカメラ姿勢推定器208は、一連の画像フレーム204内の連続する画像フレームのペアを、ピクセルごとに、または何らかの他の方式で比較してよい。説明のために、1つまたは複数のカメラ姿勢推定器208は、第1の画像フレーム221と第2の画像フレーム222とを比較してよい。特定の実施形態では、1つまたは複数のカメラ姿勢推定器208によって実行される画像フレーム対画像フレームの比較は、ランドマークまたは他のそのような特徴(たとえば、エッジ、頂点、など)に無関係であってよく(たとえば、基づかず)、ピクセルごとに実行されることがある。たとえば、1つまたは複数のカメラ姿勢推定器208は、一連の画像フレーム204内の画像フレームにおけるランドマークを探索する代わりに、ピクセルごとの比較を実行してよい。1つまたは複数のカメラ姿勢推定器208によって実行された比較の結果は、カメラ姿勢推定値250として1つまたは複数の比較器220に供給されてよい。
【００４５】
動作中、カメラ姿勢推定器208はカメラ姿勢情報を生成し、キーフレーム生成器210は、適用可能な新しいキーフレーム211を生成してよい。プロセッサ206は、そのような情報を使用して、点群データ216を、一連の画像フレーム204の取り込みに対してリアルタイムまたは準リアルタイムで生成することができる。特定の実施形態では、1つまたは複数のカメラ姿勢推定器208によって生成されたカメラ姿勢の各々は、一連の画像フレーム204内の対応する画像フレームが取り込まれた特定の時間に対応する、カメラ202のポジショニングの近似値を示す。プロセッサ206は、一連の画像フレーム204内の1つまたは複数の追加の画像フレームをカメラ202から受信し、1つまたは複数の追加の画像フレームに基づいて、点群データ216、たとえば3次元点群を更新してよい。特定の実施形態では、3次元点群を更新するレートは、1つまたは複数の追加の画像フレームを受信するレートに実質的に等しい。第1の処理スレッドは、一連の画像フレーム204を取り込む間に動作するのに十分なレートにおいてQQVGA画像フレームを処理するように構成されてよい。したがって、点群データ216は、カメラ202の画像取り込み動作に対してリアルタイムまたは準リアルタイムで更新されてよい。点群データのそのようなリアルタイムまたは準リアルタイム生成の一例について、図3を参照しながらさらに説明する。
【００４６】
したがって、図2のシステムは、複数の解像度のフレームを処理し、キーフレームを選択的に生成し、点群データを更新して、点群/3Dモデル生成デバイスにおいてリアルタイムまたは準リアルタイム動作を実行してよい。例示的な実施形態では、カメラ202によって取り込まれた画像フレームの各々は、高解像度画像フレーム(たとえば、HD解像度)であり、メモリ212に記憶されたキーフレーム214は、中解像度フレーム(たとえば、QVGAフレーム)であり、1つまたは複数のカメラ姿勢推定器208によって実行される画像フレーム対画像フレームの比較は、低解像度(たとえば、QQVGA解像度)において実行される。例示的な実施形態では、一連の画像フレーム104内のQVGAおよびQQVGAバージョンの画像フレームは、ダウンサンプリング、リサイジング、または他の技法に基づいて生成されてよい。
【００４７】
図3を参照すると、図1のシステム100または図2のシステム200の動作の例示的な実施形態が示され、全体的に300で表される。図3では、図1のカメラ102または図2のカメラ202などの画像取り込みデバイス302が、図3に示すカップなどの対象物310の周りを経路304(たとえば、弧)に沿って移動される。画像取り込みデバイス302が経路に沿って移動する間に、画像取り込みデバイス302は、カメラ姿勢306A、306B、306C、306D、306Eおよび306Fによって図3に示される様々な位置に配置される。図3に示すカメラ姿勢306A〜306Fの数、分割、および方位は単に説明のために示されており、限定と見なされるべきではないことに留意されたい。たとえば、より多いカメラ姿勢またはより少ないカメラ姿勢が使用されてもよい。
【００４８】
経路304は、画像取り込みデバイス302が対象物310の周りをどのように移動されるかに基づく、任意の配置であってよい。画像取り込みデバイス302は、カメラ姿勢306Aに関連付けられた位置からカメラ姿勢306Fに関連付けられた位置まで経路304に沿って移動されるのにつれて、対象物310の3D点群が、図1および図2を参照しながら上記で説明したように、リアルタイムまたは準リアルタイムで生成されてよい。たとえば、経路304に沿った第1の位置において画像取り込みデバイス302の最初のカメラ姿勢を表すカメラ姿勢306Aにおいて、307Aに示すように、第1の部分的3D点群310Aが、画像取り込みデバイス302において生成され得る。画像取り込みデバイス302は、経路304に沿って移動を継続するのにつれて、追加のデータが取り込まれ、点を部分的3D点群に追加するために使用される。たとえば、コンピューティングデバイス302が経路304に沿ってカメラ姿勢306Dに関連付けられる位置まで移動すると、307Dに示すように、より完全な3D点群310Dが生成され得る。画像取り込みデバイス302がカメラ姿勢306Fに関連付けられた位置に到達した後、307Fにおいて示すように、完了した3D点群310Fが生成され得る。
【００４９】
したがって、図3は、画像取り込みデバイス302によって取り込まれた画像を使用する、画像取り込みデバイス302の動きに基づく3D点群データの準リアルタイムまたはリアルタイム生成を示す。3D点群データの完全性は、取り込まれた画像の数および画像取り込みデバイス302のポジショニングに左右されることがある。たとえば、3D点群データを生成する間、3D点群データは、(たとえば、画像取り込みデバイス302がカメラ姿勢306Fに関連付けられた位置に到達する前は)不完全であり、そのことで、追加の3D点群データが集められない場合、対象物310の不完全な3D表現の生成がもたらされることがある。説明のために、画像取り込みデバイス302が、対象物310のすべての可視アングルから対象物310の画像を取り込むのではない場合、対象物310の3D表現は不完全であることがある。この場合、対象物310の3D表現を完全なものにするかまたは3D表現のギャップを埋めるために、より多くの画像が、画像取り込みデバイス302によって取り込まれる必要がある。
【００５０】
図4を参照すると、図1のシステム100または図2のシステム200の動作に関連する図400が示されている。図4では、異なる動作レベルまたは処理スレッドが、水平方向に示されている。図4は、画像取り込み/取り出しレベル、第1の動作モード/処理スレッド、第2の動作モード/処理スレッド、およびメモリ動作レベルを含む。例示的な実施形態では、画像取り込み/取り出しレベルは、図1のカメラ102、カメラ202、画像取り込みデバイス302、またはそれらの組合せによって実行される動作に対応する。第1の動作モード/処理スレッドは、図1の比較器108によってまたは図2の比較器220によって実行される動作に対応し得る。第2の動作モード/処理スレッドは、図2の1つまたは複数の比較器220によって実行される動作に対応し得る。メモリは、図1のメモリ112または図2のメモリ212に対応し得る。
【００５１】
図4に示すように、異なる動作セグメントが、HD、QQVGAおよびQVGA解像度など、異なる解像度を有する画像データを処理するステップを伴うことがある。図4の実施形態では、画像取り込み/取り出しレベルは、高解像度(HD)データを受信、生成および/または処理し、第1の動作モード/処理スレッドは、低解像度(たとえば、QQVDA)データを受信、生成および/または処理し、第2の動作モード/処理スレッドは、中解像度(たとえば、QVDA)データを受信、生成および/または処理する。たとえば、画像取り込み/取り出しレベルは、ある時間期間にわたって一連の画像フレーム(たとえば、図4のソースフレーム:0、ソースフレーム:1、ソースフレーム:2およびソースフレーム:3)を受信してよい。第1の動作モード/処理スレッドは、ソースフレームの各々をダウンサンプリングして、カメラ姿勢推定値に使用するために対応するフレーム(たとえば図4のフレーム:0、フレーム:1、フレーム:2およびフレーム:3)を生成してよい。同様に、第2の動作モード/処理スレッドは、ソースフレームのうちの少なくともいくつかをダウンサンプリングして、キーフレーム生成のために対応するフレーム(たとえば図4のフレーム:1')を生成してよい。代替として、第2の動作モード/処理スレッドは、キーフレーム生成のためにフル解像度(たとえば、HD)におけるソースフレームを使用してよい。特定の実施形態では、ダウンサンプリングバージョンのソースフレームは、別の処理スレッドからまたは別のデバイス(たとえば、一連の画像フレームを供給するデバイス)から、第1の動作モード/処理スレッド、第2の動作モード/処理スレッド、または両方に供給されてよい。
【００５２】
ソースフレーム:0などの第1のフレーム(たとえば、一連の画像フレーム内の第1の画像フレーム)が取り込まれるかまたは受信されるとき、第1のフレームが、キーフレーム:0などのキーフレームを生成するために、自動的に使用されてよい。例示的な実施形態では、キーフレーム:0の生成は、ソースフレーム:0のQVGA解像度のコピーを作成するステップと、ソースフレーム:0のQVGA解像度のコピーをメモリに記憶するステップとを含む。第1の動作モード/処理スレッドに示すように、ソースフレームの各々は、先行するQQVGAフレームと比較され得るQQVGAフレームに対応する。たとえば、図4に示すように、フレーム:1に対するカメラ姿勢は、フレーム:1とフレーム:0との比較に基づいて決定されてよい。同様に、フレーム:2に対するカメラ姿勢は、フレーム:2とフレーム:1との比較に基づいて生成されてよく、フレーム:3に対するカメラ姿勢は、フレーム:3とフレーム:2との比較に基づいて生成されてよく、以下同様である。例示的な実施形態では、カメラ姿勢情報は、図2の1つまたは複数のカメラ姿勢推定器208を参照しながら説明したように生成され、メモリに記憶されてよい。
【００５３】
第2の動作モード/処理スレッドは、図2の1つまたは複数のカメラ姿勢推定器208を参照しながら説明したように、第1の動作モード/処理スレッドによって決定されたカメラ姿勢を精細化するステップと、図1のキーフレーム生成器110または図2のキーフレーム生成器210を参照しながら説明したように、新しいキーフレームが生成されるべきかどうかを決定するステップとを伴う。たとえば、図4に示すように、QVGA解像度におけるフレーム:1はキーフレーム:0と比較されて、図1の重複率109または図2の重複率209などの重複率が決定される。フレーム:1とキーフレーム:0との比較に基づいて、QQVGAバージョンのフレーム:1に関して決定されたカメラ姿勢が、図2を参照しながら説明したように、精細化されたカメラ姿勢推定値を生成するために精細化されてよい。次いで、精細化されたカメラ姿勢推定値は、第1の動作モード/処理スレッドによって生成された特定のフレームに関連付けられたカメラ姿勢推定値を更新するために使用される。たとえば、フレーム:1に対するカメラ姿勢推定値は、対応する精細化されたカメラ姿勢推定値を反映するように更新される。さらに、生成された重複率と、図1の重複率しきい値131などの重複率しきい値との比較によって、フレーム:1がキーフレーム:0と相違することが示されるとき、図1および図2を参照しながら説明したように、新しいキーフレームが生成されてメモリに記憶されてよい。図4に示す実施形態では、重複率と重複率しきい値との比較によって、フレーム:1がキーフレーム:0に類似していることが示されるので、新しいキーフレームは生成されない。
【００５４】
図5を参照すると、図4を参照しながら説明した動作の連続を示す図500が示されている。図5では、追加のHDソースフレームが、画像取り込みデバイスからすでに受信されている。たとえば、図5に示すように、ソースフレーム:4、ソースフレーム:5およびソースフレーム:6がすでに受信されている。第1の動作モード/処理スレッドでは、連続する画像フレームのペアが比較されて、最初のカメラ姿勢情報が生成される。選択されたQVGA処理が、第2の動作モード/処理スレッドによって実行される。たとえば、図5では、フレーム:2がフレーム:1と比較されてフレーム:2に対する最初のカメラ姿勢が生成される。しかしながら、フレーム:2は、QVGA解像度において比較されることはない。なぜならば、図4に示される、QVGA解像度のフレーム:1とQVGA解像度のキーフレーム:0との間の比較は、より高い解像度に起因して追加の処理時間がかかるからである。したがって、第2の処理スレッドは、第1の比較が完了するまで、新しいフレームを比較することはできない。したがって、図5の例では、第2の動作モード/処理スレッドは、フレーム:1を処理した後、フレーム:2ではなくフレーム:3を処理する。図4を参照しながら説明したように、キーフレーム:0は、フレーム:3と比較されて、重複率と、重複率が重複率しきい値を満足するか否かが決定され得る。比較によってキーフレーム:0およびフレーム:3が相違していることが示されるとき、新しいキーフレームが生成されてよい。たとえば、図5に示すように、フレーム:3は、キーフレーム:0とはかなり異なっており、それゆえ、キーフレーム:1で示される新しいキーフレームが、フレーム:3に基づいて生成される。フレーム:3に関連付けられたカメラ姿勢推定値が、第1の動作モード/処理スレッドにおける今後の比較に使用するために、フレーム:3に関連付けられた精細化されたカメラ姿勢推定値を反映するように更新されてよい。
【００５５】
図6を参照すると、図4および図5を参照しながら説明した動作の連続を示す図600が示されている。図6では、追加のHDソースフレームが、画像取り込みデバイスからすでに受信されている。たとえば、図6に示すように、ソースフレーム:n、ソースフレーム:n+1、ソースフレーム:n+2およびソースフレーム:n+3がすでに受信されており、ここでnは任意の非負整数であってよい。第1の動作モード/処理スレッドでは、連続する画像フレームのペアが比較されて、最初のカメラ姿勢情報が生成される。選択されたQVGA処理が、第2の動作モード/処理スレッドによって実行される。たとえば、図6では、フレーム:n+1がフレーム:nと比較されて、フレーム:n+1に対する最初のカメラ姿勢が生成される。図4および図5を参照しながら説明したように、キーフレーム:0〜キーフレーム:m、ここでmは非負整数、がフレーム:n+1と比較されて、フレーム:n+1に関連付けられた重複率が決定され得る。たとえば、キーフレーム:0は、フレーム:n+1と比較されて第1の重複率が決定され、キーフレーム:1は、フレーム:n+1と比較されて第2の重複率が決定され、キーフレーム:mは、フレーム:n+1と比較されて第3の重複率が決定され得る。第2の動作モード/処理スレッドは、第1の動作モード/処理スレッドにおいて推定されたカメラ姿勢に基づいて、キーフレーム:0からキーフレーム:mまでの間で最も類似するキーフレームを決定するように構成される。特定の実装形態では、最も類似するキーフレームは、第1の重複率から第3の重複率までの間から識別された最高の重複率の値に基づいて選択される。最高の重複率の値が重複率しきい値を満足しない場合、新しいキーフレームは生成されない。たとえば、図6に示すように、フレーム:n+1は、キーフレーム:0からキーフレーム:mまでとはかなり異なっており(それによって、重複率は重複率しきい値を満足せず)、それゆえ、キーフレーム:m+1で示される新しいキーフレームが、フレーム:n+1に基づいて生成される。フレーム:n+1に関連付けられたカメラ姿勢推定値が、第1の動作モード/処理スレッドにおける今後の比較に使用するために、フレーム:n+1に関連付けられた精細化されたカメラ姿勢推定値を反映するように更新されてよい。
【００５６】
図7を参照すると、カメラ姿勢を推定するステップの一部としてフレームエラーを決定するステップを含む動作を実行する方法の特定の実施形態が示され、全体的に700で表される。たとえば、動作は、図2の1つまたは複数の比較器220および/または図4〜図6の第1の処理スレッドによって実行されてよい。図7の実施形態では、基準画像702が、「現在の」画像704と比較される。「現在の」画像704は、カメラ姿勢情報が推定されている画像であってよい。したがって、「現在の」画像704は、直近に取り込まれた画像フレームに対応し得る。基準画像702は、前に取り込まれた画像フレームか、または前に取り込まれた画像フレームに基づいて生成/記憶されたキーフレームに対応し得る。説明のために、図5を参照すると、現在の画像704はフレーム:3に対応し、基準画像702はフレーム:2またはキーフレーム:0に対応し得る。別の例として、現在の画像704はフレーム:6に対応し、基準画像702はフレーム:5またはキーフレーム:1に対応し得る。
【００５７】
図7に示すように、現在の画像704は曲げられて、曲げられた現在の画像706が生成され得る。現在の画像704は、曲げプロセスが完了した後、曲げられた現在の画像706が、基準画像702を詳細に近似するように曲げられてよい。基準画像702は、曲げられた現在の画像706と比較されてよい。たとえば、減算演算が、基準画像702と曲げられた現在の画像706との間で実行されて、エラー画像708が生成され得る。エラー画像708は、基準画像702と曲げられた現在の画像706との間のピクセル強度および/または深度のエラーを示す。ピクセル強度および深度のエラーは、下式
【００５８】
【数１】
2017529620.tif 000003
【００５９】
で表され得るコスト関数Cにおいて使用されてよい。
【００６０】
上式において、Iは、特定の画像フレームに対応するピクセル強度画像を表す。変数Pは、特定の画像フレームに対応する深度画像から測定された3D点を表す。変数nは、深度画像からの法線(たとえば、法線値)を表す。関数π()は、カメラ投影モデルを表す。変数εは、ユークリッドse(3)空間(Euclidian se(3) space)内の6×1ベクトルを表す。関数T(ε)は、se(3)空間からSE(3)空間への変換を表す。関数
【００６１】
【数２】
2017529620.tif 000004
【００６２】
は、SE(3)変換を特定の点に適用する。
【００６３】
コスト関数Cの結果は、図2の1つまたは複数の比較器220によってコストしきい値と比較されてよい。その結果がコストしきい値を満足する場合、1つまたは複数のカメラ姿勢推定器208は、カメラ姿勢推定値を生成し、カメラ姿勢推定値を現在の画像704に関連付けてよい。その結果がコストしきい値を満足しない場合、現在の画像704は再び曲げられ、修正された曲げられた現在の画像706が生成されて、ピクセル強度および/または深度のエラーが低減される。
【００６４】
図8を参照すると、一連の画像フレームに基づいて新しいキーフレームを生成するための方法800が示されている。例示的な実施形態では、方法800は、図1のプロセッサ106または図2のプロセッサ206によって実行されてよい。
【００６５】
方法800は、802において、一連の画像フレームのうちの第1の画像フレームを受信するステップを含む。たとえば、一連の画像フレームは、図1のカメラ102、図2のカメラ202、または図3の画像取り込みデバイス302などの画像取り込みデバイスによって取り込まれてよい。方法800は、804において、第1の画像フレームとキーフレームとの間の重複率を決定するステップをさらに含む。重複率の決定は、第1の画像フレームの第1のピクセル値とキーフレームの第2のピクセル値とのピクセルごとの比較に基づく。たとえば、重複率の決定は、図1の比較器108または図2の1つまたは複数の比較器220によって実行されてよい。重複率は、第1の画像フレームとキーフレームとの間で類似しているピクセルの比、値、または百分率に関連付けられてよい。代替として、重複率は、第1の画像とキーフレーム画像との間で相違しているピクセルの比、値、または百分率に関連付けられてよい。
【００６６】
同じく、方法800は、806において、重複率と重複率しきい値とを比較するステップを含む。たとえば、比較は、図1のキーフレーム生成器110または図2のキーフレーム生成器210によって実行されてよい。方法800は、808において、重複率が重複率しきい値を満足しないことに基づいて、第1の画像フレームを使用して新しいキーフレームを生成するステップをさらに含む。たとえば、重複率しきい値が、第1の画像フレームとキーとの間で類似すべきピクセルのしきいの比、しきいの値またはしきいの百分率に対応するとき、重複率しきい値は、重複率が重複率しきい値以上であることが比較によって示されるときに満足され得る。別の例として、重複率しきい値が、第1の画像フレームとキーとの間で相違すべきピクセルのしきいの比、しきいの値またはしきいの百分率に対応するとき、重複率しきい値は、重複率が重複率しきい値以下であることが比較によって示されるときに満足され得る。新しいキーフレームは、図1のメモリ112に記憶されている新しいキーフレーム111または図2のメモリ212に記憶されている新しいキーフレーム211であってよい。したがって、図8の方法800は、キーフレームの選択的生成を可能にし得、生成されるキーフレームの数が、取り込まれた画像フレームの数より少なくなることが可能になる。より少ないキーフレームを生成することによって、点群データの生成および他の処理動作がより速く(たとえば、画像フレームが取り込まれている速度に対してリアルタイムまたは準リアルタイムで)実行され得る。
【００６７】
図9を参照すると、画像フレームのカメラ姿勢推定値を精細化するための方法900が示されている。例示的な実施形態では、方法900は、図1のプロセッサ106または図2のプロセッサ206によって実行される場合がある。
【００６８】
方法900は、902において、第1の画像フレームと第2の画像フレームとを受信するステップを含む。第1および第2の画像フレームは、図1のカメラ102、図2のカメラ202、または図3の画像取り込みデバイス302などの画像取り込みデバイスから受信されてよい。方法900は、904において、低解像度(たとえば、QQVGA解像度)における第1の画像フレームを使用して第2の画像フレームのカメラ姿勢推定値を計算するステップを含む。カメラ姿勢推定値の生成は、図2の1つまたは複数のカメラ姿勢推定器208によって実行されてよい。カメラ姿勢推定値は、図2の1つまたは複数の比較器220によって実行されてよい、第1の画像フレームと第2の画像フレームとの比較によってもたらされる情報を含むかまたはその情報に基づくことがある。方法900は、906において、第1の画像フレームとキーフレームとの間の重複率を計算するステップをさらに含む。重複率は、図1の比較器108または図2の1つまたは複数の比較器220において計算されてよい。
【００６９】
同じく、方法900は、908において、重複率が重複率しきい値より大きいかどうかを決定するステップを含む。決定は、図1のキーフレーム生成器110または図2のキーフレーム生成器210によって実行されてよい。重複率が重複率しきい値より大きい(たとえば、第1のフレームおよびキーフレームが比較的類似している)場合、方法900は、910において、中解像度(たとえば、QVGA解像度)におけるキーフレームを使用して第2の画像フレームのカメラ姿勢推定値を精細化するステップを含む。第2の画像フレームのカメラ姿勢推定値を精細化した後、方法900は、第1の画像フレームに基づいて新しいキーフレームを生成することなく、新しいセットの画像フレームを用いて繰り返される。特定の実施形態では、新しいセットの画像フレームは、第2の画像フレームと、第2の画像フレームに後続する第3の画像フレームとを含む。
【００７０】
重複率が重複率しきい値より小さい場合、方法900は、912において、中解像度(たとえば、QVGA解像度)における第1の画像フレームを使用して第2の画像フレームのカメラ姿勢推定値を精細化するステップを含む。いくつかの実装形態では、908において、重複率が重複率しきい値に等しいものと決定されると、方法は910に進んでよい。他の実装形態では、908において、重複率が重複率しきい値に等しいものと決定されると、方法は912に進んでよい。方法900は、914において、第1の画像フレームに基づいて新しいキーフレームを生成するステップと、カメラ姿勢推定値を、図1のメモリ112または図2のメモリ212などのメモリに記憶するステップとをさらに含む。新しいキーフレームを生成した後、方法900は、新しいセットの画像フレームを用いて繰り返されてよい。特定の実施形態では、新しいセットの画像フレームは、第2の画像フレームと、第2の画像フレームに後続する第3の画像フレームとを含む。追加の画像フレームが受信されないとき、方法900は終了してよい。
【００７１】
図10を参照すると、特定の画像フレームに対してカメラ姿勢推定値を設定するための方法1000が示されている。例示的な実施形態では、方法1000は、図1のプロセッサ106または図2のプロセッサ206によって実行される場合がある。
【００７２】
方法1000は、1002において、第1の画像フレームのピクセルのサブセットの各ピクセルの法線を計算するステップを含む。各ピクセルの法線は、各ピクセルに対応する接平面に直交する方向を示すベクトルである。ピクセルのサブセットは、高解像度(たとえば、HD)を有する第1の画像フレームの低解像度(たとえば、QQVGA解像度)コピーなど、第1の画像フレームのダウンサンプリングまたはリサイズされたコピーを含んでよい。同じく、方法1000は、1004において、第1の画像フレームを曲げるステップと、得られた曲げられた画像フレームの対応するピクセルと第2の画像フレーム(またはキーフレーム)とを比較するステップとを含む。たとえば、第1の画像フレームは図7の「現在の」画像704に対応し、第2の画像フレームは図7の基準画像702に対応し、曲げられた画像フレームは図7の曲げられた現在の画像706に対応し得る。方法1000は、1006において、曲げられた第1の画像フレームと第2の画像フレーム(またはキーフレーム)との間のピクセル強度エラーおよび深度エラーを計算するステップをさらに含む。ピクセル強度エラーまたは深度エラーは、図7のエラー画像708によって示されてよい。
【００７３】
方法1000は、1008において、ピクセル強度エラーおよび深度エラーに基づいてコスト関数を計算するステップをさらに含む。コスト関数は、図7に関して本明細書で説明した式によって表されてよい。方法1000は、1010において、コスト関数の結果がコストしきい値を満足するかどうかを決定するステップをさらに含む。その結果がコストしきい値を満足しない場合、方法1000は1004に戻り、第1の画像フレームが再び曲げられる。その結果がコストしきい値を満足する場合、1012において、カメラ姿勢推定値が設定される。
【００７４】
図11を参照すると、カメラ姿勢を推定し、精細化されたカメラ姿勢を推定するための方法1100が示されている。方法1100は、1102において、一連の画像フレームのうちの第1の画像フレームを取り出すステップを含む。一連の画像フレームは、カメラ102、カメラ202、または画像取り込みデバイス302などの画像取り込みデバイスを用いて取り込まれてよい。同じく、方法1100は、1104において、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢を推定するステップを含み、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。一実施形態では、カメラ姿勢を推定するステップは、図2の1つまたは複数のカメラ姿勢推定器208、図4〜図6の第1の動作モード/処理スレッド、またはそれらの任意の組合せによって実行されてよい。方法1100は、1106において、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢を推定するステップをさらに含む。キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応し得る。一実施形態では、精細化されたカメラ姿勢を推定するステップは、図2の1つまたは複数のカメラ姿勢推定器208、図4〜図6の第2の動作モード/処理スレッド、またはそれらの任意の組合せによって実行されてよい。
【００７５】
図8の方法800、図9の方法900、図10の方法1000、図11の方法1100、またはそれらの組合せは、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、中央処理装置(CPU)などの処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。一例として、図8の方法800、図9の方法900、図10の方法1000、および図11の方法1100のうちの1つまたは複数は、図12に関して説明するように、命令を実行するプロセッサによって実行されてよい。
【００７６】
図12を参照すると、ワイヤレス通信デバイスなど、電子デバイスの特定の例示的な実施形態のブロック図が示され、全体的に1200で表される。デバイス1200は、メモリ1232に結合された、デジタル信号プロセッサ(DSP)1210などのプロセッサを含む。プロセッサは、図1のプロセッサ106または図2のプロセッサ206を含むかまたは対応することができる。メモリは、図1のメモリ112および/または図2のメモリ212を含むかまたは対応することができる。カメラ1262は、カメラコントローラ1260を介してプロセッサ1210に結合されてよい。例示的な実施形態では、カメラ1262は、図1のカメラ102、図2のカメラ202、または図3の画像取り込みデバイス302に対応する。1つまたは複数の比較器1250は、プロセッサ1210内の1つまたは複数のハードウェアデバイス、プロセッサ1210によって実行可能なソフトウェア命令、またはそれらの組合せを使用して実装されてよい。例示的な実施形態では、1つまたは複数の比較器1250は、図1の比較器108に対応し、図2の1つまたは複数の比較器208に対応し、および/または図6〜図9の方法に従って動作することができる。1つまたは複数の比較器1250は、カメラ姿勢推定論理回路1252および/またはキーフレーム生成論理回路1254を使用してプロセッサ1210によって分析または処理されるべき比較結果(たとえば、複数の画像フレーム間の重複率)を提供してよい。
【００７７】
メモリ1232は、図1〜図11を参照しながら説明した1つまたは複数の動作のうちの全部または一部を実行するためにコンピュータ実行可能命令1256を記憶する、非一過性または非一時的コンピュータ可読媒体であってよい。たとえば、命令1256は、プロセッサ1210によって実行されたとき、プロセッサ1210に、一連の画像フレームのうちの第1の画像フレームを受信することと、第1の画像フレームとキーフレームとの間の、第1の画像フレームの第1のピクセル値とキーフレームの第2のピクセル値とのピクセルごとの比較に基づく、重複率を決定することと、重複率と重複率しきい値とを比較することと、重複率がしきい値を満足しないにことに基づいて第1の画像フレームを使用して新しいキーフレームを生成することとを行わせる命令を含んでよい。重複率がしきい値を満足する場合、新しいキーフレームは生成されない。新しいキーフレームが生成される場合、新しいキーフレームは、キーフレーム1258としてメモリ1232に記憶されてよい。カメラ姿勢推定論理回路1252によって生成されたカメラ姿勢推定値は、カメラ姿勢推定値1259として記憶されてよい。
【００７８】
本開示の実施形態によれば、図1のメモリ112、図2のメモリ212、または図12のメモリ1232などのコンピュータ可読記憶デバイスが開示される。コンピュータ可読記憶デバイスは、図1のプロセッサ106、図2のプロセッサ206、または図12のプロセッサ1210などのプロセッサによって実行されたとき、プロセッサに、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信させる命令を含む。一連の画像フレームは、図1の一連の画像フレーム104または図2の一連の画像フレーム204を含むかまたはそれに対応することができる。同じく、命令は、プロセッサに、第1の画像フレームと第2の画像フレームとを比較することによって第1の画像フレームに対応するカメラ姿勢を推定させ、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。カメラ姿勢は、図2のカメラ姿勢推定値250を含むかまたはそれに対応することができる。命令は、さらに、プロセッサに、第1の画像フレームとキーフレームとを比較することによって第1の画像フレームに対応する精細化されたカメラ姿勢を推定させ、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。精細化されたカメラ姿勢は、図2の精細化されたカメラ姿勢推定値256を含むかまたはそれに対応することができる。
【００７９】
図12は、デジタル信号プロセッサ1210に結合されたディスプレイコントローラ1226およびディスプレイ1228をも示す。コーダ/デコーダ(コーデック)1234も、デジタルシグナルプロセッサ1210に結合することができる。スピーカ1236およびマイクロフォン1238をコーデック1234に結合することができる。
【００８０】
図12は、ワイヤレスインターフェース1240がデジタル信号プロセッサ1210およびアンテナ1242に結合され得ることも示す。特定の実施形態では、プロセッサ1210、ディスプレイコントローラ1226、カメラコントローラ1260、メモリ1232、コーデック1234、およびワイヤレスインターフェース1240は、システムインパッケージまたはシステムオンチップデバイス1222に含まれる。特定の実施形態では、入力デバイス1230および電源1244がシステムオンチップデバイス1222に結合される。その上、ある特定の実施形態では、図12に示されるように、ディスプレイ1228、入力デバイス1230、スピーカ1236、マイクロフォン1238、アンテナ1242、カメラ1262、および電源1244は、システムオンチップデバイス1222の外部にある。しかしながら、ディスプレイ1228、入力デバイス1230、スピーカ1236、マイクロフォン1238、アンテナ1242、カメラ1262、および電源1244の各々は、インターフェースまたはコントローラのようなシステムオンチップデバイス1222の構成要素に結合され得る。
【００８１】
説明する実施形態に関連して、一連の画像フレームのうちの第1の画像フレームを受信するための手段を含んでよいシステムが開示される。画像を受信するための手段は、図1のカメラ102、図2のカメラ202、図3の画像取り込みデバイス302、図12のカメラ1262、一連の画像フレームのうちの第1の画像フレームを受信するように構成された1つまたは複数の他のデバイスもしくは回路、またはそれらの任意の組合せを含んでよい。同じく、システムは、新しいキーフレームを生成するための手段を含んでよい。新しいキーフレームを生成するステップは、第1の画像フレームとキーフレームとの間の、第1の画像フレームの第1のピクセル値とキーフレームの第2のピクセル値とのピクセルごとの比較に基づく、重複率を決定するステップと、重複率と重複率しきい値とを比較するステップと、重複率が重複率しきい値を満足しないことに基づいて第1の画像フレームを使用して新しいキーフレームを生成するステップとを含む。たとえば、新しいキーフレームを生成するための手段は、図1のプロセッサ106、図1のキーフレーム生成器110、図2のプロセッサ206、図2のキーフレーム生成器210、図12のプロセッサ1210(またはキーフレーム生成論理回路1254など、それらの構成要素)、第1の画像フレームとキーフレームとの間の重複率を決定するように構成された1つまたは複数の他のデバイスまたは回路、あるいはそれらの任意の組合せを含んでよい。
【００８２】
説明する実施形態に関連して、装置は、一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するための手段を含んでよい。受信するための手段は、図1の比較器108、図1のキーフレーム生成器110、図2の画像フレームバッファ207、図2の1つまたは複数のカメラ姿勢推定器208、図12のカメラコントローラ1260、一連の画像フレームのうちの1つの画像フレームを受信するように構成された1つまたは複数の他の構造、デバイスもしくは回路、またはそれらの任意の組合せを含んでよい。同じく、装置は、第1の画像フレームと第2の画像フレームとの第1の比較に基づいて、第1の画像フレームに対応するカメラ姿勢を推定するための手段を含んでよく、第2の画像フレームは、一連の画像フレーム内で第1の画像フレームに先行する。カメラ姿勢を推定するための手段は、図2の1つまたは複数のカメラ姿勢推定器208、図12のカメラ姿勢推定論理ユニット1252、カメラ姿勢を推定するように構成された1つまたは複数の他の構造、デバイスもしくは回路、またはそれらの任意の組合せを含んでよい。
【００８３】
装置は、第1の画像フレームとキーフレームとの第2の比較に基づいて、第1の画像フレームに対応する精細化されたカメラ姿勢を推定するための手段をさらに含んでよく、キーフレームは、一連の画像フレーム内で第2の画像フレームに先行する特定の画像フレームに対応する。精細化されたカメラ姿勢を推定するための手段は、図2の1つまたは複数のカメラ姿勢推定器208、図12のカメラ姿勢推定論理ユニット1252、カメラ姿勢を推定するように構成された1つまたは複数の他の構造、デバイスもしくは回路、またはそれらの任意の組合せを含んでよい。
【００８４】
当業者には、さらに、本明細書において開示されている実施形態に関連して説明されている様々な実例論理ブロック、構成、モジュール、回路およびアルゴリズムステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェアまたはそれらの組合せとして実現することができることが認識されよう。様々な実例構成要素、ブロック、構成、モジュール、回路およびステップは、上では一般にそれらの機能に関して説明されている。そのような機能が、ハードウェアとして実現されるか、プロセッサ実行可能命令として実現されるかは、特定の用途およびシステム全体に課される設計制約によって決まる。当業者は、説明された機能を特定の適用例ごとに様々な方法で実現することができるが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００８５】
本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラム可能読取り専用メモリ(PROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野において既知の任意の他の形の非一時的記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態では、記憶媒体は、プロセッサと一体である場合がある。プロセッサおよび記憶媒体は特定用途向け集積回路(ASIC)内に存在する場合がある。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替形態では、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別の構成要素として存在する場合がある。
【００８６】
開示された実施形態の上の記載は、当業者が開示された実施形態を作るまたは使用することを可能にするように提供される。これらの実施形態に対する様々な変更は、当業者には容易に明らかになり、本明細書において規定された原理は、本開示の範囲から逸脱することなく、他の実施形態に適用されてもよい。したがって、本開示は、本明細書において示される実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と一致する可能な最も広い範囲を与えられるべきである。
【符号の説明】
【００８７】
100  システム
102  カメラ
104  一連の画像フレーム
106  プロセッサ
108  比較器
109  重複率
110  キーフレーム生成器
111  新しいキーフレーム
112  メモリ
114  キーフレーム
116  点群データ
121  第1の画像フレーム
122  第2の画像フレーム
123  第4の画像フレーム
131  重複率しきい値
200  システム
202  カメラ
204  一連の画像フレーム
206  プロセッサ
207  画像フレームバッファ
208  カメラ姿勢推定器
209  重複率
210  キーフレーム生成器
211  新しいキーフレーム
212  メモリ
214  キーフレーム
216  点群データ
220  比較器
221  第1の画像フレーム
222  第2の画像フレーム
223  画像フレーム
242  キーフレーム選択器
250  カメラ姿勢推定値
252  識別されたキーフレーム
256  精細化されたカメラ姿勢
300  システムの動作
302  画像取り込みデバイス
304  経路
306A  カメラ姿勢
306B  カメラ姿勢
306C  カメラ姿勢
306D  カメラ姿勢
306E  カメラ姿勢
306F  カメラ姿勢
307A  部分的3D点群の図
307D  部分的3D点群の図
307F  完了した3D点群の図
310  対象物
310A  部分的3D点群
310D  部分的3D点群
310F  完了した3D点群
400  システムに関連する図
500  400に続く図
600  500に続く図
700  フレームエラーを決定する方法の実施形態
702  基準画像
704  現在の画像
706  曲げられた現在の画像
708  エラー画像
1200  電子デバイスの実施形態
1210  デジタル信号プロセッサ(DSP)
1222  システムオンチップデバイス
1226  ディスプレイコントローラ
1228  ディスプレイ
1230  入力デバイス
1232  メモリ
1234  コーダ/デコーダ(コーデック)
1236  スピーカ
1238  マイクロフォン
1240  ワイヤレスインターフェース
1242  アンテナ
1244  電源
1250  比較器
1252  カメラ姿勢推定論理回路
1254  キーフレーム生成論理回路
1256  コンピュータ実行可能命令
1258  キーフレーム
1259  カメラ姿勢推定値
1260  カメラコントローラ
1262  カメラ
【図１】
2017529620.tif 000005
【図２】
2017529620.tif 000006
【図３】
2017529620.tif 000007
【図４】
2017529620.tif 000008
【図５】
2017529620.tif 000009
【図６】
2017529620.tif 000010
【図７】
2017529620.tif 000011
【図８】
2017529620.tif 000012
【図９】
2017529620.tif 000013
【図１０】
2017529620.tif 000014
【図１１】
2017529620.tif 000015
【図１２】
2017529620.tif 000016
【手続補正書】
【提出日】平成29年3月22日(2017.3.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するステップと、
前記第1の画像フレームと第2の画像フレームとを第1の解像度において比較することによって、前記第1の画像フレームに対応するカメラ姿勢をプロセッサにおいて推定するステップであって、前記第2の画像フレームが、前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定するステップと、
前記推定されたカメラ姿勢に基づいて選択されたキーフレームのセットからキーフレームを選択するステップと、
前記第1の画像フレームと前記選択されたキーフレームとを前記第1の解像度より高い第2の解像度において比較することによって、前記第1の画像フレームに対応する精細化されたカメラ姿勢を前記プロセッサにおいて推定するステップとを含み、前記選択されたキーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する画像フレームに対応する、方法。
【請求項２】
前記カメラ姿勢を推定するステップが、前記カメラ姿勢を前記プロセッサの第1の処理スレッドの一部として前記推定するステップを実行するステップを含み、前記精細化されたカメラ姿勢を推定するステップが、前記精細化されたカメラ姿勢を前記プロセッサの第2の処理スレッドの一部として前記推定するステップを実行するステップを含む、請求項1に記載の方法。
【請求項３】
前記プロセッサが、処理スレッドを並列に実行するように構成され、前記第1の処理スレッドおよび前記第2の処理スレッドが並列に実行される、請求項2に記載の方法。
【請求項４】
前記第1の画像フレームに対応する前記カメラ姿勢を推定するステップが、
前記第1の画像フレームの第1の取り込みと前記第2の画像フレームの第2の取り込みとの間の、前記画像取り込みデバイスの相対運動の推定値に基づいて前記第1の画像フレームを変換することによって、曲げられたフレームを生成するステップと、
前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間のピクセル強度の差を示すピクセル強度エラーを決定するステップと、
前記第2の画像フレームの前記1つまたは複数のピクセルの法線値に基づいて深度エラーを決定するステップとを含み、前記深度エラーが、前記曲げられたフレームの前記1つまたは複数のピクセルと前記第2の画像フレームの前記1つまたは複数のピクセルとの間の深度の差を示す、請求項1に記載の方法。
【請求項５】
前記第1の画像フレームに対応する前記精細化されたカメラ姿勢を推定するステップが、
前記第1の画像フレームの第1の取り込みと前記キーフレームの第2の取り込みとの間の、前記画像取り込みデバイスの相対運動の推定値に基づいて前記第1の画像フレームを変換することによって、曲げられたフレームを生成するステップと、
前記曲げられたフレームの1つまたは複数のピクセルと前記キーフレームの1つまたは複数のピクセルとの間のピクセル強度の差を示すピクセル強度エラーを決定するステップと、
前記キーフレームの前記1つまたは複数のピクセルの法線値に基づいて深度エラーを決定するステップとを含み、前記深度エラーが、前記曲げられたフレームの前記1つまたは複数のピクセルと前記キーフレームの前記1つまたは複数のピクセルとの間の深度の差を示す、請求項1に記載の方法。
【請求項６】
前記第1の画像フレームと前記キーフレームとの間の、前記第1の画像フレームの第1のピクセル値と前記キーフレームの第2のピクセル値とのピクセルごとの比較に基づく、重複率を前記プロセッサにおいて決定するステップと、
前記重複率と重複率しきい値とを比較して比較結果を生成するステップと、
前記第1の画像フレームおよび前記キーフレームが相違していることを示す前記比較結果に基づいて新しいキーフレームを生成するステップとをさらに含む、請求項1に記載の方法。
【請求項７】
前記新しいキーフレームを生成するステップが、メモリ内の前記第1の画像フレームに対応するコピー画像フレームを生成するステップを含み、前記コピー画像フレームを前記新しいキーフレームとして指定するステップをさらに含む、請求項6に記載の方法。
【請求項８】
前記第1のピクセル値が、深度値、測光値、またはそれらの組合せを含む、請求項6に記載の方法。
【請求項９】
前記精細化されたカメラ姿勢および前記一連の画像フレームに基づいて3次元点群を生成するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
前記一連の画像フレームのうちの1つまたは複数の追加の画像フレームを前記画像取り込みデバイスから受信するステップと、
前記1つまたは複数の追加の画像フレームに基づいて前記3次元点群を更新するステップとをさらに含み、前記3次元点群を更新するレートが、前記1つまたは複数の追加の画像フレームを受信するレートに実質的に等しいレートを含む、請求項9に記載の方法。
【請求項１１】
前記カメラ姿勢が、前記第1の画像フレームが取り込まれていることに基づいて特定の時間における、前記画像取り込みデバイスの位置の近似値を示す、請求項1に記載の方法。
【請求項１２】
前記画像取り込みデバイスが、前記第2の解像度より高い第3の解像度において前記第1の画像を取り込む、請求項1に記載の方法。
【請求項１３】
プロセッサと、
命令を記憶するメモリとを備え、前記命令が、前記プロセッサに、
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信することと、
前記第1の画像フレームと第2の画像フレームとの、第1の解像度における第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定することであって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定することと、
前記推定されたカメラ姿勢に基づいて選択されたキーフレームのセットからキーフレームを選択することと、
前記第1の画像フレームと前記選択されたキーフレームとの、前記第1の解像度より高い第2の解像度における第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定することとを行わせることを、前記プロセッサによって実行可能であり、前記選択されたキーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する画像フレームに対応する、装置。
【請求項１４】
前記プロセッサが、前記カメラ姿勢を前記プロセッサの第1の処理スレッドの一部として前記推定することを実行し、前記プロセッサが、前記精細化されたカメラ姿勢を前記プロセッサの第2の処理スレッドの一部として前記推定することを実行する、請求項13に記載の装置。
【請求項１５】
前記命令が、前記プロセッサに、
前記画像取り込みデバイスの位置と前記第2の画像フレームに対応する座標との間の相対運動の推定値に基づいて前記第1の画像フレームを変換することと、
前記変換された第1の画像に基づいて、曲げられたフレームを生成することとを行わせることをさらに実行可能である、請求項13に記載の装置。
【請求項１６】
前記命令が、前記プロセッサに、前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間のピクセル強度の差を示す、ピクセル強度エラーを決定させることをさらに実行可能である、請求項15に記載の装置。
【請求項１７】
前記命令が、前記プロセッサに、前記第2の画像フレームの1つまたは複数のピクセルの法線値に基づいて深度エラーを決定させることをさらに実行可能であり、前記深度エラーが、前記曲げられたフレームの1つまたは複数のピクセルと前記第2の画像フレームの1つまたは複数のピクセルとの間の深度の差を示す、請求項15に記載の装置。
【請求項１８】
前記命令が、前記プロセッサに、前記第1の画像フレームとキーフレームとの間の重複率を決定させることをさらに実行可能である、請求項13に記載の装置。
【請求項１９】
前記重複率が、前記第1の画像フレームの第1のピクセル値と前記キーフレームの第2のピクセル値とのピクセルごとの比較に基づく、請求項18に記載の装置。
【請求項２０】
前記命令が、前記プロセッサに、前記重複率と重複率しきい値との比較に基づく結果を生成させることをさらに実行可能である、請求項18に記載の装置。
【請求項２１】
前記命令が、前記プロセッサに、前記第1の画像フレームが前記キーフレームに類似していないことを示す前記結果に基づいて、新しいキーフレーム生成させることをさらに実行可能である、請求項20に記載の装置。
【請求項２２】
命令を記憶するコンピュータ可読記憶デバイスであって、前記命令が、プロセッサによって実行されたとき、前記プロセッサに、
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信することと、
前記第1の画像フレームと第2の画像フレームとの、第1の解像度における第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定することであって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定することと、
前記推定されたカメラ姿勢に基づいて選択されたキーフレームのセットからキーフレームを選択することと、
前記第1の画像フレームと前記選択されたキーフレームとの、前記第1の解像度より高い第2の解像度における第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定することとを行わせ、前記選択されたキーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する画像フレームに対応する、コンピュータ可読記憶デバイス。
【請求項２３】
前記プロセッサが、前記カメラ姿勢を前記プロセッサの第1の処理スレッドの一部として推定し、前記プロセッサが、前記精細化されたカメラ姿勢を前記プロセッサの第2の処理スレッドの一部として推定し、前記第1の処理スレッドおよび前記第2の処理スレッドが並列に実行される、請求項22に記載のコンピュータ可読記憶デバイス。
【請求項２４】
前記命令が、前記プロセッサによって実行されたとき、さらに前記プロセッサに、前記一連の画像フレームに基づいて3次元点群を生成させ、前記3次元点群を生成するレートが、前記一連の画像フレームを受信するレートに実質的に等しいレートである、請求項22に記載のコンピュータ可読記憶デバイス。
【請求項２５】
一連の画像フレームのうちの第1の画像フレームを画像取り込みデバイスから受信するための手段と、
前記第1の画像フレームと第2の画像フレームとの、第1の解像度における第1の比較に基づいて前記第1の画像フレームに対応するカメラ姿勢を推定するための手段であって、前記第2の画像フレームが前記一連の画像フレーム内で前記第1の画像フレームに先行する、推定するための手段と、
前記推定されたカメラ姿勢に基づいて選択されたキーフレームのセットからキーフレームを選択するための手段と、
前記第1の画像フレームと前記選択されたキーフレームとの、前記第1の解像度より高い第2の解像度における第2の比較に基づいて前記第1の画像フレームに対応する精細化されたカメラ姿勢を推定するための手段とを含み、前記選択されたキーフレームが、前記一連の画像フレーム内で前記第2の画像フレームに先行する画像フレームに対応する、装置。
【請求項２６】
前記第1の画像フレームと前記第2の画像フレームとの前記第1の比較を実行するための手段と、
前記第1の画像フレームと前記キーフレームとの前記第2の比較を実行するための手段とをさらに含む、請求項25に記載の装置。
【請求項２７】
前記第1の画像フレームに基づいて新しいキーフレームを生成するための手段をさらに含む、請求項25に記載の装置。
【請求項２８】
前記精細化されたカメラ姿勢および前記一連の画像フレームに基づいて3次元点群を生成するための手段をさらに含む、請求項25に記載の装置。
【国際調査報告】
2017529620.tif 000017
2017529620.tif 000018
2017529620.tif 000019