説明

大規模ボリュームデータの距離場生成方法とプログラム

【課題】RAMの容量を超える大規模ボリュームデータから距離場を不連続性が発生することなく全体として正しく生成することができる距離場生成方法とプログラムを提供する。
【解決手段】RAMとハードディスクを有するコンピュータを用いる。RAMの容量を超える二値化した大規模ボリュームデータをハードディスクに入力する入力ステップS1と、ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶するクラスタ分割ステップS2と、クラスタ毎に距離変換してクラスタ毎の距離場生成を行う局所距離変換ステップS3と、局所距離変換後に境界クラスタの距離値を隣接クラスタに伝播させるクラスタ間伝播ステップS4と、クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う距離場統合ステップS5と、統合されたボリュームデータ全体の距離場を出力する出力ステップS6とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、RAMの容量を超える大規模ボリュームデータから距離場を生成する方法とプログラムに関する。
【0002】
本発明において「距離場」とは、距離関数によって定義されたスカラ場の一種である。距離関数とは、ある位置における境界面又は境界線までの最短距離を意味する。また、「距離変換」とは、二値化されたボリュームデータから距離場を生成することをいう。距離場の定義及びその計算法に関しては、非特許文献1に詳細に記載されている。
【0003】
本発明は、近年のデジタルエンジニアリング分野の発展に動機付けられている。最近のX線CT装置は5000程度の高解像度で部品の測定ができる。
自動車メーカなどの工業分野では、測定したCT画像から得られたメッシュデータに対する需要が高い。得られたメッシュデータは、CADモデルとの比較などの品質保証の用途に用いられる。CT画像からメッシュに変換する際の一般的な手法に、二値化したCT画像から距離場を計算した後、中立面を抽出する方法がある。中立面は距離場の局所的最小によって定義される。
【0004】
距離場は、中立面の抽出,干渉判定,ソリッドモデリング,アニメーションなど多くの分野に応用できる。
距離場の計算は、コンピュータグラフィックスおよび画像処理分野において広く研究されている。最も単純な方法は、セルVに対して全ての境界セルとの距離値を求めて、その最小値を距離値とする方法である。得られた距離値は、高精度かつ大規模化も可能であるという利点がある一方で、計算時間が膨大となる。
nはセルの数、mは境界セルの数とすると、計算コストは、オーダがO(mn)となり現実的ではない。そのため、計算コストを抑えるような種々の方法が提案されている。
【0005】
距離場の計算は、陰関数曲面、パラメトリック曲面、ポリゴンなど様々な入力を対象とした方法が存在する。しかし、これらの方法は、ボクセル化によりボリュームデータに変換できることから、本発明では、二値化したボリュームデータを入力とした方法を対象とする。
【0006】
Chamfer距離変換(Chamfer Distance Transform:以下、CDT)は、距離テンプレート(distance template)を用いて距離場を計算する。距離テンプレートとは隣接するセル間の距離差を定義したものである。二値化画像が入力として与えられると、CDTは、距離場を2つの方法で計算する。一つはsweeping法である。これは、ボリュームの先端から末端まで走査しつつ距離値を伝播させた後、同様のことを末端から行うことで距離場を計算する手段であり、オーダがO(n)の計算コストを必要とする。
もう一つの方法はwavefront法で、距離値の伝播を境界から物体の内部に向けておこなう手法である。この方法はDijkstraの最短経路を求めるアルゴリズムに類似している。この手法の利点は、境界近辺の距離場のみを求めたい場合に有効である。この手法は、最小距離を持つセルの探索に優先順位付きキューを用いるため、計算コストはO(nlogn)である。以上2つの手法に共通する問題点として精度が低いという点がある。
【0007】
Vector距離変換(VDT)はCDTにおける精度の問題を改善した手法である。VDTは距離値の代わりに自分のセルから最近セルへの位置ベクトルとの差分を保持している。距離値は、最後に差分ベクトル推定し、最後に距離値を評価する。そのため、VDTは正確な距離値が計算できる。またVDTもsweepingとwavefrontによる計算方法が存在する。VDTにおけるsweepingスキームは、距離場を決定のために、8回の走査を必要とする。
【0008】
ポリゴンを入力した手法をボリュームモデルに適用することは可能である。例えば、GPUを用いた高速な距離場計算手法が提案されている。この手法は、GPUを用いた2次元ボロノイ図の計算アルゴリズムを基にしており、各スライスに距離場を計算している。その手法の貢献は、ボロノイ図構築時における前スライスとの相関性を利用することで、評価対象となるポリゴンの数を劇的に減らした点にある。この手法は、境界セルを母点とみなすことでボリュームデータに対しても適用可能である。しかし、ボリュームデータ自体が膨大なセル数を保持しているため、枝狩りができたとしても、それがボトルネックとなる。また、サイズはGPUのRAMに制限される。そもそも、この手法は衝突判定など、対話性のあるアプリケーションを対象としているため、本発明で対象としているような形状モデリングを目的とした大規模ボリュームデータの距離場計算には向いていない。
【0009】
一方、特徴を保持した距離場は、サイズが大きくなりがちになるため、効率的な表現手法も広く研究されている。
例えば、八分木に基づくサンプリングによる距離場表現手法adaptively sampled distance fields(ADF)が提案されている。各点における距離関数はサンプリングポイントを補間することによって決定することができ、鋭角特徴やフラクタルといった高解像度な詳細を表現できる。しかし、最適な八分木構造を決定することが難しいことから、ADFを距離変換のデータとして用いることは難しい。
【0010】
また、complete distance field representation(CDFR)も提案されている。この手法は、空間を3次元グリッドに分割し、各セルに、そのセル内の距離場に影響する三角形群を格納している。一度CDFRが形成されれば、セル内の距離場は、三角形間からの距離を用いて、正確かつ高解像度な距離場を計算できる。しかし、ボリュームデータに適用した場合、各セルに格納する境界セルは膨大であるため、距離場を計算することが容易にできるという利点がある。しかし、ボリュームデータに対する距離変換には適切ではない。境界表面としてセル集合を用いることになるが、それらのセルを保存するためにたくさんの空間が必要となるためである。
【0011】
【非特許文献1】M.W.Jones,J.A.Berentzen,and M.Sramek,“3D Distance Fields:A Survey of Techniques and Applications”,IEEE Transactions on Visualization and Computer Graphics,Vol.12,No.4,July/August 2006
【発明の開示】
【発明が解決しようとする課題】
【0012】
上述したように、ボリュームデータから距離場を求める手法は、従来から数多く存在しており、距離変換(Distance Transform,DT)と呼ばれている。しかし,上述した従来の距離変換に共通する特徴として全てのセルがRAMに格納される。そのため大規模ボリュームデータにこれらの手法を適用することは、現行の32bitPCではRAMの制限により不可能である。距離場は格子空間上に離散的に表現され、各セルに距離値が割り当てられる。距離値が4byteの浮動小数点で表現されていた場合、RAMの最大値は2GBであることから、5億セル(約800)程度のボリュームデータしか扱うことができない。そのため、従来の方法では大規模ボリュームデータから距離場を計算することができない。
【0013】
64bitPCを用いることにより、この問題を解消することは可能であるものの、ボリュームデータのサイズは、解像度の三乗に比例することから、すぐに限界を迎える。
一方、現在ボリュームデータのサイズは、高精度になる一方になっている。例えば、工業用CTは、1スライス当たり、5000×5000×5000のCT画像を取り出すことが可能となっている。そのため従来の距離変換では、RAMの容量を超える大規模ボリュームデータから距離場を生成することができなかった。
【0014】
本発明は、上述した問題点を解決するために創案されたものである。すなわち、本発明の目的は、RAMの容量を超える大規模ボリュームデータから距離場を不連続性が発生することなく全体として正しく生成することができる距離場生成方法とプログラムを提供することにある。
【課題を解決するための手段】
【0015】
本発明によれば、RAMとハードディスクを有するコンピュータを用いて、
入力装置によりRAMの容量を超える二値化した大規模ボリュームデータをハードディスクに入力する入力ステップと、
前記ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶するクラスタ分割ステップと、
前記クラスタ毎に距離変換してクラスタ毎の距離場生成を行う局所距離変換ステップと、
前記局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させるクラスタ間伝播ステップと、
前記クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う距離場統合ステップと、
出力装置に統合されたボリュームデータ全体の距離場を出力する出力ステップとを備えたことを特徴とする大規模ボリュームデータの距離場生成方法が提供される。
【0016】
本発明の好ましい実施形態によれば、前記クラスタ分割ステップにおいて、ボリュームデータを、互いに隣接した複数のセルからなるブロック形状の複数のクラスタと、クラスタ間に位置する複数の連続したセルからなるクラスタインタフェースに分割し、
各クラスタは、ボリュームデータの一部分のセルと、隣接する6つのクラスタインタフェースへのポインタを有し、
各クラスタインタフェースは、隣接する2つのクラスタと重複するセルと、当該2つのクラスタへのポインタを有する。
【0017】
また、前記クラスタ間伝播ステップにおいて、距離値が更新された汚染セルを有するクラスタに対し、前記局所距離変換ステップとクラスタ間伝播ステップを、前記汚染セルがなくなるまで繰り返す。
【0018】
また、前記クラスタ間伝播ステップにおいて、距離値が更新された汚染セルを有するクラスタの距離値の小さい順に、局所距離変換ステップを行う。
【0019】
また本発明によれば、コンピュータのハードディスクにRAMの容量を超える二値化した大規模ボリュームデータを入力する入力ステップと、
前記ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶するクラスタ分割ステップと、
前記クラスタ毎に距離変換してクラスタ毎の距離場生成を行う局所距離変換ステップと、
前記局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させるクラスタ間伝播ステップと、
前記クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う距離場統合ステップと、
出力装置に統合されたボリュームデータ全体の距離場を出力する出力ステップとを実行するための大規模ボリュームデータの距離場生成プログラムが提供される。
【発明の効果】
【0020】
上記本発明の方法とプログラムによれば、RAMの容量を超える二値化した大規模ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶し、クラスタ毎に距離変換を行うので、距離変換を行わないクラスタは、ハードディスクに格納できるため、使用するメモリ量は、非常にコンパクトにできる。
【0021】
また、このとき、クラスタ間で距離場の不連続性が発生するが、局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させ、局所距離変換ステップとクラスタ間伝播ステップを、クラスタ間伝播によって距離値が更新されるセル(汚染セル)がなくなるまで繰り返すことで、全体として正しい距離場が生成できる。
【0022】
また、前記クラスタ間伝播ステップにおいて、距離値が更新されたセルを有するクラスタの距離値の小さい順に、局所距離変換ステップを行うことで、高速に収束させることができる。
【0023】
従って本発明により、RAMの容量を超える大規模ボリュームデータから距離場を不連続性が発生することなく全体として正しく生成することが可能となる。
【発明を実施するための最良の形態】
【0024】
以下、本発明の好ましい実施形態を図面を参照して説明する。
【0025】
図1は、本発明の方法を実行するための装置構成図である。この図に示すように、この装置は、入力装置2、外部記憶装置3、内部記憶装置4、中央処理装置5および出力装置6を備える。
【0026】
入力装置2は、例えばCT装置、非接触/接触測定器、キーボード等であり、対象物に関するボリュームデータを外部記憶装置3(ハードディスク)に入力する。このボリュームデータは、内部記憶装置4(RAM)の容量を超える二値化した大規模ボリュームデータである。
【0027】
外部記憶装置3は、この例ではハードディスクであり、後述する二値化した大規模ボリュームデータ、複数のクラスタ、クラスタ毎の距離場、ボリュームデータ全体の距離場、およびこれに関連する距離場生成プログラムを記憶する。
【0028】
内部記憶装置4は、この例ではRAMであり、演算情報を保管する。中央処理装置5(CPU)は、演算や入出力等を集中的に処理し、内部記憶装置4と共に、プログラムを実行する。出力装置6は、例えば表示装置とプリンタであり、統合されたボリュームデータ全体の距離場を出力するようになっている。
【0029】
中央処理装置5、内部記憶装置4及び外部記憶装置3は、共同して、後述する距離場生成プログラムを実行する。
【0030】
本発明の距離場生成方法は、上述した内部記憶装置4(RAM)と外部記憶装置3(ハードディスク)を有するコンピュータを用いる。図2は、本発明の方法を示す全体フロー図である。この図に示すように、本発明の距離場生成方法は、入力ステップS1、クラスタ分割ステップS2、局所距離変換ステップS3、クラスタ間伝播ステップS4、距離場統合ステップS5及び出力ステップS6を有する。
【0031】
入力ステップS1では、入力装置2によりRAM4の容量を超える二値化した大規模ボリュームデータをハードディスク3に入力する。
クラスタ分割ステップS2では、ボリュームデータをRAM4の容量より十分小さい複数のクラスタCに分割してハードディスクに記憶する。
局所距離変換ステップS3では、クラスタ毎に距離変換してクラスタ毎の距離場生成を行う。
クラスタ間伝播ステップS4では、局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させる。
距離場統合ステップS5では、クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う。
出力ステップS6では、出力装置6に統合されたボリュームデータ全体の距離場を出力する。
【0032】
図2において本発明の距離場生成方法は、クラスタ間伝播ステップS4と距離場統合ステップS5の間に、汚染セルの有無を判断する判別ステップS7を有する。
判別ステップS7において、クラスタ間伝播ステップS4において距離値が更新された汚染セルがある場合には、局所距離変換ステップS3とクラスタ間伝播ステップS4を汚染セルがなくなるまで繰り返す。
【0033】
本発明は、大規模ボリュームモデルから距離場を計算する方法とそのプログラムを提案する。従来の方法では、距離場を計算するためにRAM(Random Access Memory)に全てのボリュームデータを割り当てる必要がある。そのため適用できるサイズの限界は、RAMに厳しく制限されていた。
本発明は、この問題をアウトオブコア法(Out−of−Core method)を用いて解決する。ここで、アウトオブコア法とは、ハードディスク等の記憶装置を用いて、RAMの容量を超えるデータを処理する方法を意味する。
【0034】
本発明で提案する手段は、クラスタ分割ステップS2においてボリュームモデルをクラスタと呼ばれる小領域に分割することから始まる。距離場は、クラスタに対する局所距離変換(局所距離変換ステップS3)およびクラスタ間伝播(クラスタ間伝播ステップS4)により計算する。
局所距離変換は、他のクラスタに依存しないので、対象以外のクラスタは、ハードディスク等の記憶装置に保存できる。
クラスタ間伝播は、クラスタ間の距離場の一貫性を確保するために、クラスタの境界の距離値を隣接クラスタに伝播させる処理である。更に、伝播された距離値を用いた局所距離変換の順序を決定する手段を提案する。これにより、局所距離変換の回数をできるだけ少なくすることができる。本発明により、後述するように10億セル以上のボリュームモデルから距離場を生成することができる。
【0035】
本発明では、三次元グリッド上に定義された二値化されたセル(cell、ボクセル、点)で定義されたボリュームデータを扱う。オブジェクトは、物体内部を表す前景セル(又は内部セル)と外部を表す背景セル(又は外部セル)で表現されている。距離場は、式(1)の距離関数d(p)で定義されるスカラ場である。
【0036】
【数1】

【0037】
p∈Rはセルを表し,qは物体の境界上の内部セル(「境界セル」と呼ぶ)を表す。本発明では、内部セルの境界セルからの距離値を計算することを想定している。内部セルと外部セルの関係を逆転することにより、外部セルの境界セルからの距離値を計算することも可能である。本発明では、大規模ボリュームデータからの距離場計算手法に焦点を当てる。
【0038】
本発明は、Out−of−Core距離変換(distance transform:以下、「OoCDT」又は「アウトオブコア距離変換」という)を提案する。
本発明によるアウトオブコア距離変換は、大規模データに対する距離変換を小さいRAMで可能にする方法である。アウトオブコア距離変換は、ボリューム空間をa×b×c個のクラスタに分割することから始まる。
【0039】
次に、各クラスタに対して距離変換を適用する。これを局所距離変換(local distance transform:LDT)と呼ぶ。局所距離変換は、他のクラスタに依存しないため、必要となるメモリのサイズは、一つのクラスタに相当する量で十分である。その他のクラスタについてはハードディスク上に保存できる。
局所距離変換は、各々独立して行われるため、隣接クラスタ間の境界で距離値の一貫性が損なわれる。そこで本発明では、クラスタ間伝播(intercluster propagation:ICP)によりこの問題を解消する。
【0040】
クラスタ間伝播は、局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させる。クラスタ間伝播によって距離値が更新されたセルを、本発明では「DIRTYセル」(汚染セル)と呼ぶ。汚染セルが現れたクラスタは、再び局所距離変換を適用する必要がある。本発明の手段では、局所距離変換とクラスタ間伝播を汚染セルがなくなるまで続ける。
【0041】
アウトオブコア距離変換(OoCDT)の計算時間は局所距離変換の回数に依存するため、局所距離変換の回数をできるだけ少なくするような局所距離変換の順番を決定する必要がある。そこで本発明では、各クラスタの汚染セルの最小値に基づく順序付けを提案する。これにより、少ない回数での収束が実現する。
【0042】
図3(a)は機械部品のCT画像のボリュームレンダリング画像であり、図3(b)(c)はその本発明による距離場計算結果である。
本発明の特徴の1つは、アウトオブコア距離変換法に基づく枠組みを距離変換に適用した点にある。これにより、図3(b)(c)に示したような、大規模ボリュームデータの距離場を計算可能にした。
【0043】
本発明の利点として以下の点が挙げられる。
(1)大容量メモリを必要としない。本発明の手段で必要とするメモリは、クラスタ1個分であるため、一般的な32bitPCでも計算可能である。
(2)適用できるボリュームデータの制限が劇的に緩和された。従来手法は、RAMやGPUのメモリに依存していたが、本発明の方法は、ハードディスク等のストレージの容量に依存する。
(3)局所距離変換は他のクラスタに依存しないため、マルチコアプロセッサを使用することで高速化が可能である。
(4)精度、データサイズ、速度は、局所距離変換で使用する距離変換法に依存しており、目的に応じて使い分けることが可能である。
(5)本発明の手段は、n−D画像(nは1以上の整数)に適用可能である。
【0044】
以下、本発明を詳細に説明する。
1 データ構造
はじめに、本発明で用いるデータ構造について図4,5を用いて説明する。Vは入力ボリュームモデルであり、Vは、a×b×c個(この例では5×5)のブロック形状のクラスタC(i=0,1,2,…)とクラスタ間に位置するクラスタインタフェース<i,j>に分解される。
クラスタCiは、ボリュームモデルVの一部分のセルと、隣接する6つのクラスタインタフェースへのポインタを持つ。クラスタインタフェースは、<i,j>と表す。これは、クラスタCiとCjの重複領域に存在していることを表す。クラスタインタフェース<i,j>は、重複領域のセルとクラスタCi、Cjへのポインタを持つ。
各セルviは、距離値viを持つ。本発明では、クラスタCjとクラスタインタフェース<i,j>に属するセルをそれぞれvi,vi<j,k>と表す。セルvi<j,k>は、対となるセルをCj,Ckにそれぞれ持つ。図4(A)における○印で示すセルは、そのようなセルを表す。vi,vi<j,k>は、同じセルを共有しており、vi,vi<j,k>は常に、vi<j,k>=min(vi,vi)を満たす。
【0045】
2 本発明の概要
図4,5を用いて本発明の概要を説明する。図4(A)は入力ボリュームモデルVである。この図において、太い実線はオブジェクトの境界、その内側はオブジェクトの内部、斜線で示す外側は外部を示す。
本発明では、はじめに、ボリュームモデルVをクラスタC(i=0,1,2,3)とクラスタインタフェース<i,j>に分解する。(図4(B))。三次元の場合、Vはa×b×cのクラスタとクラスタインタフェースに分解される。a,b,cは、ユーザによって与えられるものとする。クラスタに分割した後、各セルv’に数2の式(2)の距離値を与えて初期化を行う(図4(C))。
【0046】
【数2】

【0047】
初期化が済んだクラスタとクラスタインタフェースは、一時ファイルとしてハードディスクに保存する。次に、一つのクラスタを選択し、RAMに格納する。そして、局所距離変換を適用して距離値を計算する。図4(D)では、Cが選択されている。
【0048】
この局所距離変換によりクラスタC内の全てのセルは、局所的に最適化される。つまり、クラスタと隣接するクラスタインタフェースが与えられている条件下において最適化されている状態を指す。
しかし、全体で見た場合、距離値が正しいという保証はない。例えば、図4(D)は、Cに対して局所距離変換を1回適用した結果であり、図5(J)は2回適用した結果である。Cのセルの幾つかが更新されていることがわかる。これは、クラスタ外のセルが最近セルだった場合にそれを見つけることができないためである。
本発明では、これをクラスタ間伝播(inter−cluster propagation:以下、ICP)によって解決する。
【0049】
図4(E)に示すとおり、局所距離変換を適用後のクラスタの境界セルの距離値は、対応するクラスタインタフェースのセルと異なっている。そこで、そのようなセルの距離値が一致するように書き換える。すなわちこれらの距離値を、隣接するクラスタの境界セルにコピーする。この処理をクラスタ間伝播と呼ぶ。
図4(E)ではCからCとCへのクラスタ間伝播が適用されている。局所距離変換とクラスタ間伝播の処理(図4(d)から図4(e)までの処理)を1ステップとして数える。
クラスタ間伝播によって距離値が変更されたセルを、本発明では「DIRTYセル」(汚染セル)と呼ぶ。図4(F)〜図5(J)では、局所距離変換とクラスタ間伝播を汚染セルがなくなるまで繰り返す。この繰り返し処理は、付録にて証明を行っている。
処理が終了した時点で、全てのセルには正しい距離値が格納されており、大域的に最適化された状態であるといえる。最後に、クラスタを合成して距離場を作成する(図5(k))。
【0050】
以下、上述した局所距離変換、クラスタ間伝播等の詳細について述べる。
3 局所距離変換
図6は、Wavefront Chamfer距離変換を用いた局所距離変換のアルゴリズムを示す。nbr(v)は、vの1−ring近傍(26個)を表す。dist(v,v)は、v間の距離である。sweeping chamfer距離変換やvector距離変換といった他の距離変換手法も局所距離変換として使うことができる。
【0051】
4 クラスタ間伝播
クラスタ間伝播(Inter−Cluster Propagation:ICP)は、局所距離変換を適用したクラスタCからCに隣接するクラスタCへの距離値の伝播である。クラスタ間伝播は、クラスタCとCによって共有されているセルの距離値を比較する。図7にクラスタ間伝播のアルゴリズムを示す。
【0052】
クラスタCに局所距離変換を適用した後、クラスタ間伝播では、対応する境界セルvの距離値を比較する。もしv<vだった場合は、vはvに置き換えられる。このようなセルは汚染セルとみなし、汚染セルが含まれるクラスタは、局所距離変換を再度適用する対象となる。これは、汚染セルが隣接セルの距離値よりも小さいため、局所距離変換によって値が更新されやすいためである。
【0053】
本発明の実施例では、ファイルの入出力を減らすために、クラスタとクラスタが重複するようにクラスタを分割している。隣接クラスタが重複していない場合は、26個の隣接クラスタに対して伝播処理を行う必要がある。それに対して、本発明の実施例では、6個であり、23%程度のファイル入出力の削減を実現している。
【0054】
更に、本発明では、クラスタ間伝播のためにクラスタインタフェースと呼ばれるデータ構造を導入している。クラスタインタフェースは、一見冗長に見えるが、アルゴリズムの高速化に寄与している。図8に簡単な例を示す。クラスタインタフェースなしのクラスタ間伝播では、6個の隣接クラスタを読み込む必要があるのに対して、クラスタインタフェースを導入した場合は、6個のクラスタインタフェースを読み込むだけでよく、明らかに読み込むデータ量を減らせている。
【0055】
クラスタインタフェースは、局所距離変換処理の最適化にも利用できる。本発明では、クラスタ間伝播を分割することで局所距離変換を次の通り改良した。
(1) ハードディスクからクラスタCを読み込む
(2) クラスタインタフェース<i,j>からCへ伝播させる
(3) 局所距離変換を実行する
(4) クラスタCからクラスタインタフェース<i,j>へ伝播される
(5) クラスタCを保存する。
【0056】
以上の処理によりファイル入出力が劇的に削減される。もし、クラスタ間伝播を一度に適用すると、7個のクラスタを局所距離変換を実行するごとに読み込む必要があった。それに対して、改良アルゴリズムでは、1個のクラスタだけで十分であり、クラスタインタフェースの利点を最大限活用している。
【0057】
5 最小汚染距離値(MDD)を用いた局所距離変換適用順序の決定
局所距離変換とクラスタ間伝播によって大規模距離場は計算できるものの、計算速度に関する問題が残っている。図9に1次元における簡単な例を示す。どちらのクラスタから局所距離変換を適用するかによって局所距離変換の回数が異なっていることがわかる。もし、この差が大きいと、パフォーマンスの違いは顕著になる。よって、局所距離変換の回数が少なくなるような順序付けが必要となる。
【0058】
最適な順序付けは、ボリュームデータやクラスタリング方法に依存することから、ほぼ不可能である。そこで、局所距離変換の回数が最小になるようなヒューリスティクスを導入する。本出願の発明者の観察により、より小さな距離値を持つ汚染セルを持つクラスタに対して優先的に局所距離変換を適用すればよいことがわかった。これは、そのようなクラスタが、隣接クラスタへ伝播しやすいためである。
【0059】
ここで、局所距離変換適用順序付けの優先度を評価する基準として最小汚染距離値(MDD)を導入する。最小汚染距離値は、「各クラスタの最小の距離値を持つ汚染セル」によって定義され、クラスタ間伝播によってセルが更新されたときに更新される。局所距離変換を適用した後のクラスタは、最小の優先順位を持つべきと考えられるので、局所距離変換を適用した後の最小汚染距離値は、無限大とする。
【0060】
最小汚染距離値を用いた順位付けは簡単である。各ステップにおいて、各クラスタの最小汚染距離値の集合Mの中で最小である最小汚染距離値を持つクラスタを選択する。この最小汚染距離値(MDD)を極小汚染距離値(mMDD)と呼ぶ。この繰り返し処理は、極小汚染距離値が無限大になったときに終了する。最終的な距離場は、クラスタを合成することによって得られる。
【0061】
アウトオブコア距離変換をまとめると、図10に示すとおりである。
【0062】
6 実施例および評価
本発明の実施例を図3、図13に示す。“Engine−Head”“UT−figurine”データは、CT画像を二値化して得られたものである。他のデータは、ポリゴンモデルをボクセル化して得られたものである。これらの例題の多くは、メモリの問題により従来は計算不可能であった。また各図は、表面をレンダリングしたものと距離場をボリュームレンダリングしたものを示している。UT−figurineデータが透明に見えるのは、モデルに空洞があるためである。
【0063】
上述した全ての例題は、以下の環境のWindows(登録商標)XP PCで計算した。
・Intel Core2 Duo E6400(2.13GHz,2−core)
・2GB RAM
・SATA 320GB HDD×2 (RAID0構成)
【0064】
さらに、本発明のプログラムは、マルチスレッドをサポートし中間ファイルは圧縮ライブラリzlibを使って圧縮している。実験データを表1に示す。#LDTは局所距離変換(LDT)の回数である。Rは、式3で示すパフォーマンスの指標である。計算時間については、3ステップから構成される。「Init.」は、ボリュームデータの分割に要した時間である。「OoCDT」は、局所距離変換とクラスタ間伝播に要した時間である。「Compo.」はクラスタの合成に要した時間である。「Storage」は中間データの最大サイズを、%は、圧縮比をあらわす。
【0065】
(評価)
Wavefront法の計算効率は、nをセルの数とした場合、O(nlogn) であることは知られている。局所距離変換の計算効率は、mをクラスタの数とした場合、O(n/m(logn−logm))である。局所距離変換の順序付けアルゴリズムでは、極小汚染距離値(mMDD)の探索に優先順位付きキューを使用しているので、対数時間を必要とすることから、本アルゴリズムの計算効率は、kを局所距離変換の回数とすると、O(k・n/mlogm(logn−logm))である。ここで、パフォーマンスを評価するために、従来のアルゴリズムとの比を表す評価値Rを数3の式(3)によって定義する。
【0066】
【数3】

【0067】
もしR=1ならば、計算効率は、in−core(コア内処理)と同じであることがいえる。もしR<1ならば、in−coreよりも小さいといえる。もちろんハードディスクを利用している以上、本発明のほうが計算時間は遅い。しかしRは、パフォーマンスを評価する良い指標となりうると考えられる。表1にRの計算結果を示している。内部セルのないクラスタに対しては、局所距離変換が実行されないのでほとんどの結果で2以下の結果が出ている。このように、本発明は、よく最適化されているといえる。
【0068】
【表1】

【0069】
本発明のパフォーマンスとクラスタ分割数の関連性を観察することは興味深い。図11にクラスタ分割数とパフォーマンスの関連性を示す。始めに、初期化と合成処理において、クラスタ数が多いと計算時間が少ないことが判る。これは、多くのファイルを開いたり閉じたりするためである。この点に関しては、RAID0(ストライピング)の導入により幾分改善される。一方で、アルゴリズム自体は、ある程度細かいほうが早くなる。これは、局所距離変換の計算コストが減少するのと、全て外部のクラスタの個数が増えた結果、クラスタあたりの局所距離変換の回数が少なくなるためである。両者をあわせると一定のクラスタ数において最小値が存在することが確認きる。しかしこのクラスタ数について、明確な傾向は確認できない。ただし、クラスタ数が多すぎたり、少なすぎるとパフォーマンスが低下することがわかる。
【0070】
局所距離変換は、他のクラスタからは独立しているため、マルチコアプロセッサを用いることにより高速化が実現する。表2に、使用したコアの数により計算時間を比較した結果を示す。4スレッドを使用した場合には、1スレッドを使用した場合よりも2倍高速なのが判る。ただし、初期化と合成処理においては、マルチスレッドの効果はないため、距離変換のみに注目すると、4スレッドでは、1スレッドより3倍以上も高速なことが判った。これにより距離変換アルゴリズムは、マルチスレッド環境において高い並列性を持っていることがわかる。
【0071】
【表2】

【0072】
最小汚染距離値は、wavefrontベースの局所距離変換の最適化に利用することもできる。局所距離変換は、最小汚染距離値より小さな距離値を持つセルに関しては、大域的に最適化されているため、局所距離変換の計算からはずすことができるという興味深い特徴を持つ(証明は省略する)。
【0073】
図12に各ステップにおける最小汚染距離値(MDD)と計算時間をプロットした図を示す。この図から、224ステップ辺りから幾つかの局所距離変換が高速になっており、その際の最小汚染距離値が1以上であることがわかる。これは、クラスタ内の幾つかのセルが大域的に最適化され、局所距離変換から除外されたためである。
【0074】
本発明は、クラスタとクラスタインタフェースを保存するための一時ファイルをハードディスク上に作成する。距離場は、よく同じ距離値を持つことから、圧縮ライブラリを用いることで高圧縮が実現する。表1の例題においても圧縮前と比較して1%程度とよく圧縮されていることがかる。例えば、60億セル持つ“twirl”モデルは、非圧縮では24GBあるにもかかわらず、中間データは270MBである。このことから本手法で適用できるサイズの限界は、使用できるハードディスクに依存するということができ、それは、10,000セルを越えるということができる。
【0075】
本発明で得られる距離場の精度は、どの距離変換手法を用いたかによって決定される。本発明は、IN−COREアルゴリズムと同等の計算結果が得られることから、クラスタの分割方法などには影響をうけない。
【0076】
上述したように、本発明では、Out−of−Core化された距離変換方法とプログラムを提案した。本発明は、局所距離変換とクラスタ間伝播により、従来手法がもつメモリ上の問題を解決した。また、実験結果により、従来と比較して巨大なボリュームデータから距離場を計算できることを示した。また、図10に示した順序付けアルゴリズムは、局所距離変換の回数をできるだけ少なくする。実際に実験を通して、妥当な速度で計算できることを示した。
【0077】
上述したように本発明の方法とプログラムによれば、RAMの容量を超える二値化した大規模ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶し、クラスタ毎に距離変換を行うので、距離変換を行わないクラスタは、ハードディスクに格納できるため、使用するメモリ量は、非常にコンパクトにできる。
また、このとき、クラスタ間で距離場の不連続性が発生するが、局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させ、局所距離変換ステップとクラスタ間伝播ステップを、クラスタ間伝播によって距離値が更新されるセルがなくなるまで繰り返すことで、全体として正しい距離場が生成できる。
また、前記クラスタ間伝播ステップにおいて、距離値が更新されたセルを有するクラスタの距離値の小さい順に、局所距離変換ステップを行うことで、高速に収束させることができる。
従って本発明により、RAMの容量を超える大規模ボリュームデータから距離場を不連続性が発生することなく全体として正しく生成することが可能になった。
【0078】
なお、本発明は上述した実施形態に限定されず、本発明の要旨を逸脱しない範囲で種々変更できることは勿論である。
【図面の簡単な説明】
【0079】
【図1】本発明の方法を実行するための装置構成図である。
【図2】本発明の方法を示す全体フロー図である。
【図3】機械部品のCT画像のボリュームレンダリング画像とその本発明による距離場計算結果である。
【図4】本発明で用いるデータ構造の第1説明図である。
【図5】本発明で用いるデータ構造の第2説明図である。
【図6】局所距離変換のアルゴリズムを示す図である。
【図7】クラスタ間伝播のアルゴリズムを示す図である。
【図8】クラスタインタフェースの例を示す図である。
【図9】局所距離変換適用の順序を示す例である。
【図10】本発明のアウトオブコア距離変換のアルゴリズムを示す図である。
【図11】クラスタ分割数とパフォーマンスの関連性を示す図である。
【図12】各ステップにおける最小汚染距離値(MDD)と計算時間をプロットした図である。
【図13】本発明による距離場の計算結果を示す図である。
【符号の説明】
【0080】
2 入力装置、
3 外部記憶装置、
4 内部記憶装置、
5 中央処理装置、
6 出力装置

【特許請求の範囲】
【請求項1】
RAMとハードディスクを有するコンピュータを用いて、
入力装置によりRAMの容量を超える二値化した大規模ボリュームデータをハードディスクに入力する入力ステップと、
前記ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶するクラスタ分割ステップと、
前記クラスタ毎に距離変換してクラスタ毎の距離場生成を行う局所距離変換ステップと、
前記局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させるクラスタ間伝播ステップと、
前記クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う距離場統合ステップと、
出力装置に統合されたボリュームデータ全体の距離場を出力する出力ステップとを備えたことを特徴とする大規模ボリュームデータの距離場生成方法。
【請求項2】
前記クラスタ分割ステップにおいて、ボリュームデータを、互いに隣接した複数のセルからなるブロック形状の複数のクラスタと、クラスタ間に位置する複数の連続したセルからなるクラスタインタフェースに分割し、
各クラスタは、ボリュームデータの一部分のセルと、隣接する6つのクラスタインタフェースへのポインタを有し、
各クラスタインタフェースは、隣接する2つのクラスタと重複するセルと、当該2つのクラスタへのポインタを有する、ことを特徴とする請求項1に記載の大規模ボリュームデータの距離場生成方法。
【請求項3】
前記クラスタ間伝播ステップにおいて、距離値が更新された汚染セルを有するクラスタに対し、前記局所距離変換ステップとクラスタ間伝播ステップを、前記汚染セルがなくなるまで繰り返す、ことを特徴とする請求項1に記載の大規模ボリュームデータの距離場生成方法。
【請求項4】
前記クラスタ間伝播ステップにおいて、距離値が更新された汚染セルを有するクラスタの距離値の小さい順に、局所距離変換ステップを行う、ことを特徴とする請求項3に記載の大規模ボリュームデータの距離場生成方法。
【請求項5】
コンピュータのハードディスクにRAMの容量を超える二値化した大規模ボリュームデータを入力する入力ステップと、
前記ボリュームデータをRAMの容量より十分小さい複数のクラスタに分割してハードディスクに記憶するクラスタ分割ステップと、
前記クラスタ毎に距離変換してクラスタ毎の距離場生成を行う局所距離変換ステップと、
前記局所距離変換後に境界クラスタの距離値を、隣接クラスタに伝播させるクラスタ間伝播ステップと、
前記クラスタ毎の距離場を統合してボリュームデータ全体の距離場生成を行う距離場統合ステップと、
出力装置に統合されたボリュームデータ全体の距離場を出力する出力ステップとを実行するための大規模ボリュームデータの距離場生成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2008−181286(P2008−181286A)
【公開日】平成20年8月7日(2008.8.7)
【国際特許分類】
【出願番号】特願2007−13603(P2007−13603)
【出願日】平成19年1月24日(2007.1.24)
【出願人】(503359821)独立行政法人理化学研究所 (1,056)
【Fターム(参考)】