データ処理装置、データ処理方法、およびプログラム
【課題】3次元画像を位置合わせするためのデータ処理装置、データ処理方法、およびプログラムを提供すること。
【解決手段】データ処理装置10は、基準イメージ40の解像度を低解像度化するダウン・サンプル処理手段44〜48と、ダウン・サンプル処理手段44〜48により低解像度化された基準イメージと、低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションを行う第1レジストレータ手段(50、52)と、第1レジストレータ手段52が出力した線形変換パラメータを初期値として使用し低解像度化された基準イメージおよび低解像度化された対象イメージのレジストレーションを行う第2レジストレータ手段(54、56)とを備え、相互情報量の計算に使用する画素データを連続アクセスが可能なようにメイン・メモリに格納し、ローカル・メモリにフェッチして実行している。
【解決手段】データ処理装置10は、基準イメージ40の解像度を低解像度化するダウン・サンプル処理手段44〜48と、ダウン・サンプル処理手段44〜48により低解像度化された基準イメージと、低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションを行う第1レジストレータ手段(50、52)と、第1レジストレータ手段52が出力した線形変換パラメータを初期値として使用し低解像度化された基準イメージおよび低解像度化された対象イメージのレジストレーションを行う第2レジストレータ手段(54、56)とを備え、相互情報量の計算に使用する画素データを連続アクセスが可能なようにメイン・メモリに格納し、ローカル・メモリにフェッチして実行している。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像イメージの相互比較技術に関し、より詳細には、3次元画像を位置合わせするためのデータ処理装置、データ処理方法、およびプログラムに関する。
【背景技術】
【0002】
イメージ・レジストレーション法(Image Registration)は、同一対象に対する2つの3次元画像(CT、MRIなど)を入力とし、それらのアライメントを行う画像処理方法である。このための画像処理は、長時間の計算を必要とするため、特に医療現場では、イメージ・レジストレーション法を高速化することが要請されている。
【0003】
イメージ・レジストレーション法は、2つの入力画像F(基準イメージ:Fixed Image)と、M(対象イメージ:Moving Image)とについて、基準イメージに線形変換(回転と平行移動)を施した画像と対象イメージとの間の相互情報量(Mutual Information)が最大になるような線形変換パラメータを、逐次的な最適化問題として求める(非特許文献1)。イメージ・レジストレーション法では、入力画像のすべての画素(Pixel)について計算を行うと莫大な計算時間がかかるため、画像イメージに含まれる画素データをランダムにサンプリングして相互情報量を計算する。このため、従来のイメージ・レジストレーション法では、メイン・メモリへのスパースなメモリアクセス・パターンが画素単位で発生する。
【0004】
一般的にメイン・メモリが効率よく処理できるアクセス単位は、キャッシュライン・サイズであり、画素単位のスパース・アクセスは、処理速度の向上を阻害する1つの要因となっている。スパース・アクセスを含む数値計算では、メイン・メモリでスパース・データを圧縮する圧縮手法はよく知られている。一般的には、スパース・データのアクセス・パターンは、アプリケーション・アルゴリズムや入力データによって決定される。このため、既存の圧縮手法では、スパース・アクセスのパターンを予測してデータを圧縮する。
【0005】
したがって、スパース・アクセスのパターンを予測する既存の圧縮手法が効果を発揮するためには、アクセス・パターンが実際のデータ・アクセスより充分前に予測できる必要がある。一方、アクセス・パターンが実際のデータ・アクセスの直前まで予測できない場合には、充分な処理効率を得ることができないという不都合がある。この不都合は、処理アルゴリズムが速度向上して、直前予想のための時間的余裕が限られてくると、一層頻繁に発生することが想定され、イメージ・レジストレーション法の処理速度を向上させるためのアクセス・パターンが、逆にイメージ・レジストレーション法の処理速度向上を阻害するという結果を与えることも考えられる。
【0006】
また、医用画像のマッチングを行うシステムがこれまで知られている。例えば、特開2006−55432号公報(特許文献1)では、同一被検体に対してX線CT検査を行うシステムを開示している。また、特開2006−20937号公報(特許文献2)では、異なる時点で測定された医用画像の位置合わせを正確に行う方法および装置を開示している
【非特許文献1】P. Thevenazand M. Unser, “Optimization of Mutual Information for Multiresolution ImageRegistration”, IEEE Transactions on Image Processing, 9(12) December 2000.
【特許文献1】特開2006−55432号公報
【特許文献2】特開2006−20937号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、イメージ・レジストレーション法の処理速度を向上する、データ処理装置、データ処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上述した従来技術の不都合に鑑みてなされたものある。イメージ・レジストレーション法は、実行時での画素データへのデータアクセス・パターンには自由度がある。
【0009】
3次元画像は、複数の2次元画像(以下、スライスとして参照する。)が2次元画像の平面に直交する方向に互いに位置決めされた構造を有している。2次元画像であるスライスにブロックを割当て、3次元画像を適切なデータ・サイズのブロック単位で処理する。ブロックに割当てられた画素データは、相互情報量計算の処理対象の画素データとして、メイン・メモリに登録される。画素データが登録される場合、処理対象の画像データは、ローカル・メモリとメイン・メモリ間の転送単位でアクセスできるデータ・サイズおよび構造を有するフォーマットとして格納される。その後、処理対象の画素データは、メイン・メモリから、ローカル・メモリに連続アクセスによりフェッチされる。ローカル・メモリにフェッチされた画素データは、ランダムにサンプリングされ、連続アクセスが可能なブロック・データとして一旦メイン・メモリに格納される。
【0010】
メイン・メモリに格納されたブロック・データは、相互情報量計算のためにローカル・メモリにフェッチされる。さらにレジストレーションの対象である、対象イメージについて相互計算のためにアクセスするべき画素データをローカル・メモリにブロック単位でフェッチし、相互情報量計算のために提供する。
【0011】
データ処理装置を上述したように、対象イメージのフェッチ効率を上げる(連続メモリ・アクセスが使える)ように、基準イメージを分割しサンプリングするべく実装することで、従来、基準イメージは連続にフェッチできても、対象イメージはスパースなメモリ・アクセスが必要であった従来の不都合を改善し、相互情報量計算の間でのメイン・メモリに対するスパースなデータ・アクセスを排除することが可能となる。この結果、本発明のデータ処理装置は、高効率のメモリ・アクセスを達成し、レジストレーション処理の速度を改善することができる。
【0012】
相互情報量の計算は、ローカル・メモリに格納されたブロック単位の画素データについて実行され、第1の態様では、相互情報量計算に使用される画素データは、求められた線形変換パラメータを使用して対象イメージのバウンディング・ボックスを決定し、バウンディング・ボックスに含まれる画素データがローカル・メモリにフェッチされて実行される。さらに、本発明では、メモリ・アクセスの効率が最大になるように、基準イメージのブロック・グループと対象イメージのバウンディング・ボックスの画素数が最大でかつローカル・メモリに収まるように、前記ブロック・グループの大きさを決定することができる。また、線形変換パラメータの精度が高められた後、第2の態様では、相互情報量の計算に使用される対象データの画素データがローカル・メモリにフェッチされていない場合でも、メイン・メモリへのアクセスすることなく、近傍の画素データを使用して、外挿値として取得される。
【0013】
また、本発明では、処理する画像イメージ、すなわち基準イメージおよび対象イメージを、解像度が逐次的に低下するように低解像度化し、低解像度の画像イメージから処理を開始して、決定された線形変換パラメータを次ステージの、より解像度の高い画像イメージの処理の初期設定パラメータとして設定する。次ステージでのレジストレーション処理は、低解像度の画像イメージについて最適化された線形変換パラメータを初期値として使用するので、次ステージのレジストレーション処理により、線形変換パラメータのレジストレーション精度が改善できる。
【0014】
さらに、本発明では、処理対象の画像イメージのサンプリング割合が設定値よりも低い場合、相互情報量計算処理を切換え、対象イメージの画像を投機的に予測して相互情報量の計算を実行する。投機的に予測された対象イメージの画素データは、予めメイン・メモリにフェッチされて、相互情報量の計算を実行する。また、この態様で、投機的な予測が不成功の場合には、予めフェッチしてある画素データのうち、近傍の画素データを使用して相互計算に使用する画素データを外挿処理により取得し、相互情報量の計算に提供する。
【0015】
上述したように、本発明では、相互情報量計算を、相互情報量計算に使用する画素データをローカル・メモリにフェッチした状態として、メイン・メモリへのスパース・アクセスを排除して実行することができる。この結果、相互情報量の計算における並列処理性を向上でき、さらにレジストレーション処理効率を向上させることができる。
【0016】
また、本発明では、対象イメージの画素データに対するアクセス・パターンが実際にアクセスされる直前まで正確に予測できない場合でも適用でき、この結果、これまで、相互情報量計算の処理効率を向上させるために用いられていたスパースに画素をサンプリングする処理が、逆に相互情報量計算の効率を制限してしまうというトレード・オフの問題点を改善することが可能となる。
【発明を実施するための最良の形態】
【0017】
以下、本発明を図面に示した特定の実施形態をもって説明するが、本発明は、図面に示した実施形態に限定されるものではない。
【0018】
図1は、データ処理装置10の実施形態を示す。図1に示したデータ処理装置10は、概ねパーソナル・コンピュータまたはワークステーションなどのコンピュータ装置として構成されている。図1に示したデータ処理装置10は、中央処理装置(CPU)12と、CPU12が使用するデータを格納するメイン・メモリ14とを備えている。メイン・メモリ14は、DRAMなどの固体メモリ素子から形成され、データ処理装置10が処理に使用するデータを、後述する記憶装置34から読出して格納し、CPU12に提供しており、本実施形態では、512MBの容量を有している。
【0019】
すなわち、メイン・メモリ14のユニット2個で合計1GBのメイン・メモリ14をCPU12は使用できる。また、CPU12は、本実施形態では、対称マルチコア・プロセッサとして構成されており、マルチコア・プロセッサとして構成された、ユニット・プロセッサ16が高速バスにより接続され、並列処理を行うことができる。ユニット・プロセッサ16は、さらに、汎用プロセッサ・コアと、画像処理などに向いた複数のSPE(Synergistic Processing Element)を備えていている。本実施形態では、ユニット・プロセッサ16は、8つのSPEを備えている。また、各ユニット・プロセッサ16のSPEは、256KBのローカル・メモリ18をそれぞれ管理していて、並列処理性を向上させている。ローカル・メモリ18は、一般的なプロセッサのL2などのキャッシュ・メモリで置き換えることもできる。さらに、各SPEは、DMA(Direct Memory Access)20を備えていて、メイン・メモリ14が格納するデータへの高速アクセスを可能としている。
【0020】
CUP12は、システム・バス22を介して、データ処理装置10の他のデバイスまたはドライバ、例えば、グラフィックス・ドライバ24およびネットワーク・デバイス(NIC)26へと接続されている。グラフィックス・ドライバ24は、バスを介してディスプレイ装置28に接続されて、CPU12による処理結果をディスプレイ画面上に表示させている。また、ネットワーク・デバイス26は、データ処理装置10を、TCP/IPなどの適切な通信プロトコルを使用するネットワークへと接続している。
【0021】
システム・バス22には、さらにI/Oバス・ブリッジ30が接続されている。I/Oバス・ブリッジ30の下流側には、PCI、USBなどのI/Oバス32および、IDE、ATA、ATAPI、シリアルATA、SCSIなどのインタフェースを介して、ハードディスク、CD−ROM、CD−RW、DVD、MOなどの記憶装置34が接続される。また、I/Oバス32には、USBなどのバスを介して、キーボードおよびマウスなどの入出力装置36が接続されていて、データ処理装置10に対するレジストレーション条件設定の入力および各種指令を可能としている。
【0022】
データ処理装置10のCPU12としては、より具体的には、例えば、Cell BE Processor(登録商標)(クロックレート3.2GHz、メイン・メモリ=512MB、8SPE、各SPEのローカル・メモリ256KB)を挙げることができる。この他にも、PENTIUM(登録商標)〜PENTIUM(登録商標) IV、PENTIUM(登録商標)互換CPU、POWER PC(登録商標)などCISCまたはRISCチップなどを挙げることができる。
【0023】
また、使用するオペレーティング・システム(OS)としては、MacOS(商標)、Windows(登録商標)、Windows(登録商標)200X Server、UNIX(登録商標)、AIX(登録商標)、LINUX(登録商標)またはそれ以外の適切なOSを挙げることができる。さらに、データ処理装置10は、上述したOS上で動作する、アセンブラ、C、C++、Visual C++、VisualBasic、Java(登録商標)、Perl、Rubyなどのレガシープログラミング言語やオブジェクト指向のプログラミング言語により記述されたアプリケーション・プログラムを格納して実行し、データ処理を可能としている。
【0024】
図2は、図1に示したデータ処理装置10の機能ブロックおよび各機能ブロック間のデータフローの実施形態を示す。図2に示すように、データ処理装置10には、基準イメージ(Fixed Image)および対象イメージ(Moving Image)がそれぞれ入力される。基準イメージ40は、イメージ・レジストレーション法により位置合わせするべき基準となるイメージであり、例えば所定の患者の過去に取得されたX線写真、X線CTイメージ、MRIイメージなどとすることができる。また対象イメージ42は、基準イメージ40に対して位置合わせ(registration)すべきイメージとして定義される。対象イメージ42は、例えば基準イメージ40を取得した後に撮影または記録されたX線写真、X線CTイメージ、MRIイメージなどとすることができる。なお、本発明では、位置合わせするための画像イメージの種類や属性は、特に限定されるものではない。
【0025】
また、基準イメージ40および対象イメージ42は、2次元画像イメージを単位スライスとして、複数のスライスが特定深さの断面を与える3次元画像として作成されている。基準イメージ40および対象イメージ42は、ハードディスク装置、CD−ROM、CR−RW、DVD、MOなどの記憶装置30に格納され、処理要求に応答してメイン・メモリ14に読出され、データ処理装置10による処理に使用される。
【0026】
データ処理装置10は、複数のダウン・サンプル処理部を含んで構成されており、ダウン・サンプル処理部44〜48およびダウン・サンプル処理部58〜62は、処理するべき画像イメージの画素を抽出してソフトウェア的に低解像度化する、ダウン・サンプル処理手段として機能する。また、各ダウン・サンプル処理部は、基準イメージ40および対象イメージ42の両方について、対応した低解像度の画像イメージを与えるように、同一の処理ステージについて同一の解像度比でダウン・サンプルを実行する。
【0027】
各処理ステージでのダウン・サイズ処理部は、上述したように同様の処理を行うため、以下、基準イメージ40をダウンサイジングするためのダウン・サンプル処理部44〜48について説明する。図2に説明するように、オリジナルの解像度の基準イメージ40は、X×Y画素を有しているものとする。ダウン・サンプル処理部44は、オリジナルの画素数を1/4とした基準イメージを作成する。ダウン・サンプル処理部46は、ダウン・サンプル処理部44が作成した低解像度画像をオリジナルの解像度に対して1/16に圧縮した基準イメージを作成する。さらに、ダウン・サンプル処理部48は、ダウン・サンプル処理部46が作成した低解像度画像を、オリジナルの解像度の1/64に圧縮した基準イメージを作成する。
【0028】
この結果、図示した実施形態では、データ処理装置10は、1(オリジナルの解像度)→1/4→1/16→1/64の解像度列の、低解像度化した画像イメージが作成される。これらの画像イメージの画素データは、一旦メイン・メモリ14に書込まれる。メイン・メモリ14に書込まれた各画素データは、以下に説明する各レジストレータに読込まれ、レジストレーション処理のために使用される。なお、本発明では、ダウン・サンプル処理部を実装する数は、特に限定されるものではない。同様に、対象イメージ42についても同様の、または同一のダウン・サンプル処理部58〜62を適用して、それぞれ基準イメージ40と同一の解像度比で低解像度画像を作成し、メイン・メモリ14に格納する。ダウン・サンプル処理部58〜62を、ダウン・サンプル処理部44〜48と別に実装する場合には、基準イメージ40と対象イメージ42のダウンサイジング処理を並列処理として実行できるので、処理効率的には好ましい。
【0029】
本実施形態では、画素データのサンプリング数を、オリジナルの解像度の総画素数の1/100とする。このため、低解像度化して解像度が1/4、1/16、1/64となった場合、それぞれの解像度の画像イメージについてサンプリング割合を、4/100、16/100、64/100としてサンプリング数を保持するようにサンプリング割合を高めて処理を実行する。すなわち、低解像度の画像イメージについては、サンプリング割合を高め、高解像度の画像イメージについてはサンプリング割合を低めて、処理対象画素数を保持させて処理を実行させる。なお、サンプリング数は、各処理ステージで、処理効率および特定の用途に応じて適切に変更することができる。作成した低解像度化された画像イメージの系列に対し、データ処理装置10は、順次低解像度の画像イメージからイメージ・レジストレーション処理を開始する。データ処理装置10は、処理するべき画像イメージのサンプリング割合に対応して、異なるサンプリング処理を適用し、さらに異なる相互情報量計算方法を適用する。
【0030】
また、データ処理装置10は、レジストレーション処理の各処理ステージに対して第1ステージを除き、1ステージ低いレジストレーション処理で得られた線形変換パラメータをその初期設定パラメータとして設定する。このため、アフィン変換パラメータなどの線形変換パラメータは、そのレジストレーション精度が順次的に向上してゆく。このため、低解像度化された画像イメージの処理に対して効率的なレジストレーション方法を適用する。また、データ処理装置10は、パラメータ精度が改善された所定のサンプリング割合の処理ステージで、相互情報量を計算させる対象イメージの画素を投機的に圧縮するレジストレーション方法を使用することができる。このステージでは、投機的に画素データを取得して圧縮する処理を行っても、線形変換パラメータのレジストレーション精度が高められているので、ローカル・メモリ18内のデータについてミスヒットを低く抑えることができ、また仮にミスヒットした場合にでも、圧縮した対象イメージの画素データから外挿することで対応することができる。また、本実施形態では、他の投機的予測を行って、スパース・アクセスを排除することもできる。さらに、本実施形態では、予測値について誤差規制値を設定し、誤差が誤差規制値を超える場合には精度を重視してメイン・メモリ14にアクセスさせることもできる。なお、第1ステージについては、入出力装置36または記憶装置34などに格納した値から初期設定の値を取得することができる。
【0031】
さらに図2に示したデータ処理装置10について説明する。データ処理装置10は、画像イメージの解像度に対応する位置決め手段として機能するレジストレータ50〜56を含んでいる。また、レジストレータ50〜56は、各処理ステージに対応するようにR0〜R3として序列化されている。レジストレータ50〜56は、ソフトウェア的に構成されるレジストレータ手段として機能する。図2に示した特定の実装では、レジストレータ50〜56のうち、レジストレータ50およびレジストレータ52は、それぞれ低解像度の画像イメージに対してブロック・サンプリングを適用する低解像度レジストレータとして構成され、第1レジストレータ手段を提供する。
【0032】
また、レジストレータ54およびレジストレータ56は、高解像度の画像イメージを処理する高解像度レジストレータとして、それぞれ第2レジストレ−タ手段を提供する。高解像度レジストレータ54、56は、ランダム・サンプリングおよび投機的手法を使用して、レジストレーション処理を行う。また、レジストレータ52からレジストレータ54には、順次1ステージ下のレジストレータで決定された線形変換パラメータが初期設定パラメータとして設定される。また、最終ステージのレジストレータ56は、データ処理装置10が最終的にレジストレーションに使用するための線形変換パラメータ64を出力する。
【0033】
なお、本発明では、低解像度レジストレータおよび高解像度レジストレータの数および組み合わせについては特に制限はなく、特定の用途により、適宜増減でき、またそれらの組み合わせも適宜設定することができる。
【0034】
図3は、データ処理装置10が実行する処理の実施形態のフローチャートを示す。図3に示す処理は、ステップS100から開始し、ステップS101で基準イメージと対象イメージとをダウン・サンプル処理部に入力し、解像度の異なる複数の画像イメージを作成し、メイン・メモリ14に書込む。ステップS102では、最も低い解像度の画像イメージを使用し、最下位ステージのレジストレータ50を起動して線形変換パラメータの粗近似値を計算させる。ステップS103では、パラメータの粗近似値を1ステージ解像度の高い処理を実行するレジストレータの初期設定値として画像イメージの相互情報量を計算し、線形変換パラメータを決定する。
【0035】
さらにステップS104では、順次高い解像度の画像イメージについて相互情報量を前ステージで計算された線形変換パラメータを使用して計算し、線形変換パラメータをさらに更新し、線形変換パラメータのレジストレーション精度を向上させる。ステップS105では、次に処理する画像イメージのサンプリング割合が設定値以上であるか否かを判断する。ステップS105の判断でサンプリング割合が設定値以上であると判断された場合(yes)、ステップS107でブロック・サンプリングのみを使用したパラメータ更新を継続させる。また、サンプリング割合が設定値に達しないと判断された場合(no)には、ステップS106で、本発明の特定の実施形態では、ランダム・サンプリングと、画素データの投機的フェッチを使用したレジストレーション処理を実行する。
【0036】
ステップS108では、オリジナルの解像度の画像イメージを処理したか否かを判断する。ステップS108の判断の結果、オリジナルの解像度の画像イメージを処理したと判断した場合(yes)、その時点でのパラメータを出力パラメータとして登録する。また、ステップS108の判断で、未だオリジナルの解像度の画像イメージを処理していないと判断した場合(no)には、処理をステップS105に分岐させて、処理を継続させる。なお、オリジナルの解像度の画像イメージを処理したことの判断については、処理対象の画像イメージの画素数や、高解像度レジストレータの処理ステージ数をカウントしておき、最終ステージカウントを超えたときに、処理終了と判断することができる。
【0037】
なお、図3のステップS105の判断に使用する設定値は、特定の実装形態により異なる可能性があるが、特定の実施形態では、サンプリング割合で16/100とした(解像度的には、1/16に相当する。)。説明している実装形態では、サンプリング割合が16/100よりも低い画像イメージ(すなわち、解像度が高い画像イメージの処理に対応する。)については、ブロック・サンプリングを使用したレジストレーション処理よりもランダム・サンプリングおよび投機的フェッチを使用するレジストレーション処理の方が処理効率が高い結果が得られたためである。ただし、本実施形態の設定値は、特定の実装形式などにより適宜最適化するように設定することができる。
【0038】
図4は、本実施形態に使用する低解像度レジストレータ50での機能ブロックの実施形態を示す。低解像度レジストレータ50は、ブロック・サンプル部70と、相互情報量計算部72と、最適化処理部74とを含んで構成される。ブロック・サンプル部70は、画像イメージの複数のスライスにブロックを割当て、選択したブロックに含まれる画素データ全体をメイン・メモリ14からローカル・メモリ18にフェッチする。その後、ブロック・サンプル部70は、ブロックに割当てられた画素データをランダムにサンプリングしてメイン・メモリ14に登録する。さらに、ブロック・サンプル部70は、ブロックのコーナを占めるコーナ画素(特定の実施形態では8サンプル)の3次元座標を求め、ランダムにサンプリングされた画素データに結合させてブロック・データとして、メイン・メモリ14に格納する。
【0039】
格納したブロック・データは、相互情報量計算部72の処理に使用のために再度ローカル・メモリ18にフェッチされる。相互情報量計算部72は、ブロック・データを、メイン・メモリ転送単位に連続してローカル・メモリ18にフェッチする。このとき、隣接する複数のブロックからブロック・グループを構成し、ブロック・グループ内のすべてのサンプル画素をフェッチすることもできる。さらに相互情報量計算部72は、線形変換パラメータの値を使用して同一の解像度の対象イメージのうち、ブロック(またはブロック・グループ)に対応するコーナの画素の3次元座標を決定してバウンディング・ボックスを決定する。この処理を実行するソフトウェア手段がバウンディング・ボックス取得手段を構成する。その後、相互情報量計算部72は、バウンディング・ボックスに含まれる対象イメージの画素データを、メイン・メモリ14からローカル・メモリ18に連続してフェッチする。本発明では、ブロック(またはブロック・グループ)のデータ・サイズを、ブロックに対する相互情報量の計算実行の間、メイン・メモリへのスパースなメモリ・アクセスを生じさせないサイズとして最適化する。ブロック・グループを使用する場合は、そのメモリ・サイズを、使用するローカル・メモリ18のサイズおよび計算中の線形変換パラメータの値などにより適宜動的にブロックの単位で最適化させることができる。
【0040】
相互情報量計算部72は、ブロック(またはブロック・グループ)に含まれる画素データとバウンディング・ボックスに含まれる対象イメージの画素データとを使用して、相互情報量を計算する。最適化処理部74は、計算されたブロックごとの相互情報量を使用して、線形変換パラメータを修正し、修正したパラメータを相互情報量計算部72に渡して相互情報量を最大化するように反復的に相互情報量の計算を実行する。最適化処理部74は、相互情報量がその時点で特定されているブロックとバウンディング・ボックスとの関係で最大化した時点あるいは、予め定められた反復数に達した時点で、処理を終了し、線形変換パラメータ76を次ステージのレジストレータに渡して次ステージの相互情報量計算のための初期パラメータに設定する。
【0041】
なお、本実施形態では、相互情報量計算部72および最適化処理部74に使用する定義式、パラメータ設定については、非特許文献1の開示にしたがって、初期設定する線形変換パラメータの設定を変更するのみで、そのまま実装することができる。なお、概略的に説明すると、相互情報量計算部72は、確率密度関数p(x)を、所謂Parzen予測値として計算し、アフィン変換などの線形変換パラメータを使用してParzenヒストグラムを計算する。このヒストグラムでParzen確率または周波数を計算し、相互情報量S(μ)を下記式(1)で与える。
【0042】
【数1】
なお、上記式中、lおよびκは、離散変数であり、LTおよびLRは、対象イメージおよび基準イメージの深さデータ(濃度階調のビット数に対応する。)である。μは、線形変換パラメータを示し、pが、Parzen確率を示し、pT、pRは、対象イメージおよび基準イメージの離散Parzen確率を示す。
【0043】
より詳細については、非特許文献1を参照されたい。本発明では、上記式(1)で示した相互情報量S(μ)を最大化させるように、線形変換パラメータμの値を逐次最適化処理を実行する。最適化処理部74は、上述した相互情報量を、テーラー展開し、S(μ)を最大化する線形変換パラメータを、出力するべき線形変換パラメータとして決定する。
【0044】
図5は、図4に示した低解像度レジストレータ50が実行する処理の実施形態のフローチャートである。図5に示した処理は、ステップS200から開始し、ステップS201で基準イメージのブロック・データの画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。ステップS202では、ローカル・メモリ18にフェッチした画素データをランダムにサンプリングし、画素データの深さデータ(例えば、16ビットの白黒の階調レベル値)および位置データを取得する。
【0045】
ステップS203では、取得した画素の深さデータおよび位置データとブロックのコーナ画素の3次元座標データをブロック・データとして、メイン・メモリ14に、相互情報量の計算のために書込む。ステップS204では、処理している解像度の基準イメージについてのブロックすべてについて処理が終了したか否かを判断し、終了していなければ(no)処理をステップS201に戻す。また、すべてのブロックについて終了した場合(yes)、処理をステップS205に分岐させ、ローカル・メモリ18をクリアして、メイン・メモリ14に書込んだブロック・データを、相互情報量の計算のためローカル・メモリ18にフェッチする。なお、本発明の特定の実施形態では、処理している画像イメージの処理効率の観点から、単一のブロック・データを使用して相互情報量の計算を実行することもできるし、複数の隣接するブロック・データからブロック・グループを形成させ、ブロック・グループ内すべてのブロック・データをローカル・メモリ18にフェッチさせることもできる。
【0046】
ステップS206では、ブロック・データのコーナ画素について線形変換を実行し、対象イメージの画素データのうち、線形変換で基準イメージのコーナに対応する画素を特定し、バウンディング・ボックスとして定義する。その後、ステップS207でバウンディング・ボックスに含まれる対象イメージの画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。すなわち、低解像度レジストレータ50では、対象イメージの処理対象の画素データについてはまったく投機的予測を使用しないで、ローカル・メモリ18にフェッチする。
【0047】
ステップS208では、ローカル・メモリ18内のブロック・データとバウンディング・ボックス内の画素データとを使用して相互情報量を計算する。ステップS208の処理では、相互情報量の計算時にメイン・メモリ14に格納された画素単位ではなく、ローカル・メモリ18に格納された画素データについて連続アクセスすることができるので、CPU12の処理効率は向上する。ブロックについて計算された相互情報量は、メイン・メモリ14に格納され、積算される。
【0048】
その後、ステップS209すべてのブロック・データについて処理を終了したかを判断する。処理が終了していない場合(no)には、処理をステップS205に分岐させて次のブロック・データについての処理を繰り返し実行する。ステップS209ですべてのブロック・データについて処理が終了した場合(yes)には、ステップS210で最適化処理部74を起動して、相互情報量が最大化するように線形変換パラメータを修正し、ステップS211で、相互情報量が最大化したか、または設定した反復回数に達したかを判断する。相互情報量が最大化したかまたは設定した反復回数に達した場合(yes)場合、処理をステップS212分岐させて処理を終了させる。また、相互情報量が最大化したかまたは設定した反復回数に達しない場合(no)、ステップS205に処理を分岐させて、更新した線形変換パラメータを使用して新たなバウンディング・ボックスを計算しなおして繰り返し計算を実行させる。
【0049】
この理由は、低解像度では未だ、線形パラメータの精度が高くないため、更新された値を使用してバウンディング・ボックスを修正してゆくことが好ましいためである。なお、後述する高解像度レジストレータでは、低解像度レジストレータによる上述の処理によって、精度の高い線形変換パラメータが与えられるため、「初期値」をもって最新値の予測値として使用することが可能であるなお、図5で示した低解像度レジストレータ50の決定した線形変換パラメータは、次ステージの処理を実行する低解像度レジストレータ52の線形変換パラメータの初期値として渡される。
【0050】
図6は、本発明で使用する3次元画像のデータ構造の実施形態を示す。図6に示した3次元画像のデータ構造は、基準イメージおよび対象イメージについて同様の構成とされる。図6に示すように3次元画像80は、患部などを2次元画像として登録したスライス82が、患部の深さ方向に複数X−Y方向に位置決めされたデータ構造として与えられる。本実施形態では、ダウン・サンプル処理部により低解像度化した各スライスに対してブロック84を割当てる。ブロック84には、複数の画素データが含まれている。図6中、代表してブロック84のみをハッチングして示す。
【0051】
本実施形態では、ブロック84を処理する場合、ブロック84に含まれるすべての画素の画素データを、ローカル・メモリ18にフェッチする。このため、CPU12は、処理のために使用する画素データに効率的にアクセスでき、相関情報の計算を効率化することが可能となる。以後、ブロック84内の画素データがサンプリングされる。このときのサンプリング割合は、解像度に対応したサンプリング割合とされ、低解像度の基準イメージについては高いサンプリング割合が適用される。また、ブロックのコーナを占めるコーナ画素は、ランダムなサンプリングの他にサンプリングされて、バウンディング・ボックスを規定するために使用される。また、ブロックのデータ・サイズは、所定のサンプリング割合でのサンプリングにより、ローカル・メモリ18にブロック・データまたはブロック・グループのデータと、対象イメージのデータとに対して相互情報量の計算の間、連続的にアクセスできように最適化されている。
【0052】
図7は、ブロック84に登録された画素データを、ローカル・メモリ18の特定のページにフェッチする実施形態を示す。図7に示すように、一旦メイン・メモリ14に書込まれたブロック84内の全画素データは、ローカル・メモリ18にフェッチされる。ローカル・メモリ18は、キャッシュ・メモリと同様にライン単位でのメイン・メモリ14からのフェッチが最適化されていて、ライン単位でのデータ転送を可能としている。さらに、ブロック・サンプル部70は、ローカル・メモリ18内にフェッチされた画素データをランダムにサンプリングし、コーナを占める画素のコーナ画素86の3次元座標を、ランダムにサンプルした画素データに追加し、連続アクセスが可能となるように圧縮してブロック・データとして作成し、再度メイン・メモリ14に書込む。
【0053】
その後、相互情報量計算部72は、メイン・メモリ14からコーナ画素86の3次元座標を含むブロック・データを、ローカル・メモリ18の領域88にフェッチする。さらに、相互情報量計算部72は、対象イメージのバウンディング・ボックスに含まれる画素データについてもローカル・メモリ18の領域90に読込みこませ、画素データへのスパース・アクセスを生じさせずに、相互情報量の計算を実行させる。なお、ローカル・メモリ18には複数の隣接するブロックからなるブロック・グループをフェッチでき、ローカル・メモリのサイズ、線形変換パラメータの値に応じてブロック・グループ内のブロックの個数を動的に最適化する。
【0054】
図8は、基準イメージのブロック84の2つから構成されるブロック・グループとバウンディング・ボックス92との線形変換関係を示した図である。基準イメージのブロック84は、複数の画素データを含んで構成されている。また、ブロック84のコーナ画素86の値は、ランダム・サンプリングにより抽出される画素データ96とは別にサンプリングされ、ブロック・データとして一旦メイン・メモリ14に書込まれる。コーナ画素86の3次元座標は、相互情報量計算部72により、線形変換パラメータの値が適用され、対象イメージで対応するべきコーナ画素94の3次元座標を与えて対象イメージ上での対応するバウンディング・ボックス92を定義する。また、図8には、ブロック84が2つ示されていて、それぞれのコーナ画素86からの、対象イメージへの線形写像が符号Pで示されている。バウンディング・ボックス92は、図8に示されるように、隣接した2つのブロックからなるブロック・グループの8つのコーナ画素86により規定される。なお、図8では、基準イメージ40に帰属されるブロック84の3D画像でのX、Y、Z方向は、図6に示したオリエンテーションとして設定されている。
【0055】
バウンディング・ボックス92は、下記の処理により定義される矩形体である。(1)基準イメージのコーナ画素86を線形変換Pして対象イメージの対応する8つのコーナ画素94を特定する。(2)その後、対象イメージのコーナ画素94の(Mx、My、Mz)の8つの値の中から各座標値の最大値、最小値を選択して、(Mxmax、Mymax、Mzmax)および(Mxmim、Mymin、Mzmin)を対角線として定義する。(3)そして当該対角線を有し、対象イメージを定義する座標軸Bx、By、Bzに平行な辺を定義することにより形成される矩形空間である。上述したように定義されたバウンディング・ボックス92は、Axis-aligned bounding boxとしても参照される。なお、バウンディング・ボックス92を、座標軸Bx、By、Bzに平行な辺を有する矩形体として生成するのは、バウンディング・ボックス92に含まれる画素のアドレスの計算を高速に行えるようにするためである。
【0056】
その後、さらに相互情報量計算部72は、バウンディング・ボックス92に含まれる画素データ98を識別し、識別された画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。相互情報量計算部72は、以後、ブロックと、バウンディング・ボックスとについての画素データにつき、相互情報量の計算を、メイン・メモリ14へのスパース・アクセスを行うことなく、ローカル・メモリ18へのデータ・アクセスのみで実行する。また、複数のブロックからブロック・グループを形成する場合、メイン・メモリからのフェッチの効率を最大にし、かつブロック・グループのサンプル画素と参照イメージのバウンディング・ボックスがローカル・メモリに納まるようにブロック・グループのサイズを動的に決定できる。
【0057】
低解像度レジストレータ50、52による処理が終了した後、本実施形態では、第2レジストレータとして機能する高解像度レジストレータ54、56によるレジストレーションが実行される。図9は、高解像度レジストレータ54の機能ブロックの実施形態を示す。高解像度レジストレータ54は、高解像度レジストレータ56と同様の構成を使用しているので、高解像度レジストレータ54の構成について詳細に説明する。高解像度レジストレータ54は、ランダム・サンプル部100と、対象イメージ予測部102とを含んでいる。ランダム・サンプル部100は、指定された基準イメージの画素を、指定されるサンプリング割合となるようにサンプリングし、サンプリングしたデータにブロックを割当て、メイン・メモリ14に圧縮して連続アクセスを可能とするように書込みを実行する。
【0058】
対象イメージ予測部102は、ランダムにサンプリングされた画素データのブロックに対して線形変換パラメータの初期値を使用して、データ・アクセスが必要となる対象イメージの画素データを予測し、決定する。さらに、対象イメージ予測部102は、決定された対象イメージの画素データに対して基準イメージに対応するブロックを割当て、圧縮して連続アクセスを可能とするようにメイン・メモリ14に書込みを実行する。この段階では、対象イメージ予測部102は、メイン・メモリ14に格納された画素データに対してスパースなアクセスを実行する。
【0059】
高解像度レジストレータ54は、さらに相互情報量計算部104と最適化処理部106とを含んでいる。相互情報量計算部104は、ランダム・サンプル部100および対象イメージ予測部102がそれぞれ圧縮してメイン・メモリ14に書込んだ画素データを、ローカル・メモリ18にそれぞれフェッチする。その後、相互情報量計算部104は、相互情報量の計算を、ローカル・メモリ18にデータ・アクセスするだけで、指定されたブロックの相互情報量の計算を実行できる。この点で、本実施形態の相互情報量計算部104および最適化処理部106は、スパース・アクセスを行うことなく、効率的なデータ・アクセスを実行することができる。なお、相互情報量計算部104と最適化処理部106の構成については、低解像度レジストレータ50、52と同様に構成する。
【0060】
また、相互情報量計算部104は、線形変換パラメータについて予めフェッチしていない画素データの計算が必要であると判断した場合、予測誤差が小さい場合には、当該画素データをメイン・メモリにアクセスして改めてフェッチするのではなく、対象データの近傍の画素データから外挿してその値を計算する。高解像度レジストレータでは、すでに低解像度レジストレータで精度が高められた線形変換パラメータを使用するので、相互情報量に重大な影響を与える誤差を生じさせることはない。その後、相互情報量計算処理部104は、所定のブロックの処理を終了すると、次のブロックの処理を実行し、ブロックごとに相互情報量を計算する。
【0061】
最適化処理部106は、線形変換パラメータを使用して相互情報量計算部104が計算した結果に対して、線形変換パラメータを修正して、修正した線形変換パラメータを相互情報量計算部104に戻し、再度、相互情報量の計算を実行させる。最適化処理部106は、ブロックごとに計算される相互情報量を総和して、相互情報量の総和が最大化するように、線形変換パラメータ108を決定し、出力させる。
【0062】
その後、さらに次ステージの高解像度レジストレータがある場合には、決定した線形変換パラメータを次ステージの高解像度レジストレータの線形変換パラメータの初期値として設定し、処理を終了する。
【0063】
図10は、高解像度レジストレータ54が実行する処理の実施形態のフローチャートを示す。図10に示す処理は、ステップS300から開始し、ステップS301で基準イメージの画素データをランダム・サンプリングする。ステップS302では、サンプリングした画素データにブロックを割当て、圧縮してメイン・メモリ14に書込む。ステップS303では、線形変換パラメータの初期値からアクセスする必要のある対象イメージの画素データを取得して圧縮し、基準イメージのブロックに対応するようにブロック化してメイン・メモリ14に書込む。
【0064】
ステップS304では、指定した基準イメージのブロックと対応する対象イメージのブロックとを、メイン・メモリ14からローカル・メモリにそれぞれフェッチする。続いてステップS305では、対象イメージについて、新たな画素データが必要であるか否かを判断する。ステップS305の判断で、新たな画素データが必要であると判断された場合(yes)、ステップS306で予測誤差が設定した誤差規制値よりも小さいか否かを判断する。ステップS306の判断の結果、予測誤差が小さいと判断された場合(yes)、処理をステップS308に分岐させる。ステップS308では、すでにフェッチしてある対象イメージの画素データを外挿して画素データの有するべき位置データおよび深さデータなどの近似値を計算し、計算に使用すべき画素データを予測して、ポイントAから図12に示す処理に移す。また、ステップS306の判断で予測誤差が小さくないと判断された場合(no)、処理をステップS307に分岐させ対象イメージの該当するデータをメイン・メモリ14からローカル・メモリ18にフェッチして、ポイントAから図12に示す処理に移し、精度を優先させる処理を行う。
【0065】
図11は、予測誤差を画素単位で判断する場合の他の実施形態を示す。図11に示すように、基準イメージ40のブロック84の画素データ96が、対象イメージ42の画素データ98を一つのコーナとする2×2×2画素の領域内に線形写像されると予測されるとする。画素データ96に対してその時点での線形変換パラメータを適用して計算される線形写像Pが予測された2×2×2画素領域に充分近い場合(ニアミス)に、投機的予測値を使用して図10のステップS308の判断を実行させる。
【0066】
一方、線形写像Pが2×2×2画素領域に充分近くない場合(ファーミス)、メイン・メモリ14から新たに画素データをフェッチするステップS307の処理を実行させる。本実施形態では、処理対象の画素単位でニアミス/ヒット/ファーミスの判断を行うことにより、より局所的な予測の一致性をフェッチに反映させることができる。一方、ステップS305で、新たな画素データが必要ないと判断された場合(no)、処理をポイントAから図12に示す処理に分岐させる。
【0067】
図12には、図10の処理のポイントA以降の処理を示したフローチャートである。高解像度レジストレータは、ポイントAから図12の処理に入り、ステップS309で画素データを使用して相互情報量の計算を実行する。その後、ステップS310でブロック内のすべてのサンプルについて計算終了したか否かを判断する。ステップS310の判断で、ブロック内のすべてのサンプルについて計算が終了していないと判断された場合(no)、処理をポイントBから図10のステップS305に処理を分岐させ、次のサンプルについて新たな画素データが必要か否かを判断させる。
【0068】
また、ステップS310の判断で、ブロック内のすべてのサンプルについて計算が終了したと判断した場合(yes)処理をステップS311に分岐させる。ステップS311では、すべてのブロックについて計算終了したか否かを判断し、すべてのブロックについて計算が終了したと判断された場合(yes)、ステップS312で相互情報量を最大化させるように線形変換パラメータを決定する。また、ステップS311の判断で、まだ計算するべきブロックが残されている場合(no)、処理をポイントCからステップS304へと分岐させて、処理を反復させる。
【0069】
ステップS313では、相互情報量が最大化したかまたは反復回数が設定値に達したかを判断する。ステップS313の判断で相互情報量が最大化したかまたは反復回数が設定値に達したと判断された場合(yes)、処理をステップS314に分岐させて処理を終了させる。また、ステップS313の判断で、相互情報量が最大化したかまたは反復回数が設定値に達していないと判断された場合(no)、処理をポイントCからステップS304に分岐させて、相互情報量が最大化するか、反復カウンタが所定の反復回数の設定値に達するまで継続させる。
【0070】
以上の構成を使用して本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較を、スプレッドシードを使用したシミュレータで検討した。予測性能は、CELL BE Processor(3.2GHz、メイン・メモリ=1GB、各SPEのローカル・メモリ=256KB)を使用し、インターナショナル・ビジネス・マシーンズ・コーポレーション社製のブレードセンタ(登録商標)QS20に実装したものとし、8個のSPEを使用するものとし、スプレッドシートを使用して1画素当たりに要する計算時間をシミュレーションした。
【0071】
また、比較のため、サンプリング比を1/100とした従来のシーケンシャル逐次最適化法(非特許文献1)を使用し、相互情報量計算に対し、ローカル・メモリにフェッチできるブロック単位で処理データセットを作成せず、メイン・メモリへのスパース・アクセスを行ないながら計算を実行する従来の逐次最適化法についてもシミュレーションした。その結果を図13および図14に示す。対象とした3D画像は、1スライスあたり、256×256画素とした。
【0072】
シミュレーションは、サンプリング割合64/100、16/100、4/100、1/100に対する低解像度レジストレータについてのシミュレーション((a)〜(d))、高解像度レジストレータについてのシミュレーション(e)とした。また、比較例(f)については、従来手法(非特許文献1)を使用し、シミュレーション(f)とした。シミュレーションは、各レジストレータが1ステージの処理を実行するものとして1画素当たりの相互情報量の相互情報量計算に要するクロック時間をシミュレーションした。
【0073】
図13に示されるように、ブロック・サンプリングを行う低解像度レジストレータでは、サンプリング割合が高くなればなるほど(解像度が低くなることに対応する)実行時間が短縮され、サンプリング割合が低くなればなるほど(解像度が高くなることに対応する)、実行時間が増加した。
【0074】
この理由は、サンプリング割合(計算に使用するデータのうちサンプリングされる割合)が低い場合には不要な画素データを、ブロックとしてローカル・メモリ18にフェッチすることになり、ブロック・サンプリングの効果は小さくなるためである。このため、低解像度ではブロック・サンプリング法を使用する第1レジストレータを使用し、高解像度では、第2レジストレータを使用して精度の高められた線形変換パラメータを使用した投機的予測を併用するランダム・ダンプリングを使用して実装することが好ましいことが示された。
【0075】
また、図13に示されるように、本発明の各レジストレータは、相互情報量の計算処理時間が従来手法に比較にして充分に計算速度が向上されていることが示されている。
【0076】
図14には、従来の逐次最適化法を使用するレジストレータの総実行時間と本発明によるレジストレータの総実行時間とを、それぞれの計算時間の逆数を比として本発明の効率を比較した。シミュレーションによる比較の結果、本発明によりメイン・メモリへのスパース・アクセスを改善することに対応して、従来法に比較して、本発明の方法を使用することで約3倍程度、計算時間が短縮されることが示された。
【0077】
また、本発明のブロック・サンプリングの代わりに、ブロック分割することなく乱数列を発生させ、ソートされた乱数列を用いて全画素データについてサンプリングし、ブロックごとに処理することでも、同様の効果を得ることも可能である。この実施形態の場合、ソフトウェア資源として、ソート処理を実行するモジュールの追加が必要となる。また、当該実施形態で、画像処理を並列処理を使用して実行させる場合、ソート処理を追加したことにともない、プロセス間通信が必要になる。本発明の好ましい実施形態では、プロセス間通信も必要とされず、より並列処理性を向上できる。また、前述のブロック・グループを構成し、そのサイズを動的に最適化する場合と同等の効果を得るためには、線形変換パラメータを計算しなおすたびにソート処理が必要であり、そのための実行時間のオーバーヘッドが発生する。
【0078】
また、本発明の上記機能は、アセンブラ、C、C++などのレガシープログラミング言語やオブジェクト指向ブログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布することができる。
【0079】
これまで本発明を図面に示した実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【0080】
【図1】データ処理装置のハードウェア構成の実施形態を示した図。
【図2】データ処理装置の機能ブロックの実施形態を示した図。
【図3】データ処理装置が実行する処理の実施形態のフローチャート。
【図4】低解像度レジストレータの機能ブロックの実施形態を示した図。
【図5】低解像度レジストレータの処理の実施形態のフローチャート。
【図6】3次元画像のデータ構造の実施形態を示した図。
【図7】ローカル・メモリでの画素データのマッピングの実施形態を示した図。
【図8】ブロック内の画素データをバウンディング・ボックスに対応づける線形変換の実施形態を示した図。
【図9】高解像度レジストレータの機能ブロックの実施形態を示した図。
【図10】高解像度レジストレータの処理の実施形態のフローチャート。
【図11】予測誤差を画素単位で判断する場合の他の実施形態を示した図。
【図12】図10の処理のポイントA以降の処理のフローチャート。
【図13】本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較結果を示した図。
【図14】本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較結果を示した図。
【符号の説明】
【0081】
10…データ処理装置、12…中央処理装置(CPU)、14…メイン・メモリ、16…ユニット・プロセッサ、18…ローカル・メモリ、20…DMA、22…システム・バス、24…グラフィックス・ドライバ、26…ネットワーク・デバイス(NIC)、28…ディスプレイ装置、30…I/Oバス・ブリッジ、32…I/Oバス、34…記憶装置、36…入出力装置、40…基準イメージ、42…対象イメージ、44〜48…ダウン・サンプル処理部、50〜56…レジストレータ、58〜62…ダウン・サンプル処理部、64…線形変換パラメータ、70…ブロック・サンプル部、72…相互情報量計算部、74…最適化処理部、76…線形変換パラメータ、80…3次元画像、82…スライス、84…ブロック、86…コーナ画素、88…領域、90…領域、92…バウンディング・ボックス、94…コーナ画素、96…画素データ、98…画素データ、100…ランダム・サンプル部、102…対象イメージ予測部、104…相互情報量計算部、106…最適化処理部、108…線形変換パラメータ、P…線形写像
【技術分野】
【0001】
本発明は、画像イメージの相互比較技術に関し、より詳細には、3次元画像を位置合わせするためのデータ処理装置、データ処理方法、およびプログラムに関する。
【背景技術】
【0002】
イメージ・レジストレーション法(Image Registration)は、同一対象に対する2つの3次元画像(CT、MRIなど)を入力とし、それらのアライメントを行う画像処理方法である。このための画像処理は、長時間の計算を必要とするため、特に医療現場では、イメージ・レジストレーション法を高速化することが要請されている。
【0003】
イメージ・レジストレーション法は、2つの入力画像F(基準イメージ:Fixed Image)と、M(対象イメージ:Moving Image)とについて、基準イメージに線形変換(回転と平行移動)を施した画像と対象イメージとの間の相互情報量(Mutual Information)が最大になるような線形変換パラメータを、逐次的な最適化問題として求める(非特許文献1)。イメージ・レジストレーション法では、入力画像のすべての画素(Pixel)について計算を行うと莫大な計算時間がかかるため、画像イメージに含まれる画素データをランダムにサンプリングして相互情報量を計算する。このため、従来のイメージ・レジストレーション法では、メイン・メモリへのスパースなメモリアクセス・パターンが画素単位で発生する。
【0004】
一般的にメイン・メモリが効率よく処理できるアクセス単位は、キャッシュライン・サイズであり、画素単位のスパース・アクセスは、処理速度の向上を阻害する1つの要因となっている。スパース・アクセスを含む数値計算では、メイン・メモリでスパース・データを圧縮する圧縮手法はよく知られている。一般的には、スパース・データのアクセス・パターンは、アプリケーション・アルゴリズムや入力データによって決定される。このため、既存の圧縮手法では、スパース・アクセスのパターンを予測してデータを圧縮する。
【0005】
したがって、スパース・アクセスのパターンを予測する既存の圧縮手法が効果を発揮するためには、アクセス・パターンが実際のデータ・アクセスより充分前に予測できる必要がある。一方、アクセス・パターンが実際のデータ・アクセスの直前まで予測できない場合には、充分な処理効率を得ることができないという不都合がある。この不都合は、処理アルゴリズムが速度向上して、直前予想のための時間的余裕が限られてくると、一層頻繁に発生することが想定され、イメージ・レジストレーション法の処理速度を向上させるためのアクセス・パターンが、逆にイメージ・レジストレーション法の処理速度向上を阻害するという結果を与えることも考えられる。
【0006】
また、医用画像のマッチングを行うシステムがこれまで知られている。例えば、特開2006−55432号公報(特許文献1)では、同一被検体に対してX線CT検査を行うシステムを開示している。また、特開2006−20937号公報(特許文献2)では、異なる時点で測定された医用画像の位置合わせを正確に行う方法および装置を開示している
【非特許文献1】P. Thevenazand M. Unser, “Optimization of Mutual Information for Multiresolution ImageRegistration”, IEEE Transactions on Image Processing, 9(12) December 2000.
【特許文献1】特開2006−55432号公報
【特許文献2】特開2006−20937号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、イメージ・レジストレーション法の処理速度を向上する、データ処理装置、データ処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上述した従来技術の不都合に鑑みてなされたものある。イメージ・レジストレーション法は、実行時での画素データへのデータアクセス・パターンには自由度がある。
【0009】
3次元画像は、複数の2次元画像(以下、スライスとして参照する。)が2次元画像の平面に直交する方向に互いに位置決めされた構造を有している。2次元画像であるスライスにブロックを割当て、3次元画像を適切なデータ・サイズのブロック単位で処理する。ブロックに割当てられた画素データは、相互情報量計算の処理対象の画素データとして、メイン・メモリに登録される。画素データが登録される場合、処理対象の画像データは、ローカル・メモリとメイン・メモリ間の転送単位でアクセスできるデータ・サイズおよび構造を有するフォーマットとして格納される。その後、処理対象の画素データは、メイン・メモリから、ローカル・メモリに連続アクセスによりフェッチされる。ローカル・メモリにフェッチされた画素データは、ランダムにサンプリングされ、連続アクセスが可能なブロック・データとして一旦メイン・メモリに格納される。
【0010】
メイン・メモリに格納されたブロック・データは、相互情報量計算のためにローカル・メモリにフェッチされる。さらにレジストレーションの対象である、対象イメージについて相互計算のためにアクセスするべき画素データをローカル・メモリにブロック単位でフェッチし、相互情報量計算のために提供する。
【0011】
データ処理装置を上述したように、対象イメージのフェッチ効率を上げる(連続メモリ・アクセスが使える)ように、基準イメージを分割しサンプリングするべく実装することで、従来、基準イメージは連続にフェッチできても、対象イメージはスパースなメモリ・アクセスが必要であった従来の不都合を改善し、相互情報量計算の間でのメイン・メモリに対するスパースなデータ・アクセスを排除することが可能となる。この結果、本発明のデータ処理装置は、高効率のメモリ・アクセスを達成し、レジストレーション処理の速度を改善することができる。
【0012】
相互情報量の計算は、ローカル・メモリに格納されたブロック単位の画素データについて実行され、第1の態様では、相互情報量計算に使用される画素データは、求められた線形変換パラメータを使用して対象イメージのバウンディング・ボックスを決定し、バウンディング・ボックスに含まれる画素データがローカル・メモリにフェッチされて実行される。さらに、本発明では、メモリ・アクセスの効率が最大になるように、基準イメージのブロック・グループと対象イメージのバウンディング・ボックスの画素数が最大でかつローカル・メモリに収まるように、前記ブロック・グループの大きさを決定することができる。また、線形変換パラメータの精度が高められた後、第2の態様では、相互情報量の計算に使用される対象データの画素データがローカル・メモリにフェッチされていない場合でも、メイン・メモリへのアクセスすることなく、近傍の画素データを使用して、外挿値として取得される。
【0013】
また、本発明では、処理する画像イメージ、すなわち基準イメージおよび対象イメージを、解像度が逐次的に低下するように低解像度化し、低解像度の画像イメージから処理を開始して、決定された線形変換パラメータを次ステージの、より解像度の高い画像イメージの処理の初期設定パラメータとして設定する。次ステージでのレジストレーション処理は、低解像度の画像イメージについて最適化された線形変換パラメータを初期値として使用するので、次ステージのレジストレーション処理により、線形変換パラメータのレジストレーション精度が改善できる。
【0014】
さらに、本発明では、処理対象の画像イメージのサンプリング割合が設定値よりも低い場合、相互情報量計算処理を切換え、対象イメージの画像を投機的に予測して相互情報量の計算を実行する。投機的に予測された対象イメージの画素データは、予めメイン・メモリにフェッチされて、相互情報量の計算を実行する。また、この態様で、投機的な予測が不成功の場合には、予めフェッチしてある画素データのうち、近傍の画素データを使用して相互計算に使用する画素データを外挿処理により取得し、相互情報量の計算に提供する。
【0015】
上述したように、本発明では、相互情報量計算を、相互情報量計算に使用する画素データをローカル・メモリにフェッチした状態として、メイン・メモリへのスパース・アクセスを排除して実行することができる。この結果、相互情報量の計算における並列処理性を向上でき、さらにレジストレーション処理効率を向上させることができる。
【0016】
また、本発明では、対象イメージの画素データに対するアクセス・パターンが実際にアクセスされる直前まで正確に予測できない場合でも適用でき、この結果、これまで、相互情報量計算の処理効率を向上させるために用いられていたスパースに画素をサンプリングする処理が、逆に相互情報量計算の効率を制限してしまうというトレード・オフの問題点を改善することが可能となる。
【発明を実施するための最良の形態】
【0017】
以下、本発明を図面に示した特定の実施形態をもって説明するが、本発明は、図面に示した実施形態に限定されるものではない。
【0018】
図1は、データ処理装置10の実施形態を示す。図1に示したデータ処理装置10は、概ねパーソナル・コンピュータまたはワークステーションなどのコンピュータ装置として構成されている。図1に示したデータ処理装置10は、中央処理装置(CPU)12と、CPU12が使用するデータを格納するメイン・メモリ14とを備えている。メイン・メモリ14は、DRAMなどの固体メモリ素子から形成され、データ処理装置10が処理に使用するデータを、後述する記憶装置34から読出して格納し、CPU12に提供しており、本実施形態では、512MBの容量を有している。
【0019】
すなわち、メイン・メモリ14のユニット2個で合計1GBのメイン・メモリ14をCPU12は使用できる。また、CPU12は、本実施形態では、対称マルチコア・プロセッサとして構成されており、マルチコア・プロセッサとして構成された、ユニット・プロセッサ16が高速バスにより接続され、並列処理を行うことができる。ユニット・プロセッサ16は、さらに、汎用プロセッサ・コアと、画像処理などに向いた複数のSPE(Synergistic Processing Element)を備えていている。本実施形態では、ユニット・プロセッサ16は、8つのSPEを備えている。また、各ユニット・プロセッサ16のSPEは、256KBのローカル・メモリ18をそれぞれ管理していて、並列処理性を向上させている。ローカル・メモリ18は、一般的なプロセッサのL2などのキャッシュ・メモリで置き換えることもできる。さらに、各SPEは、DMA(Direct Memory Access)20を備えていて、メイン・メモリ14が格納するデータへの高速アクセスを可能としている。
【0020】
CUP12は、システム・バス22を介して、データ処理装置10の他のデバイスまたはドライバ、例えば、グラフィックス・ドライバ24およびネットワーク・デバイス(NIC)26へと接続されている。グラフィックス・ドライバ24は、バスを介してディスプレイ装置28に接続されて、CPU12による処理結果をディスプレイ画面上に表示させている。また、ネットワーク・デバイス26は、データ処理装置10を、TCP/IPなどの適切な通信プロトコルを使用するネットワークへと接続している。
【0021】
システム・バス22には、さらにI/Oバス・ブリッジ30が接続されている。I/Oバス・ブリッジ30の下流側には、PCI、USBなどのI/Oバス32および、IDE、ATA、ATAPI、シリアルATA、SCSIなどのインタフェースを介して、ハードディスク、CD−ROM、CD−RW、DVD、MOなどの記憶装置34が接続される。また、I/Oバス32には、USBなどのバスを介して、キーボードおよびマウスなどの入出力装置36が接続されていて、データ処理装置10に対するレジストレーション条件設定の入力および各種指令を可能としている。
【0022】
データ処理装置10のCPU12としては、より具体的には、例えば、Cell BE Processor(登録商標)(クロックレート3.2GHz、メイン・メモリ=512MB、8SPE、各SPEのローカル・メモリ256KB)を挙げることができる。この他にも、PENTIUM(登録商標)〜PENTIUM(登録商標) IV、PENTIUM(登録商標)互換CPU、POWER PC(登録商標)などCISCまたはRISCチップなどを挙げることができる。
【0023】
また、使用するオペレーティング・システム(OS)としては、MacOS(商標)、Windows(登録商標)、Windows(登録商標)200X Server、UNIX(登録商標)、AIX(登録商標)、LINUX(登録商標)またはそれ以外の適切なOSを挙げることができる。さらに、データ処理装置10は、上述したOS上で動作する、アセンブラ、C、C++、Visual C++、VisualBasic、Java(登録商標)、Perl、Rubyなどのレガシープログラミング言語やオブジェクト指向のプログラミング言語により記述されたアプリケーション・プログラムを格納して実行し、データ処理を可能としている。
【0024】
図2は、図1に示したデータ処理装置10の機能ブロックおよび各機能ブロック間のデータフローの実施形態を示す。図2に示すように、データ処理装置10には、基準イメージ(Fixed Image)および対象イメージ(Moving Image)がそれぞれ入力される。基準イメージ40は、イメージ・レジストレーション法により位置合わせするべき基準となるイメージであり、例えば所定の患者の過去に取得されたX線写真、X線CTイメージ、MRIイメージなどとすることができる。また対象イメージ42は、基準イメージ40に対して位置合わせ(registration)すべきイメージとして定義される。対象イメージ42は、例えば基準イメージ40を取得した後に撮影または記録されたX線写真、X線CTイメージ、MRIイメージなどとすることができる。なお、本発明では、位置合わせするための画像イメージの種類や属性は、特に限定されるものではない。
【0025】
また、基準イメージ40および対象イメージ42は、2次元画像イメージを単位スライスとして、複数のスライスが特定深さの断面を与える3次元画像として作成されている。基準イメージ40および対象イメージ42は、ハードディスク装置、CD−ROM、CR−RW、DVD、MOなどの記憶装置30に格納され、処理要求に応答してメイン・メモリ14に読出され、データ処理装置10による処理に使用される。
【0026】
データ処理装置10は、複数のダウン・サンプル処理部を含んで構成されており、ダウン・サンプル処理部44〜48およびダウン・サンプル処理部58〜62は、処理するべき画像イメージの画素を抽出してソフトウェア的に低解像度化する、ダウン・サンプル処理手段として機能する。また、各ダウン・サンプル処理部は、基準イメージ40および対象イメージ42の両方について、対応した低解像度の画像イメージを与えるように、同一の処理ステージについて同一の解像度比でダウン・サンプルを実行する。
【0027】
各処理ステージでのダウン・サイズ処理部は、上述したように同様の処理を行うため、以下、基準イメージ40をダウンサイジングするためのダウン・サンプル処理部44〜48について説明する。図2に説明するように、オリジナルの解像度の基準イメージ40は、X×Y画素を有しているものとする。ダウン・サンプル処理部44は、オリジナルの画素数を1/4とした基準イメージを作成する。ダウン・サンプル処理部46は、ダウン・サンプル処理部44が作成した低解像度画像をオリジナルの解像度に対して1/16に圧縮した基準イメージを作成する。さらに、ダウン・サンプル処理部48は、ダウン・サンプル処理部46が作成した低解像度画像を、オリジナルの解像度の1/64に圧縮した基準イメージを作成する。
【0028】
この結果、図示した実施形態では、データ処理装置10は、1(オリジナルの解像度)→1/4→1/16→1/64の解像度列の、低解像度化した画像イメージが作成される。これらの画像イメージの画素データは、一旦メイン・メモリ14に書込まれる。メイン・メモリ14に書込まれた各画素データは、以下に説明する各レジストレータに読込まれ、レジストレーション処理のために使用される。なお、本発明では、ダウン・サンプル処理部を実装する数は、特に限定されるものではない。同様に、対象イメージ42についても同様の、または同一のダウン・サンプル処理部58〜62を適用して、それぞれ基準イメージ40と同一の解像度比で低解像度画像を作成し、メイン・メモリ14に格納する。ダウン・サンプル処理部58〜62を、ダウン・サンプル処理部44〜48と別に実装する場合には、基準イメージ40と対象イメージ42のダウンサイジング処理を並列処理として実行できるので、処理効率的には好ましい。
【0029】
本実施形態では、画素データのサンプリング数を、オリジナルの解像度の総画素数の1/100とする。このため、低解像度化して解像度が1/4、1/16、1/64となった場合、それぞれの解像度の画像イメージについてサンプリング割合を、4/100、16/100、64/100としてサンプリング数を保持するようにサンプリング割合を高めて処理を実行する。すなわち、低解像度の画像イメージについては、サンプリング割合を高め、高解像度の画像イメージについてはサンプリング割合を低めて、処理対象画素数を保持させて処理を実行させる。なお、サンプリング数は、各処理ステージで、処理効率および特定の用途に応じて適切に変更することができる。作成した低解像度化された画像イメージの系列に対し、データ処理装置10は、順次低解像度の画像イメージからイメージ・レジストレーション処理を開始する。データ処理装置10は、処理するべき画像イメージのサンプリング割合に対応して、異なるサンプリング処理を適用し、さらに異なる相互情報量計算方法を適用する。
【0030】
また、データ処理装置10は、レジストレーション処理の各処理ステージに対して第1ステージを除き、1ステージ低いレジストレーション処理で得られた線形変換パラメータをその初期設定パラメータとして設定する。このため、アフィン変換パラメータなどの線形変換パラメータは、そのレジストレーション精度が順次的に向上してゆく。このため、低解像度化された画像イメージの処理に対して効率的なレジストレーション方法を適用する。また、データ処理装置10は、パラメータ精度が改善された所定のサンプリング割合の処理ステージで、相互情報量を計算させる対象イメージの画素を投機的に圧縮するレジストレーション方法を使用することができる。このステージでは、投機的に画素データを取得して圧縮する処理を行っても、線形変換パラメータのレジストレーション精度が高められているので、ローカル・メモリ18内のデータについてミスヒットを低く抑えることができ、また仮にミスヒットした場合にでも、圧縮した対象イメージの画素データから外挿することで対応することができる。また、本実施形態では、他の投機的予測を行って、スパース・アクセスを排除することもできる。さらに、本実施形態では、予測値について誤差規制値を設定し、誤差が誤差規制値を超える場合には精度を重視してメイン・メモリ14にアクセスさせることもできる。なお、第1ステージについては、入出力装置36または記憶装置34などに格納した値から初期設定の値を取得することができる。
【0031】
さらに図2に示したデータ処理装置10について説明する。データ処理装置10は、画像イメージの解像度に対応する位置決め手段として機能するレジストレータ50〜56を含んでいる。また、レジストレータ50〜56は、各処理ステージに対応するようにR0〜R3として序列化されている。レジストレータ50〜56は、ソフトウェア的に構成されるレジストレータ手段として機能する。図2に示した特定の実装では、レジストレータ50〜56のうち、レジストレータ50およびレジストレータ52は、それぞれ低解像度の画像イメージに対してブロック・サンプリングを適用する低解像度レジストレータとして構成され、第1レジストレータ手段を提供する。
【0032】
また、レジストレータ54およびレジストレータ56は、高解像度の画像イメージを処理する高解像度レジストレータとして、それぞれ第2レジストレ−タ手段を提供する。高解像度レジストレータ54、56は、ランダム・サンプリングおよび投機的手法を使用して、レジストレーション処理を行う。また、レジストレータ52からレジストレータ54には、順次1ステージ下のレジストレータで決定された線形変換パラメータが初期設定パラメータとして設定される。また、最終ステージのレジストレータ56は、データ処理装置10が最終的にレジストレーションに使用するための線形変換パラメータ64を出力する。
【0033】
なお、本発明では、低解像度レジストレータおよび高解像度レジストレータの数および組み合わせについては特に制限はなく、特定の用途により、適宜増減でき、またそれらの組み合わせも適宜設定することができる。
【0034】
図3は、データ処理装置10が実行する処理の実施形態のフローチャートを示す。図3に示す処理は、ステップS100から開始し、ステップS101で基準イメージと対象イメージとをダウン・サンプル処理部に入力し、解像度の異なる複数の画像イメージを作成し、メイン・メモリ14に書込む。ステップS102では、最も低い解像度の画像イメージを使用し、最下位ステージのレジストレータ50を起動して線形変換パラメータの粗近似値を計算させる。ステップS103では、パラメータの粗近似値を1ステージ解像度の高い処理を実行するレジストレータの初期設定値として画像イメージの相互情報量を計算し、線形変換パラメータを決定する。
【0035】
さらにステップS104では、順次高い解像度の画像イメージについて相互情報量を前ステージで計算された線形変換パラメータを使用して計算し、線形変換パラメータをさらに更新し、線形変換パラメータのレジストレーション精度を向上させる。ステップS105では、次に処理する画像イメージのサンプリング割合が設定値以上であるか否かを判断する。ステップS105の判断でサンプリング割合が設定値以上であると判断された場合(yes)、ステップS107でブロック・サンプリングのみを使用したパラメータ更新を継続させる。また、サンプリング割合が設定値に達しないと判断された場合(no)には、ステップS106で、本発明の特定の実施形態では、ランダム・サンプリングと、画素データの投機的フェッチを使用したレジストレーション処理を実行する。
【0036】
ステップS108では、オリジナルの解像度の画像イメージを処理したか否かを判断する。ステップS108の判断の結果、オリジナルの解像度の画像イメージを処理したと判断した場合(yes)、その時点でのパラメータを出力パラメータとして登録する。また、ステップS108の判断で、未だオリジナルの解像度の画像イメージを処理していないと判断した場合(no)には、処理をステップS105に分岐させて、処理を継続させる。なお、オリジナルの解像度の画像イメージを処理したことの判断については、処理対象の画像イメージの画素数や、高解像度レジストレータの処理ステージ数をカウントしておき、最終ステージカウントを超えたときに、処理終了と判断することができる。
【0037】
なお、図3のステップS105の判断に使用する設定値は、特定の実装形態により異なる可能性があるが、特定の実施形態では、サンプリング割合で16/100とした(解像度的には、1/16に相当する。)。説明している実装形態では、サンプリング割合が16/100よりも低い画像イメージ(すなわち、解像度が高い画像イメージの処理に対応する。)については、ブロック・サンプリングを使用したレジストレーション処理よりもランダム・サンプリングおよび投機的フェッチを使用するレジストレーション処理の方が処理効率が高い結果が得られたためである。ただし、本実施形態の設定値は、特定の実装形式などにより適宜最適化するように設定することができる。
【0038】
図4は、本実施形態に使用する低解像度レジストレータ50での機能ブロックの実施形態を示す。低解像度レジストレータ50は、ブロック・サンプル部70と、相互情報量計算部72と、最適化処理部74とを含んで構成される。ブロック・サンプル部70は、画像イメージの複数のスライスにブロックを割当て、選択したブロックに含まれる画素データ全体をメイン・メモリ14からローカル・メモリ18にフェッチする。その後、ブロック・サンプル部70は、ブロックに割当てられた画素データをランダムにサンプリングしてメイン・メモリ14に登録する。さらに、ブロック・サンプル部70は、ブロックのコーナを占めるコーナ画素(特定の実施形態では8サンプル)の3次元座標を求め、ランダムにサンプリングされた画素データに結合させてブロック・データとして、メイン・メモリ14に格納する。
【0039】
格納したブロック・データは、相互情報量計算部72の処理に使用のために再度ローカル・メモリ18にフェッチされる。相互情報量計算部72は、ブロック・データを、メイン・メモリ転送単位に連続してローカル・メモリ18にフェッチする。このとき、隣接する複数のブロックからブロック・グループを構成し、ブロック・グループ内のすべてのサンプル画素をフェッチすることもできる。さらに相互情報量計算部72は、線形変換パラメータの値を使用して同一の解像度の対象イメージのうち、ブロック(またはブロック・グループ)に対応するコーナの画素の3次元座標を決定してバウンディング・ボックスを決定する。この処理を実行するソフトウェア手段がバウンディング・ボックス取得手段を構成する。その後、相互情報量計算部72は、バウンディング・ボックスに含まれる対象イメージの画素データを、メイン・メモリ14からローカル・メモリ18に連続してフェッチする。本発明では、ブロック(またはブロック・グループ)のデータ・サイズを、ブロックに対する相互情報量の計算実行の間、メイン・メモリへのスパースなメモリ・アクセスを生じさせないサイズとして最適化する。ブロック・グループを使用する場合は、そのメモリ・サイズを、使用するローカル・メモリ18のサイズおよび計算中の線形変換パラメータの値などにより適宜動的にブロックの単位で最適化させることができる。
【0040】
相互情報量計算部72は、ブロック(またはブロック・グループ)に含まれる画素データとバウンディング・ボックスに含まれる対象イメージの画素データとを使用して、相互情報量を計算する。最適化処理部74は、計算されたブロックごとの相互情報量を使用して、線形変換パラメータを修正し、修正したパラメータを相互情報量計算部72に渡して相互情報量を最大化するように反復的に相互情報量の計算を実行する。最適化処理部74は、相互情報量がその時点で特定されているブロックとバウンディング・ボックスとの関係で最大化した時点あるいは、予め定められた反復数に達した時点で、処理を終了し、線形変換パラメータ76を次ステージのレジストレータに渡して次ステージの相互情報量計算のための初期パラメータに設定する。
【0041】
なお、本実施形態では、相互情報量計算部72および最適化処理部74に使用する定義式、パラメータ設定については、非特許文献1の開示にしたがって、初期設定する線形変換パラメータの設定を変更するのみで、そのまま実装することができる。なお、概略的に説明すると、相互情報量計算部72は、確率密度関数p(x)を、所謂Parzen予測値として計算し、アフィン変換などの線形変換パラメータを使用してParzenヒストグラムを計算する。このヒストグラムでParzen確率または周波数を計算し、相互情報量S(μ)を下記式(1)で与える。
【0042】
【数1】
なお、上記式中、lおよびκは、離散変数であり、LTおよびLRは、対象イメージおよび基準イメージの深さデータ(濃度階調のビット数に対応する。)である。μは、線形変換パラメータを示し、pが、Parzen確率を示し、pT、pRは、対象イメージおよび基準イメージの離散Parzen確率を示す。
【0043】
より詳細については、非特許文献1を参照されたい。本発明では、上記式(1)で示した相互情報量S(μ)を最大化させるように、線形変換パラメータμの値を逐次最適化処理を実行する。最適化処理部74は、上述した相互情報量を、テーラー展開し、S(μ)を最大化する線形変換パラメータを、出力するべき線形変換パラメータとして決定する。
【0044】
図5は、図4に示した低解像度レジストレータ50が実行する処理の実施形態のフローチャートである。図5に示した処理は、ステップS200から開始し、ステップS201で基準イメージのブロック・データの画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。ステップS202では、ローカル・メモリ18にフェッチした画素データをランダムにサンプリングし、画素データの深さデータ(例えば、16ビットの白黒の階調レベル値)および位置データを取得する。
【0045】
ステップS203では、取得した画素の深さデータおよび位置データとブロックのコーナ画素の3次元座標データをブロック・データとして、メイン・メモリ14に、相互情報量の計算のために書込む。ステップS204では、処理している解像度の基準イメージについてのブロックすべてについて処理が終了したか否かを判断し、終了していなければ(no)処理をステップS201に戻す。また、すべてのブロックについて終了した場合(yes)、処理をステップS205に分岐させ、ローカル・メモリ18をクリアして、メイン・メモリ14に書込んだブロック・データを、相互情報量の計算のためローカル・メモリ18にフェッチする。なお、本発明の特定の実施形態では、処理している画像イメージの処理効率の観点から、単一のブロック・データを使用して相互情報量の計算を実行することもできるし、複数の隣接するブロック・データからブロック・グループを形成させ、ブロック・グループ内すべてのブロック・データをローカル・メモリ18にフェッチさせることもできる。
【0046】
ステップS206では、ブロック・データのコーナ画素について線形変換を実行し、対象イメージの画素データのうち、線形変換で基準イメージのコーナに対応する画素を特定し、バウンディング・ボックスとして定義する。その後、ステップS207でバウンディング・ボックスに含まれる対象イメージの画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。すなわち、低解像度レジストレータ50では、対象イメージの処理対象の画素データについてはまったく投機的予測を使用しないで、ローカル・メモリ18にフェッチする。
【0047】
ステップS208では、ローカル・メモリ18内のブロック・データとバウンディング・ボックス内の画素データとを使用して相互情報量を計算する。ステップS208の処理では、相互情報量の計算時にメイン・メモリ14に格納された画素単位ではなく、ローカル・メモリ18に格納された画素データについて連続アクセスすることができるので、CPU12の処理効率は向上する。ブロックについて計算された相互情報量は、メイン・メモリ14に格納され、積算される。
【0048】
その後、ステップS209すべてのブロック・データについて処理を終了したかを判断する。処理が終了していない場合(no)には、処理をステップS205に分岐させて次のブロック・データについての処理を繰り返し実行する。ステップS209ですべてのブロック・データについて処理が終了した場合(yes)には、ステップS210で最適化処理部74を起動して、相互情報量が最大化するように線形変換パラメータを修正し、ステップS211で、相互情報量が最大化したか、または設定した反復回数に達したかを判断する。相互情報量が最大化したかまたは設定した反復回数に達した場合(yes)場合、処理をステップS212分岐させて処理を終了させる。また、相互情報量が最大化したかまたは設定した反復回数に達しない場合(no)、ステップS205に処理を分岐させて、更新した線形変換パラメータを使用して新たなバウンディング・ボックスを計算しなおして繰り返し計算を実行させる。
【0049】
この理由は、低解像度では未だ、線形パラメータの精度が高くないため、更新された値を使用してバウンディング・ボックスを修正してゆくことが好ましいためである。なお、後述する高解像度レジストレータでは、低解像度レジストレータによる上述の処理によって、精度の高い線形変換パラメータが与えられるため、「初期値」をもって最新値の予測値として使用することが可能であるなお、図5で示した低解像度レジストレータ50の決定した線形変換パラメータは、次ステージの処理を実行する低解像度レジストレータ52の線形変換パラメータの初期値として渡される。
【0050】
図6は、本発明で使用する3次元画像のデータ構造の実施形態を示す。図6に示した3次元画像のデータ構造は、基準イメージおよび対象イメージについて同様の構成とされる。図6に示すように3次元画像80は、患部などを2次元画像として登録したスライス82が、患部の深さ方向に複数X−Y方向に位置決めされたデータ構造として与えられる。本実施形態では、ダウン・サンプル処理部により低解像度化した各スライスに対してブロック84を割当てる。ブロック84には、複数の画素データが含まれている。図6中、代表してブロック84のみをハッチングして示す。
【0051】
本実施形態では、ブロック84を処理する場合、ブロック84に含まれるすべての画素の画素データを、ローカル・メモリ18にフェッチする。このため、CPU12は、処理のために使用する画素データに効率的にアクセスでき、相関情報の計算を効率化することが可能となる。以後、ブロック84内の画素データがサンプリングされる。このときのサンプリング割合は、解像度に対応したサンプリング割合とされ、低解像度の基準イメージについては高いサンプリング割合が適用される。また、ブロックのコーナを占めるコーナ画素は、ランダムなサンプリングの他にサンプリングされて、バウンディング・ボックスを規定するために使用される。また、ブロックのデータ・サイズは、所定のサンプリング割合でのサンプリングにより、ローカル・メモリ18にブロック・データまたはブロック・グループのデータと、対象イメージのデータとに対して相互情報量の計算の間、連続的にアクセスできように最適化されている。
【0052】
図7は、ブロック84に登録された画素データを、ローカル・メモリ18の特定のページにフェッチする実施形態を示す。図7に示すように、一旦メイン・メモリ14に書込まれたブロック84内の全画素データは、ローカル・メモリ18にフェッチされる。ローカル・メモリ18は、キャッシュ・メモリと同様にライン単位でのメイン・メモリ14からのフェッチが最適化されていて、ライン単位でのデータ転送を可能としている。さらに、ブロック・サンプル部70は、ローカル・メモリ18内にフェッチされた画素データをランダムにサンプリングし、コーナを占める画素のコーナ画素86の3次元座標を、ランダムにサンプルした画素データに追加し、連続アクセスが可能となるように圧縮してブロック・データとして作成し、再度メイン・メモリ14に書込む。
【0053】
その後、相互情報量計算部72は、メイン・メモリ14からコーナ画素86の3次元座標を含むブロック・データを、ローカル・メモリ18の領域88にフェッチする。さらに、相互情報量計算部72は、対象イメージのバウンディング・ボックスに含まれる画素データについてもローカル・メモリ18の領域90に読込みこませ、画素データへのスパース・アクセスを生じさせずに、相互情報量の計算を実行させる。なお、ローカル・メモリ18には複数の隣接するブロックからなるブロック・グループをフェッチでき、ローカル・メモリのサイズ、線形変換パラメータの値に応じてブロック・グループ内のブロックの個数を動的に最適化する。
【0054】
図8は、基準イメージのブロック84の2つから構成されるブロック・グループとバウンディング・ボックス92との線形変換関係を示した図である。基準イメージのブロック84は、複数の画素データを含んで構成されている。また、ブロック84のコーナ画素86の値は、ランダム・サンプリングにより抽出される画素データ96とは別にサンプリングされ、ブロック・データとして一旦メイン・メモリ14に書込まれる。コーナ画素86の3次元座標は、相互情報量計算部72により、線形変換パラメータの値が適用され、対象イメージで対応するべきコーナ画素94の3次元座標を与えて対象イメージ上での対応するバウンディング・ボックス92を定義する。また、図8には、ブロック84が2つ示されていて、それぞれのコーナ画素86からの、対象イメージへの線形写像が符号Pで示されている。バウンディング・ボックス92は、図8に示されるように、隣接した2つのブロックからなるブロック・グループの8つのコーナ画素86により規定される。なお、図8では、基準イメージ40に帰属されるブロック84の3D画像でのX、Y、Z方向は、図6に示したオリエンテーションとして設定されている。
【0055】
バウンディング・ボックス92は、下記の処理により定義される矩形体である。(1)基準イメージのコーナ画素86を線形変換Pして対象イメージの対応する8つのコーナ画素94を特定する。(2)その後、対象イメージのコーナ画素94の(Mx、My、Mz)の8つの値の中から各座標値の最大値、最小値を選択して、(Mxmax、Mymax、Mzmax)および(Mxmim、Mymin、Mzmin)を対角線として定義する。(3)そして当該対角線を有し、対象イメージを定義する座標軸Bx、By、Bzに平行な辺を定義することにより形成される矩形空間である。上述したように定義されたバウンディング・ボックス92は、Axis-aligned bounding boxとしても参照される。なお、バウンディング・ボックス92を、座標軸Bx、By、Bzに平行な辺を有する矩形体として生成するのは、バウンディング・ボックス92に含まれる画素のアドレスの計算を高速に行えるようにするためである。
【0056】
その後、さらに相互情報量計算部72は、バウンディング・ボックス92に含まれる画素データ98を識別し、識別された画素データをメイン・メモリ14からローカル・メモリ18にフェッチする。相互情報量計算部72は、以後、ブロックと、バウンディング・ボックスとについての画素データにつき、相互情報量の計算を、メイン・メモリ14へのスパース・アクセスを行うことなく、ローカル・メモリ18へのデータ・アクセスのみで実行する。また、複数のブロックからブロック・グループを形成する場合、メイン・メモリからのフェッチの効率を最大にし、かつブロック・グループのサンプル画素と参照イメージのバウンディング・ボックスがローカル・メモリに納まるようにブロック・グループのサイズを動的に決定できる。
【0057】
低解像度レジストレータ50、52による処理が終了した後、本実施形態では、第2レジストレータとして機能する高解像度レジストレータ54、56によるレジストレーションが実行される。図9は、高解像度レジストレータ54の機能ブロックの実施形態を示す。高解像度レジストレータ54は、高解像度レジストレータ56と同様の構成を使用しているので、高解像度レジストレータ54の構成について詳細に説明する。高解像度レジストレータ54は、ランダム・サンプル部100と、対象イメージ予測部102とを含んでいる。ランダム・サンプル部100は、指定された基準イメージの画素を、指定されるサンプリング割合となるようにサンプリングし、サンプリングしたデータにブロックを割当て、メイン・メモリ14に圧縮して連続アクセスを可能とするように書込みを実行する。
【0058】
対象イメージ予測部102は、ランダムにサンプリングされた画素データのブロックに対して線形変換パラメータの初期値を使用して、データ・アクセスが必要となる対象イメージの画素データを予測し、決定する。さらに、対象イメージ予測部102は、決定された対象イメージの画素データに対して基準イメージに対応するブロックを割当て、圧縮して連続アクセスを可能とするようにメイン・メモリ14に書込みを実行する。この段階では、対象イメージ予測部102は、メイン・メモリ14に格納された画素データに対してスパースなアクセスを実行する。
【0059】
高解像度レジストレータ54は、さらに相互情報量計算部104と最適化処理部106とを含んでいる。相互情報量計算部104は、ランダム・サンプル部100および対象イメージ予測部102がそれぞれ圧縮してメイン・メモリ14に書込んだ画素データを、ローカル・メモリ18にそれぞれフェッチする。その後、相互情報量計算部104は、相互情報量の計算を、ローカル・メモリ18にデータ・アクセスするだけで、指定されたブロックの相互情報量の計算を実行できる。この点で、本実施形態の相互情報量計算部104および最適化処理部106は、スパース・アクセスを行うことなく、効率的なデータ・アクセスを実行することができる。なお、相互情報量計算部104と最適化処理部106の構成については、低解像度レジストレータ50、52と同様に構成する。
【0060】
また、相互情報量計算部104は、線形変換パラメータについて予めフェッチしていない画素データの計算が必要であると判断した場合、予測誤差が小さい場合には、当該画素データをメイン・メモリにアクセスして改めてフェッチするのではなく、対象データの近傍の画素データから外挿してその値を計算する。高解像度レジストレータでは、すでに低解像度レジストレータで精度が高められた線形変換パラメータを使用するので、相互情報量に重大な影響を与える誤差を生じさせることはない。その後、相互情報量計算処理部104は、所定のブロックの処理を終了すると、次のブロックの処理を実行し、ブロックごとに相互情報量を計算する。
【0061】
最適化処理部106は、線形変換パラメータを使用して相互情報量計算部104が計算した結果に対して、線形変換パラメータを修正して、修正した線形変換パラメータを相互情報量計算部104に戻し、再度、相互情報量の計算を実行させる。最適化処理部106は、ブロックごとに計算される相互情報量を総和して、相互情報量の総和が最大化するように、線形変換パラメータ108を決定し、出力させる。
【0062】
その後、さらに次ステージの高解像度レジストレータがある場合には、決定した線形変換パラメータを次ステージの高解像度レジストレータの線形変換パラメータの初期値として設定し、処理を終了する。
【0063】
図10は、高解像度レジストレータ54が実行する処理の実施形態のフローチャートを示す。図10に示す処理は、ステップS300から開始し、ステップS301で基準イメージの画素データをランダム・サンプリングする。ステップS302では、サンプリングした画素データにブロックを割当て、圧縮してメイン・メモリ14に書込む。ステップS303では、線形変換パラメータの初期値からアクセスする必要のある対象イメージの画素データを取得して圧縮し、基準イメージのブロックに対応するようにブロック化してメイン・メモリ14に書込む。
【0064】
ステップS304では、指定した基準イメージのブロックと対応する対象イメージのブロックとを、メイン・メモリ14からローカル・メモリにそれぞれフェッチする。続いてステップS305では、対象イメージについて、新たな画素データが必要であるか否かを判断する。ステップS305の判断で、新たな画素データが必要であると判断された場合(yes)、ステップS306で予測誤差が設定した誤差規制値よりも小さいか否かを判断する。ステップS306の判断の結果、予測誤差が小さいと判断された場合(yes)、処理をステップS308に分岐させる。ステップS308では、すでにフェッチしてある対象イメージの画素データを外挿して画素データの有するべき位置データおよび深さデータなどの近似値を計算し、計算に使用すべき画素データを予測して、ポイントAから図12に示す処理に移す。また、ステップS306の判断で予測誤差が小さくないと判断された場合(no)、処理をステップS307に分岐させ対象イメージの該当するデータをメイン・メモリ14からローカル・メモリ18にフェッチして、ポイントAから図12に示す処理に移し、精度を優先させる処理を行う。
【0065】
図11は、予測誤差を画素単位で判断する場合の他の実施形態を示す。図11に示すように、基準イメージ40のブロック84の画素データ96が、対象イメージ42の画素データ98を一つのコーナとする2×2×2画素の領域内に線形写像されると予測されるとする。画素データ96に対してその時点での線形変換パラメータを適用して計算される線形写像Pが予測された2×2×2画素領域に充分近い場合(ニアミス)に、投機的予測値を使用して図10のステップS308の判断を実行させる。
【0066】
一方、線形写像Pが2×2×2画素領域に充分近くない場合(ファーミス)、メイン・メモリ14から新たに画素データをフェッチするステップS307の処理を実行させる。本実施形態では、処理対象の画素単位でニアミス/ヒット/ファーミスの判断を行うことにより、より局所的な予測の一致性をフェッチに反映させることができる。一方、ステップS305で、新たな画素データが必要ないと判断された場合(no)、処理をポイントAから図12に示す処理に分岐させる。
【0067】
図12には、図10の処理のポイントA以降の処理を示したフローチャートである。高解像度レジストレータは、ポイントAから図12の処理に入り、ステップS309で画素データを使用して相互情報量の計算を実行する。その後、ステップS310でブロック内のすべてのサンプルについて計算終了したか否かを判断する。ステップS310の判断で、ブロック内のすべてのサンプルについて計算が終了していないと判断された場合(no)、処理をポイントBから図10のステップS305に処理を分岐させ、次のサンプルについて新たな画素データが必要か否かを判断させる。
【0068】
また、ステップS310の判断で、ブロック内のすべてのサンプルについて計算が終了したと判断した場合(yes)処理をステップS311に分岐させる。ステップS311では、すべてのブロックについて計算終了したか否かを判断し、すべてのブロックについて計算が終了したと判断された場合(yes)、ステップS312で相互情報量を最大化させるように線形変換パラメータを決定する。また、ステップS311の判断で、まだ計算するべきブロックが残されている場合(no)、処理をポイントCからステップS304へと分岐させて、処理を反復させる。
【0069】
ステップS313では、相互情報量が最大化したかまたは反復回数が設定値に達したかを判断する。ステップS313の判断で相互情報量が最大化したかまたは反復回数が設定値に達したと判断された場合(yes)、処理をステップS314に分岐させて処理を終了させる。また、ステップS313の判断で、相互情報量が最大化したかまたは反復回数が設定値に達していないと判断された場合(no)、処理をポイントCからステップS304に分岐させて、相互情報量が最大化するか、反復カウンタが所定の反復回数の設定値に達するまで継続させる。
【0070】
以上の構成を使用して本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較を、スプレッドシードを使用したシミュレータで検討した。予測性能は、CELL BE Processor(3.2GHz、メイン・メモリ=1GB、各SPEのローカル・メモリ=256KB)を使用し、インターナショナル・ビジネス・マシーンズ・コーポレーション社製のブレードセンタ(登録商標)QS20に実装したものとし、8個のSPEを使用するものとし、スプレッドシートを使用して1画素当たりに要する計算時間をシミュレーションした。
【0071】
また、比較のため、サンプリング比を1/100とした従来のシーケンシャル逐次最適化法(非特許文献1)を使用し、相互情報量計算に対し、ローカル・メモリにフェッチできるブロック単位で処理データセットを作成せず、メイン・メモリへのスパース・アクセスを行ないながら計算を実行する従来の逐次最適化法についてもシミュレーションした。その結果を図13および図14に示す。対象とした3D画像は、1スライスあたり、256×256画素とした。
【0072】
シミュレーションは、サンプリング割合64/100、16/100、4/100、1/100に対する低解像度レジストレータについてのシミュレーション((a)〜(d))、高解像度レジストレータについてのシミュレーション(e)とした。また、比較例(f)については、従来手法(非特許文献1)を使用し、シミュレーション(f)とした。シミュレーションは、各レジストレータが1ステージの処理を実行するものとして1画素当たりの相互情報量の相互情報量計算に要するクロック時間をシミュレーションした。
【0073】
図13に示されるように、ブロック・サンプリングを行う低解像度レジストレータでは、サンプリング割合が高くなればなるほど(解像度が低くなることに対応する)実行時間が短縮され、サンプリング割合が低くなればなるほど(解像度が高くなることに対応する)、実行時間が増加した。
【0074】
この理由は、サンプリング割合(計算に使用するデータのうちサンプリングされる割合)が低い場合には不要な画素データを、ブロックとしてローカル・メモリ18にフェッチすることになり、ブロック・サンプリングの効果は小さくなるためである。このため、低解像度ではブロック・サンプリング法を使用する第1レジストレータを使用し、高解像度では、第2レジストレータを使用して精度の高められた線形変換パラメータを使用した投機的予測を併用するランダム・ダンプリングを使用して実装することが好ましいことが示された。
【0075】
また、図13に示されるように、本発明の各レジストレータは、相互情報量の計算処理時間が従来手法に比較にして充分に計算速度が向上されていることが示されている。
【0076】
図14には、従来の逐次最適化法を使用するレジストレータの総実行時間と本発明によるレジストレータの総実行時間とを、それぞれの計算時間の逆数を比として本発明の効率を比較した。シミュレーションによる比較の結果、本発明によりメイン・メモリへのスパース・アクセスを改善することに対応して、従来法に比較して、本発明の方法を使用することで約3倍程度、計算時間が短縮されることが示された。
【0077】
また、本発明のブロック・サンプリングの代わりに、ブロック分割することなく乱数列を発生させ、ソートされた乱数列を用いて全画素データについてサンプリングし、ブロックごとに処理することでも、同様の効果を得ることも可能である。この実施形態の場合、ソフトウェア資源として、ソート処理を実行するモジュールの追加が必要となる。また、当該実施形態で、画像処理を並列処理を使用して実行させる場合、ソート処理を追加したことにともない、プロセス間通信が必要になる。本発明の好ましい実施形態では、プロセス間通信も必要とされず、より並列処理性を向上できる。また、前述のブロック・グループを構成し、そのサイズを動的に最適化する場合と同等の効果を得るためには、線形変換パラメータを計算しなおすたびにソート処理が必要であり、そのための実行時間のオーバーヘッドが発生する。
【0078】
また、本発明の上記機能は、アセンブラ、C、C++などのレガシープログラミング言語やオブジェクト指向ブログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布することができる。
【0079】
これまで本発明を図面に示した実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【0080】
【図1】データ処理装置のハードウェア構成の実施形態を示した図。
【図2】データ処理装置の機能ブロックの実施形態を示した図。
【図3】データ処理装置が実行する処理の実施形態のフローチャート。
【図4】低解像度レジストレータの機能ブロックの実施形態を示した図。
【図5】低解像度レジストレータの処理の実施形態のフローチャート。
【図6】3次元画像のデータ構造の実施形態を示した図。
【図7】ローカル・メモリでの画素データのマッピングの実施形態を示した図。
【図8】ブロック内の画素データをバウンディング・ボックスに対応づける線形変換の実施形態を示した図。
【図9】高解像度レジストレータの機能ブロックの実施形態を示した図。
【図10】高解像度レジストレータの処理の実施形態のフローチャート。
【図11】予測誤差を画素単位で判断する場合の他の実施形態を示した図。
【図12】図10の処理のポイントA以降の処理のフローチャート。
【図13】本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較結果を示した図。
【図14】本発明のレジストレータと、従来処理を使用するレジストレータとの性能比較結果を示した図。
【符号の説明】
【0081】
10…データ処理装置、12…中央処理装置(CPU)、14…メイン・メモリ、16…ユニット・プロセッサ、18…ローカル・メモリ、20…DMA、22…システム・バス、24…グラフィックス・ドライバ、26…ネットワーク・デバイス(NIC)、28…ディスプレイ装置、30…I/Oバス・ブリッジ、32…I/Oバス、34…記憶装置、36…入出力装置、40…基準イメージ、42…対象イメージ、44〜48…ダウン・サンプル処理部、50〜56…レジストレータ、58〜62…ダウン・サンプル処理部、64…線形変換パラメータ、70…ブロック・サンプル部、72…相互情報量計算部、74…最適化処理部、76…線形変換パラメータ、80…3次元画像、82…スライス、84…ブロック、86…コーナ画素、88…領域、90…領域、92…バウンディング・ボックス、94…コーナ画素、96…画素データ、98…画素データ、100…ランダム・サンプル部、102…対象イメージ予測部、104…相互情報量計算部、106…最適化処理部、108…線形変換パラメータ、P…線形写像
【特許請求の範囲】
【請求項1】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用した位置合わせを行うデータ処理装置であって、前記データ処理装置は、
前記基準イメージの解像度を逐次的に低解像度化するダウン・サンプル手段と、
前記ダウン・サンプル手段により低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力する第1レジストレータ手段と、
前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し、それぞれ1ステージ高い解像度を有する前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない前記線形変換パラメータのレジストレーション精度を更新する第2レジストレータ手段と
前記低解像度化された基準イメージのサンプリング割合が設定値以上の場合には、前記第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、前記第2レジストレータ手段を使用してレジストレーションを実行する手段と
を備え、前記第1レジストレータ手段および前記第2レジストレータ手段は、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリ上に格納し、ローカル・メモリにブロック単位でフェッチして前記相互情報量の計算を実行する
データ処理装置。
【請求項2】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングし、前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成してメイン・メモリに書込むブロック・サンプル手段と、
前記ブロック・サンプル手段が作成した前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを求めるバウンディング・ボックス取得手段と、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算する相互情報量計算手段と
前記相互情報量計算手段の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを計算する最適化処理手段
を含む請求項1に記載のデータ処理装置。
【請求項3】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むランダム・サンプル手段と、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに書込む対象イメージ予測手段と、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行する、相互情報量計算手段と
前記相互情報量計算手段の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを計算する最適化処理手段
を含む、請求項1に記載のデータ処理装置。
【請求項4】
前記バウンディング・ボックス取得手段は、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを作成し、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定する手段を含む、請求項2に記載のデータ処理装置。
【請求項5】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用して位置合わせをデータ処理装置に実行させるデータ処理方法であって、前記データ処理方法は、
ダウン・サンプル手段により前記基準イメージの解像度を逐次的に低解像度化するステップと、
前記ダウン・サンプル手段により前記低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力するステップと、
前記低解像度化された基準イメージのサンプリング割合が設定値以下か否かを判断するステップと、
前記サンプリング割合が前記設定値以上の場合には第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、第2レジストレータ手段を使用して、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリに格納し、ローカル・メモリにブロック単位でフェッチして、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを実行するステップと
を前記データ処理装置に実行させ、
前記第2レジストレータ手段は、前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない、前記線形変換パラメータのレジストレーション精度を更新する、データ処理方法。
【請求項6】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングして前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成しメイン・メモリに書込むステップと、
前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを定義するステップと、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算するステップと
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項5に記載のデータ処理方法。
【請求項7】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むステップと、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに予測して割当てるステップと、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項5に記載のデータ処理方法。
【請求項8】
前記バウンディング・ボックスを定義するステップは、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを形成するステップを含み、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定するステップを含む、請求項6に記載のデータ処理方法。
【請求項9】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用して位置合わせをデータ処理装置に実行させるデータ処理方法を実行させるコンピュータ実行可能なプログラムであって、前記プログラムは、
ダウン・サンプル手段により前記基準イメージの解像度を逐次的に低解像度化するステップと、
前記ダウン・サンプル手段により前記低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力するステップと、
前記低解像度化された基準イメージのサンプリング割合が設定値以上か否かを判断するステップと、
前記サンプリング割合が前記設定値以上の場合には第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、第2レジストレータ手段を使用して、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリに格納し、ローカル・メモリにブロック単位でフェッチして、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを実行するステップとを前記データ処理装置に実行させ、
前記第2レジストレータ手段は、前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない、前記線形変換パラメータのレジストレーション精度を更新する、コンピュータ実行可能なプログラム。
【請求項10】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングして前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成しメイン・メモリに格納するステップと、
前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素の3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを定義するステップと、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項9に記載のプログラム。
【請求項11】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むステップと、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに予測して割当てるステップと、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項9に記載のプログラム。
【請求項12】
前記バウンディング・ボックスを定義するステップは、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを形成するステップを含み、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定するステップを含む、請求項10に記載のプログラム。
【請求項1】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用した位置合わせを行うデータ処理装置であって、前記データ処理装置は、
前記基準イメージの解像度を逐次的に低解像度化するダウン・サンプル手段と、
前記ダウン・サンプル手段により低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力する第1レジストレータ手段と、
前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し、それぞれ1ステージ高い解像度を有する前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない前記線形変換パラメータのレジストレーション精度を更新する第2レジストレータ手段と
前記低解像度化された基準イメージのサンプリング割合が設定値以上の場合には、前記第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、前記第2レジストレータ手段を使用してレジストレーションを実行する手段と
を備え、前記第1レジストレータ手段および前記第2レジストレータ手段は、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリ上に格納し、ローカル・メモリにブロック単位でフェッチして前記相互情報量の計算を実行する
データ処理装置。
【請求項2】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングし、前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成してメイン・メモリに書込むブロック・サンプル手段と、
前記ブロック・サンプル手段が作成した前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを求めるバウンディング・ボックス取得手段と、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算する相互情報量計算手段と
前記相互情報量計算手段の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを計算する最適化処理手段
を含む請求項1に記載のデータ処理装置。
【請求項3】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むランダム・サンプル手段と、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに書込む対象イメージ予測手段と、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行する、相互情報量計算手段と
前記相互情報量計算手段の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを計算する最適化処理手段
を含む、請求項1に記載のデータ処理装置。
【請求項4】
前記バウンディング・ボックス取得手段は、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを作成し、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定する手段を含む、請求項2に記載のデータ処理装置。
【請求項5】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用して位置合わせをデータ処理装置に実行させるデータ処理方法であって、前記データ処理方法は、
ダウン・サンプル手段により前記基準イメージの解像度を逐次的に低解像度化するステップと、
前記ダウン・サンプル手段により前記低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力するステップと、
前記低解像度化された基準イメージのサンプリング割合が設定値以下か否かを判断するステップと、
前記サンプリング割合が前記設定値以上の場合には第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、第2レジストレータ手段を使用して、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリに格納し、ローカル・メモリにブロック単位でフェッチして、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを実行するステップと
を前記データ処理装置に実行させ、
前記第2レジストレータ手段は、前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない、前記線形変換パラメータのレジストレーション精度を更新する、データ処理方法。
【請求項6】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングして前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成しメイン・メモリに書込むステップと、
前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを定義するステップと、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算するステップと
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項5に記載のデータ処理方法。
【請求項7】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むステップと、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに予測して割当てるステップと、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項5に記載のデータ処理方法。
【請求項8】
前記バウンディング・ボックスを定義するステップは、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを形成するステップを含み、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定するステップを含む、請求項6に記載のデータ処理方法。
【請求項9】
3次元画像の基準イメージと3次元画像の対象イメージとの間の相互情報量を使用して位置合わせをデータ処理装置に実行させるデータ処理方法を実行させるコンピュータ実行可能なプログラムであって、前記プログラムは、
ダウン・サンプル手段により前記基準イメージの解像度を逐次的に低解像度化するステップと、
前記ダウン・サンプル手段により前記低解像度化された基準イメージと、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを行ない、レジストレーションのための線形変換パラメータを出力するステップと、
前記低解像度化された基準イメージのサンプリング割合が設定値以上か否かを判断するステップと、
前記サンプリング割合が前記設定値以上の場合には第1レジストレータ手段を使用し、前記サンプリング割合が前記設定値に達しない場合には、第2レジストレータ手段を使用して、前記相互情報量の計算に使用する前記基準イメージの画素データおよび前記対象イメージの画素データのセットをブロック単位で連続アクセスできるようにメイン・メモリに格納し、ローカル・メモリにブロック単位でフェッチして、前記低解像度化された基準イメージと同じく低解像度化された対象イメージとの間のレジストレーションを実行するステップとを前記データ処理装置に実行させ、
前記第2レジストレータ手段は、前記第1レジストレータ手段が出力した前記線形変換パラメータを初期値として使用し前記低解像度化された基準イメージおよび前記低解像度化された対象イメージのレジストレーションを行ない、前記線形変換パラメータのレジストレーション精度を更新する、コンピュータ実行可能なプログラム。
【請求項10】
前記第1レジストレータ手段は、
前記低解像度化された基準イメージにブロックを割当て、前記ブロックに含まれる画素データ全部を前記ローカル・メモリにフェッチし、前記画素データをランダムにサンプリングして前記ブロックのコーナを占めるコーナ画素の3次元座標を追加してブロック・データを作成しメイン・メモリに格納するステップと、
前記ブロック・データを前記ローカル・メモリにフェッチし、前記ブロック・データを使用し、前記ブロック・データの前記コーナ画素の3次元座標に対して前記線形変換パラメータを適用して前記対象イメージのバウンディング・ボックスを定義するステップと、
前記バウンディング・ボックスに含まれる画素データを前記ローカル・メモリにフェッチして、前記ローカル・メモリ上のブロック・データとバウンディング・ボックスへのアクセスにより相互情報量を計算するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項9に記載のプログラム。
【請求項11】
前記第2レジストレータ手段は、
前記低解像度化された基準イメージの画素データをランダムにサンプリングし、ブロックを割当て前記メイン・メモリに書込むステップと、
前記ランダムにサンプリングされた前記画素データに対して前記線形変換パラメータの初期値を適用し、アクセスする前記対象イメージの画素データを決定し対応するブロックを割当てて前記メイン・メモリに予測して割当てるステップと、
前記メイン・メモリから前記ローカル・メモリへと、前記基準イメージおよび前記対象イメージの前記各画素データをフェッチして前記相互情報量の計算を実行するステップと、
前記相互情報量の計算結果を受取り、前記相互情報量を最大化させる前記線形変換パラメータを決定するステップと
を実行する、請求項9に記載のプログラム。
【請求項12】
前記バウンディング・ボックスを定義するステップは、空間的に隣接する前記ブロック・データを結合してブロック・グループを作成し、前記ブロック・グループに対応するバウンディング・ボックスを形成するステップを含み、
前記ブロック・グループと前記バウンディング・ボックスがローカル・メモリに収まりかつピクセル数が最大になるように前記ブロック・グループ内のブロック数を決定するステップを含む、請求項10に記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2008−142137(P2008−142137A)
【公開日】平成20年6月26日(2008.6.26)
【国際特許分類】
【出願番号】特願2006−330025(P2006−330025)
【出願日】平成18年12月6日(2006.12.6)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100110607
【弁理士】
【氏名又は名称】間山 進也
【Fターム(参考)】
【公開日】平成20年6月26日(2008.6.26)
【国際特許分類】
【出願日】平成18年12月6日(2006.12.6)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100110607
【弁理士】
【氏名又は名称】間山 進也
【Fターム(参考)】
[ Back to top ]