関連出願の相互参照
本願は、2011年8月2日に出願された米国仮特許出願第61/514,186号明細書の優先権の利益を主張するものであり、この仮特許出願を参照により本明細書に援用する。
本開示は、一般的にはデジタル撮像に関する。より詳細には、本開示は顕微鏡の分野での画像のレンダリングに関する。
通常、顕微鏡を通して取得される物体の画像は、使用される顕微鏡の視野により制限される。より小さなデジタル画像のモザイク又はモンタージュを使用して物体のより大きなデジタル画像を提供する試みがなされてきた。モザイク画像をレンダリングするためには、互い及び最終的なモザイク画像に対するより小さな画像のロケーションを特定しなければならない。
Atkinに付与された米国特許第6,687,419号明細書では、対応するピクセルの共分散を連続して計算して、共分散を最大化する現在の画像の位置を特定しながら、現在の画像をモンタージュ画像にわたってシフトすることにより、現在の画像がモザイク画像内に配置される方法が記載されている。
モザイク画像を構成する個々の画像のロケーションの特定と、ディスプレイにレンダリングするモザイク画像の生成とは、計算集約的である。顕微鏡の視野により制限されない、顕微鏡の横長のインタラクティブ且つ正確で大きなモザイク表現を生成する手段に対する改良が望ましい。
本開示の一態様では、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法が提供される。本方法は、物体から現在の画像フレームを取得すること、前の画像フレームの前の画像フレーム位置及び前の画像フレームからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置に相対して画定される検索エリア内で少なくとも1つの近傍キーフレームを識別することであって、少なくとも1つの近傍キーフレームは、キーフレームデータベースに記憶された複数のキーフレームのうちの1つであり、各キーフレームは、関連付けられたキーフレーム位置を有する、識別すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のそれぞれが、閾値よりも大きいと判断される場合、現在の画像フレームを新しいキーフレームとしてキーフレームデータベースに記憶すること、少なくとも1つの近傍キーフレームのそれぞれのキーフレームフレーム位置及び少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム位置を特定すること、現在画像フレーム位置の平均を、新しいキーフレームに関連付けられた新しいキーフレーム位置としてキーフレームデータベースに記憶すること、キーフレームデータベースからのキーフレームを、ディスプレイの、関連付けられた各キーフレーム位置にレンダリングして、物体のモザイク表現を得ることを含む。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位は、新しいキーフレームと共に記憶することもできる。
本方法は、各キーフレーム位置の最適化に基づいて、複数のキーフレームのキーフレーム位置を調整して、キーフレーム位置の誤差を補正し、各キーフレームとその近傍キーフレームとの相対変位への1つ又は複数の制約を満たすことを更に含み得る。検索エリア内での少なくとも1つの近傍キーフレームの識別に失敗するか、又は任意の近傍キーフレームへの現在の画像フレームの相対位置の特定に失敗する場合、検索エリアを反復的に増大させて、少なくとも1つの近傍キーフレームを識別し得る。検索エリアを反復的に増大させた後、少なくとも1つの近傍キーフレームの識別に失敗する場合、現在画像フレーム位置を現在画像フレーム追跡位置又は前の画像フレーム位置に割り当て得る。
本方法は、特徴強度閾値を設定し、特徴強度閾値を超える少なくとも1つの潜在的特徴を含む潜在的特徴リストを取得し、潜在的特徴リストから、予め定義される近傍領域内で最大の特徴強度を有する特徴のみを選択することにより、一連の画像フレームのそれぞれにおいて特徴集合を識別することにより、一連の画像のそれぞれにおいて特徴集合を識別することを更に含み得る。
前の画像フレームからの現在の画像フレームの相対変位は、現在の画像フレーム及び前の画像フレーム内の少なくとも1つの特徴に基づいて、現在の画像フレームと前の画像フレームとを見当合わせすることにより特定し得る。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位は、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれにおける少なくとも1つの特徴に基づいて、現在の画像フレームと少なくとも1つのキーフレームのそれぞれとを見当合わせすることにより特定し得る。
現在の画像フレームと少なくとも1つの近傍キーフレームのそれぞれとを見当合わせすることは、現在の画像フレームにおいて識別された特徴集合を、少なくとも1つの近傍キーフレームのそれぞれ内の対応する特徴集合と照合して、一致特徴対集合を取得すること、一致特徴対集合から許容可能な一致特徴対を選択すること、及び画像見当合わせのために、許容可能な一致特徴対の相対変位に基づいて、現在の画像フレームと少なくとも1つの近傍キーフレームのそれぞれとの平均変位を特定することを含み得る。
識別される各特徴は、N個の要素の記述子行ベクトルを含み得、Nは整数である。特徴集合を照合すること及び許容可能な一致特徴対を選択することは、現在の画像フレームにおいて識別された特徴集合における各特徴の記述子行と、少なくとも1つの近傍キーフレームのそれぞれの対応する特徴集合における各特徴の記述子行ベクトルとを比較すること、及び現在の画像フレーム内の各特徴の、少なくとも1つの近傍キーフレームでの最良一致特徴を識別することであって、最良一致特徴は、現在の画像フレーム内の特徴から最小記述子距離を有する、識別することを含み得る。
識別される各特徴は、座標、向きパラメータ、スケールパラメータを含むこともできる。特徴集合を照合すること及び許容可能な一致特徴対を選択することは、少なくとも1つの近傍キーフレームのそれぞれにおける対応する特徴集合から、現在の画像フレームにおいて識別された特徴集合の各特徴の一致候補集合を特定することであって、各一致候補は、現在の画像フレームにおける対応する特徴の向きパラメータ及びスケールパラメータと同様の向きパラメータ及びスケールパラメータを有する、特定すること、並びに現在の画像フレーム内の特徴から最小記述子距離を有する一致候補集合からの一致候補に基づいて、少なくとも1つの近傍キーフレームにおける最良一致特徴を識別することを含み得る。
この方法は、各一致特徴対のx座標及びy座標のそれぞれに基づいて、各一致特徴対の特徴変位を計算すること、計算された特徴変位を2Dヒストグラムに蓄積すること、並びに2Dヒストグラムに最も高い蓄積を有するビン及びその近傍ビンに蓄積された一致特徴対を、許容可能な一致特徴対として選択することを更に含み得る。
この方法は、平均変位からの各一致特徴対の残余値を特定すること、全ての一致特徴対の平均残余値を特定すること、及び閾値残余値未満の残余値を有する一致特徴対を、許容可能な一致特徴対として選択することを更に含み得る。
キーフレーム特徴をレンダリングすることは、テクスチャアトラス集合を生成することであって、各テクスチャアトラスは、関連付けられた解像度を有し、関連する解像度でダウンサンプリングされた少なくとも1つのキーフレームを含む、生成すること、レンダリングの表示エリア及び表示解像度を選択すること、テクスチャアトラス集合から、表示解像度に最も近い解像度を有するテクスチャアトラスを選択し更新すること、並びに関連付けられたキーフレーム位置が表示エリア内にある、テクスチャアトラスからのキーフレームをレンダリングすることを更に含み得る。
テクスチャアトラスを更新することは、キーフレームデータベースから、表示エリア内にあるが、テクスチャアトラスにはまだない(又は存在しない)関連付けられたキーフレーム位置を有するキーフレーム集合を識別すること、テクスチャアトラスの関連付けられた解像度でキーフレーム集合をダウンサンプリングすること、及びダウンサンプリングされたキーフレーム集合をテクスチャアトラスに挿入することを更に含み得る。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のうちの少なくとも1つが、閾値未満であると判断される場合、方法は、相対変位が閾値未満である少なくとも1つの近傍キーフレームを識別すること、現在の画像フレームと少なくとも1つの近傍キーフレームとの重複領域を特定して、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれでの対象領域を取得すること、現在の画像フレームの対象領域が、画像鮮鋭度パラメータに基づいて、近傍キーフレームのうちの1つの対象領域よりも鮮鋭であると判断される場合、少なくとも1つの近傍キーフレームの対象領域を、現在の画像フレームの対象領域で置換することを更に含み得る。
画像鮮鋭度パラメータは、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれの対象領域の勾配画像から得られる勾配和であり得、現在の画像フレームの対象領域は、現在の画像フレームの対象領域の勾配和が、近傍キーフレームのうちの1つの対象領域の勾配和よりも大きい場合、近傍キーフレームのうちの1つの対象領域よりも鮮鋭であると判断し得る。
少なくとも1つの近傍キーフレームの対象領域を置換することは、少なくとも1つの近傍キーフレームの対象領域の内容を、現在の画像フレームの対象領域の内容で上書きすることを含み得る。現在の画像フレームの対象領域の境界における内容は、少なくとも1つの近傍キーフレームの内容とブレンドし得る。
方法は、関連付けられたキーフレーム位置に基づいて、キーフレームデータベース内の各キーフレームを複数のセルのうちの1つに割り当てること、並びに各キーフレームをタグ付けして、関連付けられたキーフレーム位置及び割り当てられた各セルをマッピングすることを更に含み得る。複数のセルはグリッドにおいて位置合し得、セルは二次元インデックスを使用してインデックス付け得る。検索エリアは、少なくとも1つ又は複数のインデックス付きセルを含み得る。少なくとも1つの近傍キーフレームのそれぞれは、少なくとも1つ又は複数のインデックス付きセルに割り当て得る。
物体のモザイク表現をレンダリングすることは、異なる倍率の対物レンズから得られるモザイク表現をレンダリングすることを含み得る。方法は、各倍率の対物レンズに関連付けられた別個のキーフレームデータベースを保持すること、各対物レンズの光心の相対変位に基づいて、各倍率の対物レンズから得られるモザイク表現を関連付けること、及び関連付けられたモザイク表現に基づいて、物体の結合モザイク表現をレンダリングすることを更に含み得る。
方法は、現在の画像フレームを事前処理することを更に含み得る。事前処理は、視野にわたる照明のばらつきを補正する画像較正、カラースケールからグレースケールへの変換、ダウンサンプリング、特徴検出、又は勾配計算を含み得る。
キーフレームをレンダリングすることは、重複するキーフレームをブレンドすることを含み得る。重複するキーフレームをブレンドすることは、キーフレームを分解して複数のバンドにすること、複数のバンドをブレンドすること、及びブレンドされた複数のバンドを統合して、物体のモザイク表現を得ることを含み得る。キーフレームを分解することは空間周波数に基づき得る。
方法は、複数のキーフレームの利得と突き合わせて比較することにより、現在の画像フレームの利得を実質的に均一なレベルの輝度に調整することを更に含み得る。
方法は、閾値強度未満の平均画像ピクセル強度に基づいて、現在の画像フレームの遮蔽を検出すること、及び続く画像フレームの露出時間の変化を検出して、画像フレームの取得に使用される対物レンズの変更を判断することを更に含み得る。
一連の画像フレーム内の第1の画像フレームは、基準キーフレーム位置を有する基準キーフレームとして割り当て得る。
本開示の一態様によれば、画像取得モジュールと、プロセッサと、レンダラーとを備える撮像システムが提供される。画像取得モジュールは、物体の現在の画像フレームを取得するように構成される。構成されるプロセッサは、前の画像フレームの前の画像フレーム位置及び前の画像フレームからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置に相対して画定される検索エリア内で少なくとも1つの近傍キーフレームを識別することであって、少なくとも1つの近傍キーフレームは、キーフレームデータベースに記憶された複数のキーフレームのうちの1つであり、各キーフレームは、関連付けられたキーフレーム位置を有する、識別すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のそれぞれが、閾値よりも大きいと判断される場合、現在の画像フレームを新しいキーフレームとしてキーフレームデータベースに記憶すること、少なくとも1つの近傍キーフレームのそれぞれの関連付けられたキーフレームフレーム位置及び少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム位置を特定すること、現在画像フレーム位置の平均を、新しいキーフレームに関連付けられた新しいキーフレーム位置としてキーフレームデータベースに記憶することを行うことである。レンダラーは、キーフレームデータベースからのキーフレームを、ディスプレイの、関連付けられた各キーフレーム位置にレンダリングして、物体のモザイク表現を表示する。
画像は、入力装置又はプロセッサから入力を受信して、受信入力に応答して、画像取得モジュール又はレンダラーを制御するコントローラを更に備え、画像取得モジュールは、少なくとも1つの対物レンズを有する顕微鏡と、物体の一連の画像フレームを取得するビデオカメラとを含む。
本開示の一態様では、コンピュータプログラム製品が提供され、この製品は、コンピュータにより実行されると、上記の物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法を実行するコンピュータ実行可能命令を記憶するコンピュータ可読メモリを含む。
本開示の別の態様では、物体のモザイク表現をレンダリングする、物体の一連の画像フレームからキーフレームを生成する方法が提供される。この方法は、前の画像フレームの既知の位置に相対する現在の画像フレームの変位に基づいて、現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置を囲んだ所定の検索エリアを用いて、少なくとも1つの近傍キーフレームを識別すること、少なくとも1つの近傍キーフレームのそれぞれの既知の各キーフレーム位置と、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位とに基づいて、少なくとも1つの近傍キーフレームのそれぞれの現在の画像フレームの現在位置を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位が閾値を超える場合、現在の画像フレームを新しいキーフレームとして記憶することを含む。
本開示の他の態様及び特徴が、添付図と併せて特定の実施形態の以下の説明を検討することで当業者には明らかになるだろう。
これより、本発明の実施形態について、添付図を参照して例としてのみ説明する。
図1は、本開示の一実施形態によるシステム構成要素の一構成例の高レベル概略図である。
図2は、本実施形態により、キーフレームをキーフレームデータベースの各推定位置にレンダリングすることにより形成されるモザイクの一例である。
図3は、本実施形態により、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法の一例のフローチャートである。
図4は、本開示の特定の実施形態による、ビジョンモデルモジュールの構成の一例の概略図である。
図5Aは、2つのリンクされたフレーム間の変位ベクトルI1,2の例を示す。
図5Bは、現在の画像フレームと近傍キーフレームとの間の変位ベクトルIi,cの例を示す。
図6は、現在の画像フレーム(Idst)内の各特徴D[i]の、近傍キーフレーム(Isrc)内の対応する特徴S[i]への一致の識別を示す。
図7は、本開示の特定の実施形態によるフォーカス置換方法で使用される、現在の画像フレームと基準画像フレームとの重複エリア(ROI)を決定する一例を示す。
本開示の特定の実施形態による2D空間ハッシュマップの一例を示す。
図9は、本開示の特定の実施形態によるGPU照合方法の一例の概略図を示す。
図10は、本開示の特定の実施形態によるGPU照合アーキテクチャの一例の概略図を示す。
図11は、本開示の特定の実施形態による様々なテクスチャアトラス及び各解像度を示す。
図12は、本開示の特定の実施形態によるレンダラーの概略例の概略図である。
図13は、本開示の特定の実施形態によるコントローラの状態図例の概略図である。
図14は、本開示の特定の実施形態によるコントローラの仮想カメラの一例を示す。
図15は、本開示の特定の実施形態によりファイルを保存するマルチバンドブレンド機能の構成例である。
図16は、本開示の特定の実施形態によるファイル保存機能の一例を示すフローチャート図である。
図17は、本開示の特定の実施形態によるキーフレーム位置を解像するバンドル調整機能の一使用例である。
図18は、本開示の特定の実施形態による対物レンズ切り替え検出機能の方法の一例を示すフローチャートである。
一般に、本開示は、物体の一連の画像フレームから物体のモザイク表現を取得しレンダリングする際の効率を向上させる方法及びシステムを提供する。現在の画像フレームが処理され、1つ又は複数のキーフレームからの現在の画像の相対変位に基づいて、モザイク表現内の相対ロケーション又は位置を特定する。現在の画像フレームの位置が特定されると、その位置は近傍キーフレームと共にレンダリングされて、物体のモザイク表現を提供する。
本開示の特定の実施形態によるシステム100は、顕微鏡102に搭載されたデジタルビデオカメラ104、ビデオカメラ画像を処理するPC(図示せず)、システム出力を表示するディスプレイ/モニタ110、及びユーザ入力用のキーボード/マウス126からなる。デジタルビデオカメラ104は、ユーザが物体、例えば、スライドに載せられた試料を移動する際に画像をリアルタイムで捕捉する。PCで実行される命令及びコードが、これらのビデオ画像をリアルタイムで処理し、顕微鏡を通して見られる複数のビューを一緒にステッチングし、大きなモザイクを生成する。システム構成要素の構成例の高レベル概略図を図1に示す。
画像プロセッサは3つのモジュールを含むことができる:ビジョンモデルモジュール114、レンダラー108、及びコントローラ106。特定の実施形態によれば、ビジョンモデルモジュール114は、デジタル画像を処理し、画像データを含み得る。レンダラー108は、ビジョンモデルモジュール114内の画像データをモニタ110にレンダリングする。コントローラ106はユーザ入力を処理し、システム100内の他の全てのモジュールの挙動を制御する。
本開示の特定の実施形態によれば、ビジョンモデルモジュール114は、各入力カメラ画像フレームを処理する。画像フレーム毎に、ビジョンモデルモジュール114はフレーム位置を推定する。ビジョンモデルモジュール114はキーフレームの概念を利用する。この概念によれば、入力カメラ画像フレームのうちの幾つかのみが、システム100に記憶されるものとして選択される。選択されたフレームはキーフレームと呼ばれる。キーフレームは、その推定位置と共に、例えば、図1に示されるようにビジョンモデルモジュール114内のキーフレームデータベース406に記憶される。キーフレームデータベース406は、ビジョンモデルモジュール114から離れて記憶することもでき、システム100から離れて記憶することさえも可能である。キーフレームデータベースがリモートサーバにある場合、キーフレームデータベースへの適する通信(有線又は無線)を、システム100が適宜機能するために提供し得る。
対物レンズ変更検出器112、高速保存モジュール116、品質保存モジュール118、バンドル調整モジュール120、利得補償モジュール122、及びハードディスクドライブ(HDD)等の記憶手段124を含むシステム100の他の構成要素については、本開示の他の箇所で詳細に考察する。
物体のモザイク表現は、データベース内のキーフレームを各推定位置にレンダリングすることにより形成される。キーフレームデータベース486内のキーフレーム2021、2022、...、2025を各推定位置にレンダリングすることにより形成されるモザイク表現の一例を図2に示す。
本開示の特定の実施形態によれば、レンダラー108は、キーフレームデータベース406内のキーフレームを各位置に効率的に描画又はレンダリングする。例えば、レンダラー108は、キーフレームの重複領域をリアルタイムでブレンドして、処理効率を実現し得る。
本開示の特定の実施形態によれば、コントローラ106はユーザ入力を受信し、カメラ104と、ビジョンモデルモジュール114又はレンダラー108等の他のモジュールとの挙動を制御する。例えば、ユーザは、マウスの「ドラッグ」を使用して、ユーザがモニタ110で見たいモザイクの領域を変更することができる。このモザイクドラッグ入力はコントローラ106により受信され、次に、コントローラ106は、レンダラー108がレンダリングするモザイクの領域を変更する。コントローラ106は、ビジョンモデルモジュール114の状態も監視する。ビジョンモデルモジュール114が、現在の画像フレームの位置を推定することができない場合、ユーザへの警告を提供し得る。ロストフレーム処理機能については、「ロストフレーム処理」項で詳細に考察する。
図3は、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法の一例のフローチャートである。この方法は、302において、物体の現在の画像フレームを取得すること及び304において、前の画像フレームに基づいて現在の画像フレームの現在画像フレーム追跡位置を特定することを含む。これは、前の画像フレームの位置と、前の画像フレームからの現在の画像フレームの相対変位との関数として、現在画像フレーム追跡位置を特定することを含み得る。
306において、現在画像フレーム追跡位置に基づいて、少なくとも1つの近傍キーフレームが識別される。近傍キーフレームは、現在画像フレーム追跡位置に相対して定義される検索エリア内のキーフレームとして定義される。近傍キーフレームは、キーフレームデータベース426に記憶された複数のキーフレームから識別される。キーフレームデータベース426内の各キーフレームは、関連付けられたキーフレーム位置を有する。
近傍キーフレームが識別されると、308において、近傍キーフレームのそれぞれからの現在の画像フレームの相対変位が特定される。さらに、308において、近傍キーフレームに相対する現在画像フレーム位置も特定される。
現在の画像フレーム及びその近傍キーフレームは、312において、物体のモザイク表現としてレンダリングされる。近傍キーフレームのそれぞれとの現在の画像フレームの相対変位が、閾値よりも大きい場合、現在の画像フレームは、新しいキーフレームとしてキーフレームデータベースに記憶される。
以下の項に、上記方法の実施形態例の様々な構成要素の例を更に詳細に提供する。
ビジョンモデルモジュール
上述したように、ビジョンモデルモジュール114は、カメラ画像フレームをリアルタイムで受信して処理し、ビジョンモデルモジュール114について図4を参照してさらに詳細に説明する。ビジョンモデルモジュール114は、キーフレームデータベースに記憶された、推定された現在画像フレーム位置、キーフレーム、及びキーフレームの推定位置をレンダラー108又は他の外部モジュールに出力する。一般に、キーフレームは、永続的に記憶すべき画像フレームの入力ストリームから選択される画像フレームである。物体のモザイク表現は、キーフレームをその推定位置にレンダリングすることにより生成される。
初期化中、第1のカメラ画像フレームが基準キーフレームとして記憶される。基準キーフレームはグローバル位置(0,0)に割り当てられる。各画像フレームの通常処理で実行されるステップの概略は以下である。図4、図5A、及び図5Bを参照する。
1)事前処理:402において、システムの処理効率を向上させるために、システム100の残りの部分が、図4では現在の画像フレームとして示される各入力画像フレームを使用する前に、各入力画像フレームを事前処理し得る。例えば、画像フレームの事前処理は、(i)視野にわたる照明のばらつきを補正する静止白色画像較正を含み得る。事前処理により、入力カラー画像のホワイトバランスをとることを保証する、(ii)グレースケール変換−処理を容易にするために、カラー画像フレームをグレースケール画像に変換し得、(iii)ダウンサンプリング−画像フレームをダウンサンプリングしてより速い特徴検出を可能にし得、(iv)特徴検出−特徴検出をダウンサンプリングされた画像に実行し得、及び(v)勾配計算−入力画像フレームからの勾配画像を計算し、「フォーカス置換」項で考察される、レンダリングされたモザイク画像の品質向上に使用し得る。
特徴検出段階において識別された特徴は、画像見当合わせ(リンク)に使用される。極大特徴検出手法を使用する特徴検出技法が、「極大特徴検出」項で説明される。
2)近傍キーフレームへのリンク:次に、404において、各入力画像フレームが近傍キーフレームにリンクされる。本明細書で使用される場合、2つのフレームを「リンクする」という用語は、2つのフレームで画像見当合わせ(「画像見当合わせ」項で後述する)を実行し、相対変位を得ることとして定義される。図5Aのリンクプロセスの図に示されるように、フレーム1(例えば、前の画像フレーム504)がフレーム2 502(例えば、現在の画像フレーム502)にリンクされる場合、2つのフレームの変位ベクトルI1,2が見つけられる。近傍キーフレームリンクステップでは、図5Bに示されるように、現在の画像フレーム502は近傍キーフレーム506、508、510にリンクされて、相対変位ベクトルI1,c、I2,c、及びI3,cがそれぞれ得られる。
実施形態例では、近傍キーフレームへのリンクに関わるステップは以下である。(i)追跡−現在画像フレーム追跡位置ptがまず、現在の画像フレームを前の画像フレームにリンクすることにより推定される。現在画像フレーム追跡位置ptは、pt=pt−1+It,t−1として推定され、式中、pt−1は前の画像フレームの位置であり、It,t−1は、前の画像フレームから現在の画像フレームへのリンク(変位)ベクトルである。(ii)近傍キーフレームの検索−推定された現在フレーム追跡位置ptを使用して、キーフレームデータベースが検索されて、検索エリア内にある近傍キーフレーム{K0,K1,K2,...}が識別される。検索エリアは、現在画像フレーム追跡位置ptに相対して定義される。(iii)リンク:次に、現在画像フレームが近傍キーフレームK0、K1、K2、...のそれぞれにリンクされて、対応する変位ベクトル{IK0,c,IK1,c,IK2,c,...}が得られる。
3)現在フレーム位置推定:リンクされた各近傍キーフレームKiは、408において、現在画像フレーム位置Pc Kiの独立した推定を提供する。数学的に、これは、Pc Ki=PKi+IKi,cとして表現することができ、式中、pKiはキーフレームKiの位置であり、IKi,cは、キーフレームKiからの現在の画像フレームへのリンク又は変位ベクトルである。現在の画像フレームの位置の個々の推定は、完全には一致しないことがあるため、現在フレーム位置は、個々の全ての推定Pc Kiの平均として推定し得、ここで、i=1,2,3,...である。
4)キーフレームフィルタリング:ビジョンモデルモジュール114は、410において、現在の画像フレームをキーフレームとしてキーフレームデータベース406に追加すべきか否かを判断する。一実施形態例では、現在の画像フレームがキーフレームであるか否かについての判断は、全ての近傍キーフレームへの現在の画像フレームの距離に基づく。現在の画像フレームが任意の近傍キーフレームに近すぎる場合、すなわち、任意の近傍キーフレームへの現在の画像フレームの変位ベクトルが閾値未満である場合、現在の画像フレームはキーフレームとして追加されない。その他の場合、現在の画像フレームは、新しいキーフレームとしてキーフレームデータベース406に追加される。現在の画像フレームがキーフレームとして追加される場合、既存のキーフレームへのそのリンク{IK0,c,IK1,c,IK2,c,...}も記憶される。この情報は、「バンドル調整」項で考察されるように、キーフレーム位置を事後処理調整するバンドル調整に使用することもできる。
現在の画像フレームが、キーフレームとしてキーフレームデータベースに追加されない場合、その画像内容は、既存のキーフレームのフォーカス置換に使用し得る。フォーカス置換については、「フォーカス置換」項で考察する。
図4に示される2D空間ハッシュマップモジュール412及びフォーカス置換モジュール414についてはそれぞれ、「フォーカス置換」及び「画像見当合わせ」の項で考察する。
ロスト処理
システム100は、ビジョンモデルモジュール114が現在の画像フレームを既存の任意のキーフレームにリンクすることができない場合、ロスト状態になる。この場合、現在画像フレーム位置は、上述した追跡ステップから推定し得る。すなわち、現在画像フレーム追跡位置(前の画像フレームに基づいて特定される)は、現在の画像フレームの位置(通常状態では近傍キーフレームに基づいて特定される)として設定し得る。追跡ステップも同様に失敗する場合、現在の画像フレームの位置は前の画像フレームの位置として設定し得る。
システム100がロスト状態である場合、新しい各入力カメラ画像フレームの高レベルステップは以下のように説明し得る。
1)事前処理−動作は通常状態と同じである。
2)近傍キーフレームへのリンク−動作は通常状態と同じであるが、近傍キーフレームを識別する検索半径又は検索エリアを増大し得る。半径/エリアの増大は、システム100が失う連続画像フレームの数に依存し得る。現在の画像フレームのリンクに成功する場合、システム100は、次の画像フレームに対して通常状態に戻る。その他の場合、近傍キーフレーム検索半径は、近傍キーフレームにリンクするステップにおいて、次の画像フレームに対して増大される。
3)現在フレームの位置の推定−現在の画像フレームが既存の任意のキーフレームにリンクすることができない場合、現在の画像フレームの位置は、上述したように推定される。しかし、リンクに成功する場合、現在フレームの位置は、通常状態と同様に推定される。
4)キーフレームフィルタリング/フォーカス置換−システム100がロスト状態にある場合、これらのステップは実行されない。
ビジョンモデルモジュールの特定の実施形態の更なる詳細を以下に説明する。
極大特徴検出
通常、通常の特徴検出技法は、対象点又は特徴を選択する方法として特徴強度閾値を使用する。特徴強度閾値の使用に伴う問題は、特徴強度が、同じシーンを所与として、画像のコントラストに依存することである。さらに、特定の画像内容では、特徴閾値を超える非常に多数の対象点があり得、画像処理が劇的に遅くなる。検出される特徴の数を制限する一方法は、検出される特徴の数を一定に保つように試みる可変閾値を有することである。しかし、この方法は、対象点を画像フレームの小さな高コントラスト領域にクラスタ化する傾向を有し、これは、画像見当合わせプロセスのロバスト性を低減するおそれがある。
極大特徴検出技法により、かなり一定数の特徴を検出することが可能である。極大特徴検出技法は、画像フレームにわたって均等に検出特徴点を分布させ、様々な状況でのロバストな画像見当合わせを容易にする。この技法検出は、画像コントラストの変化にも不変である。
極大特徴検出技法はやはり、最初に通常特徴点検出を実行し得る。低い特徴強度閾値を設定し得、大きな潜在的特徴点の大きなリストを得る。極大特徴強度がN×N近傍領域内にある場合のみ、潜在的な特徴点のリストから特徴点が選択される。パラメータNは、選択される特徴が疎になる程度を制御する。Nが大きいほど、特徴は疎になり、選択される特徴の総数が少なくなる。
画像見当合わせ
近傍キーフレームへのリンクは、画像見当合わせを使用して、近傍キーフレームを現在の画像フレームにリンクする。画像見当合わせモジュールは、ソース画像Isrcから宛先画像Idstへのリンク/変位(Ix,Iy)を見つける。近傍キーフレームにリンクする際、図6に示されるように、近傍キーフレーム612は、ソース画像として設定され、現在の画像フレーム610は宛先画像として設定される。
見当合わせは、リアルタイム実行のために特徴に基づき得る。画像見当合わせモジュールは、2つの画像のそれぞれの特徴が、例えば、図4に関連して先に考察された事前処理ステップ402から既に見つけられていることを前提とする。求められる特徴タイプは特定的ではない。画像見当合わせモジュールは、特徴が、1)画像の座標(x,y)、2)向き、3)尺度、及び4)特徴の記述に使用される記述子を有することのみを前提する。記述子は、特徴を表すN個の要素の行ベクトルであり得る。Nは、例えば、64又は128であり得る。同様の特徴では、記述子ベクトル間のユークリッド距離は小さいはずである。
画像見当合わせでのステップは以下である。
1)照合:宛先画像Idstにおいて検出された特徴Dの集合を、ソース画像Isrcにおいて検出された特徴Sの集合と照合する。Idst内の特徴D[i]毎に、Isrcでの最良一致が見つけられる。最良一致を見つける2つの方法例について説明する。使用される方法は、システム100のハードウェア構成及び/又は処理能力に依存し得る。
a.高速CPUの場合:D[i]毎に、Isrc内の一致候補Siの集合がまず、Sからフィルタリングされる。次に、D[i]の記述子が、Si内の全ての特徴の記述子と比較される。最小記述子距離を有するSi内の特徴が、D[i]の最良一致として見つけられる。
b.高速GPUの場合:総当たり特徴照合を実行し得る。D[i]の記述子は、Isrc内の全ての特徴の記述子と比較される。最小記述子距離を有するIsrc内の特徴は、D[i]の最良一致として見つけられる。総当たり照合は、GPUマッチャーモジュール(図4のボックス404参照)を使用して実行されて、高速実行される。
代替の実施形態では、最良一致及び最良一致距離を記録し記憶し得る。2番目に最良の一致及び2番目に最良の一致距離も、一致検証のために記録し得る。
2)一致検証:2つの画像フレームの特徴の一致が識別されると、一致検証ステップが実行される。一致検証プロセスの実施形態例について次に説明する。
a.2Dヒストグラムによる一致検証。ヒストグラムのx軸は特徴のx変位を表す。ヒストグラムのy軸は特徴のy変位を表す。一致対毎に、各X座標及びy座標(Δx,Δy)に基づく特徴変位が計算される。計算された変位は、2Dヒストグラムの蓄積に使用される。正確な特徴一致は、一貫した変位を有する。異常値の特徴一致はランダムな変位を有する。したがって、正確な特徴一致は同じビンに群がるはずである。最高の蓄積値bx,yを有するビン又はbx,yの8つの近傍ビンのうちの1つに投じられた特徴一致が保持される。他の全ての特徴一致は破棄し得る。
b.反復的幾何学的検証による一致検証。ここでは、推定された特徴変位が改良される。保持されている一致対応性から、平均特徴変位が見つけられる。一致特徴対毎に、平均変位からの残余が計算され、残余閾値未満の残余値を有する対のみが、許容可能な一致特徴対として保持される。例えば、一致特徴対が、平均残余の2倍を超えて平均変位から異なる場合、一致特徴対は破棄される。この幾何学的検証は、幾つかの繰り返しで、又は一致特徴対を破棄する必要がなくなるまで実行し得る。
あるいは、一致検証は記述子距離に基づいて行い得る。Idst内の各特徴の最良一致距離が、閾値未満であることが検証される。最良一致距離が大きすぎる場合、一致対を破棄し得る。一致検証は、最近傍比率テストに基づくこともできる。最良一致距離は2番目の最良の距離と比較される。比率が1に近すぎる場合、これは一致距離が非常に類似することを意味し、一致対は曖昧として破棄される。
残りの一致した特徴対(すなわち、許容可能な一致特徴対)からの最終的な平均特徴変位が、2つの画像の相対変位として使用される。最終的なチェックとして、残りの一致対の数は、特定の閾値を超える必要があり得る。残りの一致対からの平均残余も、設定されたピクセルユニット数未満である必要があり得る。結果が上記要件を満たすことができない場合、画像見当合わせプロセスは不成功として報告し得る。
図6に示されるように、Idst内の特徴D[i]毎に、Isrc内の最良特徴一致が見つけられる。
フォーカス置換
キーフレームデータベース内の既存のキーフレーム及びそのキーフレームに重複する現在の画像フレーム(例えば、2つの相対変位が、閾値未満であり、重複を示す場合)を所与として、現在の画像がより鮮鋭であると判断される場合、フォーカス置換モジュールは、キーフレーム画像を現在の画像からの内容で置換する。図7に示されるように、キーフレームデータベース内の既存のキーフレームは、現在の画像フレーム702に対する基準画像フレーム704として示される。
一実施形態例によれば、フォーカス置換モジュールは基準画像フレーム、現在の画像フレーム、及び互いの相対変位が、画像フレームの先の処理から既知であることを前提とする。フォーカス置換のステップは以下である。
1)基準画像フレーム704及び現在の画像フレーム702の両方の勾配画像を計算する。
2)2つの画像のそれぞれでの重複領域を計算する。重複領域は、現在の画像フレーム及び基準画像フレームの陰影の付いた対象領域(ROI)706、706’として示される。図7に示されるように、基準画像フレーム704と現在の画像フレーム702との変位を所与として、各画像フレームでの重複エリア(又はROI)を見つけることができる。フォーカス置換方法の一実施形態例では、重複エリアのみが比較されて、画像の鮮鋭さが特定される。
3)各画像フレームのROIの勾配和を計算する。勾配和は、画像の鮮鋭さを示すパラメータである。
4)現在の画像フレームのROI708の勾配和が、基準画像フレームROI706’の勾配和よりも大きい場合、現在の画像フレームがより鮮鋭であると見なされる。この場合、基準画像フレームROI706’の内容を現在の画像フレームROI706の内容で上書きすることにより、画像置換を実行し得る。ブレンドは任意選択的に、より「漸次的な」置換のために、基準ROIの境界周囲で行うことができる。
幾つかの実施形態によれば、最適化方法をフォーカス置換に使用し得る。現在の画像フレーム(Ic)が複数の既存のデータベースキーフレーム(K1,K2,K3,...)に重なる状況では、上記の基本方法が各対間(Ic,K1)、(Ic,K2)、(Ic,K3)、...でそれぞれ実行される。基本方法が実行される都度、勾配画像が再計算されるため、これにはかなり時間がかかり得る。最適化は、勾配画像を再計算する必要をなくすことを目的とする。これは以下のうちの1つ又は複数により行われる。
1)各カメラフレームがビジョンモデルモジュールの処理ステップを通って流れる際に、各カメラフレームの勾配画像を計算する。したがって、各フレームは、それに関連付けられた予め計算された勾配画像を有する。
2)カメラ画像フレーム(現在の画像フレーム)がデータベースキーフレームとして選択される場合、カメラ画像フレーム及びそれに関連付けられた勾配画像は一緒に記憶され、したがって、各キーフレームは予め計算された勾配画像を有する。
3)ここで、勾配を再計算せずに、キーフレーム及び現在の画像フレームに関連付けられた勾配画像を使用して、基本方法を実行することができる。画像置換がキーフレーム内で行われる場合、キーフレーム勾配画像も、現在の画像フレームからの勾配画像を使用して同じように置換される。
キーフレームデータベース
キーフレームデータベース406は、モザイクが拡大する場合、多数のキーフレームを含み得る。他のモジュールで要求される重要な一機能は、対象領域内に配置されたキーフレームを効率的に検索する能力である。例えば、近傍キーフレームへのリンクでは、現在の画像フレーム周囲のキーフレームを検索する必要があるとともに、検索機能が必要である。多くのキーフレームをキーフレームデータベースに有することにより、検索性能問題がもたらされる。特定の領域内のキーフレームを見つけるために、大きなキーフレームリストを通して検索し、対象のキーフレームを見つけるために、性能が低下するおそれがあることがあり得る。本開示の実施形態例は、2Dハッシュマップを作成することによりこの問題に対処する。
2Dハッシュマップは、図8に示されるように、キーフレームの位置に基づいてキーフレームをセルにグループ化する。セルはグリッド802に位置合わせされ、二次元インデックス(i,j)を使用することによりインデックス付け得る。セルがインデックス付けされる場合、そのセル内の全てのキーフレームが得られる。各キーフレームはハッシュを有するか、又はその位置(x,y)からセルインデックス(i,j)へのマッピングを有する。このハッシュは以下のように定義し得る。
i=フロア(x/幅)
j=フロア(y/高さ)
式中、幅及び高さは各セルの指定された幅及び高さである。本開示では、画像フレームの幅及び高さをこれらの値として使用することが好都合である。その結果、間隔[c*width,(c+1)*width]内の全てのセルは、同じセルインデックスcにグループ化され、ここで、cはある整数の定数である。これらのセルは全て近傍と見なされ、位置間の距離が幅であることが許される場合、所与のセルから多くとも1セル離れたセルはc−1、c、c+1としてインデックス付けられる。
各セル内部にはキーフレームリストがあり、このリストは最初は空のリストである。新しいキーフレームが、ハッシュに基づいてセルに配置され、これは、新しいキーフレームが追加されるセルのインデックスを見つけるために使用される。セルが、何のキーフレームがあるかを見つけるように問い合わせられる場合、セル内のキーフレームを識別するキーフレームリストが返される。領域、例えば、複数のセルを包含するクエリ領域804が問い合わせられる場合、クエリ領域内部の各セルからのキーフレームリストが一緒に添付され、添付付きリストが返される。
ディスプレイ(例えば、矩形表示領域)にレンダリングする必要があるキーフレームを決定するために、表示矩形にカメラの最小及び最大位置を使用する同様の参照。最小位置がインデックスc_minを提供し、最大位置がインデックスc_maxを提供すると考えると、c_minからc_maxへの反復クエリは全ての可視キーフレームをもたらす。キーフレームデータベースに追加される各キーフレームが、小さな円で示される図8に示されるように、クエリ領域804はセルの4つのみのキーフレームを評価する。したがって、処理時間が短縮され、モザイク表現のレンダリングがより高速且つより効率的になる。
複数対物レンズステッチングへのビジョンモデルモジュールの拡張
特定の実施形態例では、異なる倍率の対物レンズから生成されたモザイクを結合することが可能である。対物レンズ毎に別個のキーフレームデータベースを保持し得る。対物レンズの光心間の変位が既知の場合(例えば、較正から)、各対物レンズからの異なるモザイクを関連付け、結合して単一のモザイクにすることができる。
GPU照合方法
ビジョンモデルモジュールに関して上述したように、顕微鏡カメラにより捕捉された任意の画像フレームが解析されて、特徴を抽出する。特定の実施形態によるGPU照合方法例900の概略について、図9を参照して後述する。
特徴のそれぞれは、前にステッチングされた画像で見つけられた特徴と比較され、任意の類似性を識別する。このステップは、特徴照合906と呼ばれ、モザイク内部の新しいキーフレームの位置を推定する。そのようなプロセスは、キーフレーム毎に数百個の要素を経なければならないため、幾つかの動作を必要とし、リアルタイムシステムでの性能の問題に繋がるおそれがある。しかし、GPUを使用して並列に実行することが可能である。
特定の実施形態では、本開示は、CUDAライブラリを使用するグラフィックスカードの性能を利用する特徴照合方法のマルチスレッド版を開発する解決策を提供する。
以下の考察の最初の部分では、方法自体を説明し、方法をマルチスレッド用に構成する。第2の部分は、方法をGPUシステムで実行するプログラムのアーキテクチャの開発に当てられる。図9及び図10はそれぞれ、GPU照合方法及びアーキテクチャの概略表現である。
特徴照合906は通常、宛先特徴(D)及びソース特徴(S)(図9の「入力データ」904参照)と示される特徴の2つの集合に対して実行される。方法の目標は、Dからの特徴毎に、Sからのどの2つの特徴が最良及び2番目に最良の一致であるかを判断する。例えば、特徴は、特定の対象点を記述する128個の要素の行ベクトルとして定義し得る。
p=(p1,p2,...,p128)及びq=(q1,q2,...,q128)
であるような2つの特徴p及びqが考えられる。
pとqとの比較は、以下のように定義されるそれぞれのユークリッド距離E(p,q)に基づく。
2つの特徴p及びqは、pとqとの距離E(p,q)がゼロに近い場合、同様であると見なされる。次に、最小距離を探すことにより、最良一致を見つけ得る。
であるように、SをM個の特徴の集合として考え、DをN個の特徴の集合であると考える。式中、S[i]はソース特徴iであり、D[j]は宛先特徴jである。
インデックスiのソース特徴S[i]は、距離E(S[i],D[j])がD[j]と任意のソース特徴:
との最小距離である場合、宛先特徴D[i]の最良一致と見なされる。
上述したように、この方法は、宛先特徴毎に2つの最良一致を見つける。これらの結果は、2行及びN列のIdxとして示される二次元アレイで返され、このアレイでは、1列が1つの宛先特徴の最良一致に対応し、1行目及び2行目はそれぞれ、最良及び2番目に最良に一致するソース特徴のインデックスである。この方法は、宛先特徴とその一致要素との間で見つけられる距離を返すこともできる。一致する要素は、Idxと同じ構造のEdと示されるアレイに記憶される(図9の「出力データ」910参照)。出力データはビジョンモデルモジュールに提供し得る(図9に示されず)。
この方法で最もコストのかかる動作は、ユークリッド距離の処理(図9の「ユークリッド距離」908参照)である。距離は一緒に比較されるため、平方根をスキップすることによりこの処理を改良し得る。この処理は、約分演算を使用して並列化することもできる。約分演算は、作業を幾つかのスレッドに分けることからなる。ユークリッド距離の処理に使用される式は主に、処理された項の和で形成される。そのため、計算する一項を各スレッドに与えることが可能である。次に、結果を一緒に合算し得る。そうするために、各スレッドに2つの要素の和を割り当て得る。次に、出力は入力アレイの1/2のベクトルになる。このプロセスは、図9の908に示されるように、ユークリッド距離の二乗に対応する一固有値が得られるまで繰り返される。
リンクモジュール902による特徴照合は、2つの主な関数を用いて開発し得る。第1の関数は、宛先特徴毎に各ソース特徴を処理し、マルチスレッド処理を使用してユークリッド距離を処理する第2の関数を呼び出し得る。
GPU照合アーキテクチャ
特定の実施形態によるGPUマッチングの実施形態例のアーキテクチャ1000について、図10に関連して後述する。GPU版の特徴照合を実施するために、幾つかの態様を説明しなければならない。最初に、メモリが、CPUとは異なるようにGPUにおいて管理され、ニーズに応じて幾つかの解決策が利用可能なことを考慮しなければならない。第2に、スレッドを各グラフィックスカードのマルチコアプロセッサに割り当てる方法を確立しなければならない。
GPUシステムは3種のメモリを提供する:グローバルメモリ1004、テクスチャメモリ1002、及び共有メモリ(S.M.)。グローバルメモリ1004を使用して、読み書きでシステム内の任意のスレッドからアクセス可能な任意の種類の変数を記憶する。テクスチャメモリ1002は、読み出しのみが可能なことを除き、グローバルメモリと同様である。その結果、テクスチャメモリ1002はより高速のメモリアクセスを提供する。共有メモリは、同様に読み出しのみに制限され、特定数のスレッドの間で共有されるデータスタックである。共有メモリは、後述するブロック構造1010の内部で使用される。共有メモリはテクスチャメモリ1002よりも高速であるが、そおサイズはかなり制限される(例えば、16KB)。
グラフィックスカードは、CPU(RAM)が使用するメモリにアクセスすることができず、次に、第1のステップは、入力データをGPUメモリにコピーすることである。上述したように、入力データは2つのアレイに記憶される:D1006及びS1008。アレイS1008は読み出しの場合のみ必要とされ、入力データをテクスチャメモリ1002にコピーすることがより効率的である。
出力データも、RAMに転送する前に、GPUメモリに記憶しなければならない。上述したように、出力データは2行及び2列の2つのアレイを含む:Idx1016及びEd1018(上記参照)。Ed1018は、スレッドにより編集され、グローバルメモリ1004に記憶される。
共有メモリの使用について、ブロック構造の一部としてより詳細に後述する。
CUDAはブロック構造の使用に基づく。これらのそれぞれは、実行するスレッドの集合と、スレッドで共有されるメモリブロックとの複合である。図10に示されるように、ブロックはグリッド1010に配置される。カーネルが呼び出される場合(図10の1012参照)、ハードウェア容量に応じて、宣言された各ブロックをストリーミングマルチプロセッサ1014に割り当て得る。
特徴照合の場合、1つの宛先特徴の解析がブロック毎に割り当てられる。したがって、あらゆるスレッドが宛先特徴への高速アクセスを有することができるように、宛先特徴はブロックの共有メモリにコピーされる。このアーキテクチャでは、あらゆるブロックがソース特徴Srcの全体アレイにアクセスする必要がある。共有メモリが制限され、テクスチャメモリ1002がそのようなアレイへの高速アクセスを提供することを知り、スレッドはテクスチャメモリ1002から直接読み出す。GPU照合方法を参照して上述したように、ブロックの各スレッドを使用して、ユークリッド距離をもたらす約分演算を処理し得る。特徴が128個の値のベクトルであることを知り、ブロック毎に128個のスレッドが必要である。その結果、各ブロックは、割り当てられた宛先特徴の2つの最良一致を出力する。
レンダラー
上述されたレンダラーについて、図11及び図12に関連してこれよりさらに詳細に提示する。
多くのキーフレームを空間内のランダムな位置にレンダリングするタスクは困難であり得る。単純に常時、全てのキーフレームをレンダリングし、各レンダリング時に全てのテクスチャを更新する代わりに、これらの問題に対処する幾つかの方法が提案されている。ハッシュマップ412を使用して、何が画面上にあるのかの高速探索を実行し、専用テクスチャアトラス1110を使用して、1つのバッチで全てのキーフレームをレンダリングすることが可能であり、リアルタイムブレンドシェーダー1206が、フレーム間の継ぎ目があまり目立たないように使用される。
これらのキーフレームの全てをレンダリングしようとすることに伴う問題の1つは、それら全てのテクスチャを所与の時点でメモリに記憶することが略不可能且つ非効率的であることである。別の問題は、各キーフレームのテクスチャを記憶することも非効率的であることであり、これは、キーフレーム毎にglBindTexture OpenGL呼び出し1204を導入し、実行を妨げる。これらの両問題を一度に解決するために、複数解像度テクスチャアトラス1202が使用される。
テクスチャアトラスは大きなテクスチャであり、多くのサブテクスチャ(又はここでは、キーフレーム画像)を記憶する。異なるテクスチャを呼び出すのではなく、異なるテクスチャ座標が、キーフレームがレンダリングされている各ポリゴンに指定される。しかし、全てのキーフレーム画像を1つの大きなテクスチャに当て嵌めることにより、同じメモリ制限が生じる。キーフレームのモザイクを完全にズームインした場合、多くのキーフレームがビューエリア内部にないことに留意する。他方、完全にズームアウトした場合、全てのキーフレームをレンダリングする必要があり得るが、解像度ははるかに低い。このことを利用して、異なる「レベル」と呼ばれるもので、設定された数のテクスチャアトラスを有する。
図11に示されるように、各テクスチャアトラスは、同じ解像度1102であるが、異なるレベル1112にあり、記憶される画像は各レベルで半分の解像度である。例えば、画像の幅及び高さ2048並びにテクスチャトラスの幅及び高さが全て4096である場合。底のレベル(レベル0)で、4つの画像(2048×2048)を記憶することができる。次のテクスチャアトラスレベルは4096×4096であるが、ここでは、記憶される画像は1024×1024であり、したがって、前のレベルの4倍の数の画像をこのレベルで記憶し得る(レベル1では16)。同様に、レベル2は16*4の画像を有することになり、レベル3は16*4*4の画像を有することになり、以下同様である。アトラスレベルはカメラ及び現在のズームレベルによって決まる。ズームレベルが、1つの画像ピクセルが1つの画面ピクセルと同じサイズ以下であるようなものである場合、最大解像度を使用し得る。ズームアウトすると、一度に見られるのは画像ピクセルの半分だけであり、したがって、次のレベルを使用することができる。
キーフレームをレンダリングするために、テクスチャアトラスの集合を生成し得る。上述したように、各テクスチャアトラスは、関連付けられた解像度を有し、関連付けられた解像度でダウンサンプリングされた少なくとも1つのキーフレームを含み得る。レンダリングの表示エリア及び表示解像度が選ばれる。表示解像度に最も近い解像度を有するテクスチャアトラスが、テクスチャアトラスの集合から選択される(必要な場合には更新される)。関連付けられたキーフレーム一が表示エリア内にあるテクスチャアトラスからのキーフレームを次に、ディスプレイにレンダリングし得る。
キーフレームデータベースからの1つ又は複数のキーフレームが、表示エリア内に関連付けられたキーフレーム位置を有するものとして識別されるが、まだテクスチャアトラスにない(又は存在していない)場合、レンダリング前に、これらのキーフレームを含むようにテクスチャアトラスを更新し得る。例えば、欠けているキーフレームを、テクスチャアトラスの関連付けられた解像度でダウンサンプリングし、テクスチャアトラスに挿入し得る。
なお、これらのキーフレームをレンダリングするために、キーフレームが最初にアトラス内に存在する必要がある。新しいキーフレームは最初、全てのアトラスレベルに配置して、配置の時間を償却する。レンダリング時、所与のレベルでレンダリングするために必要な全てのキーフレームが得られ、キーフレームテクスチャアトラスにない場合には、キーフレームは、例えば、十分に高速であるOpenGLのフレームバッファオブジェクト拡張1208を使用してテクスチャにレンダリングされる。
キーフレームがフォーカス置換を必要とする場合、そのキーフレームの全てのアトラスレベルを更新しなければならない。レンダリングすべきキーフレーム毎に、ビジョンモデルモジュールにより設定されるそのキーフレームのチェックフラグを調べて、テクスチャアトラスでの更新を必要とするか否かを判断し得、キーフレームを、上述したように、全てのレベルでテクスチャアトラスにアップロードし得る。
テクスチャが、容易な探索のためにテクスチャアトラスに詰め込まれると、クワッド/画像矩形をレンダリングする場合、テクスチャ座標がテクスチャアトラスから得られる。このプロセスは、レンダリングカメラに重複する現在のキーフレームを探してビジョンモデルモジュールを照会して、ID集合を得ることにより開始される。これらのIDを用いて、キーフレームがチェックされ、キーフレームが所与のズームレベルでテクスチャアトラス内にあるか否かが判断される。ない場合、キーフレームは追加される。すでにある場合、何も行われない。両方の場合で、キーフレームがテクスチャアトラスのどこにあるか(キーフレームがテクスチャアトラスに存在するロケーション)を示すテクスチャ座標が得られる。各クワッドにテクスチャ座標を用いて、各クワッドの位置が生成される。クワッドの左上位置は、キーフレーム構造から既知であり、3つの他の頂点は、フレームの幅/高さを左上位置に追加することを通して生成される。位置及びテクスチャ座標はバッチ(大きなアレイ)でOpenGL1204に渡されて、数千ものOpenGL呼び出しを節減する。
キーフレームは、レンダリングされる場合、あるフレームが終わり、別のフレームが始まる急なエッジを有する。これを解決するために、両フレームの線形結合をレンダリングし得、換言すれば、キーフレームをブレンドし得る。フレームの重複がないフレームの領域では、寄与はそのフレームからのみであるはずである。重複領域がある場合、キーフレームは、エッジにどの程度近いかに基づいて加重される。
このために、キーフレームと同じサイズを有する中央にセンタリングされたガウス画像を予め計算し得る。複数のフレームが重複する場合、2パスピクセルシェーダーの使用により、それらのフレームを一緒にブレンドし得る。第1のパスで、全てのフレームはOpenGLからの加法ブレンドを可能にし、基本的に全てのフレームが一緒に加算され、加重平均として第1のピクセルシェーダーにおいて以下のように加重し得る。
pass1colour.rgb+=gauss*framecolour.rgb
pass1coulur.a+=gauss
第2のピクセルシェーダーにおいて、全てのフレームは一緒に加算され、寄与重みの追加に基づいて正規化し得る。
pixelcolour=pass1colour.rgb/pass1colour.a
したがって、各ピクセルは、キーフレームでの元のピクセルの位置に依存する加重平均である(フレームの中央は最も大きな重みを取得し、エッジは最も小さな重みを取得する)。
リアルタイムでレンダリングされたシーンは、固定グリッドロケーションにおいて仮想カメラをシーンのあちこちで移動させて(ユーザがマウスを用いて仮想カメラを移動させる)、各タイルを生成することにより、ハードドライブに保存し得る。ビューエリアを増大させて(仮想カメラでのズームアウト)、tiled.tiffファイルを生成することもできる。レンダリングはリアルタイム動作であるため、この保存機能のコストは、各タイルを最初に事前処理するのとは対照的に、ハードドライブに保存する時間によって制限される。
コントローラ
本開示のコントローラについて、図13に関連してこれより考察する。
コントローラ106は、ユーザがシステム100の残りの部分とどうように対話するかを定義する。通常、コマンドは、カメラ104、ビジョンモデルモジュール114、レンダラー108のようなものへのコマンドの単純なリダイレクトであるが、コントローラ106は仮想情報も追跡する。
図14に示されるように、コントローラ106は、仮想カメラ又はキーフレームをどこで見るかについての情報を提供するカメラを収容する。例えば、仮想カメラは、1つのみのキーフレームを見て、そのキーフレームで画面を埋めることができるか、又はよりズームアウトされた、その全てを示すモザイクを表示することができる。仮想カメラは、スキャンされた画像の仮想表現1402を通してのナビゲーションがどのように実行されるかを定義する。例えば、仮想カメラは矩形領域として構成することができ、その領域は、レンダリングパイプラインを介して画面にマッピングされる。図14に示される例では、2つの仮想カメラがあり、一方はよりズームインしたビュー1404を示し、もう一方はよりズームアウトしたビュー1406を示す。
ユーザが迷った(すなわち、現在のキーフレームと既存のモザイクとを一致させることができない)場合、矢印(UI矢印)を表示し得る。矢印の方向は、現在のキーフレームから付近の近傍キーフレームの平均への方向であり得る。これは、ユーザがモザイク領域に戻ろうとする概ね「良好」な方向をもたらす。とにかくこの種のフィードバックを有することは、十分な特徴を有さない領域にいるか、又はあまりに速く移動しているために、迷っていることをユーザに知らせるために有益である。
本開示の特定の実施形態はストリームモード1302を含む。ストリームモード1302の目標は、顕微鏡の対物レンズを較正するとともに、カメラのライブストリームを見て、ステッチングに大丈夫であるか否かを確認することである。カメラのスナップショットを保存する選択肢、現在の対物レンズを較正する選択肢、新しい対物レンズを挿入する選択肢、現在の対物レンズを除去する選択肢がある。セットアップが適宜較正されると、システムを適宜使用する準備ができる。ユーザは、現在のカメラ画像フレームに十分な特徴が存在する場合、「ステッチ開始」を選択することができる。十分な特徴がない場合、方法が、機能するのに十分な内容を有さないため、ユーザによるステッチングは許可されない。
更なる実施形態はステッチモード1304を有する。ステッチモードにおいて、ユーザは、顕微鏡ステージを用いてあちこち移動することにより画像を自在にステッチすることができる。ユーザがマウスを用いてのナビゲートを望む場合、同様にそうすることができる。ユーザに現在のカメラストリームを同時に見せて、フォーカスを支援するライブビュー選択肢もある。ユーザが異なる対物レンズに切り替える場合、システムはステッチの試みを自動的に停止し、現在のカメラビューを表示し続ける。ステッチモード及びストリーミングモードの両方で、対物レンズは、自動的に切り替えられ較正される。ユーザが、前にステッチングしていた対物レンズに再び切り替える場合、ステッチングの再開を試みる。随時、ユーザはステッチングされた画像を保存し、利得補償をアクティブ化し、ストリームモードに戻り、又は現在のカメラフレームを保存することができる。
高速保存
上記に加えて、本開示の実施形態は、種々雑多な機能及びモジュールを備えることができる。そのような一モジュールは「高速保存」特徴116であることができる。モザイクを保存するために、まず、全ての個々のキーフレームからモザイクを生成しなければならない。モザイク生成での主要ステップは、キーフレームの重複を扱うことである、ブレンドすることである。高速保存は、レンダラーの内蔵高速ブレンドを使用して、全体モザイクを生成する。モザイクが生成されると、モザイクは、「レンダリング」項で上述したように、Big−TIFFフォーマットで保存される。
品質保存
本開示の実施形態は、品質保存又は「マルチバンドブレンド」特徴118を含むこともでき、これについては図15及び図16を参照して後述する。これは、高速保存特徴116と比較して、モザイク保存の高品質版である。品質保存は、マルチバンドブレンドを使用してモザイクを生成し、このブレンドは、レンダラー108が使用する単純なものと比較してより高度なブレンド方法である。品質保存機能の構成例について、図15及び図16を参照して後述する。
ビジョンモデルモジュールにおいて説明されたように、画像モザイクのブレンドの本質は、デジタルカメラにより捕捉された画像集合のステッチングにある。理論上、各画像は同じ条件下でサンプリングされる。しかし、現実では、特定の予期されない影響がこれらの理想的なパラメータを損なうおそれがある。その結果、照明の変動、シーンの移動、又は露出の違いが目に付き、見当合わせ誤差、不均一輝度、又は目に見えるエッジ等のモザイクの不連続性を生じさせる。その場合、モザイクを保存する前に、事後処理技法を適用する必要がある。
第1の解決策は、利得補償を適用することである。利得補償は、輝度差を軽減することに対するその効率が証明されているが、目に見える画像の境界を完全には除去せず、見当合わせ誤差には効果がない。画像を一緒にブレンドするロバストなプロセスが望ましい。
単純な手法は、線形ブレンドを使用することである。線形ブレンドの本質は、加重和をモザイクの各画像に適用して、画像間で平滑な遷移を有することにある。この方法は、目に見えるエッジの除去に効率的であり、比較的高速である。しかし、線形ブレンドは、幾つかの見当合わせ誤差を残しがちであり、画像内の輪郭線を変える場合があり、これは最終的な結果の品質に影響する。代替は、P.Burt and E.Adlson,A Multiresolution Spline With Application toImage Mosaics,1993に記載されているマルチバンドブレンド方法であり、これを参照により本明細書に援用する。さらに、画像ステッチングの異なる実施態様が開発され、M.Brown and D.Lowe、Automatic Panoramic Image Stitching using Invariant Features,2007に記載され、これを参照により本明細書に援用する。この画像ステッチングの異なる実施態様は、ディテール周波数に応じて、各サンプルをバンド単位で分解するという概念に基づく。それゆえ、変化する空間範囲にわたって生成されるバンドをブレンドすることが可能になる。最高周波数に低い範囲を選ぶことにより、輪郭線は維持され、よりよい品質を保証する。また、高い範囲が低周波数に適用されて、画像のディテールを変更することなく、強い不連続性を除去する。
以下は、マルチバンドブレンド方法1500を記載し、本開示の実施形態に構成されるマルチバンドブレンド方法の最適化された実施を提供する。
マルチバンドブレンド方法について幾つかのステップを通して説明する。最初に、重み関数を定義する必要があり、重み関数は、画像間の平滑な遷移を特定する。次に、プロセスを実行して、各画像をいくつかのバンドに分解する。最後のステップは、各バンドをブレンドし、一緒に混合して、最終的なモザイクを得ることである。
一般に、画像のブレンドは加重和に基づく。概念は、ピクセル毎に0〜1の値を設定し、最終的な結果へのピクセルの影響を設定することであり、1は、完全に使用するピクセルの場合であり、一方、0はモザイクから除外されるピクセルの場合である。次に、中間値のピクセルを使用して、画像間の平滑な遷移を得る。マルチバンドブレンドの場合、遷移エリアのサイズは、ディテールを保存するためにバンド毎に変わる。
ブレンド範囲を設定する前に、画像間の適切な境界線を選ぶべきである。そうするために、各画像の各ピクセルの信頼度を設定する中間重み関数D(x,y)が設定される。画像の中心が、境界よりも多くの信頼可能な情報を含むと仮定する。関数D(x,y)は次に、中心における1からエッジでの0まで変化する値を設定する。最高度:
を有するピクセルを選ぶことにより、二値重みマップ1502が構築され、ここで、jは、0≦j<nであるような整数であり、nはブレンドする画像の数である。
最後に、結果として生成される重みマップをぼやけさせることにより、遷移エリアが処理され、ぼやけの強度がブレンド範囲を設定する。
マルチバンドブレンドでは、ディテールを背景から分離する必要がある。この動作は、空間周波数に応じて画像を分解することにより処理することができる。空間周波数は、空間領域での時間周波数と同様の測定値である。視覚的知覚の場合、高空間周波数は、エッジ等の急な空間変化を表し、一方、低空間周波数は、背景のようなより大域的な情報を表す。マルチバンドブレンドは元々は、任意の数のバンドで機能する。しかし、幾つかのテスト後、バンドの数が増大するにつれて、結果は顕著には改良されないことが分かった。したがて、2つのバンドを使用する実施形態例を本明細書において説明する。
空間周波数を分解する一般的な方法は、ガウスフィルタを適用することであり、この方法について図15に示されるブレンド1504を参照して説明する。ガウスフィルタはローパスフィルタであり、高周波数を除去することにより画像をぼやけさせる効果を有する。標準偏差σのガウスぼかしカーネルg
σ(x,y)を考える。この関数を、畳み込みによりモザイクのi番目の画像I
i(x,y)に適用することができる。
結果として生成される画像
は、波長λ≧σでの元画像の空間周波数を表す。
高周波数は、結果を元画像から減算することにより取り出される。
及び
はそれぞれ、モザイクのi番目の画像I
i(x,y)の1番目及び2番目のバンドである。
分解は各画像で行われ、バンドを一緒にブレンドしなければならない。上述したように、マルチバンドブレンドの利点は、波長範囲に応じて、異なる遷移エリアにわたってブレンドする可能性を提供することである。そうするために、ブレンドするk番目のバンドに応じて異なる標準偏差σ
kを適用することにより、重みマップはぼかされる。
は、画像I
i(x,y)のk番目のバンドに適用される重みマップである。
次のステップは、各バンドの加重和を処理することにより画像サンプルをブレンドすることである。
式中、I
k(x,y)は最終的なモザイクのk番目のバンドを表す。
結果として生成される2つのブレンドされたバンドを一緒に加算して、最終的な結果を得ることができる。
この方法は重い処理を必要とし、高速事後処理方法のニーズを満たさない場合がある。以下の項において、GPUプログラミング等の最近の開発を使用して、より強力でより高速なプログラムを可能にするプロセスセットについて説明する。
まず、モザイクをチャンクに分割し(図15の1506参照)、次に、重みマップの記憶を最適化することにより、メモリの使用を低減することに焦点を合わせる。事後処理されたモザイクをファイルに保存する解決策が次に実施される。最後に、GPUプログラミングを使用する最適化の解決策について説明する。
メモリの使用は、この方法にとって重要な問題であった。分かった問題は、オペレーティングシステムWindows(商標)に起因した。実際に、プログラムは、4GBよりも大きなメモリを割り振ろうとする場合にクラッシュするように見える。この状況は、画像サンプルの大きな集合をステッチしようとする間によく見られるようである。この問題に対して見つかった解決策は、モザイクを小さなチャンクに分割し、チャンクがメモリの4GBを超えないことを保証することであった。チャンク毎に画像をブレンドするためには、どの画像がチャンクと交わるかを識別する必要がある。次に、各チャンクを別個のモザイクとして扱うことができる(図16の1602及び1604参照)。処理するピクセル数を削減するために、画像サンプルをクロッピングして、チャンクの内部で実際に使用されるものにすることが魅力的であり得る。クロッピングは、加重和の処理中の良好な最適化であり得るが、これは、重みマップを構築する間にトラブルを生じさせるおそれがある。重みマップが、ぼやけさせる前にクロッピングされる場合、同じ状況が非一貫性をもたらすおそれがある。例えば、重複領域がプロセスでクロッピングされる場合、ローパスフィルタは、チャンクの境界を考慮に入れる。それゆえ、遷移エリアは、チャンクなしで行われるものと一致しなくなり、最終的なモザイク内部への目に見えるエッジの挿入に繋がるおそれがある。
考慮される別の側面は、重みの計算である。2つの解決策がこのために可能であるように思える。第1の解決策は、必要な場合に重みマップを処理することを含む。チャンクが十分に小さい場合、チャンクは多数の画像を含まないはずである。しかし、このプロセスは、各チャンク内の各キーフレームに対して繰り返される。理論上、サンプルも幾つかのチャンクに出現し得る。その結果、このプロセスは必要な回数を超えて繰り返されて、プログラムの実行を遅くさせることに繋がるおそれがある。他方の解決策は重みマップを事前処理し、後で使用するために記憶することである。この方法により、画像の重みマップが一度のみ処理されることを保証することができる。しかし、キーフレームの数が増大するにつれて、これも同様にメモリ使用のかなりの増大に繋がる。最初の解決策がより適切であるように思われる。メモリの使用が、システムのクラッシュ又はかなりの低速化に繋がるおそれがある実際の問題であることは既知のテストである。チャンク内のキーフレームのみを考慮して重みマップを処理することができる場合、これは、扱う事例数を低減することができる。したがって、この解決策は費用効率的な方法であるように見える。
上述したように、方法が、ブレンドされたモザイクを保存する必要がある。この方法は、大きなデータセットで機能することを目的とし、Big TIFFと呼ばれる特定のファイルフォーマットを使用する。しかし、他のファイルフォーマットを使用することもできる。Big TIFFフォーマットは、画像全体をタイルに分割し、ファイルを表示し閲覧するより高速の方法を提供するという利点を有する。この方法により、ディテールレベルの使用が可能になり、これは、大きな画像で素早くズームイン及びズームアウトを行う強力な特徴である。そのようなファイルを保存する関数が既に開発されているが、異なるディテールレベルのタイルを提供する必要がある。したがって、最終的なモザイクをブレンドした後、プログラムは、レベル毎にブレンドされたモザイクを一度閲覧して、タイルを抽出し、より低いディテールレベルに適切なサイズにサイズ変更すべきである。
第1の手法は、マルチバンドブレンドの終わりにデータを保存することである(図16の1602参照)。しかし、この方法は、プロセスの終わりまで、プログラムにあらゆるチャンクをメモリに保持させることを強いる。この状況は重大な問題ではないが、1つのみのチャンクをRAMに保持することにより、メモリの過剰な使用を回避することに価値があり得る。そうするために、チャンクをタイルと見なし、オンザフライで保存し得る(図16の1604参照)。ブレンド方法が終わった場合、第1のディテールレベルが既に生成され、ファイルに保存され、次に構築する必要があるのはその他のディテールレベルのみである。この手法に伴う問題は、モザイクがもはやメモリになく、既に保存されたデータを抽出しなければならないことである。保存機能が、読み出し及び保存を同時に処理するように構築されていないため、これは問題を生じさせるおそれがある。ファイル上の2つのストリームが次に必要とされ、一方は前のレベルの保存用であり、もう一方は前のレベルの読み出し用である。次に、必要とされる動作は、前のレベルから4つのタイルを抽出し、次のレベルの1つのタイルを生成することである。
図16に示されるプロセス図は、上述した2つの手法を要約する。
前節では、メモリの使用の最適化について説明した。しかし、これらの変更は、プロセスの実行を高速化しない場合があり、特定の時点でシステムを低速化させる場合さえある。実行時間を低減するために、GPU処理を使用して、ハードウェア性能を利用する。実際に、特定の状況では、GPUプロセッサがCPUよりもはるかに効率的であり得ることが分かっている。GPUプロセッサは、多数のスレッドを管理している場合に非常に効率的である。したがって、GPUプロセッサは、行列への計算等の高度に並列化可能な演算に使用し得る。残っているボトルネックを識別し、それをGPUで実施する方法を見つけるマルチバンドブレンドの異なるステップが検討されてきた。ガウスブラーは、大きなボトルネックとして識別された。この動作は、重い処理を含み、キーフレームガットに数回繰り返される。NVIDIAはCUDAライブラリを使用して、リアルタイムフィルタを有する。この実施は、本開示の実施形態用に構成するように変更された。
GPUプログラミングで検討する重要なことは、メモリの使用である。実際には、CPU及びGPUは両方とも各自のメモリ記憶装置を有する。したがって、データをRAMからGPUに転送する必要があり、繰り返される回数が多すぎる場合、これはプログラムを遅くするおそれがある。したがって、GPUプログラミングをフィルタ間の動作にも同様に使用することが決定されている。このようにして、データ転送は、キーフレーム毎に2回のみ行われる。そうするために、GPUでの行列を容易に操作するための新しいクラスであるGpuMatが開発された。
利得補償
特定の実施形態は、利得補償122を利用することもでき、利得補償はキーフレームデータベースから全てのキーフレームを読み出して、キーフレームが均一に明るく見えるように個々のキーフレーム画像利得を調整するモジュールである。
幾つかの顕微鏡では、光源サンプリングに起因して、連続フレーム間の強度のばらつきが見られる。これは、重複する各フレームの強度に一貫性を持たせようとすることにより軽減される。この手法は「利得補償」又は各フレームを乗算する値を見つけることと呼ばれ、したがって、結果として生成されるモザイクは重複フレーム間で急な差を有さなくなる。
これは、Automatic panoramic image stitching using invariant features,Brown M.and Lowe D.G.,International Journal of Computer Vision,Volume 74,Number 1,pp.59−73,2007,Springerに記載のように、線形系として解決され、これを参照により本明細書に援用する。
利得行列g_iが決定され、この行列は、全体画像を乗算する定数としてフレームiに適用される。利得補償解決行列には項の2つの集合がある。第1の集合は、フレームが別のフレームに重なる場合の行列に行を有する。2つのフレーム(i及びj)が、重複領域(I_i,I_j)内に平均強度を有すると考えると、行列内の行は、
sigma_1*(g−i*I_i−g_j*I_J)^2=0
のように見える。
式中、sigma_1はこの式集合の加重係数である。基本的に、利得が適用されると、重複する画像は同じ強度を有するべきである。重複する画像I及びjのあらゆる集合は、行列内に1行を有する。
これに対する自明な解は、全ての利得g_iをゼロに設定する。これを解消するために、以下のように、利得が1の近くであるべきであること(1方程式(unity equation))を記述する新しい項が各画像に導入される。
sigma_2*(g_i−1)^2=0
式中、sigma_2は、方程式の1セット(unity set of equation)の加重係数である。本発明では、これらの2つの方程式セットを最小二乗の意味で解く。
バンドル調整
さらに、バンドル調整モジュール120もあり得、バンドル調整モジュールは、キーフレームデータベースから全てのキーフレームを読み出すとともに、互いへのキーフレームリンクも読み出す。このモジュールは、全てのリンク制約が満たされるようにキーフレーム位置を調整する。
時間の経過に伴い、キーフレーム位置推定は、追跡誤差の蓄積に起因して不整合を有するおそれがある。そのような1つの状況は、モザイクが大きな循環ループとして構築される場合である。ユーザがループの開始点に戻る場合、最後のキーフレームから推定される現在位置は、初期基準キーフレームへの見当合わせからの推定と一致しないことがある。
図17は、(キーフレーム1702からの)d2,0からのp2の推定と、(キーフレーム1704からの)(d1,0+d2,1)からののp2の推定との不一致がある場合を示す。通常、(d1,0+d2,1)から蓄積される追跡誤差がある。バンドル調整は、測定される全てのリンクが厳密に満たされるように、全てのキーフレーム位置を解くのに役立つ。
追跡誤差の蓄積を修正するために、バンドル調整を実行して、全ての測定リンクを考慮に入れるとともに、全てのキーフレーム位置が全てのリンク制約を厳密に満たすように、各キーフレームの位置の大域的最適化を実行することができる。
方程式のセットアップは、初期キーフレームK0が位置p
0=(0,0)を有すると仮定して以下のようになる。
測定d1,0、d2,1、d2,0が既知であり、方程式の上記線形系を使用してp1、p2を解く。
対物レンズ変更検出器
本開示の幾つかの実施形態は、対物レンズ変更検出器112も利用し、この検出器は、各入力フレームを監視し、顕微鏡の対物レンズが切り替えられたか否か及びどの倍率に切り替えられたかを判断する。この検出器はコントローラに通知し、次に、コントローラは適切な動作をとる。検出器は、対物レンズの変更が行われたか否かを適宜判断するのに役立つように、カメラ露出時間の制御を必要する。
対物レンズ変更検出器は、自動的に、両方ともカメラ画像ストリームを処理するだけで、1)顕微鏡の対物レンズの切り替えを検出し、2)新しい対物レンズのズームレベルを特定することを目的とする。
1)対物レンズ切り替え検出:カメラ画像が、対物レンズ変更検出モジュールをとおって固定レートで連続してストリーミングされことを前提とする。検出の原理は、カメラビューが一時的に、対物レンズの切り替える間に遮蔽されることに基づく。したがって、カメラ画像の急な暗化は、対物レンズ変更の指示である。
対物レンズ変更検出方法が、図18のフローチャートに提示される。遮蔽をチェックするために、方法は、1802において、各入力画像の平均画像ピクセル強度値を計算する。平均画像ピクセル強度が閾値を下回る場合、1804において、遮蔽が検出される。次に、1806において、システムは平均画像強度値が、連続フレーム数(例えば、10フレーム)にわたり閾値を超えて上昇するのを待ち、それから、1808において、対物レンズ変更が完了したことを宣言する。
低ズーム対物レンズを高ズーム対物レンズに切り替えられる場合、問題が生じる。高ズーム対物レンズは一般に、低ズームと比較してはるかに少ない光を通すため、画像は非常に暗いままである。その結果、モジュールは、対物レンズがまだ変更中であると誤って考える場合がある。改善措置は、1804において、アルゴリズムが「対物レンズ変更」状態に入るとき、カメラのシャッター時間を最大値にし、それにより、高ズーム対物レンズの場合に十分な光を検出できるようにすることである。
2)対物レンズズーム検出:対物レンズ変更が特定されると、対物レンズズーム検出方法が続く。検出原理は、異なるズームの対物レンズが顕微鏡を通してカメラ内に異なる量の光を通すことに基づく。カメラシャッター時間も、同じ画像輝度を維持するために、異なる対物レンズと共に変更しなければならない。したがって、この方法は、カメラの自動露出アルゴリズムから得られる露出時間を使用して、使用される対物レンズを特定する。検出方法について以下に説明する。
まず、顕微鏡の各対物レンズを較正して、その対物レンズのカメラ露出時間を見つけなければならない。対物レンズを較正するために、顕微鏡光は最大に設定され、全ての対物レンズ較正にわたり、且つ実際の使用中、一定のままでなければならない。白色画像を保証するために、顕微鏡に試料があるべきでもある。次に、カメラの自動露出アルゴリズムが実行されて、現在の対物レンズでの白色画像のシャッター時間を決定する。このシャッター時間は記録され、対物レンズに関連付けられる。この記録されたシャッター時間が、その対物レンズに適する最小シャッター時間であることに留意することが重要であり、その理由は、ビュー内に試料がないためである。ビュー内に試料がある場合、幾らかの光を遮り、自動露出時間をわずかに高くさせる。
次に、システムが実行中であるとき、システムは対物レンズの変更を能動的にチェックする。対物レンズ変更が検出される場合、対物レンズズーム検出がまず、自動露出を実行する。結果としての露出時間は、各対物レンズの較正された露出時間と比較される。試料がビュー内にあり得、したがって、結果としての自動露出時間が、対物レンズの較正された露出時間よりもわずかに高いことが予期される。したがって、現在の露出時間よりも低く、且つ現在の露出時間に最も近い較正された露出時間を有する対物レンズが、使用されている対物レンズとして特定される。
前の説明では、説明のため、実施形態の完全な理解を提供するために、多くの詳細が記載される。しかし、これらの特定の詳細が必要ではないことが当業者には明らかだろう。他の場合、周知の電気構造及び回路については、理解を曖昧にしないように、ブロック図の形態で示される。例えば、本明細書に記載される実施形態が、ソフトウェアルーチンとして実施されるか、ハードウェア回路として実施されるか、ファームウェアとして実施されるか、それともそれらの組み合わせで実施されるかについての特定の詳細は提供されない。
本開示の実施形態は、機械可読媒体(コンピュータ可読媒体、プロセッサ可読媒体、又はコンピュータ可読プログラムコードが内部に具現されるコンピュータ使用可能媒体とも呼ばれる)に記憶されたコンピュータプログラム製品として表すことができる。機械可読媒体は、ディスケット、コンパクトディスク読み取り専用メモリ(CD−ROM)、メモリ装置(揮発性又は不揮発性)、又は同様の記憶機構を含む磁気媒体、光学媒体、又は電気記憶媒体を含む任意の適する有形、非有形媒体であることができる。機械可読媒体は、様々な命令、コードシーケンス、構成情報、又は他のデータの集合を含むことができ、これらは、実行されると、プロセッサに本開示の一実施形態による方法のステップを実行させる。記載される実施態様を実施するために必要な他の命令及び動作を機械可読媒体に記憶することができることも当業者は理解するだろう。機械可読媒体に記憶される命令は、プロセッサ又は他の適する処理装置により実行することができ、回路とインタフェースして、記載されるタスクを実行することができる。
本明細書に記載の特徴はまた、必ずしも本明細書に記載される特定の実施形態に限定されるわけではない。一実施形態例からの特徴は、可能な場合、他の実施形態例と結合し得る。
上記の実施形態は単なる例示を意図される。本明細書に添付される特許請求の範囲によってのみ規定される範囲から逸脱せずに、当業者は特定の実施形態に対して変更、修正、及び変形を行うことができる。
関連出願の相互参照
本願は、2011年8月2日に出願された米国仮特許出願第61/514,186号明細書の優先権の利益を主張するものであり、この仮特許出願を参照により本明細書に援用する。
本開示は、一般的にはデジタル撮像に関する。より詳細には、本開示は顕微鏡の分野での画像のレンダリングに関する。
通常、顕微鏡を通して取得される物体の画像は、使用される顕微鏡の視野により制限される。より小さなデジタル画像のモザイク又はモンタージュを使用して物体のより大きなデジタル画像を提供する試みがなされてきた。モザイク画像をレンダリングするためには、互い及び最終的なモザイク画像に対するより小さな画像のロケーションを特定しなければならない。
Atkinに付与された米国特許第6,687,419号明細書では、対応するピクセルの共分散を連続して計算して、共分散を最大化する現在の画像の位置を特定しながら、現在の画像をモンタージュ画像にわたってシフトすることにより、現在の画像がモザイク画像内に配置される方法が記載されている。
モザイク画像を構成する個々の画像のロケーションの特定と、ディスプレイにレンダリングするモザイク画像の生成とは、計算集約的である。顕微鏡の視野により制限されない、顕微鏡の横長のインタラクティブ且つ正確で大きなモザイク表現を生成する手段に対する改良が望ましい。
本開示の一態様では、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法が提供される。本方法は、物体から現在の画像フレームを取得すること、前の画像フレームの前の画像フレーム位置及び前の画像フレームからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置に相対して画定される検索エリア内で少なくとも1つの近傍キーフレームを識別することであって、少なくとも1つの近傍キーフレームは、キーフレームデータベースに記憶された複数のキーフレームのうちの1つであり、各キーフレームは、関連付けられたキーフレーム位置を有する、識別すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のそれぞれが、閾値よりも大きいと判断される場合、現在の画像フレームを新しいキーフレームとしてキーフレームデータベースに記憶すること、少なくとも1つの近傍キーフレームのそれぞれのキーフレームフレーム位置及び少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム位置を特定すること、現在画像フレーム位置の平均を、新しいキーフレームに関連付けられた新しいキーフレーム位置としてキーフレームデータベースに記憶すること、キーフレームデータベースからのキーフレームを、ディスプレイの、関連付けられた各キーフレーム位置にレンダリングして、物体のモザイク表現を得ることを含む。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位は、新しいキーフレームと共に記憶することもできる。
本方法は、各キーフレーム位置の最適化に基づいて、複数のキーフレームのキーフレーム位置を調整して、キーフレーム位置の誤差を補正し、各キーフレームとその近傍キーフレームとの相対変位への1つ又は複数の制約を満たすことを更に含み得る。検索エリア内での少なくとも1つの近傍キーフレームの識別に失敗するか、又は任意の近傍キーフレームへの現在の画像フレームの相対位置の特定に失敗する場合、検索エリアを反復的に増大させて、少なくとも1つの近傍キーフレームを識別し得る。検索エリアを反復的に増大させた後、少なくとも1つの近傍キーフレームの識別に失敗する場合、現在画像フレーム位置を現在画像フレーム追跡位置又は前の画像フレーム位置に割り当て得る。
本方法は、特徴強度閾値を設定し、特徴強度閾値を超える少なくとも1つの潜在的特徴を含む潜在的特徴リストを取得し、潜在的特徴リストから、予め定義される近傍領域内で最大の特徴強度を有する特徴のみを選択することにより、一連の画像フレームのそれぞれにおいて特徴集合を識別することにより、一連の画像のそれぞれにおいて特徴集合を識別することを更に含み得る。
前の画像フレームからの現在の画像フレームの相対変位は、現在の画像フレーム及び前の画像フレーム内の少なくとも1つの特徴に基づいて、現在の画像フレームと前の画像フレームとを見当合わせすることにより特定し得る。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位は、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれにおける少なくとも1つの特徴に基づいて、現在の画像フレームと少なくとも1つのキーフレームのそれぞれとを見当合わせすることにより特定し得る。
現在の画像フレームと少なくとも1つの近傍キーフレームのそれぞれとを見当合わせすることは、現在の画像フレームにおいて識別された特徴集合を、少なくとも1つの近傍キーフレームのそれぞれ内の対応する特徴集合と照合して、一致特徴対集合を取得すること、一致特徴対集合から許容可能な一致特徴対を選択すること、及び画像見当合わせのために、許容可能な一致特徴対の相対変位に基づいて、現在の画像フレームと少なくとも1つの近傍キーフレームのそれぞれとの平均変位を特定することを含み得る。
識別される各特徴は、N個の要素の記述子行ベクトルを含み得、Nは整数である。特徴集合を照合すること及び許容可能な一致特徴対を選択することは、現在の画像フレームにおいて識別された特徴集合における各特徴の記述子行と、少なくとも1つの近傍キーフレームのそれぞれの対応する特徴集合における各特徴の記述子行ベクトルとを比較すること、及び現在の画像フレーム内の各特徴の、少なくとも1つの近傍キーフレームでの最良一致特徴を識別することであって、最良一致特徴は、現在の画像フレーム内の特徴から最小記述子距離を有する、識別することを含み得る。
識別される各特徴は、座標、向きパラメータ、スケールパラメータを含むこともできる。特徴集合を照合すること及び許容可能な一致特徴対を選択することは、少なくとも1つの近傍キーフレームのそれぞれにおける対応する特徴集合から、現在の画像フレームにおいて識別された特徴集合の各特徴の一致候補集合を特定することであって、各一致候補は、現在の画像フレームにおける対応する特徴の向きパラメータ及びスケールパラメータと同様の向きパラメータ及びスケールパラメータを有する、特定すること、並びに現在の画像フレーム内の特徴から最小記述子距離を有する一致候補集合からの一致候補に基づいて、少なくとも1つの近傍キーフレームにおける最良一致特徴を識別することを含み得る。
この方法は、各一致特徴対のx座標及びy座標のそれぞれに基づいて、各一致特徴対の特徴変位を計算すること、計算された特徴変位を2Dヒストグラムに蓄積すること、並びに2Dヒストグラムに最も高い蓄積を有するビン及びその近傍ビンに蓄積された一致特徴対を、許容可能な一致特徴対として選択することを更に含み得る。
この方法は、平均変位からの各一致特徴対の残余値を特定すること、全ての一致特徴対の平均残余値を特定すること、及び閾値残余値未満の残余値を有する一致特徴対を、許容可能な一致特徴対として選択することを更に含み得る。
キーフレーム特徴をレンダリングすることは、テクスチャアトラス集合を生成することであって、各テクスチャアトラスは、関連付けられた解像度を有し、関連する解像度でダウンサンプリングされた少なくとも1つのキーフレームを含む、生成すること、レンダリングの表示エリア及び表示解像度を選択すること、テクスチャアトラス集合から、表示解像度に最も近い解像度を有するテクスチャアトラスを選択し更新すること、並びに関連付けられたキーフレーム位置が表示エリア内にある、テクスチャアトラスからのキーフレームをレンダリングすることを更に含み得る。
テクスチャアトラスを更新することは、キーフレームデータベースから、表示エリア内にあるが、テクスチャアトラスにはまだない(又は存在しない)関連付けられたキーフレーム位置を有するキーフレーム集合を識別すること、テクスチャアトラスの関連付けられた解像度でキーフレーム集合をダウンサンプリングすること、及びダウンサンプリングされたキーフレーム集合をテクスチャアトラスに挿入することを更に含み得る。
少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のうちの少なくとも1つが、閾値未満であると判断される場合、方法は、相対変位が閾値未満である少なくとも1つの近傍キーフレームを識別すること、現在の画像フレームと少なくとも1つの近傍キーフレームとの重複領域を特定して、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれでの対象領域を取得すること、現在の画像フレームの対象領域が、画像鮮鋭度パラメータに基づいて、近傍キーフレームのうちの1つの対象領域よりも鮮鋭であると判断される場合、少なくとも1つの近傍キーフレームの対象領域を、現在の画像フレームの対象領域で置換することを更に含み得る。
画像鮮鋭度パラメータは、現在の画像フレーム及び少なくとも1つの近傍キーフレームのそれぞれの対象領域の勾配画像から得られる勾配和であり得、現在の画像フレームの対象領域は、現在の画像フレームの対象領域の勾配和が、近傍キーフレームのうちの1つの対象領域の勾配和よりも大きい場合、近傍キーフレームのうちの1つの対象領域よりも鮮鋭であると判断し得る。
少なくとも1つの近傍キーフレームの対象領域を置換することは、少なくとも1つの近傍キーフレームの対象領域の内容を、現在の画像フレームの対象領域の内容で上書きすることを含み得る。現在の画像フレームの対象領域の境界における内容は、少なくとも1つの近傍キーフレームの内容とブレンドし得る。
方法は、関連付けられたキーフレーム位置に基づいて、キーフレームデータベース内の各キーフレームを複数のセルのうちの1つに割り当てること、並びに各キーフレームをタグ付けして、関連付けられたキーフレーム位置及び割り当てられた各セルをマッピングすることを更に含み得る。複数のセルはグリッドにおいて位置合し得、セルは二次元インデックスを使用してインデックス付け得る。検索エリアは、少なくとも1つ又は複数のインデックス付きセルを含み得る。少なくとも1つの近傍キーフレームのそれぞれは、少なくとも1つ又は複数のインデックス付きセルに割り当て得る。
物体のモザイク表現をレンダリングすることは、異なる倍率の対物レンズから得られるモザイク表現をレンダリングすることを含み得る。方法は、各倍率の対物レンズに関連付けられた別個のキーフレームデータベースを保持すること、各対物レンズの光心の相対変位に基づいて、各倍率の対物レンズから得られるモザイク表現を関連付けること、及び関連付けられたモザイク表現に基づいて、物体の結合モザイク表現をレンダリングすることを更に含み得る。
方法は、現在の画像フレームを事前処理することを更に含み得る。事前処理は、視野にわたる照明のばらつきを補正する画像較正、カラースケールからグレースケールへの変換、ダウンサンプリング、特徴検出、又は勾配計算を含み得る。
キーフレームをレンダリングすることは、重複するキーフレームをブレンドすることを含み得る。重複するキーフレームをブレンドすることは、キーフレームを分解して複数のバンドにすること、複数のバンドをブレンドすること、及びブレンドされた複数のバンドを統合して、物体のモザイク表現を得ることを含み得る。キーフレームを分解することは空間周波数に基づき得る。
方法は、複数のキーフレームの利得と突き合わせて比較することにより、現在の画像フレームの利得を実質的に均一なレベルの輝度に調整することを更に含み得る。
方法は、閾値強度未満の平均画像ピクセル強度に基づいて、現在の画像フレームの遮蔽を検出すること、及び続く画像フレームの露出時間の変化を検出して、画像フレームの取得に使用される対物レンズの変更を判断することを更に含み得る。
一連の画像フレーム内の第1の画像フレームは、基準キーフレーム位置を有する基準キーフレームとして割り当て得る。
本開示の一態様によれば、画像取得モジュールと、プロセッサと、レンダラーとを備える撮像システムが提供される。画像取得モジュールは、物体の現在の画像フレームを取得するように構成される。構成されるプロセッサは、前の画像フレームの前の画像フレーム位置及び前の画像フレームからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置に相対して画定される検索エリア内で少なくとも1つの近傍キーフレームを識別することであって、少なくとも1つの近傍キーフレームは、キーフレームデータベースに記憶された複数のキーフレームのうちの1つであり、各キーフレームは、関連付けられたキーフレーム位置を有する、識別すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位のそれぞれが、閾値よりも大きいと判断される場合、現在の画像フレームを新しいキーフレームとしてキーフレームデータベースに記憶すること、少なくとも1つの近傍キーフレームのそれぞれの関連付けられたキーフレームフレーム位置及び少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位に基づいて、現在の画像フレームの現在画像フレーム位置を特定すること、現在画像フレーム位置の平均を、新しいキーフレームに関連付けられた新しいキーフレーム位置としてキーフレームデータベースに記憶することを行うことである。レンダラーは、キーフレームデータベースからのキーフレームを、ディスプレイの、関連付けられた各キーフレーム位置にレンダリングして、物体のモザイク表現を表示する。
画像は、入力装置又はプロセッサから入力を受信して、受信入力に応答して、画像取得モジュール又はレンダラーを制御するコントローラを更に備え、画像取得モジュールは、少なくとも1つの対物レンズを有する顕微鏡と、物体の一連の画像フレームを取得するビデオカメラとを含む。
本開示の一態様では、コンピュータプログラム製品が提供され、この製品は、コンピュータにより実行されると、上記の物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法を実行するコンピュータ実行可能命令を記憶するコンピュータ可読メモリを含む。
本開示の別の態様では、物体のモザイク表現をレンダリングする、物体の一連の画像フレームからキーフレームを生成する方法が提供される。この方法は、前の画像フレームの既知の位置に相対する現在の画像フレームの変位に基づいて、現在画像フレーム追跡位置を特定すること、現在画像フレーム追跡位置を囲んだ所定の検索エリアを用いて、少なくとも1つの近傍キーフレームを識別すること、少なくとも1つの近傍キーフレームのそれぞれの既知の各キーフレーム位置と、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位とに基づいて、少なくとも1つの近傍キーフレームのそれぞれの現在の画像フレームの現在位置を特定すること、少なくとも1つの近傍キーフレームのそれぞれからの現在の画像フレームの相対変位が閾値を超える場合、現在の画像フレームを新しいキーフレームとして記憶することを含む。
本開示の他の態様及び特徴が、添付図と併せて特定の実施形態の以下の説明を検討することで当業者には明らかになるだろう。
これより、本発明の実施形態について、添付図を参照して例としてのみ説明する。
図1は、本開示の一実施形態によるシステム構成要素の一構成例の高レベル概略図である。
図2は、本実施形態により、キーフレームをキーフレームデータベースの各推定位置にレンダリングすることにより形成されるモザイクの一例である。
図3は、本実施形態により、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法の一例のフローチャートである。
図4は、本開示の特定の実施形態による、ビジョンモデルモジュールの構成の一例の概略図である。
図5Aは、2つのリンクされたフレーム間の変位ベクトルI1,2の例を示す。
図5Bは、現在の画像フレームと近傍キーフレームとの間の変位ベクトルIi,cの例を示す。
図6は、現在の画像フレーム(Idst)内の各特徴D[i]の、近傍キーフレーム(Isrc)内の対応する特徴S[i]への一致の識別を示す。
図7は、本開示の特定の実施形態によるフォーカス置換方法で使用される、現在の画像フレームと基準画像フレームとの重複エリア(ROI)を決定する一例を示す。
本開示の特定の実施形態による2D空間ハッシュマップの一例を示す。
図9は、本開示の特定の実施形態によるGPU照合方法の一例の概略図を示す。
図10は、本開示の特定の実施形態によるGPU照合アーキテクチャの一例の概略図を示す。
図11は、本開示の特定の実施形態による様々なテクスチャアトラス及び各解像度を示す。
図12は、本開示の特定の実施形態によるレンダラーの概略例の概略図である。
図13は、本開示の特定の実施形態によるコントローラの状態図例の概略図である。
図14は、本開示の特定の実施形態によるコントローラの仮想カメラの一例を示す。
図15は、本開示の特定の実施形態によりファイルを保存するマルチバンドブレンド機能の構成例である。
図16は、本開示の特定の実施形態によるファイル保存機能の一例を示すフローチャート図である。
図17は、本開示の特定の実施形態によるキーフレーム位置を解像するバンドル調整機能の一使用例である。
図18は、本開示の特定の実施形態による対物レンズ切り替え検出機能の方法の一例を示すフローチャートである。
一般に、本開示は、物体の一連の画像フレームから物体のモザイク表現を取得しレンダリングする際の効率を向上させる方法及びシステムを提供する。現在の画像フレームが処理され、1つ又は複数のキーフレームからの現在の画像の相対変位に基づいて、モザイク表現内の相対ロケーション又は位置を特定する。現在の画像フレームの位置が特定されると、その位置は近傍キーフレームと共にレンダリングされて、物体のモザイク表現を提供する。
本開示の特定の実施形態によるシステム100は、顕微鏡102に搭載されたデジタルビデオカメラ104、ビデオカメラ画像を処理するPC(図示せず)、システム出力を表示するディスプレイ/モニタ110、及びユーザ入力用のキーボード/マウス126からなる。デジタルビデオカメラ104は、ユーザが物体、例えば、スライドに載せられた試料を移動する際に画像をリアルタイムで捕捉する。PCで実行される命令及びコードが、これらのビデオ画像をリアルタイムで処理し、顕微鏡を通して見られる複数のビューを一緒にステッチングし、大きなモザイクを生成する。システム構成要素の構成例の高レベル概略図を図1に示す。
画像プロセッサは3つのモジュールを含むことができる:ビジョンモデルモジュール114、レンダラー108、及びコントローラ106。特定の実施形態によれば、ビジョンモデルモジュール114は、デジタル画像を処理し、画像データを含み得る。レンダラー108は、ビジョンモデルモジュール114内の画像データをモニタ110にレンダリングする。コントローラ106はユーザ入力を処理し、システム100内の他の全てのモジュールの挙動を制御する。
本開示の特定の実施形態によれば、ビジョンモデルモジュール114は、各入力カメラ画像フレームを処理する。画像フレーム毎に、ビジョンモデルモジュール114はフレーム位置を推定する。ビジョンモデルモジュール114はキーフレームの概念を利用する。この概念によれば、入力カメラ画像フレームのうちの幾つかのみが、システム100に記憶されるものとして選択される。選択されたフレームはキーフレームと呼ばれる。キーフレームは、その推定位置と共に、例えば、図1に示されるようにビジョンモデルモジュール114内のキーフレームデータベース406に記憶される。キーフレームデータベース406は、ビジョンモデルモジュール114から離れて記憶することもでき、システム100から離れて記憶することさえも可能である。キーフレームデータベースがリモートサーバにある場合、キーフレームデータベースへの適する通信(有線又は無線)を、システム100が適宜機能するために提供し得る。
対物レンズ変更検出器112、高速保存モジュール116、品質保存モジュール118、バンドル調整モジュール120、利得補償モジュール122、及びハードディスクドライブ(HDD)等の記憶手段124を含むシステム100の他の構成要素については、本開示の他の箇所で詳細に考察する。
物体のモザイク表現は、データベース内のキーフレームを各推定位置にレンダリングすることにより形成される。キーフレームデータベース486内のキーフレーム2021、2022、...、2025を各推定位置にレンダリングすることにより形成されるモザイク表現の一例を図2に示す。
本開示の特定の実施形態によれば、レンダラー108は、キーフレームデータベース406内のキーフレームを各位置に効率的に描画又はレンダリングする。例えば、レンダラー108は、キーフレームの重複領域をリアルタイムでブレンドして、処理効率を実現し得る。
本開示の特定の実施形態によれば、コントローラ106はユーザ入力を受信し、カメラ104と、ビジョンモデルモジュール114又はレンダラー108等の他のモジュールとの挙動を制御する。例えば、ユーザは、マウスの「ドラッグ」を使用して、ユーザがモニタ110で見たいモザイクの領域を変更することができる。このモザイクドラッグ入力はコントローラ106により受信され、次に、コントローラ106は、レンダラー108がレンダリングするモザイクの領域を変更する。コントローラ106は、ビジョンモデルモジュール114の状態も監視する。ビジョンモデルモジュール114が、現在の画像フレームの位置を推定することができない場合、ユーザへの警告を提供し得る。ロストフレーム処理機能については、「ロストフレーム処理」項で詳細に考察する。
図3は、物体の一連の画像フレームから物体のモザイク表現をレンダリングする方法の一例のフローチャートである。この方法は、302において、物体の現在の画像フレームを取得すること及び304において、前の画像フレームに基づいて現在の画像フレームの現在画像フレーム追跡位置を特定することを含む。これは、前の画像フレームの位置と、前の画像フレームからの現在の画像フレームの相対変位との関数として、現在画像フレーム追跡位置を特定することを含み得る。
306において、現在画像フレーム追跡位置に基づいて、少なくとも1つの近傍キーフレームが識別される。近傍キーフレームは、現在画像フレーム追跡位置に相対して定義される検索エリア内のキーフレームとして定義される。近傍キーフレームは、キーフレームデータベース426に記憶された複数のキーフレームから識別される。キーフレームデータベース426内の各キーフレームは、関連付けられたキーフレーム位置を有する。
近傍キーフレームが識別されると、308において、近傍キーフレームのそれぞれからの現在の画像フレームの相対変位が特定される。さらに、308において、近傍キーフレームに相対する現在画像フレーム位置も特定される。
現在の画像フレーム及びその近傍キーフレームは、312において、物体のモザイク表現としてレンダリングされる。近傍キーフレームのそれぞれとの現在の画像フレームの相対変位が、閾値よりも大きい場合、現在の画像フレームは、新しいキーフレームとしてキーフレームデータベースに記憶される。
以下の項に、上記方法の実施形態例の様々な構成要素の例を更に詳細に提供する。
ビジョンモデルモジュール
上述したように、ビジョンモデルモジュール114は、カメラ画像フレームをリアルタイムで受信して処理し、ビジョンモデルモジュール114について図4を参照してさらに詳細に説明する。ビジョンモデルモジュール114は、キーフレームデータベースに記憶された、推定された現在画像フレーム位置、キーフレーム、及びキーフレームの推定位置をレンダラー108又は他の外部モジュールに出力する。一般に、キーフレームは、永続的に記憶すべき画像フレームの入力ストリームから選択される画像フレームである。物体のモザイク表現は、キーフレームをその推定位置にレンダリングすることにより生成される。
初期化中、第1のカメラ画像フレームが基準キーフレームとして記憶される。基準キーフレームはグローバル位置(0,0)に割り当てられる。各画像フレームの通常処理で実行されるステップの概略は以下である。図4、図5A、及び図5Bを参照する。
1)事前処理:402において、システムの処理効率を向上させるために、システム100の残りの部分が、図4では現在の画像フレームとして示される各入力画像フレームを使用する前に、各入力画像フレームを事前処理し得る。例えば、画像フレームの事前処理は、(i)視野にわたる照明のばらつきを補正する静止白色画像較正を含み得る。事前処理により、入力カラー画像のホワイトバランスをとることを保証する、(ii)グレースケール変換−処理を容易にするために、カラー画像フレームをグレースケール画像に変換し得、(iii)ダウンサンプリング−画像フレームをダウンサンプリングしてより速い特徴検出を可能にし得、(iv)特徴検出−特徴検出をダウンサンプリングされた画像に実行し得、及び(v)勾配計算−入力画像フレームからの勾配画像を計算し、「フォーカス置換」項で考察される、レンダリングされたモザイク画像の品質向上に使用し得る。
特徴検出段階において識別された特徴は、画像見当合わせ(リンク)に使用される。極大特徴検出手法を使用する特徴検出技法が、「極大特徴検出」項で説明される。
2)近傍キーフレームへのリンク:次に、404において、各入力画像フレームが近傍キーフレームにリンクされる。本明細書で使用される場合、2つのフレームを「リンクする」という用語は、2つのフレームで画像見当合わせ(「画像見当合わせ」項で後述する)を実行し、相対変位を得ることとして定義される。図5Aのリンクプロセスの図に示されるように、フレーム1(例えば、前の画像フレーム504)がフレーム2 502(例えば、現在の画像フレーム502)にリンクされる場合、2つのフレームの変位ベクトルI1,2が見つけられる。近傍キーフレームリンクステップでは、図5Bに示されるように、現在の画像フレーム502は近傍キーフレーム506、508、510にリンクされて、相対変位ベクトルI1,c、I2,c、及びI3,cがそれぞれ得られる。
実施形態例では、近傍キーフレームへのリンクに関わるステップは以下である。(i)追跡−現在画像フレーム追跡位置ptがまず、現在の画像フレームを前の画像フレームにリンクすることにより推定される。現在画像フレーム追跡位置ptは、pt=pt−1+It,t−1として推定され、式中、pt−1は前の画像フレームの位置であり、It,t−1は、前の画像フレームから現在の画像フレームへのリンク(変位)ベクトルである。(ii)近傍キーフレームの検索−推定された現在フレーム追跡位置ptを使用して、キーフレームデータベースが検索されて、検索エリア内にある近傍キーフレーム{K0,K1,K2,...}が識別される。検索エリアは、現在画像フレーム追跡位置ptに相対して定義される。(iii)リンク:次に、現在画像フレームが近傍キーフレームK0、K1、K2、...のそれぞれにリンクされて、対応する変位ベクトル{IK0,c,IK1,c,IK2,c,...}が得られる。
3)現在フレーム位置推定:リンクされた各近傍キーフレームKiは、408において、現在画像フレーム位置Pc Kiの独立した推定を提供する。数学的に、これは、Pc Ki=PKi+IKi,cとして表現することができ、式中、pKiはキーフレームKiの位置であり、IKi,cは、キーフレームKiからの現在の画像フレームへのリンク又は変位ベクトルである。現在の画像フレームの位置の個々の推定は、完全には一致しないことがあるため、現在フレーム位置は、個々の全ての推定Pc Kiの平均として推定し得、ここで、i=1,2,3,...である。
4)キーフレームフィルタリング:ビジョンモデルモジュール114は、410において、現在の画像フレームをキーフレームとしてキーフレームデータベース406に追加すべきか否かを判断する。一実施形態例では、現在の画像フレームがキーフレームであるか否かについての判断は、全ての近傍キーフレームへの現在の画像フレームの距離に基づく。現在の画像フレームが任意の近傍キーフレームに近すぎる場合、すなわち、任意の近傍キーフレームへの現在の画像フレームの変位ベクトルが閾値未満である場合、現在の画像フレームはキーフレームとして追加されない。その他の場合、現在の画像フレームは、新しいキーフレームとしてキーフレームデータベース406に追加される。現在の画像フレームがキーフレームとして追加される場合、既存のキーフレームへのそのリンク{IK0,c,IK1,c,IK2,c,...}も記憶される。この情報は、「バンドル調整」項で考察されるように、キーフレーム位置を事後処理調整するバンドル調整に使用することもできる。
現在の画像フレームが、キーフレームとしてキーフレームデータベースに追加されない場合、その画像内容は、既存のキーフレームのフォーカス置換に使用し得る。フォーカス置換については、「フォーカス置換」項で考察する。
図4に示される2D空間ハッシュマップモジュール412及びフォーカス置換モジュール414についてはそれぞれ、「フォーカス置換」及び「画像見当合わせ」の項で考察する。
ロストフレーム処理
システム100は、ビジョンモデルモジュール114が現在の画像フレームを既存の任意のキーフレームにリンクすることができない場合、ロスト状態になる。この場合、現在画像フレーム位置は、上述した追跡ステップから推定し得る。すなわち、現在画像フレーム追跡位置(前の画像フレームに基づいて特定される)は、現在の画像フレームの位置(通常状態では近傍キーフレームに基づいて特定される)として設定し得る。追跡ステップも同様に失敗する場合、現在の画像フレームの位置は前の画像フレームの位置として設定し得る。
システム100がロスト状態である場合、新しい各入力カメラ画像フレームの高レベルステップは以下のように説明し得る。
1)事前処理−動作は通常状態と同じである。
2)近傍キーフレームへのリンク−動作は通常状態と同じであるが、近傍キーフレームを識別する検索半径又は検索エリアを増大し得る。半径/エリアの増大は、システム100が失う連続画像フレームの数に依存し得る。現在の画像フレームのリンクに成功する場合、システム100は、次の画像フレームに対して通常状態に戻る。その他の場合、近傍キーフレーム検索半径は、近傍キーフレームにリンクするステップにおいて、次の画像フレームに対して増大される。
3)現在フレームの位置の推定−現在の画像フレームが既存の任意のキーフレームにリンクすることができない場合、現在の画像フレームの位置は、上述したように推定される。しかし、リンクに成功する場合、現在フレームの位置は、通常状態と同様に推定される。
4)キーフレームフィルタリング/フォーカス置換−システム100がロスト状態にある場合、これらのステップは実行されない。
ビジョンモデルモジュールの特定の実施形態の更なる詳細を以下に説明する。
極大特徴検出
通常、通常の特徴検出技法は、対象点又は特徴を選択する方法として特徴強度閾値を使用する。特徴強度閾値の使用に伴う問題は、特徴強度が、同じシーンを所与として、画像のコントラストに依存することである。さらに、特定の画像内容では、特徴閾値を超える非常に多数の対象点があり得、画像処理が劇的に遅くなる。検出される特徴の数を制限する一方法は、検出される特徴の数を一定に保つように試みる可変閾値を有することである。しかし、この方法は、対象点を画像フレームの小さな高コントラスト領域にクラスタ化する傾向を有し、これは、画像見当合わせプロセスのロバスト性を低減するおそれがある。
極大特徴検出技法により、かなり一定数の特徴を検出することが可能である。極大特徴検出技法は、画像フレームにわたって均等に検出特徴点を分布させ、様々な状況でのロバストな画像見当合わせを容易にする。この技法検出は、画像コントラストの変化にも不変である。
極大特徴検出技法はやはり、最初に通常特徴点検出を実行し得る。低い特徴強度閾値を設定し得、大きな潜在的特徴点の大きなリストを得る。極大特徴強度がN×N近傍領域内にある場合のみ、潜在的な特徴点のリストから特徴点が選択される。パラメータNは、選択される特徴が疎になる程度を制御する。Nが大きいほど、特徴は疎になり、選択される特徴の総数が少なくなる。
画像見当合わせ
近傍キーフレームへのリンクは、画像見当合わせを使用して、近傍キーフレームを現在の画像フレームにリンクする。画像見当合わせモジュールは、ソース画像Isrcから宛先画像Idstへのリンク/変位(Ix,Iy)を見つける。近傍キーフレームにリンクする際、図6に示されるように、近傍キーフレーム612は、ソース画像として設定され、現在の画像フレーム610は宛先画像として設定される。
見当合わせは、リアルタイム実行のために特徴に基づき得る。画像見当合わせモジュールは、2つの画像のそれぞれの特徴が、例えば、図4に関連して先に考察された事前処理ステップ402から既に見つけられていることを前提とする。求められる特徴タイプは特定的ではない。画像見当合わせモジュールは、特徴が、1)画像の座標(x,y)、2)向き、3)尺度、及び4)特徴の記述に使用される記述子を有することのみを前提する。記述子は、特徴を表すN個の要素の行ベクトルであり得る。Nは、例えば、64又は128であり得る。同様の特徴では、記述子ベクトル間のユークリッド距離は小さいはずである。
画像見当合わせでのステップは以下である。
1)照合:宛先画像Idstにおいて検出された特徴Dの集合を、ソース画像Isrcにおいて検出された特徴Sの集合と照合する。Idst内の特徴D[i]毎に、Isrcでの最良一致が見つけられる。最良一致を見つける2つの方法例について説明する。使用される方法は、システム100のハードウェア構成及び/又は処理能力に依存し得る。
a.高速CPUの場合:D[i]毎に、Isrc内の一致候補Siの集合がまず、Sからフィルタリングされる。次に、D[i]の記述子が、Si内の全ての特徴の記述子と比較される。最小記述子距離を有するSi内の特徴が、D[i]の最良一致として見つけられる。
b.高速GPUの場合:総当たり特徴照合を実行し得る。D[i]の記述子は、Isrc内の全ての特徴の記述子と比較される。最小記述子距離を有するIsrc内の特徴は、D[i]の最良一致として見つけられる。総当たり照合は、GPUマッチャーモジュール(図4のボックス404参照)を使用して実行されて、高速実行される。
代替の実施形態では、最良一致及び最良一致距離を記録し記憶し得る。2番目に最良の一致及び2番目に最良の一致距離も、一致検証のために記録し得る。
2)一致検証:2つの画像フレームの特徴の一致が識別されると、一致検証ステップが実行される。一致検証プロセスの実施形態例について次に説明する。
a.2Dヒストグラムによる一致検証。ヒストグラムのx軸は特徴のx変位を表す。ヒストグラムのy軸は特徴のy変位を表す。一致対毎に、各X座標及びy座標(Δx,Δy)に基づく特徴変位が計算される。計算された変位は、2Dヒストグラムの蓄積に使用される。正確な特徴一致は、一貫した変位を有する。異常値の特徴一致はランダムな変位を有する。したがって、正確な特徴一致は同じビンに群がるはずである。最高の蓄積値bx,yを有するビン又はbx,yの8つの近傍ビンのうちの1つに投じられた特徴一致が保持される。他の全ての特徴一致は破棄し得る。
b.反復的幾何学的検証による一致検証。ここでは、推定された特徴変位が改良される。保持されている一致対応性から、平均特徴変位が見つけられる。一致特徴対毎に、平均変位からの残余が計算され、残余閾値未満の残余値を有する対のみが、許容可能な一致特徴対として保持される。例えば、一致特徴対が、平均残余の2倍を超えて平均変位から異なる場合、一致特徴対は破棄される。この幾何学的検証は、幾つかの繰り返しで、又は一致特徴対を破棄する必要がなくなるまで実行し得る。
あるいは、一致検証は記述子距離に基づいて行い得る。Idst内の各特徴の最良一致距離が、閾値未満であることが検証される。最良一致距離が大きすぎる場合、一致対を破棄し得る。一致検証は、最近傍比率テストに基づくこともできる。最良一致距離は2番目の最良の距離と比較される。比率が1に近すぎる場合、これは一致距離が非常に類似することを意味し、一致対は曖昧として破棄される。
残りの一致した特徴対(すなわち、許容可能な一致特徴対)からの最終的な平均特徴変位が、2つの画像の相対変位として使用される。最終的なチェックとして、残りの一致対の数は、特定の閾値を超える必要があり得る。残りの一致対からの平均残余も、設定されたピクセルユニット数未満である必要があり得る。結果が上記要件を満たすことができない場合、画像見当合わせプロセスは不成功として報告し得る。
図6に示されるように、Idst内の特徴D[i]毎に、Isrc内の最良特徴一致が見つけられる。
フォーカス置換
キーフレームデータベース内の既存のキーフレーム及びそのキーフレームに重複する現在の画像フレーム(例えば、2つの相対変位が、閾値未満であり、重複を示す場合)を所与として、現在の画像がより鮮鋭であると判断される場合、フォーカス置換モジュールは、キーフレーム画像を現在の画像からの内容で置換する。図7に示されるように、キーフレームデータベース内の既存のキーフレームは、現在の画像フレーム702に対する基準画像フレーム704として示される。
一実施形態例によれば、フォーカス置換モジュールは基準画像フレーム、現在の画像フレーム、及び互いの相対変位が、画像フレームの先の処理から既知であることを前提とする。フォーカス置換のステップは以下である。
1)基準画像フレーム704及び現在の画像フレーム702の両方の勾配画像を計算する。
2)2つの画像のそれぞれでの重複領域を計算する。重複領域は、現在の画像フレーム及び基準画像フレームの陰影の付いた対象領域(ROI)706、706’として示される。図7に示されるように、基準画像フレーム704と現在の画像フレーム702との変位を所与として、各画像フレームでの重複エリア(又はROI)を見つけることができる。フォーカス置換方法の一実施形態例では、重複エリアのみが比較されて、画像の鮮鋭さが特定される。
3)各画像フレームのROIの勾配和を計算する。勾配和は、画像の鮮鋭さを示すパラメータである。
4)現在の画像フレームのROI708の勾配和が、基準画像フレームROI706’の勾配和よりも大きい場合、現在の画像フレームがより鮮鋭であると見なされる。この場合、基準画像フレームROI706’の内容を現在の画像フレームROI706の内容で上書きすることにより、画像置換を実行し得る。ブレンドは任意選択的に、より「漸次的な」置換のために、基準ROIの境界周囲で行うことができる。
幾つかの実施形態によれば、最適化方法をフォーカス置換に使用し得る。現在の画像フレーム(Ic)が複数の既存のデータベースキーフレーム(K1,K2,K3,...)に重なる状況では、上記の基本方法が各対間(Ic,K1)、(Ic,K2)、(Ic,K3)、...でそれぞれ実行される。基本方法が実行される都度、勾配画像が再計算されるため、これにはかなり時間がかかり得る。最適化は、勾配画像を再計算する必要をなくすことを目的とする。これは以下のうちの1つ又は複数により行われる。
1)各カメラフレームがビジョンモデルモジュールの処理ステップを通って流れる際に、各カメラフレームの勾配画像を計算する。したがって、各フレームは、それに関連付けられた予め計算された勾配画像を有する。
2)カメラ画像フレーム(現在の画像フレーム)がデータベースキーフレームとして選択される場合、カメラ画像フレーム及びそれに関連付けられた勾配画像は一緒に記憶され、したがって、各キーフレームは予め計算された勾配画像を有する。
3)ここで、勾配を再計算せずに、キーフレーム及び現在の画像フレームに関連付けられた勾配画像を使用して、基本方法を実行することができる。画像置換がキーフレーム内で行われる場合、キーフレーム勾配画像も、現在の画像フレームからの勾配画像を使用して同じように置換される。
キーフレームデータベース
キーフレームデータベース406は、モザイクが拡大する場合、多数のキーフレームを含み得る。他のモジュールで要求される重要な一機能は、対象領域内に配置されたキーフレームを効率的に検索する能力である。例えば、近傍キーフレームへのリンクでは、現在の画像フレーム周囲のキーフレームを検索する必要があるとともに、検索機能が必要である。多くのキーフレームをキーフレームデータベースに有することにより、検索性能問題がもたらされる。特定の領域内のキーフレームを見つけるために、大きなキーフレームリストを通して検索し、対象のキーフレームを見つけるために、性能が低下するおそれがある。本開示の実施形態例は、2Dハッシュマップを作成することによりこの問題に対処する。
2Dハッシュマップは、図8に示されるように、キーフレームの位置に基づいてキーフレームをセルにグループ化する。セルはグリッド802に位置合わせされ、二次元インデックス(i,j)を使用することによりインデックス付け得る。セルがインデックス付けされる場合、そのセル内の全てのキーフレームが得られる。各キーフレームはハッシュを有するか、又はその位置(x,y)からセルインデックス(i,j)へのマッピングを有する。このハッシュは以下のように定義し得る。
i=フロア(x/幅)
j=フロア(y/高さ)
式中、幅及び高さは各セルの指定された幅及び高さである。本開示では、画像フレームの幅及び高さをこれらの値として使用することが好都合である。その結果、間隔[c*width,(c+1)*width]内の全てのセルは、同じセルインデックスcにグループ化され、ここで、cはある整数の定数である。これらのセルは全て近傍と見なされ、位置間の距離が幅であることが許される場合、所与のセルから多くとも1セル離れたセルはc−1、c、c+1としてインデックス付けられる。
各セル内部にはキーフレームリストがあり、このリストは最初は空のリストである。新しいキーフレームが、ハッシュに基づいてセルに配置され、これは、新しいキーフレームが追加されるセルのインデックスを見つけるために使用される。セルが、何のキーフレームがあるかを見つけるように問い合わせられる場合、セル内のキーフレームを識別するキーフレームリストが返される。領域、例えば、複数のセルを包含するクエリ領域804が問い合わせられる場合、クエリ領域内部の各セルからのキーフレームリストが一緒に添付され、添付付きリストが返される。
ディスプレイ(例えば、矩形表示領域)にレンダリングする必要があるキーフレームを決定するために、表示矩形にカメラの最小及び最大位置を使用する同様の参照。最小位置がインデックスc_minを提供し、最大位置がインデックスc_maxを提供すると考えると、c_minからc_maxへの反復クエリは全ての可視キーフレームをもたらす。キーフレームデータベースに追加される各キーフレームが、小さな円で示される図8に示されるように、クエリ領域804はセルの4つのみのキーフレームを評価する。したがって、処理時間が短縮され、モザイク表現のレンダリングがより高速且つより効率的になる。
複数対物レンズステッチングへのビジョンモデルモジュールの拡張
特定の実施形態例では、異なる倍率の対物レンズから生成されたモザイクを結合することが可能である。対物レンズ毎に別個のキーフレームデータベースを保持し得る。対物レンズの光心間の変位が既知の場合(例えば、較正から)、各対物レンズからの異なるモザイクを関連付け、結合して単一のモザイクにすることができる。
GPU照合方法
ビジョンモデルモジュールに関して上述したように、顕微鏡カメラにより捕捉された任意の画像フレームが解析されて、特徴を抽出する。特定の実施形態によるGPU照合方法例900の概略について、図9を参照して後述する。
特徴のそれぞれは、前にステッチングされた画像で見つけられた特徴と比較され、任意の類似性を識別する。このステップは、特徴照合906と呼ばれ、モザイク内部の新しいキーフレームの位置を推定する。そのようなプロセスは、キーフレーム毎に数百個の要素を経なければならないため、幾つかの動作を必要とし、リアルタイムシステムでの性能の問題に繋がるおそれがある。しかし、GPUを使用して並列に実行することが可能である。
特定の実施形態では、本開示は、CUDAライブラリを使用するグラフィックスカードの性能を利用する特徴照合方法のマルチスレッド版を開発する解決策を提供する。
以下の考察の最初の部分では、方法自体を説明し、方法をマルチスレッド用に構成する。第2の部分は、方法をGPUシステムで実行するプログラムのアーキテクチャの開発に当てられる。図9及び図10はそれぞれ、GPU照合方法及びアーキテクチャの概略表現である。
特徴照合906は通常、宛先特徴(D)及びソース特徴(S)(図9の「入力データ」904参照)と示される特徴の2つの集合に対して実行される。方法の目標は、Dからの特徴毎に、Sからのどの2つの特徴が最良及び2番目に最良の一致であるかを判断する。例えば、特徴は、特定の対象点を記述する128個の要素の行ベクトルとして定義し得る。
p=(p1,p2,...,p128)及びq=(q1,q2,...,q128)
であるような2つの特徴p及びqが考えられる。
pとqとの比較は、以下のように定義されるそれぞれのユークリッド距離E(p,q)に基づく。
2つの特徴p及びqは、pとqとの距離E(p,q)がゼロに近い場合、同様であると見なされる。次に、最小距離を探すことにより、最良一致を見つけ得る。
であるように、SをM個の特徴の集合として考え、DをN個の特徴の集合であると考える。式中、S[i]はソース特徴iであり、D[j]は宛先特徴jである。
インデックスiのソース特徴S[i]は、距離E(S[i],D[j])がD[j]と任意のソース特徴:
との最小距離である場合、宛先特徴D[i]の最良一致と見なされる。
上述したように、この方法は、宛先特徴毎に2つの最良一致を見つける。これらの結果は、2行及びN列のIdxとして示される二次元アレイで返され、このアレイでは、1列が1つの宛先特徴の最良一致に対応し、1行目及び2行目はそれぞれ、最良及び2番目に最良に一致するソース特徴のインデックスである。この方法は、宛先特徴とその一致要素との間で見つけられる距離を返すこともできる。一致する要素は、Idxと同じ構造のEdと示されるアレイに記憶される(図9の「出力データ」910参照)。出力データはビジョンモデルモジュールに提供し得る(図9に示されず)。
この方法で最もコストのかかる動作は、ユークリッド距離の処理(図9の「ユークリッド距離」908参照)である。距離は一緒に比較されるため、平方根をスキップすることによりこの処理を改良し得る。この処理は、約分演算を使用して並列化することもできる。約分演算は、作業を幾つかのスレッドに分けることからなる。ユークリッド距離の処理に使用される式は主に、処理された項の和で形成される。そのため、計算する一項を各スレッドに与えることが可能である。次に、結果を一緒に合算し得る。そうするために、各スレッドに2つの要素の和を割り当て得る。次に、出力は入力アレイの1/2のベクトルになる。このプロセスは、図9の908に示されるように、ユークリッド距離の二乗に対応する一固有値が得られるまで繰り返される。
リンクモジュール902による特徴照合は、2つの主な関数を用いて開発し得る。第1の関数は、宛先特徴毎に各ソース特徴を処理し、マルチスレッド処理を使用してユークリッド距離を処理する第2の関数を呼び出し得る。
GPU照合アーキテクチャ
特定の実施形態によるGPUマッチングの実施形態例のアーキテクチャ1000について、図10に関連して後述する。GPU版の特徴照合を実施するために、幾つかの態様を説明しなければならない。最初に、メモリが、CPUとは異なるようにGPUにおいて管理され、ニーズに応じて幾つかの解決策が利用可能なことを考慮しなければならない。第2に、スレッドを各グラフィックスカードのマルチコアプロセッサに割り当てる方法を確立しなければならない。
GPUシステムは3種のメモリを提供する:グローバルメモリ1004、テクスチャメモリ1002、及び共有メモリ(S.M.)。グローバルメモリ1004を使用して、読み書きでシステム内の任意のスレッドからアクセス可能な任意の種類の変数を記憶する。テクスチャメモリ1002は、読み出しのみが可能なことを除き、グローバルメモリと同様である。その結果、テクスチャメモリ1002はより高速のメモリアクセスを提供する。共有メモリは、同様に読み出しのみに制限され、特定数のスレッドの間で共有されるデータスタックである。共有メモリは、後述するブロック構造1010の内部で使用される。共有メモリはテクスチャメモリ1002よりも高速であるが、そおサイズはかなり制限される(例えば、16KB)。
グラフィックスカードは、CPU(RAM)が使用するメモリにアクセスすることができず、次に、第1のステップは、入力データをGPUメモリにコピーすることである。上述したように、入力データは2つのアレイに記憶される:D1006及びS1008。アレイS1008は読み出しの場合のみ必要とされ、入力データをテクスチャメモリ1002にコピーすることがより効率的である。
出力データも、RAMに転送する前に、GPUメモリに記憶しなければならない。上述したように、出力データは2行及び2列の2つのアレイを含む:Idx1016及びEd1018(上記参照)。Ed1018は、スレッドにより編集され、グローバルメモリ1004に記憶される。
共有メモリの使用について、ブロック構造の一部としてより詳細に後述する。
CUDAはブロック構造の使用に基づく。これらのそれぞれは、実行するスレッドの集合と、スレッドで共有されるメモリブロックとの複合である。図10に示されるように、ブロックはグリッド1010に配置される。カーネルが呼び出される場合(図10の1012参照)、ハードウェア容量に応じて、宣言された各ブロックをストリーミングマルチプロセッサ1014に割り当て得る。
特徴照合の場合、1つの宛先特徴の解析がブロック毎に割り当てられる。したがって、あらゆるスレッドが宛先特徴への高速アクセスを有することができるように、宛先特徴はブロックの共有メモリにコピーされる。このアーキテクチャでは、あらゆるブロックがソース特徴Srcの全体アレイにアクセスする必要がある。共有メモリが制限され、テクスチャメモリ1002がそのようなアレイへの高速アクセスを提供することを知り、スレッドはテクスチャメモリ1002から直接読み出す。GPU照合方法を参照して上述したように、ブロックの各スレッドを使用して、ユークリッド距離をもたらす約分演算を処理し得る。特徴が128個の値のベクトルであることを知り、ブロック毎に128個のスレッドが必要である。その結果、各ブロックは、割り当てられた宛先特徴の2つの最良一致を出力する。
レンダラー
上述されたレンダラーについて、図11及び図12に関連してこれよりさらに詳細に提示する。
多くのキーフレームを空間内のランダムな位置にレンダリングするタスクは困難であり得る。単純に常時、全てのキーフレームをレンダリングし、各レンダリング時に全てのテクスチャを更新する代わりに、これらの問題に対処する幾つかの方法が提案されている。ハッシュマップ412を使用して、何が画面上にあるのかの高速探索を実行し、専用テクスチャアトラス1110を使用して、1つのバッチで全てのキーフレームをレンダリングすることが可能であり、リアルタイムブレンドシェーダー1206が、フレーム間の継ぎ目があまり目立たないように使用される。
これらのキーフレームの全てをレンダリングしようとすることに伴う問題の1つは、それら全てのテクスチャを所与の時点でメモリに記憶することが略不可能且つ非効率的であることである。別の問題は、各キーフレームのテクスチャを記憶することも非効率的であることであり、これは、キーフレーム毎にglBindTexture OpenGL呼び出し1204を導入し、実行を妨げる。これらの両問題を一度に解決するために、複数解像度テクスチャアトラス1202が使用される。
テクスチャアトラスは大きなテクスチャであり、多くのサブテクスチャ(又はここでは、キーフレーム画像)を記憶する。異なるテクスチャを呼び出すのではなく、異なるテクスチャ座標が、キーフレームがレンダリングされている各ポリゴンに指定される。しかし、全てのキーフレーム画像を1つの大きなテクスチャに当て嵌めることにより、同じメモリ制限が生じる。キーフレームのモザイクを完全にズームインした場合、多くのキーフレームがビューエリア内部にないことに留意する。他方、完全にズームアウトした場合、全てのキーフレームをレンダリングする必要があり得るが、解像度ははるかに低い。このことを利用して、異なる「レベル」と呼ばれるもので、設定された数のテクスチャアトラスを有する。
図11に示されるように、各テクスチャアトラスは、同じ解像度1102であるが、異なるレベル1112にあり、記憶される画像は各レベルで半分の解像度である。例えば、画像の幅及び高さ2048並びにテクスチャトラスの幅及び高さが全て4096である場合。底のレベル(レベル0)で、4つの画像(2048×2048)を記憶することができる。次のテクスチャアトラスレベルは4096×4096であるが、ここでは、記憶される画像は1024×1024であり、したがって、前のレベルの4倍の数の画像をこのレベルで記憶し得る(レベル1では16)。同様に、レベル2は16*4の画像を有することになり、レベル3は16*4*4の画像を有することになり、以下同様である。アトラスレベルはカメラ及び現在のズームレベルによって決まる。ズームレベルが、1つの画像ピクセルが1つの画面ピクセルと同じサイズ以下であるようなものである場合、最大解像度を使用し得る。ズームアウトすると、一度に見られるのは画像ピクセルの半分だけであり、したがって、次のレベルを使用することができる。
キーフレームをレンダリングするために、テクスチャアトラスの集合を生成し得る。上述したように、各テクスチャアトラスは、関連付けられた解像度を有し、関連付けられた解像度でダウンサンプリングされた少なくとも1つのキーフレームを含み得る。レンダリングの表示エリア及び表示解像度が選ばれる。表示解像度に最も近い解像度を有するテクスチャアトラスが、テクスチャアトラスの集合から選択される(必要な場合には更新される)。関連付けられたキーフレーム一が表示エリア内にあるテクスチャアトラスからのキーフレームを次に、ディスプレイにレンダリングし得る。
キーフレームデータベースからの1つ又は複数のキーフレームが、表示エリア内に関連付けられたキーフレーム位置を有するものとして識別されるが、まだテクスチャアトラスにない(又は存在していない)場合、レンダリング前に、これらのキーフレームを含むようにテクスチャアトラスを更新し得る。例えば、欠けているキーフレームを、テクスチャアトラスの関連付けられた解像度でダウンサンプリングし、テクスチャアトラスに挿入し得る。
なお、これらのキーフレームをレンダリングするために、キーフレームが最初にアトラス内に存在する必要がある。新しいキーフレームは最初、全てのアトラスレベルに配置して、配置の時間を償却する。レンダリング時、所与のレベルでレンダリングするために必要な全てのキーフレームが得られ、キーフレームテクスチャアトラスにない場合には、キーフレームは、例えば、十分に高速であるOpenGLのフレームバッファオブジェクト拡張1208を使用してテクスチャにレンダリングされる。
キーフレームがフォーカス置換を必要とする場合、そのキーフレームの全てのアトラスレベルを更新しなければならない。レンダリングすべきキーフレーム毎に、ビジョンモデルモジュールにより設定されるそのキーフレームのチェックフラグを調べて、テクスチャアトラスでの更新を必要とするか否かを判断し得、キーフレームを、上述したように、全てのレベルでテクスチャアトラスにアップロードし得る。
テクスチャが、容易な探索のためにテクスチャアトラスに詰め込まれると、クワッド/画像矩形をレンダリングする場合、テクスチャ座標がテクスチャアトラスから得られる。このプロセスは、レンダリングカメラに重複する現在のキーフレームを探してビジョンモデルモジュールを照会して、ID集合を得ることにより開始される。これらのIDを用いて、キーフレームがチェックされ、キーフレームが所与のズームレベルでテクスチャアトラス内にあるか否かが判断される。ない場合、キーフレームは追加される。すでにある場合、何も行われない。両方の場合で、キーフレームがテクスチャアトラスのどこにあるか(キーフレームがテクスチャアトラスに存在するロケーション)を示すテクスチャ座標が得られる。各クワッドにテクスチャ座標を用いて、各クワッドの位置が生成される。クワッドの左上位置は、キーフレーム構造から既知であり、3つの他の頂点は、フレームの幅/高さを左上位置に追加することを通して生成される。位置及びテクスチャ座標はバッチ(大きなアレイ)でOpenGL1204に渡されて、数千ものOpenGL呼び出しを節減する。
キーフレームは、レンダリングされる場合、あるフレームが終わり、別のフレームが始まる急なエッジを有する。これを解決するために、両フレームの線形結合をレンダリングし得、換言すれば、キーフレームをブレンドし得る。フレームの重複がないフレームの領域では、寄与はそのフレームからのみであるはずである。重複領域がある場合、キーフレームは、エッジにどの程度近いかに基づいて加重される。
このために、キーフレームと同じサイズを有する中央にセンタリングされたガウス画像を予め計算し得る。複数のフレームが重複する場合、2パスピクセルシェーダーの使用により、それらのフレームを一緒にブレンドし得る。第1のパスで、全てのフレームはOpenGLからの加法ブレンドを可能にし、基本的に全てのフレームが一緒に加算され、加重平均として第1のピクセルシェーダーにおいて以下のように加重し得る。
pass1colour.rgb+=gauss*framecolour.rgb
pass1coulur.a+=gauss
第2のピクセルシェーダーにおいて、全てのフレームは一緒に加算され、寄与重みの追加に基づいて正規化し得る。
pixelcolour=pass1colour.rgb/pass1colour.a
したがって、各ピクセルは、キーフレームでの元のピクセルの位置に依存する加重平均である(フレームの中央は最も大きな重みを取得し、エッジは最も小さな重みを取得する)。
リアルタイムでレンダリングされたシーンは、固定グリッドロケーションにおいて仮想カメラをシーンのあちこちで移動させて(ユーザがマウスを用いて仮想カメラを移動させる)、各タイルを生成することにより、ハードドライブに保存し得る。ビューエリアを増大させて(仮想カメラでのズームアウト)、tiled.tiffファイルを生成することもできる。レンダリングはリアルタイム動作であるため、この保存機能のコストは、各タイルを最初に事前処理するのとは対照的に、ハードドライブに保存する時間によって制限される。
コントローラ
本開示のコントローラについて、図13に関連してこれより考察する。
コントローラ106は、ユーザがシステム100の残りの部分とどうように対話するかを定義する。通常、コマンドは、カメラ104、ビジョンモデルモジュール114、レンダラー108のようなものへのコマンドの単純なリダイレクトであるが、コントローラ106は仮想情報も追跡する。
図14に示されるように、コントローラ106は、仮想カメラ又はキーフレームをどこで見るかについての情報を提供するカメラを収容する。例えば、仮想カメラは、1つのみのキーフレームを見て、そのキーフレームで画面を埋めることができるか、又はよりズームアウトされた、その全てを示すモザイクを表示することができる。仮想カメラは、スキャンされた画像の仮想表現1402を通してのナビゲーションがどのように実行されるかを定義する。例えば、仮想カメラは矩形領域として構成することができ、その領域は、レンダリングパイプラインを介して画面にマッピングされる。図14に示される例では、2つの仮想カメラがあり、一方はよりズームインしたビュー1404を示し、もう一方はよりズームアウトしたビュー1406を示す。
ユーザが迷った(すなわち、現在のキーフレームと既存のモザイクとを一致させることができない)場合、矢印(UI矢印)を表示し得る。矢印の方向は、現在のキーフレームから付近の近傍キーフレームの平均への方向であり得る。これは、ユーザがモザイク領域に戻ろうとする概ね「良好」な方向をもたらす。とにかくこの種のフィードバックを有することは、十分な特徴を有さない領域にいるか、又はあまりに速く移動しているために、迷っていることをユーザに知らせるために有益である。
本開示の特定の実施形態はストリームモード1302を含む。ストリームモード1302の目標は、顕微鏡の対物レンズを較正するとともに、カメラのライブストリームを見て、ステッチングに大丈夫であるか否かを確認することである。カメラのスナップショットを保存する選択肢、現在の対物レンズを較正する選択肢、新しい対物レンズを挿入する選択肢、現在の対物レンズを除去する選択肢がある。セットアップが適宜較正されると、システムを適宜使用する準備ができる。ユーザは、現在のカメラ画像フレームに十分な特徴が存在する場合、「ステッチ開始」を選択することができる。十分な特徴がない場合、方法が、機能するのに十分な内容を有さないため、ユーザによるステッチングは許可されない。
更なる実施形態はステッチモード1304を有する。ステッチモードにおいて、ユーザは、顕微鏡ステージを用いてあちこち移動することにより画像を自在にステッチすることができる。ユーザがマウスを用いてのナビゲートを望む場合、同様にそうすることができる。ユーザに現在のカメラストリームを同時に見せて、フォーカスを支援するライブビュー選択肢もある。ユーザが異なる対物レンズに切り替える場合、システムはステッチの試みを自動的に停止し、現在のカメラビューを表示し続ける。ステッチモード及びストリーミングモードの両方で、対物レンズは、自動的に切り替えられ較正される。ユーザが、前にステッチングしていた対物レンズに再び切り替える場合、ステッチングの再開を試みる。随時、ユーザはステッチングされた画像を保存し、利得補償をアクティブ化し、ストリームモードに戻り、又は現在のカメラフレームを保存することができる。
高速保存
上記に加えて、本開示の実施形態は、種々雑多な機能及びモジュールを備えることができる。そのような一モジュールは「高速保存」特徴116であることができる。モザイクを保存するために、まず、全ての個々のキーフレームからモザイクを生成しなければならない。モザイク生成での主要ステップは、キーフレームの重複を扱うことである、ブレンドすることである。高速保存は、レンダラーの内蔵高速ブレンドを使用して、全体モザイクを生成する。モザイクが生成されると、モザイクは、「レンダリング」項で上述したように、Big−TIFFフォーマットで保存される。
品質保存
本開示の実施形態は、品質保存又は「マルチバンドブレンド」特徴118を含むこともでき、これについては図15及び図16を参照して後述する。これは、高速保存特徴116と比較して、モザイク保存の高品質版である。品質保存は、マルチバンドブレンドを使用してモザイクを生成し、このブレンドは、レンダラー108が使用する単純なものと比較してより高度なブレンド方法である。品質保存機能の構成例について、図15及び図16を参照して後述する。
ビジョンモデルモジュールにおいて説明されたように、画像モザイクのブレンドの本質は、デジタルカメラにより捕捉された画像集合のステッチングにある。理論上、各画像は同じ条件下でサンプリングされる。しかし、現実では、特定の予期されない影響がこれらの理想的なパラメータを損なうおそれがある。その結果、照明の変動、シーンの移動、又は露出の違いが目に付き、見当合わせ誤差、不均一輝度、又は目に見えるエッジ等のモザイクの不連続性を生じさせる。その場合、モザイクを保存する前に、事後処理技法を適用する必要がある。
第1の解決策は、利得補償を適用することである。利得補償は、輝度差を軽減することに対するその効率が証明されているが、目に見える画像の境界を完全には除去せず、見当合わせ誤差には効果がない。画像を一緒にブレンドするロバストなプロセスが望ましい。
単純な手法は、線形ブレンドを使用することである。線形ブレンドの本質は、加重和をモザイクの各画像に適用して、画像間で平滑な遷移を有することにある。この方法は、目に見えるエッジの除去に効率的であり、比較的高速である。しかし、線形ブレンドは、幾つかの見当合わせ誤差を残しがちであり、画像内の輪郭線を変える場合があり、これは最終的な結果の品質に影響する。代替は、P.Burt and E.Adlson,A Multiresolution Spline With Application toImage Mosaics,1993に記載されているマルチバンドブレンド方法であり、これを参照により本明細書に援用する。さらに、画像ステッチングの異なる実施態様が開発され、M.Brown and D.Lowe、Automatic Panoramic Image Stitching using Invariant Features,2007に記載され、これを参照により本明細書に援用する。この画像ステッチングの異なる実施態様は、ディテール周波数に応じて、各サンプルをバンド単位で分解するという概念に基づく。それゆえ、変化する空間範囲にわたって生成されるバンドをブレンドすることが可能になる。最高周波数に低い範囲を選ぶことにより、輪郭線は維持され、よりよい品質を保証する。また、高い範囲が低周波数に適用されて、画像のディテールを変更することなく、強い不連続性を除去する。
以下は、マルチバンドブレンド方法1500を記載し、本開示の実施形態に構成されるマルチバンドブレンド方法の最適化された実施を提供する。
マルチバンドブレンド方法について幾つかのステップを通して説明する。最初に、重み関数を定義する必要があり、重み関数は、画像間の平滑な遷移を特定する。次に、プロセスを実行して、各画像をいくつかのバンドに分解する。最後のステップは、各バンドをブレンドし、一緒に混合して、最終的なモザイクを得ることである。
一般に、画像のブレンドは加重和に基づく。概念は、ピクセル毎に0〜1の値を設定し、最終的な結果へのピクセルの影響を設定することであり、1は、完全に使用するピクセルの場合であり、一方、0はモザイクから除外されるピクセルの場合である。次に、中間値のピクセルを使用して、画像間の平滑な遷移を得る。マルチバンドブレンドの場合、遷移エリアのサイズは、ディテールを保存するためにバンド毎に変わる。
ブレンド範囲を設定する前に、画像間の適切な境界線を選ぶべきである。そうするために、各画像の各ピクセルの信頼度を設定する中間重み関数D(x,y)が設定される。画像の中心が、境界よりも多くの信頼可能な情報を含むと仮定する。関数D(x,y)は次に、中心における1からエッジでの0まで変化する値を設定する。最高度:
を有するピクセルを選ぶことにより、二値重みマップ1502が構築され、ここで、jは、0≦j<nであるような整数であり、nはブレンドする画像の数である。
最後に、結果として生成される重みマップをぼやけさせることにより、遷移エリアが処理され、ぼやけの強度がブレンド範囲を設定する。
マルチバンドブレンドでは、ディテールを背景から分離する必要がある。この動作は、空間周波数に応じて画像を分解することにより処理することができる。空間周波数は、空間領域での時間周波数と同様の測定値である。視覚的知覚の場合、高空間周波数は、エッジ等の急な空間変化を表し、一方、低空間周波数は、背景のようなより大域的な情報を表す。マルチバンドブレンドは元々は、任意の数のバンドで機能する。しかし、幾つかのテスト後、バンドの数が増大するにつれて、結果は顕著には改良されないことが分かった。したがて、2つのバンドを使用する実施形態例を本明細書において説明する。
空間周波数を分解する一般的な方法は、ガウスフィルタを適用することであり、この方法について図15に示されるブレンド1504を参照して説明する。ガウスフィルタはローパスフィルタであり、高周波数を除去することにより画像をぼやけさせる効果を有する。標準偏差σのガウスぼかしカーネルg
σ(x,y)を考える。この関数を、畳み込みによりモザイクのi番目の画像I
i(x,y)に適用することができる。
結果として生成される画像
は、波長λ≧σでの元画像の空間周波数を表す。
高周波数は、結果を元画像から減算することにより取り出される。
及び
はそれぞれ、モザイクのi番目の画像I
i(x,y)の1番目及び2番目のバンドである。
分解は各画像で行われ、バンドを一緒にブレンドしなければならない。上述したように、マルチバンドブレンドの利点は、波長範囲に応じて、異なる遷移エリアにわたってブレンドする可能性を提供することである。そうするために、ブレンドするk番目のバンドに応じて異なる標準偏差σ
kを適用することにより、重みマップはぼかされる。
は、画像I
i(x,y)のk番目のバンドに適用される重みマップである。
次のステップは、各バンドの加重和を処理することにより画像サンプルをブレンドすることである。
式中、I
k(x,y)は最終的なモザイクのk番目のバンドを表す。
結果として生成される2つのブレンドされたバンドを一緒に加算して、最終的な結果を得ることができる。
この方法は重い処理を必要とし、高速事後処理方法のニーズを満たさない場合がある。以下の項において、GPUプログラミング等の最近の開発を使用して、より強力でより高速なプログラムを可能にするプロセスセットについて説明する。
まず、モザイクをチャンクに分割し(図15の1506参照)、次に、重みマップの記憶を最適化することにより、メモリの使用を低減することに焦点を合わせる。事後処理されたモザイクをファイルに保存する解決策が次に実施される。最後に、GPUプログラミングを使用する最適化の解決策について説明する。
メモリの使用は、この方法にとって重要な問題であった。分かった問題は、オペレーティングシステムWindows(商標)に起因した。実際に、プログラムは、4GBよりも大きなメモリを割り振ろうとする場合にクラッシュするように見える。この状況は、画像サンプルの大きな集合をステッチしようとする間によく見られるようである。この問題に対して見つかった解決策は、モザイクを小さなチャンクに分割し、チャンクがメモリの4GBを超えないことを保証することであった。チャンク毎に画像をブレンドするためには、どの画像がチャンクと交わるかを識別する必要がある。次に、各チャンクを別個のモザイクとして扱うことができる(図16の1602及び1604参照)。処理するピクセル数を削減するために、画像サンプルをクロッピングして、チャンクの内部で実際に使用されるものにすることが魅力的であり得る。クロッピングは、加重和の処理中の良好な最適化であり得るが、これは、重みマップを構築する間にトラブルを生じさせるおそれがある。重みマップが、ぼやけさせる前にクロッピングされる場合、同じ状況が非一貫性をもたらすおそれがある。例えば、重複領域がプロセスでクロッピングされる場合、ローパスフィルタは、チャンクの境界を考慮に入れる。それゆえ、遷移エリアは、チャンクなしで行われるものと一致しなくなり、最終的なモザイク内部への目に見えるエッジの挿入に繋がるおそれがある。
考慮される別の側面は、重みの計算である。2つの解決策がこのために可能であるように思える。第1の解決策は、必要な場合に重みマップを処理することを含む。チャンクが十分に小さい場合、チャンクは多数の画像を含まないはずである。しかし、このプロセスは、各チャンク内の各キーフレームに対して繰り返される。理論上、サンプルも幾つかのチャンクに出現し得る。その結果、このプロセスは必要な回数を超えて繰り返されて、プログラムの実行を遅くさせることに繋がるおそれがある。他方の解決策は重みマップを事前処理し、後で使用するために記憶することである。この方法により、画像の重みマップが一度のみ処理されることを保証することができる。しかし、キーフレームの数が増大するにつれて、これも同様にメモリ使用のかなりの増大に繋がる。最初の解決策がより適切であるように思われる。メモリの使用が、システムのクラッシュ又はかなりの低速化に繋がるおそれがある実際の問題であることは既知のテストである。チャンク内のキーフレームのみを考慮して重みマップを処理することができる場合、これは、扱う事例数を低減することができる。したがって、この解決策は費用効率的な方法であるように見える。
上述したように、方法が、ブレンドされたモザイクを保存する必要がある。この方法は、大きなデータセットで機能することを目的とし、Big TIFFと呼ばれる特定のファイルフォーマットを使用する。しかし、他のファイルフォーマットを使用することもできる。Big TIFFフォーマットは、画像全体をタイルに分割し、ファイルを表示し閲覧するより高速の方法を提供するという利点を有する。この方法により、ディテールレベルの使用が可能になり、これは、大きな画像で素早くズームイン及びズームアウトを行う強力な特徴である。そのようなファイルを保存する関数が既に開発されているが、異なるディテールレベルのタイルを提供する必要がある。したがって、最終的なモザイクをブレンドした後、プログラムは、レベル毎にブレンドされたモザイクを一度閲覧して、タイルを抽出し、より低いディテールレベルに適切なサイズにサイズ変更すべきである。
第1の手法は、マルチバンドブレンドの終わりにデータを保存することである(図16の1602参照)。しかし、この方法は、プロセスの終わりまで、プログラムにあらゆるチャンクをメモリに保持させることを強いる。この状況は重大な問題ではないが、1つのみのチャンクをRAMに保持することにより、メモリの過剰な使用を回避することに価値があり得る。そうするために、チャンクをタイルと見なし、オンザフライで保存し得る(図16の1604参照)。ブレンド方法が終わった場合、第1のディテールレベルが既に生成され、ファイルに保存され、次に構築する必要があるのはその他のディテールレベルのみである。この手法に伴う問題は、モザイクがもはやメモリになく、既に保存されたデータを抽出しなければならないことである。保存機能が、読み出し及び保存を同時に処理するように構築されていないため、これは問題を生じさせるおそれがある。ファイル上の2つのストリームが次に必要とされ、一方は前のレベルの保存用であり、もう一方は前のレベルの読み出し用である。次に、必要とされる動作は、前のレベルから4つのタイルを抽出し、次のレベルの1つのタイルを生成することである。
図16に示されるプロセス図は、上述した2つの手法を要約する。
前節では、メモリの使用の最適化について説明した。しかし、これらの変更は、プロセスの実行を高速化しない場合があり、特定の時点でシステムを低速化させる場合さえある。実行時間を低減するために、GPU処理を使用して、ハードウェア性能を利用する。実際に、特定の状況では、GPUプロセッサがCPUよりもはるかに効率的であり得ることが分かっている。GPUプロセッサは、多数のスレッドを管理している場合に非常に効率的である。したがって、GPUプロセッサは、行列への計算等の高度に並列化可能な演算に使用し得る。残っているボトルネックを識別し、それをGPUで実施する方法を見つけるマルチバンドブレンドの異なるステップが検討されてきた。ガウスブラーは、大きなボトルネックとして識別された。この動作は、重い処理を含み、キーフレームガットに数回繰り返される。NVIDIAはCUDAライブラリを使用して、リアルタイムフィルタを有する。この実施は、本開示の実施形態用に構成するように変更された。
GPUプログラミングで検討する重要なことは、メモリの使用である。実際には、CPU及びGPUは両方とも各自のメモリ記憶装置を有する。したがって、データをRAMからGPUに転送する必要があり、繰り返される回数が多すぎる場合、これはプログラムを遅くするおそれがある。したがって、GPUプログラミングをフィルタ間の動作にも同様に使用することが決定されている。このようにして、データ転送は、キーフレーム毎に2回のみ行われる。そうするために、GPUでの行列を容易に操作するための新しいクラスであるGpuMatが開発された。
利得補償
特定の実施形態は、利得補償122を利用することもでき、利得補償はキーフレームデータベースから全てのキーフレームを読み出して、キーフレームが均一に明るく見えるように個々のキーフレーム画像利得を調整するモジュールである。
幾つかの顕微鏡では、光源サンプリングに起因して、連続フレーム間の強度のばらつきが見られる。これは、重複する各フレームの強度に一貫性を持たせようとすることにより軽減される。この手法は「利得補償」又は各フレームを乗算する値を見つけることと呼ばれ、したがって、結果として生成されるモザイクは重複フレーム間で急な差を有さなくなる。
これは、Automatic panoramic image stitching using invariant features,Brown M.and Lowe D.G.,International Journal of Computer Vision,Volume 74,Number 1,pp.59−73,2007,Springerに記載のように、線形系として解決され、これを参照により本明細書に援用する。
利得行列g_iが決定され、この行列は、全体画像を乗算する定数としてフレームiに適用される。利得補償解決行列には項の2つの集合がある。第1の集合は、フレームが別のフレームに重なる場合の行列に行を有する。2つのフレーム(i及びj)が、重複領域(I_i,I_j)内に平均強度を有すると考えると、行列内の行は、
sigma_1*(g−i*I_i−g_j*I_J)^2=0
のように見える。
式中、sigma_1はこの式集合の加重係数である。基本的に、利得が適用されると、重複する画像は同じ強度を有するべきである。重複する画像I及びjのあらゆる集合は、行列内に1行を有する。
これに対する自明な解は、全ての利得g_iをゼロに設定する。これを解消するために、以下のように、利得が1の近くであるべきであること(1方程式(unity equation))を記述する新しい項が各画像に導入される。
sigma_2*(g_i−1)^2=0
式中、sigma_2は、方程式の1セット(unity set of equation)の加重係数である。本発明では、これらの2つの方程式セットを最小二乗の意味で解く。
バンドル調整
さらに、バンドル調整モジュール120もあり得、バンドル調整モジュールは、キーフレームデータベースから全てのキーフレームを読み出すとともに、互いへのキーフレームリンクも読み出す。このモジュールは、全てのリンク制約が満たされるようにキーフレーム位置を調整する。
時間の経過に伴い、キーフレーム位置推定は、追跡誤差の蓄積に起因して不整合を有するおそれがある。そのような1つの状況は、モザイクが大きな循環ループとして構築される場合である。ユーザがループの開始点に戻る場合、最後のキーフレームから推定される現在位置は、初期基準キーフレームへの見当合わせからの推定と一致しないことがある。
図17は、(キーフレーム1702からの)d2,0からのp2の推定と、(キーフレーム1704からの)(d1,0+d2,1)からののp2の推定との不一致がある場合を示す。通常、(d1,0+d2,1)から蓄積される追跡誤差がある。バンドル調整は、測定される全てのリンクが厳密に満たされるように、全てのキーフレーム位置を解くのに役立つ。
追跡誤差の蓄積を修正するために、バンドル調整を実行して、全ての測定リンクを考慮に入れるとともに、全てのキーフレーム位置が全てのリンク制約を厳密に満たすように、各キーフレームの位置の大域的最適化を実行することができる。
方程式のセットアップは、初期キーフレームK0が位置p
0=(0,0)を有すると仮定して以下のようになる。
測定d1,0、d2,1、d2,0が既知であり、方程式の上記線形系を使用してp1、p2を解く。
対物レンズ変更検出器
本開示の幾つかの実施形態は、対物レンズ変更検出器112も利用し、この検出器は、各入力フレームを監視し、顕微鏡の対物レンズが切り替えられたか否か及びどの倍率に切り替えられたかを判断する。この検出器はコントローラに通知し、次に、コントローラは適切な動作をとる。検出器は、対物レンズの変更が行われたか否かを適宜判断するのに役立つように、カメラ露出時間の制御を必要する。
対物レンズ変更検出器は、自動的に、両方ともカメラ画像ストリームを処理するだけで、1)顕微鏡の対物レンズの切り替えを検出し、2)新しい対物レンズのズームレベルを特定することを目的とする。
1)対物レンズ切り替え検出:カメラ画像が、対物レンズ変更検出モジュールをとおって固定レートで連続してストリーミングされことを前提とする。検出の原理は、カメラビューが一時的に、対物レンズの切り替える間に遮蔽されることに基づく。したがって、カメラ画像の急な暗化は、対物レンズ変更の指示である。
対物レンズ変更検出方法が、図18のフローチャートに提示される。遮蔽をチェックするために、方法は、1802において、各入力画像の平均画像ピクセル強度値を計算する。平均画像ピクセル強度が閾値を下回る場合、1804において、遮蔽が検出される。次に、1806において、システムは平均画像強度値が、連続フレーム数(例えば、10フレーム)にわたり閾値を超えて上昇するのを待ち、それから、1808において、対物レンズ変更が完了したことを宣言する。
低ズーム対物レンズを高ズーム対物レンズに切り替えられる場合、問題が生じる。高ズーム対物レンズは一般に、低ズームと比較してはるかに少ない光を通すため、画像は非常に暗いままである。その結果、モジュールは、対物レンズがまだ変更中であると誤って考える場合がある。改善措置は、1804において、アルゴリズムが「対物レンズ変更」状態に入るとき、カメラのシャッター時間を最大値にし、それにより、高ズーム対物レンズの場合に十分な光を検出できるようにすることである。
2)対物レンズズーム検出:対物レンズ変更が特定されると、対物レンズズーム検出方法が続く。検出原理は、異なるズームの対物レンズが顕微鏡を通してカメラ内に異なる量の光を通すことに基づく。カメラシャッター時間も、同じ画像輝度を維持するために、異なる対物レンズと共に変更しなければならない。したがって、この方法は、カメラの自動露出アルゴリズムから得られる露出時間を使用して、使用される対物レンズを特定する。検出方法について以下に説明する。
まず、顕微鏡の各対物レンズを較正して、その対物レンズのカメラ露出時間を見つけなければならない。対物レンズを較正するために、顕微鏡光は最大に設定され、全ての対物レンズ較正にわたり、且つ実際の使用中、一定のままでなければならない。白色画像を保証するために、顕微鏡に試料があるべきでもある。次に、カメラの自動露出アルゴリズムが実行されて、現在の対物レンズでの白色画像のシャッター時間を決定する。このシャッター時間は記録され、対物レンズに関連付けられる。この記録されたシャッター時間が、その対物レンズに適する最小シャッター時間であることに留意することが重要であり、その理由は、ビュー内に試料がないためである。ビュー内に試料がある場合、幾らかの光を遮り、自動露出時間をわずかに高くさせる。
次に、システムが実行中であるとき、システムは対物レンズの変更を能動的にチェックする。対物レンズ変更が検出される場合、対物レンズズーム検出がまず、自動露出を実行する。結果としての露出時間は、各対物レンズの較正された露出時間と比較される。試料がビュー内にあり得、したがって、結果としての自動露出時間が、対物レンズの較正された露出時間よりもわずかに高いことが予期される。したがって、現在の露出時間よりも低く、且つ現在の露出時間に最も近い較正された露出時間を有する対物レンズが、使用されている対物レンズとして特定される。
前の説明では、説明のため、実施形態の完全な理解を提供するために、多くの詳細が記載される。しかし、これらの特定の詳細が必要ではないことが当業者には明らかだろう。他の場合、周知の電気構造及び回路については、理解を曖昧にしないように、ブロック図の形態で示される。例えば、本明細書に記載される実施形態が、ソフトウェアルーチンとして実施されるか、ハードウェア回路として実施されるか、ファームウェアとして実施されるか、それともそれらの組み合わせで実施されるかについての特定の詳細は提供されない。
本開示の実施形態は、機械可読媒体(コンピュータ可読媒体、プロセッサ可読媒体、又はコンピュータ可読プログラムコードが内部に具現されるコンピュータ使用可能媒体とも呼ばれる)に記憶されたコンピュータプログラム製品として表すことができる。機械可読媒体は、ディスケット、コンパクトディスク読み取り専用メモリ(CD−ROM)、メモリ装置(揮発性又は不揮発性)、又は同様の記憶機構を含む磁気媒体、光学媒体、又は電気記憶媒体を含む任意の適する有形、非有形媒体であることができる。機械可読媒体は、様々な命令、コードシーケンス、構成情報、又は他のデータの集合を含むことができ、これらは、実行されると、プロセッサに本開示の一実施形態による方法のステップを実行させる。記載される実施態様を実施するために必要な他の命令及び動作を機械可読媒体に記憶することができることも当業者は理解するだろう。機械可読媒体に記憶される命令は、プロセッサ又は他の適する処理装置により実行することができ、回路とインタフェースして、記載されるタスクを実行することができる。
本明細書に記載の特徴はまた、必ずしも本明細書に記載される特定の実施形態に限定されるわけではない。一実施形態例からの特徴は、可能な場合、他の実施形態例と結合し得る。
上記の実施形態は単なる例示を意図される。本明細書に添付される特許請求の範囲によってのみ規定される範囲から逸脱せずに、当業者は特定の実施形態に対して変更、修正、及び変形を行うことができる。