以下、リアルタイム複数マルチモダリティ画像アライメント(alignment)のための技術、アプローチ、方法、装置、及びシステムに関する様々な概念、及びその実装を詳細に説明する。上記で紹介した、また以下でより詳細に説明される様々な概念は、説明された概念が実装の特定様式に限定されないので、多数のやり方のいずれかで実装することができる。特定の実装及び用途の例は、主に説明目的のために提示される。
I.概要
本ソリューションに従ったシステム及び方法は、3D画像データを医療用スキャンデータにアライメント調整又は位置合わせする(align or register)など、複数モダリティからの画像データのリアルタイムアライメントを実施するために使用することが可能である。いくつかのシステムは、位置合わせ(registration)のためにマーカーを使用することができ、これは、大量であり、被写体への貼り付け(attachment)を必要とし、又は1つ以上の画像キャプチャデバイスに干渉するおそれがある。画像処理パイプラインにおける処理要件に起因して、サブミリメートル精度のような高精度かつリアルタイムでそのようなシステムを演算することは困難であるおそれがある。さらに、様々な画像処理演算は、照明、陰影、遮閉(オクルージョン)、センサノイズ、及びカメラ姿勢(ポーズ)などの画像データに影響を与える要因に非常に敏感であるおそれがある。
本解決に従ったシステム及び方法は、様々な画像処理ソリューションを適用して、複数ソースからの画像データが処理及びアライメント調整される速度を改善することができ、これにより、マーカーを使用せずに、所望の性能ベンチマークを達成するための性能を改善し、処理ハードウェア要件を低減させることができる。本ソリューションは、精密で応答性が高く、使いやすい外科手術ナビゲーションプラットフォームを可能にすることができる。例えば、本ソリューションは、CTスキャン又はMRIスキャンなどの3Dスキャンを被写体(若しくは被写体を表す画像データ)に直接位置合わせし、さらに、器具をトラッキングし、器具の軌道を描き、スキャン上のターゲットを強調することを可能にすることができる。
図1~2は、画像処理システム100を示す。画像処理システム100は、3次元カメラなどの複数の画像キャプチャデバイス104を含むことができる。カメラは、可視光カメラ(例えば、カラー又は白黒)、赤外線カメラ、又はそれらの組合せとすることができる。各画像キャプチャデバイス104は、1つ以上のレンズ204を含むことができる。いくつかの実施形態では、画像キャプチャデバイス104は、各レンズ204のためのカメラを含むことができる。画像キャプチャデバイス104は、所定の解像度であるように、及び/又は所定の視野を有するように、選択若しくは設計することができる。画像キャプチャデバイス104は、オブジェクトを検出及びトラッキングするための解像度並びに視野を有することができる。画像キャプチャデバイス104は、パン、チルト、又はズーム機構を有することができる。画像キャプチャデバイス104は、画像キャプチャデバイス104の位置及び向きに対応するポーズ(姿勢)を有することができる。画像キャプチャデバイス104は、奥行きカメラとすることができる。画像キャプチャデバイス104は、マイクロソフト社製のキネクト(KINECT)とすることができる。
画像キャプチャデバイス104によってキャプチャされる画像の光は、1つ以上のレンズ204を介して受け取られる。画像キャプチャデバイス104は、電荷結合素子(CCD)又は相補型金属酸化膜半導体(CMOS)回路を含むがこれに限定されないセンサ回路を含むことができ、1つ以上のレンズ204を介して受け取った光を検出し、また受け取った光に基づき画像208を生成することができる。
画像キャプチャデバイス104は、例えば通信バスを介して処理回路212に画像208を提供することができる。画像キャプチャデバイス104は、画像208に対応するタイムスタンプを提供することができ、これは、画像208に対して画像処理が実行されるときに画像208の同期を容易にとることができる。画像キャプチャデバイス104は、3D画像(例えば、奥行き情報を有する画像)を出力することができる。画像208は、複数の画素を含むことができ、各画素は、空間位置データ(例えば、水平、垂直、及び奥行きデータ)、明度若しくは輝度データ、及び/又はカラーデータを割り当てられる。
各画像キャプチャデバイス104は、プラットフォーム112と結合することができる1つ以上のアーム108のそれぞれの端部と結合することができる。プラットフォーム112は、移動のための車輪と、プラットフォーム112と共に使用されるデバイスを支持するための様々な支持面とを含むことができるカートとすることができる。
アーム108は、回転、伸展、後退、又は抜き差し伸縮することによって位置及び向きを変えることができ、画像キャプチャデバイス104のポーズを制御することができる。プラットフォーム112は、処理回路212の少なくとも一部を含む処理ハードウェア116、及びユーザーインターフェース120を支持することができる。画像208は、ユーザーインターフェース120を介した提示のために処理回路212によって処理することができる。
処理回路212は、図13A及び図13Bを参照して説明したコンピューティングデバイス1300の特徴を取り入れることができる。例えば、処理回路212は、プロセッサ(複数可)及びメモリを含むことができる。プロセッサは、特定目的プロセッサ、特定用途向け集積回路(ASIC)、1つ以上のフィールドプログラマブルゲートアレイ(FPGA)、処理コンポーネント群、又は他の適切な電子処理コンポーネントとして実装することができる。メモリは、本開示で説明する様々なユーザー又はクライアントのプロセス、レイヤ、及びモジュールを完成また促進するためのデータ及びコンピュータコードを格納するための1つ以上のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置)である。メモリは、揮発性メモリ又は不揮発性メモリであるか、若しくはそれらを含むことができ、データベースコンポーネント、オブジェクトコードコンポーネント、スクリプトコンポーネント、若しくは本明細書に開示する発明概念の様々な活動及び情報構造を支援するための任意な他タイプの情報構造を含むことができる。メモリは、プロセッサに通信可能に接続され、本明細書に記載される1つ以上の処理を実行するためのコンピュータコード又は命令モジュールを含む。メモリは、プロセッサに、本明細書に記載されたシステム及び方法を実行させる様々な回路、ソフトウェアエンジン、並びに/又はモジュールを含む。
処理回路212のいくつかの部分は、プラットフォーム112から離れた1つ以上のデバイスによって設けることができる。例えば、1つ以上のサーバ、クラウドコンピューティングシステム、又はモバイルデバイス(例えば、図13A及び図13Bを参照して説明したような)は、本明細書に記載される画像処理パイプラインの様々な部分を実施するために使用することができる。
画像処理システム100は、通信回路216を含むことができる。通信回路216は、ネットワークインターフェース1318など、図13A及び図13Bを参照して説明したコンピューティングデバイス1300の特徴を実装することができる。
画像処理システム100は、1つ以上の赤外線(IR)センサ220を含むことができる。IRセンサ220は、画像処理システム100の周囲の環境における様々なデバイスからのIR信号を検出することができる。例えば、IRセンサ220は、機器をトラッキングするために機器に結合することができるIRエミッタからのIR信号を検出するために使用することができる。IRセンサ220は、画像処理システム100の他の構成要素が、本明細書で後述するように、画像処理パイプラインにおける適切な動作においてIR信号を利用できるように、画像処理システム100の他の構成要素に通信可能に結合することが可能である。
図3は、画像処理システム100が1つ以上の画像モダリティの画像データを使用して実施することができる画像処理パイプライン300を表している。画像処理システム100が高精度のリアルタイム画像アライメントを実施することを可能にし得る画像処理パイプライン300の様々な特徴について、本明細書において更に説明する。
いくつかの実施形態では、画像処理システム100が本明細書に記載される様々な機能を実施することを可能にするために、セットアップ手順を実施することができる。例えば、プラットフォーム112は、患者などの被写体に近接して位置決めすることができる。画像キャプチャデバイス104は、被写体に関する画像データを検出するために様々なポーズで位置決め及び配向させることができる。画像キャプチャデバイス104は、複数の方向から被写体に対面するように、異なるポーズで配置することができ、これにより、画像キャプチャデバイス104からの画像データを融合することによって生成される画像データの品質を向上させることができる。
305において、第1の画像データを受信することができる。第1の画像データは、CT、MRI、超音波、又はCADデータなどのモデルデータ(例えば、医療スキャンデータ、DICOMデータ)とすることができる。モデルデータは、画像アーカイブ及び通信システム(PACS)と接続されたネットワークなどのヘルスケア施設のネットワークを介して、リモートソース(例えば、クラウドサーバ)から受信することができ、又は処理回路216のメモリ内にあり得る。モデルデータは、手術中データ(例えば、被検体に対して処置が行われている間に検出された)又は手術前データであり得る。
310において、第2の画像データを受信することができる。第2の画像データは、第1の画像データとは異なるモダリティのものとすることができる。例えば、第2の画像データは、3Dカメラからの3D画像データとすることができる。
315において、第1の画像データは、ダウンサンプリングのような再サンプリングすることができ、この再サンプリングは、第1の画像データの主要な特徴を保持するとともに、第1の画像データのデータ複雑性を減少させ、第1の画像データに対して実施される更なる演算の効率を高めるように行う。同様に、320において、第2の画像データは、再サンプリングすることができる。再サンプリングは、画像データにおいて画像位置合わせに関連しない特徴を識別し、それらを除去して、節減又はダウンサンプリングされた画像を生成することを含むことができる。
325において、1つ以上の第1の特徴記述子を、再サンプリングされた第1の画像データに関して決定することができる。特徴記述子は、再サンプリングされた第1の画像データによって表される3D表面に対応する、再サンプリングされた第1の画像データの輪郭又は他の特徴に関連するように決定することができる。同様に、330において、1つ以上の第2の特徴記述子を、第2の画像データに関して決定することができる。
335において、1つ以上の第1の特徴記述子と1つ以上の第2の特徴記述子との間で特徴マッチングを実施することができる。例えば、特徴マッチングは、それぞれの第1の特徴記述子及び第2の特徴記述子を比較してマッチ(一致)スコアを決定し、またマッチスコアがマッチ(一致)閾値を満たすことに応答してマッチ(一致)を特定することによって実施することができる。
340において、特徴マッチングに応答して、第1の画像データと第2の画像データとの間で1つ以上のアライメントを実施することができる。1つ以上のアラインメントは、第1の画像データ又は第2の画像データの少なくとも1つを共通の基準フレームに変換するために実施することができる。
II.画像データに基づいて環境内の複数の奥行きカメラをアライメント調整するためのシステム及び方法
3Dカメラなどの奥行きカメラを複数台使用することで、被写体、及び被写体周りの環境について収集した3D画像データの品質を向上させることができる。しかし、姿勢が異なる複数の奥行きカメラの画像データのアライメント調整が困難な場合がある。本ソリューションは、様々な点群データポイントを変換し、またアライメント調整された画像データを生成するために点群データポイントを参照フレームにアライメント調整するための基準フレームを効果的に決定することができる。
ここで、図1及び図2に参照を戻すと、画像処理システム100は、画像キャプチャデバイス104を3Dカメラとして利用し、被写体のリアルタイムの3D画像データをキャプチャすることができる。例えば、画像キャプチャデバイス104はそれぞれ、被写体、物体、又は環境の少なくとも1つの3D画像をキャプチャすることができる。この環境は、医学的に環境内に存在する被写体ではあり得ない他の特徴を含むことができる。3D画像は、画像キャプチャデバイスによって提供される基準フレーム内における多数又はセット(集合)の点(ポイント)で構成されることができる。3D画像を構成する点のセットは、カラー情報を有することができる。いくつかの実装では、このカラー情報は破棄され、更なる処理ステップでは使用されない。それぞれの画像キャプチャデバイス104によってキャプチャされた点の各セットは、「点群」と称することができる。複数の画像キャプチャデバイス104が被写体の画像をキャプチャするために利用される場合、画像キャプチャデバイス104の各々は、異なる基準フレームを有することができる。いくつかの実装では、画像キャプチャデバイス104によってキャプチャされた3D画像は、リアルタイムで記録することができる。そのような実装では、単一の画像キャプチャデバイス104を使用し、また第1のポーズで第1の3D画像をキャプチャし、また次に第2のポーズに再配置されて、被写体の第2の3D画像をキャプチャすることができる。
少なくとも1つの3D画像(例えば、画像208の少なくとも1つとして、等)をキャプチャすることに応答して、画像キャプチャデバイス104は、例えば通信バスを介して処理回路212に画像208を提供することができる。画像キャプチャデバイス104は、画像208に対応するタイムスタンプを提供することができ、これは、画像208に対して画像処理が実行されるときに画像208の同期を容易にとることができる。画像キャプチャデバイス104は、3D画像(例えば、奥行き情報を有する画像)を出力することができる。画像208は、複数の画素を含むことができ、各画素は、空間位置データ(例えば、水平、垂直、及び奥行きデータ)、明度若しくは輝度データ、又はカラーデータが割り当てられる。いくつかの実装では、処理回路212は、処理回路212のメモリに画像208を格納することができる。例えば、画像208を格納することは、処理回路212のメモリ内の1つ以上のデータ構造において画像208をインデックス付けすることを含むことができる。
処理回路212は、第1ポーズを有する第1キャプチャデバイス104によってキャプチャされた第1点群のデータ点の第1セット、及び第1ポーズと異なる第2ポーズを有する第2キャプチャデバイス104によってキャプチャされた第2点群のデータ点の第2セットにアクセスする。例えば、3D画像(例えば、画像208)の各々は、点群を構成する1つ以上の3D次元データ点を含むことができる。データ点は、3Dカメラによって撮影された単一の画素に対応することができ、少なくとも3次元データ点(例えば、それぞれが次元に対応する少なくとも3つの座標を含む)とすることができる。3次元データ点は、それぞれの画像208に示される基準フレーム内の少なくとも3つの座標を含むことができる。このように、異なるポーズの異なる画像キャプチャデバイス104は、異なる基準フレームで3D画像を生成することができる。被写体の3D画像が取り込まれる際のシステムの全体的な精度及び特徴密度を向上させるために、システムは、画像キャプチャデバイス104によって取り込まれる3D画像の点群を整列させて、単一合成3D画像を生成することができる。画像208の1つを構成する3次元データ点は、まとめて1つの「点群」としてみなすことができる。
処理回路212は、画像キャプチャデバイス104から受信した画像208の各データ点から3次元データを抽出して、第1画像キャプチャデバイス104に対応する第1点群及び第2画像キャプチャデバイス104に対応する第2点群を生成することができる。点群から3次元データを抽出することは、3次元画像内におけるデータ点の3つの座標(例えば、x軸、y軸、及びz軸など)だけにアクセスして抽出する(例えば、処理回路212内のメモリの異なる領域等にコピーする)ことのみを含むことができる。このような処理は、更なる処理ステップにおいて、カラー(色彩)情報若しくは他の無関係な情報を除去又は破棄することができる。
いくつかの実装では、システムの全体的な計算効率を向上させるために、処理回路は、3D画像を構成する特定のデータ点をダウンサンプリングする、又は選択的に破棄して、データ点のダウンサンプリング済みセット(集合)を生成することができる。処理回路212は、例えば、画像内の4つのデータ点のうち1つを破棄する(例えば、画像からデータ点を抽出しない等)ことにより、一様にデータ点を選択的に除去することができる(例えば、点の75%が一様に抽出される等)。いくつかの実装では、処理回路212は、ポイントの異なる割合(例えば、5%、10%、15%、20%、任意な他の割合など)を抽出することができる。したがって、3D画像の点群内のデータ点を抽出又はアクセスするとき、処理回路212は、更なる処理ステップの精度に大きな影響を与えることなく、点群をダウンサンプリングしてその全体サイズを節減し、画像処理を改善することが可能である。
画像キャプチャデバイス104の各々からの3D画像データが、2つ以上の点群として変換される、又はそうでなければアクセスされることに応答して、処理回路212は、点群の1つを選択して、他の点群のいずれかのアライメントのためのベースライン基準フレームとして機能させることができる。環境内の被写体の表面を表す点群の精度及び全体的な解像度を向上させるために、2つ以上の画像キャプチャデバイス104は、被写体の3D画像をキャプチャすることができる。処理回路212は、それらが単一の基準フレーム内に存在するように画像を合成することができる。例えば、処理回路212は、第1画像キャプチャデバイス104によってキャプチャされた1つの3D画像に対応する点群のうちの1つを基準フレームとして選択することができる。点群を基準フレームとして選択することは、選択された点群(例えば、点群を構成するデータ点及び座標等)をメモリの異なる領域にコピーすることを含むことができる。いくつかの実装では、点群を選択することは、選択された点群が格納されている処理回路212のメモリの少なくとも一部にメモリ点を割り当てることを含むことができる。
基準フレームを選択することは、第1点群におけるデータ点の第1セットのうちの1つ以上に割り当てられたカラーデータを取得することを含むことができる。例えば、処理回路212は、画像キャプチャデバイス104から受信した3D画像208内の画素又はデータ点からカラーデータ(例えば、赤/緑/青(RGB)値、シアン/黄/マゼンタ/明度(CMYK)値など)を抽出し、それぞれの点群のデータ点にカラーデータを格納することが可能である。処理回路212は、各データ点のカラーデータを輝度値(例えば、平均カラー値の閾値など)と比較することによって、1つの基準フレームがより均一に照明されているかどうかを判断することができる。処理回路212は、例えば、N個のデータ点ごとにループし、カラー閾値を各データ点のカラーデータと比較することによって、各点群における一定数のデータ点に対してこの比較を実施することができる。いくつかの実装では、処理回路212は、平均カラー明度値を計算するために、各ポイントクラウド内のデータ点にわたってカラーデータを平均化することができる。平均カラー明度値が所定の閾値よりも大きいことに応答して、処理回路212は、点群が均一に照らされていると決定することができる。
いくつかの実装では、処理回路212は、最も照明された(例えば、最も均一に照明された)点群を決定することによって、基準フレームを選択することができる。最も均一に照明された(例えば、したがって、高品質の画像を有する)点群は、更なるアライメント計算のための基準フレームとして選択することができる。いくつかの実装では、処理回路は、基準フレームを、最も均一に照明されていない点群の基準フレームとして選択することができる。いくつかの実装では、処理回路212は、任意に(例えば、擬似乱数などを使用して)点群の基準フレームを基準フレームとして選択することができる。
処理回路212は、基準フレーム及びデータ点の第1セットを使用して、データ点の第2セットに対する変換データ構造を決定することができる。変換データ構造は、1つ以上の変換行列を含むことができる。変換行列は、例えば、4×4剛体変換行列とすることができる。変換データ構造の変換行列を生成するために、処理回路212は、例えば、図9と関連して本明細書に後述する方法900におけるステップの1つ以上を実施することによって、1つ以上の特徴ベクトルを特定することができる。この処理の結果は、1つの点群が基準フレームとして使用される(例えば、その点群の点は変換されない)、各点群に対する特徴ベクトルのセットを含むことができる。処理回路212は、各行列がそれぞれの点群を適用する(例えば、変換するために使用する)とき、変換された点群の特徴が基準フレーム点群における同様の特徴とアライメント調整するように、変換行列を生成することができる。
変換行列を生成するために(例えば、変換データ構造の一部として、又は変換データ構造として)、処理回路212は、各点群に対応する特徴に、アクセスするか、又はさもなければ処理回路212のメモリから取得することができる。変換される点群の点に対応する基準フレーム点群内の点を見つけるために、処理回路212は、各点群内の特徴ベクトル間のL2距離を計算することができる。各点群における特徴の点のL2距離を計算すると、各点に対する初期(及び潜在的に不正確な)対応関係のリストが返される。対応関係は、あるデータ点が各点群に表現される物体表面上の同じ位置に対応することを示すことができる。これらの初期対応関係が列挙された後、処理回路212は、ランダムサンプルコンセンサス(RANSAC)アルゴリズムを適用して、不正確な対応関係を特定し、拒否することができる。RANSACアルゴリズムは、初期対応関係のリストを使用して、各点群間の対応関係を反復的に特定し、適合させるために使用することができる。
RANSACアルゴリズムは、両方の点群の特徴におけるどの対応がアライメントプロセスに関連し、どれが誤った対応(例えば、変換又はアライメント調整される点群における特徴に対応すると誤って特定される一方の点群における特徴)であるかを決定するために使用することができる。RANSACアルゴリズムは反復可能であり、また満足のいくモデルが適合されるまで、2つの点群間の誤った対応を拒絶することができる。出力される満足のいくモデルは、変換される点群に対応するデータ点を有する基準点群の各データ点を特定することができ、その逆もまた可能である。
RANSACアルゴリズムを実施する際に、処理回路212は、特徴ベクトル間のL2距離を使用して特定された初期対応関係のフルセット(全体集合)から、最小対応関係を含んでいる特徴対応関係のサンプルサブセット(部分集合)をランダムに(例えば、疑似ランダムに、等)選択することができる。処理回路212は、このサンプルサブセットの要素を使用して、適合モデル及び対応するモデルパラメータを計算することができる。サンプルサブセットのカーディナリティ(濃度)は、モデルパラメータを決定するのに十分な最小のものとすることができる。処理回路212は、対応関係のフルセットのどの要素が、推定されたモデルパラメータによってインスタンス化されたモデルと一致するかをチェックすることができる。対応関係は、ノイズの影響に起因する最大偏差を定義する幾分のエラー閾値(例えば、1%、5%、10%など)内で推定モデルパラメータのセットによってインスタンス化された適合モデルに適合しない場合に外れ値(アウトライア)としてみなすことができる。適合モデルに対して得られたインライアのセットは、対応関係のコンセンサスセットと称することができる。処理回路212は、ある反復において得られたコンセンサスセットが十分なインライア(例えば、所定の閾値以上など)を有するまで、RANSACアルゴリズムのステップを反復して繰り返すことができる。コンセンサスセットは、RANSACアルゴリズムのパラメータに適合する各点群内のデータ点間の対応関係の正確なリストとすることができる。RANSACアルゴリズムのためのパラメータは、予め定められたパラメータとすることができる。次に、コンセンサスセットは、変換データ構造を決定するための反復最接近点(ICP)アルゴリズムにおいて使用することができる。
処理回路212は、RANSACアルゴリズムを使用することによって生成された対応する特徴のコンセンサスセットを使用して、ICPアルゴリズムを実施することができる。コンセンサスセット内の各対応する特徴は、各点群内の1つ以上のデータ点を含むことができる。ICPアルゴリズムを実施するとき、処理回路212は、基準点群(又は選択されたセット)内の最も近い点を、変換される点群内の点クローゼットポイントにマッチングさせることができる。次に、処理回路212は、点群内の各点を基準点群内の一致に変換するのに最適な二乗平均平方根点間距離メトリック最小化技術を使用して、回転及び並進の組み合わせを推定することができる。処理回路212は、点群内の点を変換して、点群内の特徴間の誤差の量を決定し、このプロセスを使用して反復し、変換される点群の位置及び回転に対する最適な変換値を決定することができる。これらの出力値は、4×4の剛体変換行列などの変換行列にまとめることができる。この出力された変換行列を、変換データ構造とすることができる。
処理回路212は、変換データ構造を使用して、変換される点群のデータ点のセットを変換し、変換されたデータ点のセットを作成する。変換データ構造は、1つ以上の変換行列を含むことができる。変換行列は、変換される点群内の点の位置又は回転の変化を示す変換値を含む。処理回路212は、変換データ構造内の値を、変換される点群内の各点に適用して(例えば、位置をオフセットする、又は基準点の周りの回転を適用する等)、そのそれぞれの位置又は回転を変更することができる。この変換された点群は、その後、基準フレームとして選択された点群と同じ基準フレームにすることができる。
処理回路212は、データ点の第1のセットとデータ点の変換されたセットとを含むデータ点の結合されたセットを生成することができる。いくつかの実装では、データ点の結合されたセットは、基準点群及び変換された点群におけるデータ点の全てを含むことができる。データ点は、2つの異なる角度からの同じ被写体のキャプチャを表すので、処理回路212は、データ点の結合されたセットを使用して、より完全な3Dポイントベースの画像を組み立てることができる。例えば、データ点の結合されたセットの各々は、分析中の被写体の3D画像を表すことができる。この3D画像は、表示データ(例えば、3Dレンダリング技術を使用してレンダリングされた3Dポイントベースのメッシュ等)に変換され、表示のためにユーザーインターフェース120に提供することができる。処理回路212は、更なる処理のために、データポイントの結合されたセットを処理回路212のメモリに格納することができる。
ここで図4を参照すると、描かれているのは、画像データに基づいて環境内の複数の奥行きカメラをアライメント調整するための方法400のフローチャートである。方法400は、画像処理システム100又は図1及び2と合わせて本明細書で上述したそのコンポーネント若しくはモジュールなど、本明細書で説明した様々なデバイス及びシステムを使用して実施することができる。
405において、第1の点群データ点及び第2の点群データ点がアクセスされる。点群データ点は、空間座標、及び空間座標に割り当てられた様々なパラメータを含むことができる。例えば、点群データ点は、特定の基準フレーム(例えば、デカルト座標、円筒座標、球座標)における空間座標を含むことができる。点群データ点は、輝度又は明度、グレースケールデータ、カラーデータ(例えば、RGB、CYMK)、密度、若しくはそれらの様々な組み合わせなどの情報を示すことができる。いくつかの実施形態では、画像データは、点群データ点を生成するために処理される。
第1の点群データ点は、被写体に対する第1のポーズに対応することができ、第2の点群データ点は、被写体に対する第2のポーズに対応することができる。ポーズは、画像キャプチャデバイス(例えば、カメラ)、MRI機械、又はCT機械などの、点群データ点に対応する画像データを検出したデバイスの位置及び向きを表すことができる。
第1のポーズ又は第2のポーズの少なくとも一方は、それぞれの画像キャプチャデバイスから受信したポーズデータに基づいて決定することができる。例えば、ポーズは、画像キャプチャデバイスに結合された位置センサ(例えば、加速度計)から受信されたデータに基づいて決定することができる。
第1のポーズ又は第2のポーズの少なくとも一方は、被写体の周囲の環境において1つ以上の画像キャプチャデバイスによってキャプチャされた画像データに基づいて決定することができる。例えば、第1の画像キャプチャデバイスによってキャプチャされた画像データは、第2の画像キャプチャデバイスが第1の画像キャプチャデバイスの視野内にある場合、第2の画像キャプチャデバイスを特定するように処理することができる。第2の画像キャプチャデバイスのポーズは、第2の画像キャプチャデバイスが特定された画像データから決定することができる。
410において、第1のポーズ又は第2のポーズの少なくとも一方に基づいて、画像データに対する基準フレームが決定される。基準フレームは、第1の点群データ点と第2の点群データ点とを比較することによって決定することができる。例えば、点群データ、又は点群データから抽出された特徴を比較し、比較に基づいてマッチスコアを生成(例えば、類似性を決定)し、及びマッチスコアに基づいてアライメント変換を決定することができる。
いくつかの実施形態では、点群データ点からのカラーデータは、基準フレームを決定するために使用することができる。例えば、明度値又は輝度値に加えて、各点群データ点に割り当てられた1つ以上のカラーチャンネルからのデータを、点群データ点の比較時に使用することができ、これは、比較に基づいて生成されるマッチスコアの精度を増加することができる。
415において、第1の点群データ点又は第2の点群データ点の少なくとも一方は、基準フレームにアライメント調整するように変換される。例えば、基準フレームが第1のポーズ(又は第2のポーズ)に対応する場合、第2の点群データ点(又は第1の点群データ点)は、基準フレームとアライメント調整するように変換することができる。いくつかの実施形態では、基準フレームは、第1のポーズ及び第2のポーズのそれぞれと異なり、第1の点群データ点及び第2の点群データ点はそれぞれ、基準フレームとアライメント調整するように変換することができる。
いくつかの実施形態では、カラーデータは、点群データ点を変換する際に使用されない。例えば、変換は、点群データ点の空間座標に適用され、カラーデータには適用されないようにできる。カラーデータは、点群データ点を変換する前に破棄することができ、又は後の検索のために点群データ構造内に保持することができる。
III.医用画像の表面をセグメント化するシステム及び方法
医用画像又は3D画像などの画像をセグメント化することで、画像処理パイプラインで画像に対して実施される更なる演算の効率を向上させることができる。しかしながら、画像処理が実施される用途に関連する情報を保持しつつ、計算効率の良い方法で画像をセグメント化することは困難である場合がある。本ソリューションは、解剖学的に関連する情報を効果的に保持し、計算効率を向上させることができるセグメンテーションモデルを実装することができる。例えば、本ソリューションは、被写体の表面と周囲環境との間の密度の差を特定することによって、又は点群データ点を被写体の表面に対応するものとして分類するように養成された機械学習モデルを使用することによって、その解剖学的特徴を含む被写体の表面を周囲環境から効果的に区別するセグメンテーションモデルを実装することができる。
図5は、医用画像の表面をセグメント化するための方法500を示す図である。方法500は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。
505において、点群データ点がアクセスされる。点群データ点は、被写体の表面に対応することができる。例えば、点群データ点は、3Dカメラ、MRIデバイス、又はCTデバイスによって検出された被写体の医用画像又は3D画像に対応することができる。
510において、複数の点群データ点は、セグメンテーションモデルへの入力として適用される。セグメンテーションモデルは、点群データ点の画像データによって示される密度データに基づいてセグメントを生成する(例えば、点群データ点の明度データに基づいて空気から表面をセグメント化する)1つ以上の関数を含むことができる。セグメントは、オブジェクトを取り囲む空気からオブジェクトの表面を表す画素又はデータポイントのグループの領域など、同様の特性を共有する画素若しくはデータポイントのグループとすることができる。
いくつかの実施形態では、セグメンテーションモデルは、機械学習モデルを含む。機械学習モデルは、所定の画像(例えば、所定の画像データ)及び画像に関連付けられたラベル付けされたセグメント(例えば、所定のセグメント)を含む学習データを使用して学習することができる。例えば、機械学習モデルは、点群データ点などの画像データを含む入力データに基づいて、1つ以上のセグメントを含む出力データを生成するように養成されたニューラルネットワークを含むことができる。
515において、複数のセグメントが生成される。セグメントは、セグメンテーションモデルを使用して生成することができる。セグメントは、セグメンテーションモデルへの入力に応答する被写体の表面に対応することができる。
520において、複数のセグメントが出力される。セグメントは、被写体の表面の3D表面モデルを生成するために出力することができる。
IV.セグメンテーションに基づいて医用画像から3D表面モデルを生成するためのシステム及び方法
MRI又はCTスキャンなどの医用画像に基づく3D表面モデルは、外科手術のナビゲーション、プランニング、及び器具のトラッキングなど様々な用途に使用することができる。3D表面モデルを使用して効果的にレンダリングし、画像処理演算を実施するために、基礎となる3D画像データのセグメンテーションから3D表面モデルを生成することが有用である場合がある。例えば、三角形又は四角形の3D表面モデルは、本明細書に記載されるようなセグメンテーションモデルを使用して生成されるセグメントから生成することができる。点群データは、3D表面モデルから、又はセグメンテーションデータから直接(例えば、セグメンテーションモデルによって生成されたセグメントから)生成することができる。
図6は、セグメンテーションに基づいて医用画像から3D表面モデルを生成するための方法600を示す。方法600は、画像処理システム100など、本明細書に記載された様々なデバイス及びシステムを使用して実施することができる。
605において、複数のセグメントがアクセスされる。セグメントは、被写体の3次元表面に対応することができる。例えば、セグメントは、表面の検出された画像に対応する3D点群データ点など、表面を代表する画像データから生成することができる。
610において、複数のセグメントの3次元モデルが生成される。3次元モデルは、被写体の3次元表面を表すことができる。3Dモデルは、セグメントの点を結んで三辺又は四辺の表面部分を形成するなど、三角形又は四角形の3D表面モデルとして生成することができる。
615において、点群データ構造が生成される。点群データ構造は、被写体の3次元表面を表すことができる。例えば、点群データ構造は、セグメントを使用して生成された表面の表面部分を形成する点をサンプリングすることによって生成することができる。点群データ構造は、表面部分に対応する複数の点群データ点を含むことができる。
620において、点群データ構造が出力される。点群データ構造は、3D表面モデルを他のモダリティの画像データ(例えば、3D画像データ)とマッチングするためなど、3D表面モデルを表現するために出力することができる。
図7は、セグメンテーションに基づいて医用画像から3D表面モデルを生成するための方法700を示す図である。方法700は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。方法700は、方法600と同様とすることができるが、表面のセグメンテーションから(例えば、3D表面モデルを介してではなく)被写体の表面の点群表現を直接生成する。
705において、複数のセグメントがアクセスされる。セグメントは、被写体の3次元表面に対応することができる。例えば、セグメントは、表面の検出された画像に対応する3D点群データ点など、表面を代表する画像データから生成することができる。
710において、点群データ構造が生成される。点群データ構造は、被写体の3次元表面を表すことができる。例えば、点群データ構造は、セグメントを使用して点をサンプリングすることによって生成することができる。点群データ構造は、セグメントに対応する複数の点群データ点を含むことができる。
715において、点群データ構造が出力される。点群データ構造は、他のモダリティの画像データ(例えば、3D画像データ)と3D表面をマッチングするためなど、被写体の表面を表現するために出力することができる。
V.画像アライメント効率を向上させるために3D表面モデルから生成された点群をダウンサンプリングするシステム及び方法
複数のモダリティの点群データを比較及び照合することで、点群データのアライメントを行い、様々な用途に利用することができる。しかしながら、被写体の3次元表面を表す点群データ、3次元画像データ、及び3次元モデルなどは、サイズが大きく複雑であるため、画像処理パイプラインで効率的に処理することが困難な場合がある。例えば、マイクロソフト社製のキネクトは、1秒間に900万点の点群データを生成することができる。3次元点群データを利用する画像処理演算の実行時間は、3次元点群データの密度に直接関係することがある(線形時間で実行するより遅くなることを含む)。さらに、様々な画像処理演算は、照明、陰影、遮閉、及びポーズなどの画像データに影響を与える環境要因に非常に敏感であり得る。
本ソリューションは、更なる画像処理に関与する計算複雑性を低減しつつ、オブジェクトの輪郭及びエッジを保持するなど、解剖学的又はその他の物理的に関連する情報及び点群データ点間の関係を効果的に保持する方法で点群の再サンプリング(例えば、ダウンサンプリング)を効果的に行うことが可能である。本ソリューションは、関連する情報を保持しながら、より速い画像処理を可能にするために点群密度を減少させることができる。このように、本ソリューションは、サブミリメートル精度(例えば、点群データ点間の距離が1ミリメートル未満である画像データを保持すること)などの目標性能基準を満たすリアルタイム画像処理を可能にすることができる。
ここで図1及び図2に戻り、参照すると、画像処理システム100は、画像位置合わせ(レジストレーション)の精度を大幅に低下させることなく、画像処理パイプラインにおける計算効率を向上させるために点群を再サンプリング(リサンプリング)、又はダウンサンプリングすることができる。所望の3D画像位置合わせを達成するために処理する必要がある点の総数を選択的に減らすことによって、画像処理システム100は、全体の計算要件を低減しながら、3D画像位置合わせ技術の速度を向上させることができる。画像処理システム100は、点群データの輪郭ベース再サンプリングを実施することができ、これにより、輪郭及びエッジなどのような、関連する点並びに点間の関係を保持しながら、3D画像(例えば、画像キャプチャデバイスによってキャプチャされた、又はCTスキャン若しくはMRI画像などの3D医用画像から抽出された)の点群の密度を減少させることができる。点群における関連する部分とは、本明細書で説明する画像位置合わせ処理に大きな影響又は重要性を有する部分である。
処理回路212は、オブジェクトの表面を表す点群に対応するデータ点のセットにアクセスすることができる。点群を構成する3Dデータ点(例えば、3D医用画像等から抽出されたもの)は、特定の基準フレームにおける座標のセットを記述する多次元データ点とすることができる。例えば、点群の3Dデータ点(例えば、データ点の集まり)は、3つの座標(例えば、デカルト座標、円柱座標など)を含むことができる。データ点は、3Dカメラによって撮影された単一の画素に対応することができ、少なくとも3次元データ点(例えば、それぞれが空間次元に対応する少なくとも3つの座標を含む)とすることができる。いくつかの実装では、データ点は、CTスキャンモデル又はMRI画像などの3D医用画像内の点又は頂点に対応することができる。いくつかの実装では、アクセスされる(例えば、処理回路212によってのメモリ内の1つ以上のデータ構造から取得されるなど)データ点は、2つ以上の画像キャプチャデバイス104からキャプチャされた点群から生成されたデータ点の結合セットとすることができる。いくつかの実装では、処理回路212は、画像キャプチャデバイス104が被写体又は環境の3D画像をキャプチャする際に、例えばリアルタイムで、画像キャプチャデバイス104の少なくとも1つからデータポイントのセットにアクセス又は受信する。
データ点のセットにアクセスすることは、3D画像データを使用して、被写体の表面を表す点群を生成することを含むことができる。いくつかの実装では、処理回路212は、3Dデータ点のセットを含む3D画像又はモデルを受信若しくは取得することができる。これらのデータ点は、他の関連する点データ(例えば、カラー、各点における温度などの他の要因)と共に、3D画像又はモデルから抽出することができる。例えば、3Dモデル(例えば、CTスキャンメッシュ又はMRI画像モデル等)の場合、処理回路212は、3Dモデル内に存在するデータを使用して、1つ以上のスライス又は頂点を抽出することができる。いくつかの実装では、処理回路212は、図6及び7と関連して本明細書で上述した方法600又は方法700のステップを使用して、3Dモデルから点群を生成することができる。
処理回路212は、データ点のセットにレスポンス関数を適用して、データ点のセットに各々のレスポンス値のセットを割り当てることができる。レスポンス関数は、(例えば、点群から)データ点のセットを取り、入力点間の関係に基づいてレスポンス値を生成する関数とすることができる。レスポンス関数は、点群内の点に1つ以上の行列演算を適用することによって、各入力データ点に対するレスポンス値を生成することができる。レスポンス値は、各データ点が輪郭のような関心対象の特徴の一部であるかどうかを示す重み値とすることができる。例えば、輪郭はより複雑な構造であるため、画像位置合わせ又は2つの異なる点群の位置合わせに、より関連性が高いとみなすことができる。点群内の各データ点のレスポンス値を決定するために、処理回路212は、1つ以上の隣接するデータ点に関して各データ点の分析を実施することができる。例えば、処理回路212は、輪郭、エッジ、セグメント、又は解剖学的特徴若しくは外科用器具を代表する可能性が高い他の画像特徴などの関心対象の特徴とのより大きな関連性を有するデータ点に基づいて、より大きな重みを有するレスポンス値を生成するために、レスポンス関数を適用することが可能である。
例えば、処理回路212は、点群内のデータ点から生成されたグラフデータ構造に適用することができるグラフフィルタを含むレスポンス関数を適用することができる。グラフフィルタは、グラフデータ構造を入力として受け取り、同じグラフデータによってインデックス付けされる出力を生成する関数とすることができる。グラフデータ構造は、グラフ内の異なるノード(例えば、点群データ点)間の関係を示す隣接行列とすることができる。隣接行列は、グラフ内のノード間のエッジの重みに対応する値を有する正方行列とすることができる。
グラフデータ構造を生成するために、処理回路212は、以下のようなエッジ重みWを有する隣接行列を生成することができる。
ここで、Wは点群内の点間の隣接行列とすることができ、xi及びxjはそれぞれ点群内のi番目及びj番目のデータ点に対応し、シグマはグラフフィルタレスポンス関数に対する調整可能なパラメータである。いくつかの実装では、処理回路212は、エッジによって結合された点間の距離が所定の閾値よりも大きい場合、データ点に対するエッジ重みがゼロに設定されるように隣接行列を生成することができる。上記隣接行列を使用して、処理回路212は、グラフフィルタ関数を利用することができる。
ここで、h(A)はグラフフィルタであり、Aは以下のようなグラフシフト演算子である。
ここで、Wは上記で概説した隣接行列であり、Dは対角行列であり、D
i,jはWのi行のすべての要素の合計とすることができる。上記グラフフィルタを使用して、処理回路212はレスポンス関数を次のように定義することができる。
レスポンス関数は、データ点Xのセット全体にわたって動作し、データ点Xの各々に、それぞれの点が輪郭の一部である尤度を示す重み値を割り当てることが可能である。
計算効率を改善するために、処理回路212は、隣接行列Wを生成するためにデータ点のセットを使用してk次元二分木(本明細書では「k-d木」と呼ばれることもある)を生成することができる。いくつかの実装では、処理回路212はk-d木を作成せず、代わりに、点群内の各データ点から点群内の他の各データ点までの非ゼロの辺を含むよう隣接行列を生成する。
処理回路212は、点群データ点を使用して、空間座標などの点群データ点のパラメータに基づいて点群データ点をノードにソートする二分木としてk次元木を生成し、さらに、各点群データ点に割り当てられた明度、輝度、カラー、密度、又は他のパラメータを使用してk次元木を生成することが可能である。特定の点群データ点の隣接行列Wは、特定の点群データ点からk次元木においてk近傍以上離れた各点群データ点に対して重みWi,jがゼロに設定されるように、k次元木に基づいて生成することができる。kの次元の数は、k次元ツリーを生成するために使用される異なるパラメータの数に対応することができる(例えば、3つの空間座標次元又は3つのカラー次元など)。次元の数kは、レスポンス関数を生成し、レスポンス関数を点群データ点に適用することに関連する計算需要を制御するために使用することができる所定のパラメータとすることが可能である。
いくつかの実装では、隣接行列を組み立てるとき、処理回路212は、データ点のセットのデータ点のペア(対)における少なくとも1つのカラーチャンネルに基づいてユークリッド距離を決定することができる(例えば、任意のカラーチャンネルデータから独立している位置データのみに基づいてxi-xjを決定するのではなく)。いくつかの実装では、処理回路212は、各データ点に含まれる赤、緑、又は青のカラーチャンネルデータ(又は、場合によりシアン、黄、マゼンタ、明度のカラーチャンネルデータ)に追加的に基づいてユークリッド距離を計算することができる。例えば、処理回路212は、例えば0~1の範囲にわたることができる3つの追加的かつ独立した距離として、各々のカラーチャンネルを使用してユークリッド距離を決定又は計算することができる。カラー値は、例えば0~255の範囲にわたる8ビットカラーデータ(各カラーチャンネルに対して一つの8ビット数)として、データ点の一部として又はデータ点と関連付けて記憶することが可能である。
グラフフィルタを生成することは、データ点のセットの明度パラメータを特定することを含むことができる。明度パラメータは、例えば、点群のデータ点のカラー値に含まれる又はカラー値から計算されるチャネルを記述するパラメータとすることができる。例えば、データ点がCYMKカラーチャンネルを格納する場合、データ点は、データ点の明度値としてKを利用することができる。データ点がRGBカラーチャンネルを記憶している場合など、いくつかの実装では、処理回路212は、各データ点におけるカラーチャンネルの加重平均を計算して、各データ点の明度値を計算することができる。処理回路212は、点群内のデータ点に対して生成又はアクセスされた明度値を比較し、明度値の有意な数(例えば、10%、15%、40%、50%、任意な他の所定の量よりも大きいなど)の間における変動が所定の閾値よりも大きいかどうかを決定することができる。この変動が所定の閾値よりも大きい場合、点群によって表される表面を均一に照明することができず、処理回路212は、非カラーベースのグラフフィルタ変種(バリアント)を使用することができる。これに対して、変動が所定の閾値よりも大きくない場合、表面は均一にかつ明確に照明することができ、処理回路212は、カラーベースのグラフフィルタの変種を利用することが可能である。
処理回路212は、選択ポリシー、及び点群内のデータ点の各々に対応するレスポンス値のセットを使用して、データ点のセットのサブセットを選択することができる。選択ポリシーは、例えば、どの点が更なる処理演算に関連し、どの点が画像位置合わせ精度を犠牲にすることなく全体の点群から削除することができるかを示すことができる。処理回路212によって実行される選択ポリシーは、例えば、データ点の各々のレスポンス値を所定の閾値と比較することができる。レスポンス値が所定の閾値以上の場合、選択ポリシーは、データ点が点群からカリング(間引き)されるべきではないことを示すことができる。レスポンス値が所定の閾値より小さい場合、選択ポリシーは、その点が点群から除去されるべき、又はダウンサンプリングされるべきであることを示すことができる。したがって、選択ポリシーは、点群によって表されるオブジェクトの表面上の1つ以上の輪郭に十分に対応する点群内のデータ点のサブセットを選択するように構成することができる。
いくつかの実装では、選択ポリシーは、擬似ランダムベースで点を削除することができる。計算されたレスポンス値に基づいてデータ点を除去することに加えて、処理回路212は、点群からデータ点を一様に除去することによって性能を更に向上させることができる。例えば、点群全体からデータ点を擬似ランダムかつ一様に除去するために、選択ポリシーは、点群内の各データ点に対して擬似乱数を生成するための命令を含むことができる。擬似乱数は、0~100の間のような値の範囲間における値とすることができる。処理回路212は、データ点の疑似乱数値が所定の閾値より小さいかどうかを決定することができる。前の例に従って、選択ポリシーが、データ点の約25%が点群から一様にカリングされるべきであることを示す場合、選択ポリシーは、25未満である疑似ランダム値を割り当てられたデータ点を除去又はカリングする命令を含むことができる。
選択ポリシーが、どの点がシステムの精度を犠牲にすることなく点群から除去することができるかを示すと、処理回路212は、選択ポリシーによってカリングされなかったデータ点のセットの選択されたサブセットを含むデータ構造を生成することができる。データ構造は、点群内のデータ点のセット全体を含むデータ構造よりも小さくすることができる。いくつかの実装では、サブセット内のデータ点は、データ構造内のデータ点のそれぞれの位置に対応するインデックス値を割り当てることができる。その後、処理回路212は、データ点の被写体の生成されたデータ構造を処理回路212のメモリに格納することができる。
図8は、画像アライメント効率を改善するために3D表面モデルから生成された点群をダウンサンプリングするための方法800を示す図である。方法800は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。方法800は、点群データの輪郭ベースの再サンプリングを実施するために使用することができ、これは、輪郭及びエッジなどの関連する点及び点間の関係を保持しながら点群データの点群の密度を減少させることができる。
805において、複数の点群データポイントにアクセスする。点群データ点は、被写体の表面に対応することができる。例えば、点群データ点は、3Dカメラ、MRIデバイス、又はCTデバイスによって検出された被写体の医用画像又は3D画像に対応することができる。
810において、グラフフィルタに基づくレスポンス関数が、複数のデータポイントの各点群データポイントに適用される。レスポンス関数は、複数の点群データ点のそれぞれの点群データ点にレスポンス値を割り当てるために適用することができる。
例えば、グラフフィルタは、数式2([数2])とすることができ、ここで、Aは、グラフシフト演算子数式3([数3])である。Wは、Wがエッジ重み数式1([数1])を有するような点群データ点の隣接行列とすることができ、Dは、Di,iがWのi行のすべての要素の合計である対角行列である。レスポンス関数は、数式4([数4])として定義することができる。
いくつかの実施形態では、グラフフィルタは、k次元の木を使用して生成され、これにより、計算要件を低減することができる。例えば、k次元木は、空間座標などの点群データ点のパラメータに基づいて点群データ点をノードにソートする二分木として点群データ点を使用して生成することができ、さらに、各点群データ点に割り当てられた明度、輝度、カラー(色彩)、密度、又は他のパラメータを使用して生成することができる。特定の点群データ点の隣接行列Wは、特定の点群データ点からk次元木においてk近傍以上離れた各点群データ点に対して重みWi,jがゼロに設定されるように、k次元木に基づいて生成することができる。次元の数kは、k次元ツリーを生成するために使用される異なるパラメータの数(例えば、3つの空間座標次元又は3つのカラー次元)に対応することができる。次元の数kは、レスポンス関数を生成し、レスポンス関数を点群データ点に適用することに関連する計算需要を制御するために使用することができる、所定のパラメータとすることができる。パラメータσ2もまた、予め定められたパラメータとすることができる。レスポンス関数は、各々の点群データ点に適用され、それぞれの各点群データ点に対応するレスポンス値を生成することができる。
815において、複数の点群データ点のサブセットが選択される。サブセットは、選択ポリシー及び複数のレスポンス値を使用して選択することができる。例えば、サブセットは、レスポンス値に基づいて選択することができる。選択ポリシーは、各点が点に割り当てられたレスポンス値に基づいて(例えば、レスポンス値が閾値を満たすことに基づいて)サブセットに対して選択される、加重選択を実施することができる。いくつかの実施形態では、選択ポリシーは、レスポンス値を比較するための1つ以上の閾値をランダムに生成することなどにより、ランダム加重選択を実施する。
820において、複数の点群データ点のサブセットが出力される。サブセットは、特徴マッチング及び点群アライメントなどの更なる画像処理演算のために出力することができ、これは、点群データ点のサブセットの減少した密度に起因して改善することができる。図14は、k=10及びσ2=0.0005で本ソリューションに従ってリサンプリングされ、1405で保持される点の19.31%及び1410で保持される点の5.30%を生じた画像1400の一例を示す図である。図13に示されるように、本ソリューションは、被写体のエッジ及び輪郭などの関連する特徴を保持しながら、点群データ点の密度を約4倍から20倍減少させることが可能である。
上述したように、隣接行列Wのエッジ重みを決定するために使用される点群データ点xiとxjとの間の距離は、点群データ点の空間座標に基づくユークリッド距離(例えば、xi-xjを決定するためのL2ノルム)とすることができる。このように、カラーデータは隣接行列Wを生成するために使用されない。いくつかの実施形態では、点群データ点xi及びxj間の距離は、点群データ点に割り当てられた1つ以上のカラーチャンネルからのカラーデータに基づいて(例えば、空間座標に加えて)更に決定することができる。例えば、点群データ点間のユークリッド距離を決定する際に、空間次元に加えて、1つ以上のそれぞれのカラーチャンネル(例えば、赤、緑、青チャンネル)からの1つ以上のカラーデータ値を追加次元として使用することができる。カラーデータは、特定のスケール(例えば、0から1までのスケール)に正規化することができ、これは、空間次元が比較されるものと同じスケールとすることができ、又は、空間距離及びカラー距離に異なる重み付けが適用されるように、異なるスケールとすることができる。
カラーデータを使用すること(例えば、カラー認識フィルタを実施すること)は、点群データ点を再サンプリングする計算複雑さが増加し得るが、様々な状況で効果的であり得る。例えば、テキスト(例えば、カラー付きテキスト)は、テキストが被写体のエッジ又は輪郭を形成するのではなく、テキストが位置する平面の一部を形成すると検出することができるので、カラーデータを使用する場合により頻繁にサンプリングすることができる。さらに、点群データを生成するために使用される画像キャプチャデバイスによってキャプチャされたカラーデータは、画像データがキャプチャされたときに存在する照明に大きく依存し得る。そのため、照明、陰影、遮閉などの要因が、カラーデータの使用効果に影響を与える可能性がある。ダウンストリームで比較をするためにリサンプリングされる点群が、類似の、又は均一な照明である場合、カラーデータを使用することで変換の推定を改善することができる。また、カラーデータを使用することで、フライング画素(被写体の端の画素と同じカラーをとることがある)などの画像キャプチャデバイスの問題を軽減することができる。
いくつかの実施形態では、レスポンス関数は、カラーデータを使用する第1の動作モード又はカラーデータを使用しない第2の動作モードで適用することができる。動作モードは、点群データ点の明度パラメータなど、画像データからの情報に基づいて選択することができる。例えば、明度パラメータが、点群データ点の照明が均等性の閾値尺度(例えば、明度の中央値、平均値、又は標準偏差などの明度の統計的尺度に基づく)よりも大きいことを示す場合、第1の動作モードを選択することができる。
いくつかの実施形態では、レスポンス関数及びグラフフィルタを使用した再サンプリングの前に、1つ以上の予備フィルタが点群データ点に適用される。例えば、ボクセルグリッドフィルタを点群データ点に適用することができ、レスポンス関数をボクセルグリッドフィルタの出力に適用することができるが、これは、再サンプリングの全体的な有効性を改善することができる。ボクセルグリッドフィルタを適用することは、点群データ点の上に辺長lのグリッド(例えば、各ボクセルが特定の空間座標の容器として動作する3Dグリッド)を生成し、点群データ点の空間座標に基づいて各点群データ点をそれぞれのボクセルに割り当て、その後、それぞれの各ボクセルに割り当てられた各点群データ点のセントロイド(質量中心)位置及びセントロイドカラーにおいて更新点群データ点を生成することを含むことができる。ボクセルグリッドフィルタは、点群データ点の均一な密度(例えば、カメラがいくつかのランダムな再サンプリング方法において保持することができる画像データを検出する方法によるカメラからの距離が増加するにつれて減少する密度と比較して)を可能にするとともに、ローカルノイズ変動を平滑化することができる。
VI.ダウンサンプリングされた点群から輪郭点を検出し、輪郭点の解析に優先順位付けするためのシステム及び方法
さらなる画像処理演算を実施するために、輪郭点などリサンプリングされた点群の特徴を特定することができる。例えば、特徴を特定することにより、特徴マッチング及び特徴マッチングに基づく点群のアライメントを可能にし得る。特徴の効果的な選択(例えば、物理的に関連する特徴を保持すること)は、アライメントの目標性能及び品質を維持しながら、アライメントを実施するための計算要件を低減させることができる。いくつかの実施形態では、特徴は、スケール不変特徴変換(SIFT)又はスピードアップしたロバスト特徴(SURF)アルゴリズムなどのキーポイント検出方法を使用して選択される。
図9は、ダウンサンプリングされた点群から輪郭点を検出し、輪郭点の解析を優先させるための方法900を示す図である。方法900は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。とりわけ、処理回路212は、本明細書に記載された動作のいずれかを実施することができる。
905において、複数の点群データ点がアクセスされる。点群データ点は、被写体の表面に対応することができる。例えば、点群データ点は、3Dカメラ、MRIデバイス、又はCTデバイスによって検出された被写体の医用画像又は3D画像に対応することができる。
910において、点群データ点の特徴ベクトルが生成される。点群データ点の特徴ベクトルは、複数の点群データ点の少なくとも一つのサブセットの各点群データ点に対して生成することができる。点群データ点の特徴ベクトルは、点群データ点及び複数の隣接する点群データ点に基づくことができる。
いくつかの実施形態では、特徴ベクトルは、特徴ベクトルを表す複数の空間容器の各々に点群データ点と複数の隣接する点群データ点との間の複数の回転値を割り当てることによって生成される。例えば、特徴ベクトルは、高速点特徴ヒストグラム(FPFH)を使用して生成することができる。各空間軸上の回転値(例えば、シータ、ファイ、及びアルファ角度)は、空間容器の各々について決定することができる。各空間容器は、点群データ点の所定の半径内にある隣接する点群データ点を割り当てることができ、例えば、11個の空間容器を使用することができ、長さ33のベクトルをもたらす(11個の空間容器はそれぞれ3つの回転角度を割り当てられる)。特徴ベクトルの生成は、O(n*k2)のオーダーとすることができ、ここで、nは点群データ点の数であり、kは点群データ点の半径内の隣接点の数である。
いくつかの実施形態では、特徴ベクトルは、点群データ点の所定の半径内の隣接する点群データ点を使用して点群データ点の基準フレームを決定し、基準フレーム及び複数の空間容器に基づいて特徴ベクトルを生成することによって生成される。例えば、特徴ベクトルは、ヒストグラムの向きの符号数(SHOT)を使用して生成することができる。基準フレームは、隣接する点群データ点を使用して決定される9次元の基準フレームとすることができる。グリッド(例えば、等方性グリッド)は、32個の容器及び各容器に割り当てられた10個の角度を有するグリッドなど、複数の空間容器を特定するために生成することができ、これは、長さ329(容器を記述する320次元及び基準フレーム用の9次元)の特徴ベクトルをもたらすことができる。いくつかの実施形態では、特徴ベクトルはカラーデータを含み、これは追加の容器に割り当てられることができる。特徴ベクトルの生成は、O(n*k)のオーダーとすることができる。
特徴ベクトルを生成するために実施される処理は、精度及び計算時間などの要因に基づいて選択することができる。例えば、基準フレームを使用して特徴ベクトルを生成することは、被写体に関する関連情報を保持する精度及び忠実度の点で同様の性能で、計算時間を低減させることができる。リサンプリングに関して上述したように、カラーデータの使用は、環境の照明の均等性に影響され得るので、特徴ベクトルの生成は、照明に応答するカラーデータを使用することができる又は使用しないことができる種々の動作モードで実施することができる。例えば、カラーデータを使用することは、点群データをシーンに位置合わせするシーン位置合わせモード(例えば、被写体の3D画像データに位置合わせされた医療スキャンデータ)で動作する場合に有用であり得る。
915では、各特徴ベクトルが出力される。例えば、特徴ベクトルは、特徴マッチングを実施するために出力することができ、本ソリューションが特徴ベクトルを生成する態様に起因して、計算効率を向上させることができる。特徴ベクトルは、処理回路212のメモリなどのメモリ内の1つ以上のデータ構造に格納することができる。
VII.画像アライメント及び点群生成演算のための並列処理環境において処理リソースを動的に割り振るためのシステム及び方法
本明細書で説明する画像処理パイプラインは、並列処理演算を使用して、画像アライメント及び点群生成の計算時間を向上させることができる。例えば、処理回路212は、別々のスレッド、別々の処理コア、又は別々の仮想マシン(例えば、ハイパーバイザーによって制御されるような)などの処理リソースを割り振ることができ、点群リサンプリング及び特徴ベクトルの決定(例えば、2つの異なる点群を並列的にリサンプリングする、又は並列的にリサンプリングした点群から特徴ベクトルを生成する)などの並行処理の実施に使用することができる。処理回路212は、グラフィックス処理ユニット、フィールドプログラマブルゲートアレイ、複数のプロセッサ又はコンピューティングノードを有するコンピューティングクラスタ、若しくは他の並列処理デバイスなどの他のコンピューティングデバイス若しくはコンピューティング機械類を含むことができる。処理リソースの現在の需要及び処理ジョブのサイズに基づいて、処理回路212は、特定の処理ジョブを並列処理に特化した処理機械に動的に割り振り、他の処理ジョブを逐次処理に特化した処理機械に割り当てることが可能である。
いくつかの実装では、並列処理演算は、画像データ又は画像ストリームキャプチャソースのタイプに基づいて実施することができる。例えば、DICOMデータ(例えば、CTデータ、MRIデータ)は、奥行きカメラによって検出された3D画像データとは異なる特定の特徴を有することができる。本ソリューションは、各ソースから受信した各点群に異なる処理スレッドを割り当てることができ、各モダリティで実行される処理間の同期を維持するために、予想される計算需要に基づいて異なる画像ソースモダリティに大きい又は小さい処理リソースを割り振ることができる。適宜、並列及び逐次コンピューティングデバイスにわたって緊密にスケジュールされた方法で点群計算を実施することにより、処理回路212は、リアルタイムで正確な画像位置合わせを実施することができる。
ここで図15を参照すると、点群位置合わせ演算の計算性能を改善するために異なるコンピューティング機械に処理リソースを割り振るための方法1500の例示的なフロー図が描かれている。方法1500は、画像処理システム100、とりわけ少なくとも処理回路212、図13A及び13Bと関連して本明細書に記載されたコンピュータシステム1300、又は本明細書に記載される任意の他のコンピューティングデバイスによって実施、実行、又はその他の方法で遂行することができる。
1505において、処理回路212は、第1のメモリを有する第1の処理デバイス及び第2のメモリを有する第2のマルチプロセッサデバイスを特定することができる。処理回路212は、並列演算に特化した処理機械(例えば、演算ノードのクラスタ、グラフィック処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)等)、及び順次演算に特化した演算機械(例えば、高周波シングルコア又はマルチコアデバイス等)といった異なる処理機械を含むことができる。これらのデバイスの各々は、処理動作のためのメモリバンク又はコンピュータ可読メモリを含むことができる。いくつかの実装では、メモリバンク又は他のコンピュータ可読媒体は、異なる処理デバイス間で共有することができる。さらに、いくつかの処理デバイスのメモリは、他の処理デバイスのメモリよりも高帯域幅にすることができる。
いくつかの実装では、画像処理システム100の処理回路212は、モジュール化することができる。例えば、特定の処理デバイス及びメモリは、1つ以上のシステムバス又は通信バスを介してシステムに追加若しくは削除することができる。通信バスは、PCIエクスプレス及びイーサネットなどを含むことができる。異なるシステムバス及びその演算の更なる説明は、図13A及び13Bと関連して後述する。処理回路212は、1つ以上の通信又はシステムバスに問い合わせ、点群データを処理するために利用可能な処理リソースを特定し、列挙することができる。例えば、処理回路212は、1つ以上の並列処理ユニット(例えば、コンピューティングノードのクラスタ、GPU、FPGAなど)又は逐次処理ユニット(例えば、高周波シングルコア若しくはマルチコアデバイスなど)を特定することができる。デバイスが特定されると、処理回路212は、各処理デバイスと通信して、各デバイスに関連するパラメータ及びメモリバンク、マップ、又は領域を決定することができる。パラメータは、処理能力、コア、メモリマップ、構成情報、及び処理に関連する他の情報を含むことができる。
1510において、処理回路212は、第1の点群に対する第1の処理ジョブを特定することができる。処理回路212の処理デバイスが特定された後、処理回路212は、本明細書に詳述されている処理タスクの実施を開始することができる。処理回路212は、画像キャプチャデバイス104の点群情報、複合点群(例えば、グローバルシーン点群)、又は3D画像データに関連する点を処理するための命令を実行することができる。例えば、そのような処理ジョブの1つは、本明細書で上述したように、点群に対するk次元ツリーを計算することである。処理回路212によって特定することができる他の処理ジョブは、グラフフィルタ生成、ユークリッド距離の計算、全体明度値の決定、点群のダウンサンプリング、法線マップの計算、点群に対する特徴の生成、3D医用画像データ(例えば、セグメント化)を点群として表すことができる3D画像に変換、などを含むことができる。いくつかの実装では、本明細書に記載されるジョブ又は演算は、処理回路212が特定することができる特定の順序を有する。
処理回路212によって特定される処理ジョブは、処理回路212によって処理されるべき情報についてのメタデータなどのジョブ情報を含むことができる。ジョブ情報は、ジョブが実行されるときに処理されるべき情報を含むコンピュータメモリの1つ以上のデータ構造又は領域も含むことができる。いくつかの実装では、ジョブ情報は、ジョブが実行されるときに処理されるべきその情報を含むメモリの領域へのポインタを含むことができる。処理回路212によって特定された他のジョブ情報は、特定された処理デバイスによって実行されると、処理デバイスに、処理ジョブを遂行するために処理されるべき情報に対して計算タスクを実施させることができる命令を含むことができる。いくつかの実装では、第1の処理ジョブは、少なくとも1つの画像処理デバイス104から点群データを受信することに応答して特定することができる。
1515において、処理回路212は、第1の処理ジョブを第2のマルチプロセッサデバイスに割り当てることを決定することができる。特定の処理ジョブは、異なるより高性能処理ハードウェア上でより迅速に実施することができる。例えば、処理ジョブが、点群における特徴検出のための演算を含み、それが、並列的に実施することができる多くの演算を含む場合、処理回路212は、処理ジョブを並列コンピューティングデバイス上で実施するように決定することができる。処理デバイス(複数可)は、実施されるジョブに関する情報に基づいて、特定のジョブのために選択することができる。そのような情報は、ジョブによって処理される点群内のデータ点の数、処理回路212の一部である処理デバイスの利用量、又はジョブの全体的な処理複雑度を含むことができる。
特定のジョブで処理される点の数が閾値を超え、かつ処理ジョブが逐次ベースのアルゴリズムでない場合、処理回路212は、後述のデバイスのいずれかが存在するのであれば、GPU、クラスタ、又はFPGAなどのマルチプロセッサデバイス上でジョブを処理することを決定する処理を行うことができる。そうでなければ、点群が3D医用画像のものである場合など、処理すべき点の数が所定の閾値以下である場合(例えば、はるかに小さい、又は少ない点など)、処理回路212は、逐次処理を専門に行う処理デバイス上でジョブを処理するように決定することができる。別の例では、処理デバイスの1つが過度に利用されている場合(例えば、利用量が所定の閾値よりも大きい等)、処理回路212は、ジョブを異なるコンピューティングデバイスに割り当てるように決定することができる。これに対して、処理回路212は、ある処理デバイスが利用不足であり(例えば、利用量がそれぞれ所定の閾値よりも大きい、又は小さい、など)、妥当な時間で処理ジョブを実施するのに適していると判断した場合、処理回路は、処理ジョブをその処理デバイスに割り当てるように決定することができる。ジョブの処理の複雑さが所定の閾値よりも大きい場合(例えば、非常に高い計算順序など)、処理回路212は、マルチプロセッサデバイスなど、複雑さに適したコンピューティングデバイスにジョブを割り当てることができる。処理回路212が、処理ジョブは、逐次的な計算動作に特化した処理デバイスで実施されるべきであると決定した場合、処理デバイスは、ステップ1520Aを実施することができる。処理回路212が、処理ジョブは、並列コンピューティング演算に特化した第2のマルチプロセッサデバイスで実施されるべきであると決定した場合、処理デバイスは、ステップ1520Bを実施することができる。
1520A及び1520Bにおいて、処理回路212は、第1点群を含む第1処理ジョブの情報を、第2メモリ又は第1メモリに割り振ることができる。処理デバイスが特定のジョブに対して決定されると、処理回路212は、ジョブを遂行するためのジョブ固有のリソースを適切な処理デバイスに割り振ることができる。処理回路212が、1つ以上の並列処理デバイスを使用してジョブを実施すると決定した場合、処理回路212は、点群又は他の関連するデータ構造などのジョブ固有データを並列処理デバイスのメモリに送信するか、若しくは他の方法で割り振ることができる。ジョブ固有リソースが、並列処理デバイスと共有される位置のメモリに常駐する場合、処理回路212は、ジョブ関連データの位置へのポインタを処理デバイスに提供することができる。そうでなければ、処理回路212は、処理特定データを並列処理デバイスのメモリに伝送するか、又はそうでなければコピー(例えば、直接メモリアクセス(DMA)などを介して)して、実行のためのジョブを準備することが可能である。処理回路212は、NVIDIA CUDA又はOpenMPなどの1つ以上のアプリケーションプログラミングインターフェース(API)を使用して、任意の数の並列処理デバイス若しくはリソースと通信し、若しくは本明細書に開示される演算のいずれかを実施することができる。
処理回路212が、逐次処理デバイスを使用してジョブを実施すると決定した場合、処理回路212は、点群又は他の任意の関連するデータ構造などのジョブ固有データを、逐次処理デバイスのメモリに送信するか、さもなければ割り振ることが可能である。ジョブ固有リソースが、並列処理デバイスと共有される位置のメモリに常駐する場合、処理回路212は、ジョブ関連データの位置へのポインタを処理デバイスに提供することができる。そうでなければ、処理回路212は、処理特定データを逐次処理デバイスのメモリに伝送するか、又は他の方法でコピーして(例えば、直接メモリアクセス(DMA)などを介して)、実行のためのジョブを準備することが可能である。処理回路212は、OpenMPなどの1つ以上のアプリケーションプログラミングインターフェース(API)を使用して、任意な数の逐次処理デバイス又はリソースと通信し、若しくは本明細書に開示される演算のいずれかを実施することが可能である。
1525において、処理回路212は、第2の点群に対する第2の処理ジョブを特定することができる。別のジョブが他のコンピューティングデバイスによって割り振られ、又は実行されている間でも、処理回路212は、画像キャプチャデバイス104の点群情報、複合点群(例えば、グローバルシーン点群)、若しくは3D画像データに関連する点を処理し、これらのジョブを他のコンピューティングデバイスに割り振るための命令を実行することが可能である。例えば、そのような処理ジョブの1つは、本明細書で上述したように、点群に対するk次元ツリーを計算することである。処理回路212によって特定され得る他の処理ジョブは、グラフフィルタ生成、ユークリッド距離の計算、全体明度値の決定、点群のダウンサンプリング、法線マップの計算、点群に対する特徴の生成、3D医用画像データ(例えば、セグメント化)を点群として表すことができる3D画像に変換、又は本書に記載された他の処理演算のいずれかを含むことができる。いくつかの実装では、本明細書で説明されるジョブ又は演算は、処理回路212が特定することができる特定の順序を有する。いくつかの実装では、処理回路212は、現在のジョブが依存する前のジョブが処理回路212のコンピューティング機械によってまだ処理されている場合、ジョブの処理を停止させることができる。
処理回路212によって特定される処理ジョブは、処理回路212によって処理されるべき情報についてのメタデータなどのジョブ情報を含むことができる。ジョブ情報は、ジョブが実行されるときに処理されるべき情報を含むコンピュータメモリの1つ以上のデータ構造又は領域も含むことができる。いくつかの実装では、ジョブ情報は、ジョブが実行されるときに処理されるべきその情報を含むメモリの領域へのポインタを含むことができる。処理回路212によって特定された他のジョブ情報は、特定された処理デバイスによって実行されると、処理デバイスに、処理ジョブを遂行するために処理されるべき情報に対して計算タスクを実施させることができる命令を含むことができる。いくつかの実装では、処理ジョブは、少なくとも1つの画像処理デバイス104から点群データを受信することに応答して特定することができるか、又は別のジョブが完了することに応答してすることができる。
1530において、処理回路212は、第2の処理ジョブを第1の処理デバイスに割り当てることを決定することができる。特定された処理ジョブが高次の複雑さを有し、かつ並列的に実施することができる多くの動作を有しない場合、処理回路212は、処理ジョブを高いクロック周波数を有する逐次コンピューティングデバイスに割り当てるように決定することができる。この決定は、実施されるジョブに関する情報に基づいて行われることも可能である。そのような情報は、ジョブによって処理される点群内のデータ点の数、処理回路212の一部である処理デバイスの利用量、又はジョブの全体的な処理の複雑さを含むことができる。いくつかの実装では、ジョブは、優先値に基づいて特定のコンピューティングデバイスに割り当てられることができる。例えば、逐次コンピューティングデバイスに対して高い優先値を有するジョブは、非逐次コンピューティングデバイスに割り当てられる前に、逐次コンピューティングデバイスに割り当てられることになる。
特定のジョブにおいて処理されるポイントの数が閾値を超え、処理ジョブが逐次ベースのアルゴリズムではない場合、処理回路212は、後述のデバイスのいずれかが存在するのであれば、GPU、クラスタ、又はFPGAなどのマルチプロセッサデバイス上でジョブを処理することを決定する処理を行うことができる。そうでなければ、点群が3D医用画像のものである場合など、処理すべき点の数が所定の閾値以下である場合(例えば、はるかに小さい、又は少ない点など)、処理回路212は、逐次処理を専門に行う処理デバイス上でジョブを処理するように決定することが可能である。別の例では、処理デバイスの1つが過度に利用されている場合(例えば、利用量が所定の閾値よりも大きいなど)、処理回路212は、ジョブを異なるコンピューティングデバイスに割り当てるように決定することができる。これに対して、処理回路212は、ある処理デバイスが利用不足であり(例えば、利用量がそれぞれ所定の閾値よりも大きい、又は小さい、など)、妥当な時間で処理ジョブを実施するのに適していると判断した場合、処理回路は、処理ジョブをその処理デバイスに割り当てるように決定することができる。ジョブの処理の複雑さが所定の閾値よりも大きい場合(例えば、非常に高い計算順序など)、処理回路212は、マルチプロセッサデバイスなど、複雑さに適した計算デバイスにジョブを割り当てることができる。さらに、特定のアルゴリズム又はプロセスが、並列に実施することができない大多数の演算を含む場合、処理回路212は、ジョブを逐次処理デバイスに割り当てることができる。処理回路212が、処理ジョブは逐次計算演算に特化した処理デバイスで実施されるべきであると決定した場合、処理デバイスは、ステップ1535Aを実施することができる。処理回路212が、処理ジョブは、並列計算演算に特化した第2のマルチプロセッサデバイスで実施されるべきであると決定した場合、処理デバイスは、ステップ1535Bを実施することができる。
1535A及び1535Bにおいて、処理回路212は、第2の処理ジョブの情報を第1のメモリ又は第2のメモリに割り振ることができる(ステップ1535A及び1535B)。処理デバイスが特定のジョブに対して決定されると、処理回路212は、ジョブを遂行するためのジョブ固有リソースを適切な処理デバイスに割り振ることができる。処理回路212が、逐次処理デバイスを使用してジョブが実施されると決定した場合、処理回路212は、点群又は他の関連するデータ構造などのジョブ固有データを、逐次処理デバイスのメモリに送信するか、若しくは他の方法で割り振ることができる。ジョブ固有リソースが、並列処理デバイスと共有される位置のメモリに常駐する場合、処理回路212は、ジョブ関連データの位置へのポインタを処理デバイスに提供することができる。そうでなければ、処理回路212は、処理特定データを逐次処理デバイスのメモリに伝送するか、又は他の方法でコピーして(例えば、直接メモリアクセス(DMA)などを介して)、実行のためのジョブを準備することが可能である。処理回路212は、OpenMPなどの1つ以上のアプリケーションプログラミングインターフェース(API)を使用して、任意な数の逐次処理デバイス又はリソースと通信し、若しくは本明細書に開示される演算のいずれかを実施することが可能である。
処理回路212が、1つ以上の並列処理デバイスを使用してジョブが実施されると決定した場合、処理回路212は、点群又は他の任意の関連データ構造などのジョブ特定データを並列処理デバイスのメモリに送信するか、そうでなければ割り振ることができる。ジョブ固有リソースが、並列処理デバイスと共有される位置のメモリに常駐する場合、処理回路212は、ジョブ関連データの位置へのポインタを処理デバイスに提供することができる。そうでなければ、処理回路212は、処理特定データを並列処理デバイスのメモリに伝送するか、又はそうでなければコピー(例えば、直接メモリアクセス(DMA)などを介して)して、実行のためのジョブを準備することが可能である。処理回路212は、NVIDIA CUDA又はOpenMPなどの1つ以上のアプリケーションプログラミングインターフェース(API)を使用して、任意の数の並列処理デバイス又はリソースと通信し、若しくは本明細書に開示される演算のいずれかを実施することが可能である。
1540において、処理回路212は、第1の処理デバイス及び第2のマルチ処理デバイスにそれらの割り当てられた処理ジョブを実施させるために、命令を転送することができる。適切な処理デバイスに特定のジョブの処理を遂行させるために、処理回路212は、各ジョブに関連する命令を適切なコンピューティングデバイスに(例えば、1つ以上のシステムバス又は通信バス等を介して)転送することができる。いくつかの実装では、コンピューティングデバイスに転送される命令は、デバイス固有命令を含むことができる。例えば、GPUデバイスが処理ジョブに選択された場合、処理回路212は、ジョブを実行するためにGPU固有命令(例えば、CUDA命令など)を特定して送信することができる。同様に、標準的なCPUデバイス(例えば、逐次処理デバイスなど)が選択される場合、処理回路212は、処理ジョブを遂行するためにCPU固有命令を特定し、送信することができる。各コンピューティングデバイスに対する処理命令は、処理回路212によって特定されたジョブ情報に含むことができる。処理ジョブが特定の処理デバイス上で完了すると、処理回路212は、そのデバイスからのジョブが完了したことを示す信号を特定することができる。その後、処理回路212は、処理ジョブの一部として遂行された計算の結果を含むメモリの領域を特定し、更なる処理のために作業メモリの別の領域にコピーすることができる。
VIII.医用画像の点群をグローバルシーン点群に位置合わせするためのシステム及び方法
キャプチャデバイス104から取り込んだ画像208をダウンサンプリングして計算効率を向上させ、点群から特徴ベクトルを抽出したら、処理システムは、CTスキャン画像又はMRI画像から生成した3Dモデルなどの3D医用画像を点群に位置合わせすることが可能である。CTスキャン画像をリアルタイムで点群に位置合わせすることにより、医用画像はリアルタイムの被写体情報と同じ基準フレームで描画されるため、医療従事者は医用画像に示された特徴に手術器具をより容易にアライメント調整することが可能となる。さらに、基準フレームデータは、手術器具からの位置情報と組み合わせて使用することができる。トラッキングデータは、被写体の点群データ及び変換された医用画像と同じ基準フレームに変換され、外科的治療の正確な適用を改善することができる。
図1及び2に戻って説明すると、画像処理システム100の処理回路212は、1つ以上の画像キャプチャデバイス104からの点群を被写体の3D医用画像に位置合わせすることができる。3D医用画像は、例えば、CTスキャン画像又はMRI画像から生成された3Dモデルとすることができる。位置合わせ処理の処理速度を向上させるために、処理回路212は、オフライン処理で医用画像の特徴ベクトルを特定するために使用することができる。したがって、医用画像を点群に位置合わせする際に、処理回路212は、リアルタイムで撮影される点群の特徴ベクトルを計算すればよいので、システム全体のパフォーマンスを向上させることができる。
処理回路212は、第1の基準フレームを有するグローバルシーンを表す第1の点群のデータ点のセットにアクセスすることができる。グローバルシーンは、例えば、点群のデータ点のセットによって表されるシーンとすることができる。例えば、キャプチャデバイス104などの3Dカメラを使用して画像をキャプチャする場合、被写体が位置する周囲又は部屋など、解析対象以外の特徴もキャプチャすることができる。したがって、点群は、被写体などの関心対象領域の表面のみを表すことができず、画像位置合わせ処理にあまり関連しない環境の表面も含むことができる。グローバルシーン点群は、本明細書で上述したように、画像キャプチャデバイス104から生成された結合点群とすることができる。
処理回路212は、第1の基準フレームとは異なる第2の基準フレームを有する3D医用画像の特徴のデータ点のセットを特定することができる。特徴データ点は、例えば、オフラインプロセスで取得された3D医用画像から抽出された1つ以上の特徴ベクトルとすることができる。特徴ベクトルは、例えば、処理回路212が、図9と関連して本明細書で上述した方法900の1つ以上のステップを実施することによって生成することができる。3次元医用画像の特徴ベクトルにアクセスすることは、処理回路212のメモリ内の1つ以上のデータ構造から特徴ベクトルを取り出すことを含むことができる。
いくつかの実装では、3D医用画像に存在する特徴ベクトルを決定する前に、処理回路212は、本明細書において上述した態様に従って、3D医用画像から生成された点群をダウンサンプリングすることが可能である。例えば、処理回路212は、3D医用画像から1つ以上のデータ点を抽出して、3D医用画像を表す点群を生成することができる。3D医用画像から抽出された点群は、画像キャプチャデバイス104によって生成された点群のものとは異なる基準フレームを有することができる。いくつかの実装では、3D医用画像から取り込まれた点群はダウンサンプリングされず、代わりに、特徴ベクトルは3D医用画像の点全体に基づいて決定される。
処理回路212は、特徴ベクトルからの第1の基準フレーム、データ点の第1のセット、及び特徴データ点のセットを使用して、3D医用画像に対する変換データ構造を決定することができる。グローバルシーンを表す点群又は3D医用画像を表す点群の少なくとも一方がダウンサンプリングされた実装では、処理回路212は、縮小された、又はダウンサンプリングされた点群(複数可)を使用して変換データ構造を生成することができる。変換データ構造は、1つ以上の変換行列を含むことができる。変換行列は、例えば、4×4の剛体変換行列とすることができる。変換データ構造の変換行列を生成するために、処理回路212は、例えば、図9と関連して本明細書で上述した方法900のステップの1つ以上を実施することによって、グローバルシーン点群の1つ以上の特徴ベクトルを特定することができる。この処理の結果は、各点群に対する特徴ベクトルのセットを含むことができ、ここで、グローバルシーン点群は、基準フレームとして使用することができる(例えば、その点群の点は、変換されない)。処理回路212は、各行列が医用画像の点群に適用される(例えば、変換するために使用される)とき、医用画像の特徴がグローバルシーン点群における同様の特徴とアライメント調整するように変換行列を生成することが可能である。
変換行列を生成するために(例えば、変換データ構造の一部として、又は変換データ構造として)、処理回路212は、処理回路212のメモリから、各点群に対応する特徴にアクセスするか、若しくは他の方法で取得することができる。変換される点群のものに対応する基準フレーム点群内の点を見つけるために、処理回路は、各点群内の特徴ベクトル間のL2距離を計算することができる。これらの対応関係が列挙された後、処理回路212は、ランダムサンプルコンセンサス(RANSAC)アルゴリズムを適用して、誤った対応関係を特定し、拒絶することができる。
RANSACアルゴリズムは、各点群の特徴におけるどの対応がアライメントプロセスに関連し、どれが偽の対応(例えば、変換またはアライメント調整される点群における特徴に対応すると誤って特例される1つの点群における特徴)であるかを決定するために使用することができる。RANSACアルゴリズムは反復可能であり、満足のいくモデルが適合されるまで、2つの点群間の誤った対応を拒絶することができる。出力される満足のいくモデルは、変換される点群に対応するデータ点を有する基準点群の各データ点を特定することができ、その逆もまた可能である。
RANSACアルゴリズムを実施する際に、処理回路212は、特徴ベクトル間のL2距離を使用して特定された対応関係のフルセットから、最小対応関係を含む特徴対応関係のサンプルサブセットをランダムに(例えば、疑似ランダムに、等)選択することができる。処理回路212は、このサンプルサブセットの要素を使用して、適合モデル及び対応するモデルパラメータを計算することができる。サンプルサブセットのカーディナリティは、モデルパラメータを決定するのに十分な最小のものとすることができる。処理回路212は、対応関係のフルセットのどの要素が、推定されたモデルパラメータによってインスタンス化されたモデルと一致するかをチェックすることができる。対応関係は、ノイズの影響に起因する最大偏差を定義するある誤差閾値(例えば、1%、5%、10%など)内で推定モデルパラメータのセットによってインスタンス化された適合モデルに適合しない場合に外れ値としてみなすことができる。適合モデルに対して得られたインライアのセットは、対応関係のコンセンサスセットと呼ぶことができる。処理回路212は、ある反復において得られたコンセンサスセットが十分なインライア(例えば、所定の閾値以上など)を有するまで、RANSACアルゴリズムのステップを反復して繰り返すことができる。その後、コンセンサスセットは、変換データ構造を決定するための反復最接近(ICP)アルゴリズムで使用することができる。
処理回路212は、RANSACアルゴリズムを使用することによって生成された対応する特徴のコンセンサスセットを使用して、ICPアルゴリズムを実施することができる。コンセンサスセット内の各対応する特徴は、各点群における1つ以上のデータ点を含むことができる。ICPアルゴリズムを実施するとき、処理回路212は、基準点群(又は選択されたセット)内の最も近い点を、変換される点群内の点クローゼットポイントにマッチングさせることができる。その後、処理回路212は、変換される点群内の各点が基準点群内のその一致点と最適にアライメントする二乗平均平方根点間距離メトリック最小化技術を使用して、回転及び並進の組み合わせを推定することができる。処理回路212は、点群内の点を変換して、点群内の特徴間の誤差の量を決定し、この処理を使用して反復し、変換される点群の位置及び回転に対する最適な変換値を決定することができる。これらの出力値は、3次元医用画像の位置の変化又は回転の変化を含む4×4の剛体変換行列などの変換行列に組み立てることができる。この出力された変換行列を、変換データ構造とすることができる。
3次元医用画像の変換行列は、3次元医用画像の位置の変化又は回転の変化に対応させることができる。3次元医用画像を、グローバルシーンを表す点群に位置合わせするために、処理回路212は、3次元医用画像内の点に変換行列の位置の変更又は回転の変更を適用することができる。変換行列を適用することによって、3D医用画像は、キャプチャデバイス104によって撮像された点群と同じ基準フレームに変換される。したがって、変換行列の適用により、3D医用画像は、グローバルシーンの点群とアライメント調整される。変換行列の計算及び3D医用画像のアライメントは、リアルタイムで実施することができる。いくつかの実装では、グローバルシーンのデータ点及び変換された3D医用画像のデータ点は、3D医用画像がグローバルシーン点群のデータ点と共にグローバルシーンの基準フレームに対して位置付けられるように、単一の基準フレーム内に配置することができる。
処理回路212は、3D医用画像を第1の点群に位置合わせすることに応答して、第1の点群及び3D医用画像のレンダリングを表示するために、ユーザーインターフェース120に表示情報を提供することができる。グローバルシーン基準フレームは、変換された3D医用画像と共に、1つ以上の3Dレンダリング処理を使用して表示データを生成するために使用することができる。表示データは、例えば、画像処理システム100のユーザーインターフェース120に表示することができる。
画像処理システム100は、グローバルシーン点群の基準フレームにおける変換された3D画像に加え、情報を含むことができる。例えば、処理回路212は、外科用器具からトラッキングデータを受信し、グローバルシーン点群の基準フレームにおける外科手術指示の表示を提供することができる。例えば、グローバルシーン点群の基準フレームが生成される画像キャプチャデバイス104の1つを使用して、手術指示の画像データ(例えば、位置、動き、トラッキングデータなど)を受信することができる。器具はグローバルシーン点群と同じ基準フレームにあるので、手術器具の位置及びトラッキングデータは、グローバルシーン点群を含めた変換された3D医用画像と共に表示することができる。
いくつかの実装では、処理回路212は、外科用器具からのトラッキングデータを第1の基準フレームに変換して、変換されたトラッキングデータを生成することができる。変換されたトラッキングデータは、位置、回転、又は外科用器具から受信した他の情報の変更を含むことができる。例えば、外科用器具の位置及びグローバルシーンの基準フレームとの間に検出されたオフセットがある場合、処理回路212は、オフセットを補償するためにトラッキングデータを再配置又は変形させることができる。オフセットは、ユーザー入力によって手動で補正することができる。例えば、ユーザーインターフェース120を観察しているユーザーがオフセットに気付いた場合、手動で変換値を入力して、外科用器具のトラッキングデータを変換して補正することができる。いくつかの実装では、このプロセスは、処理回路212によって自動的に実施することができる。その後、処理回路212は、変換されたトラッキングデータを使用して、グローバルシーン点群及び変換された3D医用画像と共にグローバルシーン基準フレームにおいて変換された外科用器具トラッキングデータをレンダリングする表示情報を作成することができる。
グローバルシーンからの情報を使用して、処理回路212は、第1の点群及び3D医用画像に関連する第1の基準フレーム内の関心位置を決定することができる。例えば、関心位置は、3D医用画像がグローバルシーンと適切にアライメント調整できない(例えば、許容誤差の範囲内ではない等)領域を含むことができる。ある状況下では、3D医用画像は古くなり、グローバルシーンに適切に位置合わせされないことがある。本明細書において上記で詳述したICPプロセスからの出力値から、処理回路は、特徴対応関係のペア(対)が許容誤差範囲内でアライメント調整されなかった若干の場所を特定することができる。関心対象位置が検出された場合、処理回路212は、ユーザーインターフェース120にレンダリングされた表示データ内にハイライトされた領域(例えば、何らかの方法で強調される、赤く点滅する、など)を生成することができる。強調された領域は、3D医用画像又はグローバルシーン上の関心対象位置に対応することができる。いくつかの実装では、関心対象位置を決定することは、病変、骨折、又は外科的情報を使用して治療することができる他の医学的問題などの特許データから取得することができる。この位置は、医療専門家によって入力されるか、又は他の処理を使用して自動的に検出することができる。医療従事者は、例えば、ユーザーインターフェース上の1つ以上の入力を使用して、場所を入力又は特定することができる。
関心対象位置が、ロボットデバイスによって部分的に自動化することができる外科手術又は他の医療処置に関連する位置である場合、処理回路212は、グローバルシーン点群、3D医用画像、及び関心位置に基づいて、外科用器具又は他のロボットデバイスに対する動作指示を生成することができる。グローバルシーン点群データ及び外科用器具のトラッキングされた位置を使用して、処理回路は、グローバルシーン点群に干渉しない(例えば、外科用器具を望ましくない方法で被写体に衝突させる等)経路、又は一連の位置を特定することができる。グローバルシーン点群はリアルタイムで計算することができ、外科用器具はリアルタイムでトラッキングすることができるので、処理回路212は、外科用器具をある期間内に関心対象位置に移動させるための最新の移動指示を計算し、提供することができる。作られた移動命令は、外科用器具を特定の場所に移動させる命令、又は外科用器具が望ましくない方法で患者に干渉することなく関心対象位置に到達することを可能にする処理回路212によって計算された経路に沿って、外科用器具を移動させる命令を含む。移動命令を生成した後、処理回路212は、外科用器具に通信可能に結合することができる通信回路216を使用して、移動命令を外科用器具に送信することができる。命令は、例えば、1つ以上のメッセージ又はデータパケットで送信することができる。
処理回路212は、第1の点群の生成に少なくとも部分的に責任を負うキャプチャデバイスからの3D医用画像に表される患者の距離を決定するように構成することができる。例えば、処理回路212は、グローバルシーン内の基準マーカー又はオブジェクトを利用して、グローバルシーン点群をキャプチャするキャプチャデバイス104と撮像される被写体との間における実際の距離を決定することができる。既知の距離又は長さを有するグローバルシーン点群内の基準オブジェクト若しくは場がある場合、処理回路212は、既知の距離又は長さを利用して、画像キャプチャデバイス104からグローバルシーン内の他の特徴までの距離など、グローバルシーン点群の異なる寸法若しくはパラメータを決定若しくは計算することができる。次元医用画像内の特徴に対応するグローバルポイントクラウド内の被写体の特徴を使用して、処理回路212は、被写体の平均位置を決定することができる。この平均位置と基準長さ又は距離とを使用して、処理回路212は、画像キャプチャデバイス104からの被写体の距離を決定することができる。
図10は、医用画像の点群をグローバルシーン点群に位置合わせするための方法1000を示す図である。方法1000は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。
1005において、複数の第1の特徴ベクトルがアクセスされる。第1の特徴ベクトルは、被写体の第1の画像データを表す第1の点群に対応することができる。例えば、第1の特徴ベクトルは、特徴検出の前に再サンプリングすることができる被写体の第1の点群データから生成することができる。第1の画像データは、医用画像(例えば、CT、MRI)であることができる。
1010において、複数の第2の特徴ベクトルがアクセスされる。第2の特徴ベクトルは、被写体の第2の画像データを表す第2の点群に対応することができる。例えば、第2の特徴ベクトルは、特徴検出の前に再サンプリングすることができる被写体の第2の点群データから生成することができる。
複数の第2の特徴ベクトルは、基準フレームにマッピングすることができる。例えば、第1の画像データは、基準のフレームに対応するグローバルシーン点群(これは、時間と共に生成及び更新され得る)のものとすることができる。
1015において、複数の第1の特徴ベクトルの変換が決定される。変換は、複数の第1の特徴ベクトルを基準フレームとアライメントさせるために決定することができる。いくつかの実施形態では、1つ以上の第1の特徴ベクトルと1つ以上の第2の特徴ベクトルとの間に(例えば、特徴ベクトル間のL2距離に基づいて)対応関係が生成される。変換は、ランダムサンプルコンセンサス(RANSAC)及び反復最接近(ICP)などの、特徴ベクトル又は特徴ベクトル間の対応関係に1つ以上のアライメントアルゴリズムを適用することによって決定することができ、いくつかの実施形態では、第1のパスがRANSACを使用して実施され、第2のパスがICPを使用して実施され、これは、特定される変換の正確さを向上させることができる。変換は、第1の点群データ点に適用することができる変換行列として、アライメントアルゴリズム(複数可)を使用して決定することができる。
1020において、複数の第1の特徴ベクトル(又は第1の点群データ点)は、第2の点群と(例えば、グローバルシーンの基準フレームと)アライメント調整される。アライメントは、第1の特徴ベクトル又は第1の特徴ベクトルに関連付けられた第1の点群データ点に変換(例えば、変換行列)を適用することによって実施することができる。
IX.事前にキャプチャされた医用画像及びグローバルシーン画像を使用したリアルタイム外科手術計画視覚化のためのシステム及び方法
本明細書で説明する画像処理パイプラインは、医用画像及びモデルと一緒に3D画像を器具ナビゲーションのための計画軌道と共に可視化することなど、改善された手術計画可視化を可能にすることができる。
図11は、事前にキャプチャされた医用画像及びグローバルシーン画像を使用してリアルタイムで外科手術計画視覚化を行うための方法1100を表している。方法1100は、画像処理システム100など、本明細書に記載される様々なデバイス及びシステムを使用して実施することができる。
1105において、被写体に関する医用画像及び被写体に関する3次元画像データがアクセスされる。医用画像は、CT画像又はMRI画像などの様々な医用画像を含むことができる。3次元画像データは、奥行きカメラなどの1つ以上の3次元カメラから受信することができる。
1110において、医用画像は、3次元画像データに位置合わせされる。位置合わせは、医用画像データ及び3次元画像データをリサンプリング(再サンプリング)すること、リサンプリングされたデータから特徴を決定すること、医用画像データ及び3次元画像データを(例えば、互いに又はグローバル基準フレームに)アライメント調整させるための変換を特定すること、並びに医用画像データ又は3次元画像データの一方又は両方に変換を適用することなど、本書に記載する様々なプロセスを使用して実施することができる。
1115において、ユーザーインターフェースを介した視覚的インジケータを受信する。視覚的インジケータは、医用画像データ及び3D画像データを使用して提示された環境における軌跡又は経路を示すことができる。例えば、視覚的インジケータは、器具が被写体に導入される経路を示すことができる。
1120で、視覚的インジケータは、医用画像にマッピングされる。例えば、視覚的インジケータを受信する基準フレームを特定することができ、視覚的インジケータを医用画像にマッピングするために、視覚的インジケータの医用画像への変換を決定することができる。
1125において、医用画像、3次元画像データ、及び視覚的インジケータの表現が提示される。医用画像、3次元画像データ、及び視覚的インジケータは、ディスプレイデバイスを使用して提示することができる。例えば、視覚的インジケータは、被検体の3次元画像、及び被検体のCT又はMRI画像上にオーバーレイとして提示することができる。医用画像を提示することは、被写体の目標特徴のハイライト又は器具の軌跡の少なくとも一方を含む視覚的インジケータに対応する表示データを提示することを含むことができる。
X.3次元画像環境において器具の動きを動的にトラッキングするためのシステム及び方法
上述したように、IRセンサは、被写体の周囲の環境における器具をトラッキングするためだけでなく、器具が被写体に対してオペレーションされている間にも使用することができる。本ソリューションは、トラッキングデータを使用して、トラッキングされた器具の表現を3D画像データ及び医用画像データ(例えば、CT又はMRI)と共に表示し、器具が被写体とどのように相互作用するかをユーザーが効果的に視覚化することを可能にすることができる。
1205において、被写体についての環境に関する3次元画像データにアクセスすることができる。3次元画像データは、奥行きカメラなどの1つ以上の3次元カメラから受信することができる。
1210において、被写体に関する医用画像にアクセスすることができる。医用画像は、CT又はMRI画像などの様々な医用画像を含むことができる。
1215で、医用画像は、3次元画像データに位置合わせすることができる。位置合わせは、医用画像データ及び3次元画像データをリサンプリングすること、リサンプリングされたデータから特徴を決定すること、医用画像データ及び3次元画像データを(例えば、互いに又はグローバル基準フレームに)アライメントする変換を特定すること、並びに医用画像データ又は3次元画像データの一方若しくは双方に変換を適用することなど、本書に記載する様々なプロセスを使用して実施することが可能である。
1220において、3D画像データから器具を特定することができる。器具は、物体のテンプレート特徴を取得し、テンプレート特徴を3D画像データから抽出された特徴と比較するなど、3D画像データを使用して様々なオブジェクト(物体)認識処理のいずれかを実施することによって特定することができる。器具は、器具に結合された識別子(例えば、視覚的インジケータ)に基づいて特定することができ、これは、器具が特定される3D画像データの探索空間を減少させることによって、器具を特定するための計算要件を減少させることができる。
1225において、器具のモデルにアクセスする。モデルは、器具の形状、輪郭、エッジ、又は他の特徴を示すことができる。モデルは、機器を特定するために使用されるテンプレートの特徴を含むことができる。
1230において、器具を表す3次元画像データの一部を器具のモデルにマッチングさせることにより、器具に関する位置データがトラッキングされる。例えば、画像データから抽出された特徴を器具のモデルにマッチングさせることに応答して、3次元画像データにおける器具の位置を特定し、画像(例えば、3Dカメラからの画像のストリーム)にわたって監視して、器具をトラッキングすることが可能である。
XI.リアルタイム複数モダリティ画像アライメントのためのコンピューティング環境
図13A及び13Bは、コンピューティングデバイス1300のブロック図を示している。図13A及び13Bに示すように、各コンピューティングデバイス1300は、中央処理装置ユニット(CPU)1321、及びメインメモリユニット1322を含む。図13Aに示すように、コンピューティングデバイス1300は、ストレージデバイス1328、インストールデバイス1316、ネットワークインターフェース1318、I/Oコントローラ1323、ディスプレイデバイス1324a~1324n、キーボード1326及びポインティングデバイス1327、例えばマウスを含むことができる。ストレージデバイス1328は、限定されないが、オペレーティングシステム、ソフトウェア、及びシステム200のソフトウェアを含むことができる。図13Bに示すように、各コンピューティングデバイス1300は、追加のオプション要素、例えば、メモリポート1303、ブリッジ1370、1つ以上の入力/出力デバイス1330a~1330n(一般に参照符号1330を用いて呼ばれる)、及びCPU1321と通信するキャッシュメモリ1340も含むことが可能である。
CPU1321は、メインメモリユニット1322からフェッチされた命令に応答して処理する任意の論理回路である。多くの実施形態では、CPU1321は、マイクロプロセッサユニット、例えば、カリフォルニア州マウンテンビューのインテル社によって製造されたもの、イリノイ州シャンバーグのモトローラ社によって製造されたもの、ARMプロセッサ(例えば、ARMホールディングスから、ST、TI、ATMELなどになどによって製造されたもの)及びカリフォルニア州サンタクララのNvidiaによって製造されるTEGRAシステムオンチップ(SoC)、ニューヨーク州ホワイトプレーンズのインターナショナルビジネスマシーンズ若しくはカリフォルニア州サニーベールのアドバンストマイクロデバイスによって製造されるPOWER7プロセッサ、又はカリフォルニア州サンホーズのアルテラ、インテル社、カリフォルニア州サンホーズのXlinix、若しくはカリフォルニア州アリソビエホのマイクロセミなどからのフィールドプログラムアレイ(「FPGAs」)などによって提供される。コンピューティングデバイス1300は、これらのプロセッサのいずれか、又は本明細書に記載されるように動作することができる他のプロセッサをベースとすることができる。CPU1321は、命令レベル並列処理、スレッドレベル並列処理、異なるレベルのキャッシュ、及びマルチコアプロセッサを利用することができる。マルチコアプロセッサは、単一のコンピューティングコンポーネント上に2つ以上の処理ユニットを含むことができる。マルチコアプロセッサの例としては、AMD PHENOM IIX2、INTEL CORE i5、INTEL CORE i7が含まれる。
メインメモリユニット1322は、データを記憶することができ、任意の記憶場所をマイクロプロセッサ1321によって直接アクセスすることができる1つ以上のメモリチップを含むことができる。メインメモリユニット1322は、ストレージ1328のメモリよりも揮発性で高速であることができる。メインメモリユニット1322は、動的ランダムアクセスメモリ(DRAM)又は静的ランダムアクセスメモリ(SRAM)、バーストSRAM若しくはシンクバーストSRAM(BSRAM)、高速ページモードDRAM(FPM DRAM)、拡張DRAM(EDRAM)、拡張データ出力RAM(EDO RAM)、拡張データ出力DRAM(EDO DRAM)、バースト拡張データ出力DRAM(BEDO DRAM)、シングルデータレート同期DRAM(SDR SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、ダイレクトラムバスDRAM(DRDRAM)、若しくはエクストリームデータレートDRAM(XDR DRAM)などの任意の変種とすることができる。いくつかの実施形態では、メインメモリ1322又はストレージ1328は、不揮発性であることができ、例えば、不揮発性リードアクセスメモリ(NVRAM)、フラッシュメモリ不揮発性スタティックRAM(nvSRAM)、強誘電体RAM(FeRAM)、磁気抵抗RAM(MRAM)、相変化メモリ(PRAM)、コンダクティブブリッジRAM(CBRAM)、シリコン-酸化物-窒化物-シリコン(SONOS)、抵抗RAM(RRAM)、レーストラック、ナノRAM(NRAM)、又はミリペードメモリである。メインメモリ1322は、上述したメモリチップのいずれかに基づくことができ、又は本明細書で説明するように動作することができる他の任意の利用可能なメモリチップに基づくことができる。図13Aに示す実施形態では、プロセッサ1321は、システムバス1350(以下でより詳細に説明する)を介してメインメモリ1322と通信を行う。図13Bは、プロセッサがメモリポート1303を介してメインメモリ1322と直接通信するコンピューティングデバイス1300の一実施形態を描いている。例えば、図13Bでは、メインメモリ1322は、DRDRAMとすることができる。
図13Bは、メインプロセッサ1321が、時にバックサイドバスと呼ばれる二次バスを介してキャッシュメモリ1340と直接通信する実施形態を示す。他の実施形態では、メインプロセッサ1321は、システムバス1350を使用してキャッシュメモリ1340と通信する。キャッシュメモリ1340は、基本的には、メインメモリ1322よりも高速な応答時間を有し、基本的には、SRAM、BSRAM、又はEDRAMによって提供される。図13Bに示す実施形態では、プロセッサ1321は、ローカルシステムバス1350を介して、様々なI/Oデバイス1330と通信を行う。CPU1321をI/Oデバイス1330のいずれかに接続するために、PCIバス、PCI-Xバス、又はPCI-Expressバス、又はNuBusを含む様々なバスを使用することができる。I/Oデバイスがビデオディスプレイ1324である実施形態については、プロセッサ1321は、ディスプレイ1324又はディスプレイ1324のためのI/Oコントローラ1323と通信するために、アドバンストグラフィックスポート(AGP)を使用することができる。図13Bは、メインプロセッサ1321が、HYPERTRANSPORT、RAPIDIO、又はINFINIBAND通信技術を介してI/Oデバイス1330b若しくは他のプロセッサ1321´と直接通信するコンピュータ1300の一実施形態を示す図である。また、図13Bは、プロセッサ1321がローカルインターコネクトバスを使用してI/Oデバイス1330aと通信する一方で、I/Oデバイス1330bと直接通信する混在した実施形態を示す図である。いくつかの実施形態では、プロセッサ1321は、処理ユニット1321に接続された様々なバスを介して、他のプロセッサ1321´、GPU、及びFPGAなどの他の処理デバイスと通信することができる。例えば、プロセッサ1321は、PCIバス、PCI-Xバス、又はPCI-Expressバス、又はNuBusなどの1つ以上の通信バスを介してGPUと通信することができる。
コンピューティングデバイス1300には、多種多様なI/Oデバイス1330a~1330nを存在させることができる。入力デバイスは、キーボード、マウス、トラックパッド、トラックボール、タッチパッド、タッチマウス、マルチタッチタッチパッド及びタッチマウス、マイク(アナログ又はMEMS)、マルチアレイマイク、描画タブレット、カメラ、一眼レフカメラ(SLR)、デジタル一眼レフ(DSLR)CMOSセンサ、CCD、加速度センサ、慣性計測ユニット、赤外線光学センサ、圧力センサ、地磁気センサ、角速度センサ、奥行きセンサ、近接センサ、環境光センサ、ジャイロセンサ、若しくはその他センサなどを含むことができる。出力デバイスは、ビデオディスプレイ、グラフィカルディスプレイ、スピーカー、ヘッドフォン、インクジェットプリンタ、レーザープリンタ、及び3Dプリンタを含むことができる。
デバイス1330a~1330nは、例えば、Microsoft KINECT、WII用任天堂Wiimote、任天堂WII U GAMEPAD、又はApple IPHONEを含む、複数の入力若しくは出力デバイスの組合せを含むことが可能である。一部のデバイス1330a~1330nは、入力と出力の一部を組み合わせることによって、ジェスチャー認識入力を可能にする。いくつかのデバイス1330a~1330nは、認証及び他のコマンドを含む異なる目的のための入力として利用することができる顔認識を提供する。いくつかのデバイス1330a~1330nは、例えば、Microsoft KINECT、AppleによるIPHONE用のSIRI、Google NowまたはGoogle音声検索を含む、音声認識及び入力を提供する。
追加のデバイス1330a~1330nは、例えば、触覚フィードバックデバイス、タッチスクリーンディスプレイ、又はマルチタッチディスプレイを含む、入力及び出力の両方の能力を有する。タッチスクリーン、マルチタッチディスプレイ、タッチパッド、タッチマウス、又は他のタッチ感知デバイスは、例えば、容量性、表面容量性、投影容量性タッチ(PCT)、インセル容量性、抵抗性、赤外線、導波管、分散信号タッチ(DST)、インセル光学、表面音響波(SAW)、屈曲波タッチ(BWT)、又は力ベースの感知技術など、タッチ感知に異なる技術を使用することができる。マルチタッチデバイスの中には、表面との接触点が2つ以上あるものもあり、ピンチ、スプレッド、回転、スクロールなどのジェスチャーを含む高度な機能を可能にするものもある。例えば、Microsoft PIXELSENSE又はマルチタッチコラボレーションウォールを含むいくつかのタッチスクリーンデバイスは、テーブルトップ上若しくは壁など、より大きな表面を有することができ、他の電子デバイスと相互作用することもできる。いくつかのI/Oデバイス1330a~1330n、ディスプレイデバイス1324a~1324n又はデバイスのグループは、拡張現実デバイスとすることができる。I/Oデバイスは、図13Aに示されるように、I/Oコントローラ1321によって制御することができる。I/Oコントローラ1321は、例えば、キーボード126及びポインティングデバイス1327、例えば、マウス又は光学ペンなどの、1つ以上のI/Oデバイスを制御することができる。さらに、I/Oデバイスは、コンピューティングデバイス1300のためのストレージ及び/又はインストール媒体116を提供することも可能である。さらに他の実施形態では、コンピューティングデバイス1300は、ハンドヘルドUSBストレージデバイスを受け取るために、USB接続(図示せず)を提供することができる。さらなる実施形態では、I/Oデバイス1330は、システムバス1350と外部通信バス、例えばUSBバス、SCSIバス、FireWireバス、イーサネットバス、ギガビットイーサネットバス、ファイバチャネルバス、又はThunderboltバスとの間のブリッジとすることができる。
いくつかの実施形態では、ディスプレイデバイス1324a~1324nは、I/Oコントローラ1321に接続することができる。ディスプレイデバイスは、例えば、液晶ディスプレイ(LCD)、薄膜トランジスタLCD(TFT-LCD)、ブルーフェーズLCD、電子ペーパー(Eインク)ディスプレイ、フレキシルディスプレイ、発光ダイオードディスプレイ(LED)、デジタル光処理(DLP)ディスプレイ、シリコン上の液晶(LCOS)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、アクティブマトリクス有機発光ダイオード(AMOLED)ディスプレイ、液晶レーザディスプレイ、時間多重光学シャッター(TMOS)ディスプレイ、又は3Dディスプレイなどを含むことができる。3Dディスプレイの例は、例えば、ステレオスコピー、偏光フィルタ、アクティブシャッター、又はオートステレオスコピーを使用することができる。ディスプレイデバイス1324a~1324nはまた、ヘッドマウントディスプレイ(HMD)であってもよい。いくつかの実施形態では、ディスプレイデバイス1324a~1324n又は対応するI/Oコントローラ1323は、OPENGL若しくはDIRECTX API若しくは他のグラフィックスライブラリを通して制御することができるか、若しくはそれらのハードウェアサポートを有することができる。
いくつかの実施形態では、コンピューティングデバイス1300は、複数のディスプレイデバイス1324a~1324nを含むか、又はそれに接続することができ、これらのディスプレイデバイスはそれぞれ、同じ若しくは異なるタイプ及び/若しくは形態であることができる。このように、I/Oデバイス1330a~1330n及び/又はI/Oコントローラ1323のいずれかは、コンピューティングデバイス1300による複数のディスプレイデバイス1324a~1324nの接続並びに使用をサポート、有効化若しくは提供するために、適切なハードウェア、ソフトウェア、若しくはハードウェアとソフトウェアの組み合わせの任意のタイプ並びに/若しくはフォームを含むことが可能である。例えば、コンピューティングデバイス1300は、ディスプレイデバイス1324a~1324nをインターフェース、通信、接続、又はその他の方法で使用するために、ビデオアダプタ、ビデオカード、ドライバ、及び/若しくはライブラリの任意のタイプ並びに/若しくはフォームを含むことが可能である。一実施形態では、ビデオアダプタは、複数のディスプレイデバイス1324a~1324nにインターフェースするために、複数のコネクタを含むことができる。他の実施形態では、コンピューティングデバイス1300は、複数のビデオアダプタを含むことができ、各ビデオアダプタは、1つ以上のディスプレイデバイス1324a~1324nに接続される。いくつかの実施形態では、コンピューティングデバイス1300のオペレーティングシステムの任意の部分は、複数のディスプレイ1324a~1324nを使用するために構成することができる。他の実施形態では、ディスプレイデバイス1324a~1324nのうちの1つ以上は、ネットワーク1340を介して、コンピューティングデバイス1300に接続された1つ以上の他のコンピューティングデバイス1300a又は1300bによって提供することができる。いくつかの実施形態では、コンピューティングデバイス1300のための第2のディスプレイデバイス1324aとして他のコンピュータのディスプレイデバイスを使用するように、ソフトウェアを設計及び構築することができる。例えば、一実施形態では、Apple iPadは、コンピューティングデバイス1300に接続し、デバイス1300のディスプレイを拡張デスクトップとして使用できる追加のディスプレイ画面として使用することができる。当業者であれば、コンピューティングデバイス1300が複数のディスプレイデバイス1324a~1324nを有するように構成することができる様々な方法及び実施形態を認識し、理解するであろう。
再び図13Aを参照すると、コンピューティングデバイス1300は、オペレーティングシステム又は他の関連ソフトウェアを格納するため、及びシステム200用のソフトウェアに関連する任意のプログラムなどのアプリケーションソフトウェアプログラムを格納するためのストレージデバイス1328(例えば、1つ以上のハードディスクドライブまたは独立ディスクの冗長アレイ)を構成することができる。ストレージデバイス1328の例としては、例えば、ハードディスクドライブ(HDD)、CDドライブ、DVDドライブ、又はBLU-RAYドライブを含む光学ドライブ、ソリッドステートドライブ(SSD)、USBフラッシュドライブ、若しくはデータを記憶するのに適した任意の他のデバイスが含まれる。いくつかのストレージデバイスは、例えば、ハードディスクとソリッドステートキャッシュを組み合わせたソリッドステートハイブリッドドライブを含む、複数の揮発性及び不揮発性のメモリを含むことができる。いくつかのストレージデバイス1328は、不揮発性、変更可能、又は読み取り専用とすることができる。いくつかのストレージデバイス1328は、内部であり、バス1350を介してコンピューティングデバイス1300に接続することができる。いくつかのストレージデバイス1328は、外部であり、外部バスを提供するI/Oデバイス1330を介してコンピューティングデバイス1300に接続することができる。いくつかのストレージデバイス1328は、例えば、AppleによるMACBOOK AIR用のリモートディスクを含む、ネットワークを介してネットワークインターフェース1318を介してコンピューティングデバイス1300に接続することができる。いくつかのクライアントデバイス1300は、不揮発性ストレージデバイス1328を必要とせず、シンクライアント又はゼロクライアント202とすることができる。いくつかのストレージデバイス1328は、インストールデバイス1316としても使用することができ、ソフトウェア及びプログラムをインストールするのに適したものとすることができる。さらに、オペレーティングシステム及びソフトウェアは、ブータブル媒体、例えば、ブータブルCD、例えば、knoppix.netからGNU/Linuxディストリビューションとして入手できるGNU/Linux用のブータブルCDであるKNOPPIXから実行することができる。
コンピューティングデバイス1300は、アプリケーション配布プラットフォームからソフトウェア又はアプリケーションをインストールすることも可能である。アプリケーション配布プラットフォームの例としては、Apple社が提供するiOS用のApp Store、Apple社が提供するMac App Store、Google社が提供するAndroid OS用のGOOGLE PLAY、Google社が提供するCHROME OS用のChrome Webstore、Amazon.com社が提供するAndroid OS及びKINDLE FIRE用のAmazon AppStoreが含まれる。
さらに、コンピューティングデバイス1300は、標準電話回線LAN又はWANリンク(例えば、802.11、T1、T3、ギガビットイーサネット、Infiniband)、ブロードバンド接続(例えば、ISDN、フレームリレー、ATM、ギガビットイーサネット、イーサネット-オーバー-ソネット、ADSL、VDSL、BPON、GPON、FiOSなどの光ファイバ)、無線接続若しくは上記のいずれか若しくは全ての組み合わせを含むが、それだけに限らない多様な接続を介してネットワーク1340にインターフェース接続するネットワークインターフェース1318を含むことが可能である。接続は、様々な通信プロトコル(例えば、TCP/IP、イーサネット、ARCNET、SONET、SDH、ファイバ分散データインターフェース(FDDI)、IEEE 802.11a/b/g/n/ac CDMA、GSM、WiMax及び直接非同期接続)を使用して確立することが可能である。一実施形態では、コンピューティングデバイス1300は、ゲートウェイ又はトンネリングプロトコル例えばSSL(Secure Socket Layer)若しくはTLS(Transport Layer Security)、若しくはフロリダ州フォートローダーデールのCitrix Systems社製のCitrix Gateway Protocolの任意のタイプ及び/若しくは形式を介して他のコンピューティングデバイス1300´と通信を行う。ネットワークインターフェース1318は、内蔵ネットワークアダプタ、ネットワークインターフェースカード、PCMCIAネットワークカード、EXPRESSCARDネットワークカード、カードバスネットワークアダプタ、無線ネットワークアダプタ、USBネットワークアダプタ、モデム、又はコンピューティングデバイス1300を通信可能かつ本書に記載の動作を実施する任意のタイプのネットワークにインターフェース接続するために適した任意の他のデバイスを備えることができる。
図13Aに描かれた種類のコンピューティングデバイス1300は、タスクのスケジューリング及びシステムリソースへのアクセスを制御するオペレーティングシステムの制御下で動作することができる。コンピューティングデバイス1300は、MICROSOFT WINDOWSオペレーティングシステムのいずれかのバージョン、Unix及びLinuxオペレーティングシステムの異なるリリース、Macintoshコンピュータ用のMAC OSのいずれかのバージョン、任意の組み込みオペレーティングシステム、任意のリアルタイムオペレーティングシステム、任意のオープンソースオペレーティングシステム、任意の専有オペレーティングシステム、モバイルコンピューティングデバイス用の任意なオペレーティングシステム、又はコンピューティングデバイス上で実行可能でかつ本明細書に記載のオペレーションを実施する他の任意のオペレーティングシステムなど任意のオペレーションシステムを実施することが可能である。代表的なオペレーティングシステムには、以下のものが含まれるが、これらに限定されるものではない。ワシントン州レドモンドのMicrosoft社によって製造されているWINDOWS 7000、WINDOWS Server 2012、WINDOWS CE、WINDOWS Phone、WINDOWS XP、WINDOWS VISTA、及びWINDOWS 7、WINDOWS RT、並びにWINDOWS 8、カリフォルニア州クパチーノのApple社によって製造されているMAC OS及びiOS、並びに英国ロンドンのCanonical社が配布するLinux Mintディストリビューション(「ディストロ」)若しくはUbuntuなどの自由に利用できるOSであるLinux、Unix若しくはその他のUnix系派生オペレーティングシステム、並びにカリフォルニア州マウンテンビューのGoogleが設計するAndroidなどである。例えば、GoogleによるCHROME OSを含むいくつかのオペレーティングシステムは、例えば、CHROMEBOOKSを含むゼロクライアント又はシンクライアント上で使用することができる。
コンピュータシステム1300は、任意のワークステーション、電話、デスクトップコンピュータ、ラップトップ又はノートブックコンピュータ、ネットブック、ULTRABOOK、タブレット、サーバ、ハンドヘルドコンピュータ、携帯電話、スマートフォン若しくは他の携帯通信デバイス、メディア再生デバイス、ゲームシステム、モバイルコンピューティングデバイス、若しくは通信可能な任意の他のタイプ並びに/若しくは形態のコンピュータ、テレコミュニケーション若しくはメディアデバイスとすることができる。コンピュータシステム1300は、本明細書に記載された動作を実施するのに十分なプロセッサパワー及びメモリ容量を有する。いくつかの実施形態では、コンピューティングデバイス1300は、デバイスと一致する異なるプロセッサ、オペレーティングシステム、及び入力デバイスを有することができる。サムスンGALAXYスマートフォンは、例えば、Google社によって開発されたAndroidオペレーティングシステムの制御下で動作する。GALAXYスマートフォンは、タッチインターフェースを介して入力を受け取る。
いくつかの実施形態において、コンピューティングデバイス1300は、ゲームシステムである。例えば、コンピュータシステム1300は、日本の東京都のソニー株式会社によって製造されたPLAYSTATION 3、若しくはPSP(PERSONAL PLAYSTATION PORTABLE)、若しくはPLAYSTATION VITAデバイス、日本の京都府の任天堂株式会社によって製造された任天堂DS、任天堂3DS、任天堂WII、若しくは任天堂WII Uデバイス、ワシントン州レッドモンドのMicrosoft社が製造するXBOX 360、又はカリフォルニア州メンロパークのOCULUS VR社が製造するOCULUS RIFT若しくはOCULUS VRを含むことができる。
いくつかの実施形態では、コンピューティングデバイス1300は、カリフォルニア州クパチーノのApple社によって製造されたデバイスのApple IPOD、IPOD Touch、及びIPOD NANOラインなどのデジタルオーディオプレーヤである。いくつかのデジタルオーディオプレーヤは、例えば、ゲームシステム、又はデジタルアプリケーション配布プラットフォームからのアプリケーションによって利用可能になる任意の機能を含む、他の機能性を有することができる。例えば、IPOD Touchは、Apple App Storeにアクセスすることができる。いくつかの実施形態では、コンピューティングデバイス1300は、MP3、WAV、M4A/AAC、WMA保護AAC、AIFF、Audible audiobook、Apple Losslessオーディオファイル形式及びmov、m4v、mp4 MPEG-4(H.264/MPEG-4 AVC)ビデオファイル形式など(ただしこれだけに限らない)を含むファイル形式をサポートする携帯メディアプレーヤー又はデジタルオーディオ再生機である。
いくつかの実施形態では、コンピューティングデバイス1300は、タブレット例えば、AppleによるデバイスのIPADライン、サムスンによるデバイスのGALAXY TABファミリー、又はワシントン州シアトルのAmazon社によるKINDLE FIREなどである。他の実施形態では、コンピューティングデバイス1300は、電子ブックリーダー、例えば、Amazon社によるデバイスのKINDLEファミリー、又はニューヨーク州ニューヨーク市のBarnes & Noble社によるデバイスのNOOKファミリーである。
いくつかの実施形態では、通信デバイス1300は、デバイスの組み合わせ、例えば、デジタルオーディオプレーヤ又はポータブルメディアプレーヤと組み合わされたスマートフォンを含む。例えば、これらの実施形態の1つは、スマートフォン、例えば、Apple社製のスマートフォンのIPHONEファミリー、Samsung社製のスマートフォンのSamsung GALAXYファミリー、又はスマートフォンのMotorola DROIDファミリーである。さらに別の実施形態では、通信デバイス1300は、ウェブブラウザと、マイク及びスピーカシステム、例えばテレフォニーヘッドセットとを備えたラップトップ又はデスクトップコンピュータである。これらの実施形態において、通信デバイス1300は、ウェブ対応であり、電話を受信し、開始することができる。いくつかの実施形態では、ラップトップ又はデスクトップコンピュータはまた、ビデオチャット及びビデオ通話を可能にするウェブカメラ又は他のビデオキャプチャデバイスを備えている。
いくつかの実施形態では、ネットワーク内の1つ以上のマシン1300のステータスは、一般にネットワーク管理の一部として、監視される。これらの実施形態の1つでは、マシンのステータスは、負荷情報(例えば、マシン上のプロセスの数、CPU及びメモリ使用率)、ポート情報(例えば、利用可能な通信ポートの数及びポートアドレス)、又はセッションステータス(例えば、プロセスの期間及びタイプ、並びにプロセスがアクティブかアイドルか)の特定を含むことができる。これらの実施形態の別のものでは、この情報は、複数のメトリクスによって特定することができ、複数のメトリクスは、本明細書に記載される本ソリューションのオペレーションの任意の態様と同様に、負荷分散、ネットワークトラフィック管理、及びネットワーク障害回復における決定に向けて少なくとも部分的に適用することができる。上述した動作環境及び構成要素の態様は、本明細書に開示されるシステム並びに方法の文脈で明らかになるであろう。
本明細書に記載された主題及び動作の実装は、デジタル電子回路で、又は有形媒体、ファームウェア、若しくはハードウェア上に具現化されたコンピュータソフトウェアで、本明細書に開示された構造並びにそれらの構造的等価物を含む、又はそれらの1以上の組み合わせで実装することが可能である。本明細書に記載された主題の実装は、データ処理装置による実行、又はデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化された1つ以上のコンピュータプログラム、例えば、コンピュータプログラム命令の1つ以上の構成要素として実装することができる。プログラム命令は、人工的に生成された伝搬信号、例えば、データ処理デバイスによる実行のために適切な受信装置に送信するための情報を符号化するために生成される機械生成電気信号、光学信号、又は電磁信号に符号化することができる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダム又はシリアルアクセスメモリアレイ若しくはデバイス、若しくはそれらの1つ以上の組合せとすることができ、若しくはそれらに含まれることができる。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号で符号化されたコンピュータプログラム命令のソース又は宛先を含むことができる。また、コンピュータ記憶媒体は、1つ以上の別個の物理的構成要素又は媒体(例えば、複数のCD、ディスク、若しくは他の記憶デバイス)であるか、若しくはそれらに含まれることも可能である。
本明細書に記載された動作は、1つ以上のコンピュータ可読記憶デバイスに記憶された、又は他のソースから受信したデータに対してデータ処理装置が実施する動作として実装することができる。
データ処理装置」、「データ処理システム」、「クライアントデバイス」、「計算プラットフォーム」、「コンピューティングデバイス」、又は「デバイス」という用語は、一例として、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、若しくは前述の複数のもの、若しくは組み合わせを含むデータを処理するすべての種類の装置、デバイス、及びマシンを包含している。装置は、特別な目的の論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該コンピュータプログラムの実行環境を構築するコード、例えば、プロセッサ・ファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行環境、仮想マシン、又はそれらの1つ以上の組合せを構成するコードも含むことができる。本装置及び実行環境は、Webサービス、分散コンピューティング、グリッドコンピューティング基盤など、様々な異なるコンピューティングモデル基盤を実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとも呼ばれる)は、コンパイル言語又はインタプリタ言語、宣言型言語若しくは手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、若しくはモジュール、コンポーネント、サブルーチン、オブジェクト、若しくはコンピューティング環境での使用に適した他のユニットとしてなど任意の形式でデプロイすることができる。コンピュータプログラムは、そうである必要はないが、ファイルシステム内のファイルに対応することができる。プログラムは、他のプログラム又はデータ(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部、当該プログラム専用の単一のファイル、若しくは複数の連携ファイル(例えば、1つ以上のモジュール、サブプログラム、若しくはコードの一部を格納するファイル)に格納することが可能である。コンピュータプログラムは、1台のコンピュータで実行されるようにデプロイする、又は1つ以上のサイトに分散して配置され通信ネットワークによって相互接続されている複数のコンピュータで実行されるようにデプロイすることができる。
本明細書に記載されたプロセス及び論理フローは、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実施され、入力データに作用して出力を生成することによってアクションを実施することが可能である。プロセス及び論理フローはまた、特別な目的の論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によって実施することができ、装置はまた、そのように実装することもできる。
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用並びに特殊目的のマイクロプロセッサの両方、及び任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ又はランダムアクセスメモリ若しくはその両方から命令及びデータを受信する。コンピュータの要素は、命令に従って動作を実施するためのプロセッサ、及び命令並びにデータを格納するための1つ以上のメモリデバイスを含む。一般的に、コンピュータは、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、又は光ディスクからデータを受信するか、若しくはその両方にデータを転送するように動作可能に結合されるか、若しくはその両方を含むことになる。しかし、コンピュータは、そのようなデバイスを持つ必要はない。さらに、コンピュータは、例えば、携帯電話、パーソナルデジタルアシスタント(PDA)、携帯オーディオ若しくはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)受信機、又は携帯ストレージデバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに組み込むことが可能である。コンピュータプログラム命令及びデータを格納するのに適したデバイスは、例として、半導体メモリデバイス、例えばEPROM、EEPROM、並びにフラッシュメモリデバイス、磁気ディスク、例えば内蔵ハードディスク又はリムーバルディスク、光磁気ディスク、並びにCD-ROM並びにDVD-ROMディスクを含むあらゆる形態の不揮発メモリ、メディア並びにメモリデバイスを含んでいる。プロセッサ及びメモリは、特別な目的の論理回路によって補足され、又は組み込まれることができる。
ユーザーとの対話を提供するために、本明細書に記載の主題の実装は、ユーザーに情報を表示するためのディスプレイデバイス、例えばCRT(陰極線管)、プラズマ、又はLCD(液晶ディスプレイ)モニタ、及びユーザーがコンピュータに入力を提供できるキーボード並びにポインティングデバイス、例えばマウス若しくはトラックボール、を有するコンピュータ上に実装することができる。また、他の種類のデバイスを使用して、ユーザーとの対話を提供することも可能であり、例えば、ユーザーに提供されるフィードバックは、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなどの任意の形式の感覚的フィードバックを含むことができ、ユーザーからの入力は、音響、音声、若しくは触覚入力などの任意の形式で受け取ることができる。さらに、コンピュータは、ユーザーが使用するデバイスに文書を送信し、デバイスから文書を受信することによって、ユーザーと対話することができ、例えば、ウェブブラウザから受信したリクエストに応答して、ユーザーのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザーと対話することができる。
本明細書に記載される主題の実装は、バックエンド構成要素、例えばデータサーバとして、又はミドルウェア構成要素、例えばアプリケーションサーバを含むコンピューティングシステム、若しくはフロントエンド構成要素、例えば、ユーザーが本明細書に記載の主題の実装と対話することができるグラフィックユーザーインタフェース若しくはWebブラウザを有するクライアントコンピュータ、若しくは1つ以上のかかるバックエンド、ミドルウェア若しくはフロントエンド構成の任意の組み合わせにおいて実装することが可能である。システムの構成要素は、デジタルデータ通信の任意の形態又は媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、並びにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)が挙げられる。
本明細書は、多くの特定の実装の詳細を含むが、これらは、任意の発明の範囲又は請求できるものの制限として解釈されるべきではなく、むしろ、本明細書に記載されるシステム及び方法の特定の実装に特有の特徴の説明として解釈されるべきである。本明細書で個別の実装の文脈で説明されている特定の特徴は、単一の実装において組み合わせて実装することもできる。逆に、単一の実装の文脈で説明される様々な特徴は、複数の実装において別々に又は任意の適切な下位組み合わせで実装することも可能である。さらに、特徴は、特定の組み合わせで作用するものとして上記で説明され、当初はそのように主張されることさえあるが、主張された組み合わせからの1つ以上の特徴は、場合によっては組み合わせから切除され、主張された組み合わせは、サブコンビネーション又はサブコンビネーションの変形に向けられることが可能である。
同様に、オペレーションは特定の順序で図面に描かれているが、これは、望ましい結果を達成するために、そのようなオペレーションを示された特定の順序で、又は順次実施すること、若しくは図示されたすべてのオペレーションを実施することを要求していると理解されるべきではない。場合によっては、特許請求の範囲に記載された動作は、異なる順序で実施することができ、それでも望ましい結果を達成することができる。さらに、添付の図に描かれた処理は、望ましい結果を達成するために、必ずしも示された特定の順序、又は順次的な順序を必要としない。
特定の状況下では、マルチタスク及び並列処理が有利になることがある。さらに、上述した実施態様における様々なシステム構成要素の分離は、すべての実施態様においてそのような分離を必要とすると理解すべきではなく、説明したプログラム構成要素及びシステムは、一般に単一のソフトウェア製品に一緒に統合でき、又は複数のソフトウェア製品にパッケージングできることが理解されるべきである。
さて、いくつかの例示的な実装及び実施例を説明したが、前述は例示的に提示されたものであり、限定的なものではないことは明らかである。とりわけ、本明細書に提示された例の多くは、方法行為またはシステム要素の特定の組み合わせを含むが、それらの行為及びそれらの要素は、同じ目的を達成するために他の方法で組み合わすことができる。1つの実装に関連してのみ論じられた行為、要素、及び特徴は、他の実装又は実施例における同様の役割を排除することを意図していない。
本明細書で使用される言い回し及び用語は、説明のためのものであり、限定的なものと見なしてはならない。本明細書における「含む(including)」「備える(comprising)」「有する(having)」「包含する(containing)」「伴う(involving)」「~によって特徴付けられる(characterized by)」「~ことを特徴とする(characterized in that)」及びそのバリエーションの使用は、その後に列挙した項目、その同等物、及び追加の項目、並びにその後に列挙した項目のみからなる代替実装を包含することを意図するものである。1つの実装では、本明細書に記載のシステム及び方法は、記載された要素、行為、又は構成要素の1つ、2つ以上の各組み合わせ、若しくはすべてから構成される。
単数形で言及される本明細書におけるシステム及び方法の実装又は要素若しくは行為へのいかなる言及も、これらの要素の複数を含む実装を包含することもでき、本明細書における任意の実装又は要素若しくは行為への複数形の言及は、単一の要素のみを含む実装を包含することもできる。単数形又は複数形の参照は、現在開示されているシステム又は方法、それらの構成要素、行為、若しくは要素を単一若しくは複数の構成に限定することを意図していない。任意の行為又は要素が任意の情報、行為又は要素に基づいていることへの言及は、行為若しくは要素が任意の情報、行為若しくは要素に少なくとも部分的に基づいている実装を含むことができる。
本明細書に開示された任意の実装は、他の任意の実装と組み合わせることができ、「或る実装(an implementation)」、「いくつかの実装(some implementation)」、「代替実装(an alternate implementation)」、「様々な実装(various implementation)」、「1つの実装(one implementation)」等への言及は、必ずしも相互に排他的ではなく、実装と関連して説明される特定の特徴、構造、又は特性が少なくとも1つの実装に含まれ得ることを示すことが意図されている。本明細書で使用されるそのような用語は、必ずしもすべてが同じ実装を指すわけではない。任意の実装は、本明細書に開示された態様及び実装と一致する任意の方法で、包括的又は排他的に、他の任意の実装と組み合わせることができる。
「又は(or)」への言及は、「又は」を用いて説明される任意の用語が、単一の、複数の、及び説明される用語のすべてを示すことができるように、包括的に解釈することができる。
図面、詳細な説明、又は請求項における技術的特徴の後に参照符号が続く場合、参照符号は、図面、詳細な説明、及び請求項の理解度を高めることのみを目的として含まれたものである。したがって、参照符号又はその不在は、いかなる請求項の要素の範囲にも制限的な影響を及ぼさない。
本明細書に記載されたシステム及び方法は、その特徴から逸脱することなく、他の具体的な形態で具現化することができる。提供された例は、3次元点群を異なる基準フレームに変換するのに有用であるが、本明細書に記載されたシステム及び方法は、他の環境にも適用することが可能である。前述の実施例は、説明されたシステム及び方法を限定するのではなく、例示するものである。したがって、本明細書に記載されたシステム及び方法の範囲は、前述の説明よりもむしろ添付の請求項によって示すことができ、請求項の意味並びに等性の範囲内に入る変更は、そこに包含される。