(57)【要約】【課題】物理量を確認する位置の違いによる検索時間の長期化を抑止する。【解決手段】記憶部１１は、３次元モデル内に配置された複数の物理量設定点それぞれについての位置情報と物理量とを記憶する。分割部１２は、３次元モデルを包含する第１の領域１３ａを、各領域内に含まれる物理量設定点数が均等になるように分割した複数の第２の領域１３ｃのそれぞれに対応する分割データ１３を生成する。検索部１４は、３次元モデル内の位置が指定された場合、複数の第２の領域１３ｃのうち、指定された位置を含む第２の領域に対応する分割データ１３が含む物理量設定点の中から、指定された位置に対応する物理量設定点の物理量を記憶部１１から取得する。【選択図】図１
2015106228.tif 000002
【特許請求の範囲】
【請求項１】
３次元モデル内に配置された複数の物理量設定点それぞれについての位置情報と物理量とを記憶する記憶部と、
前記３次元モデルを包含する第１の領域を、各領域内に含まれる物理量設定点数が均等になるように分割した複数の第２の領域のそれぞれに対応する分割データを生成する分割部と、
前記３次元モデル内の位置が指定された場合、前記複数の第２の領域のうち、指定された位置を含む第２の領域に対応する分割データが含む物理量設定点の中から、指定された位置に対応する物理量設定点の物理量を前記記憶部から取得する検索部と、
を有するデータ探索装置。
【請求項２】
前記分割部は、
前記第１の領域を分割すると共に、分割された領域それぞれをさらに分割する処理を繰り返し、分割対象の領域に分割された領域を接続した木構造を生成し、生成された前記木構造の葉となる複数の領域を、前記複数の第２の領域とすることを特徴とする請求項１記載のデータ探索装置。
【請求項３】
前記データ検索装置は、
主記憶装置を有するとともに補助記憶装置に接続され、
前記分割部は、
前記木構造のうち、前記第１の領域側の上位から所定範囲を前記主記憶装置に格納し、前記木構造のうち、前記所定範囲を除いた部分を前記補助記憶装置に格納することを特徴とする請求項２記載のデータ探索装置。
【請求項４】
前記記憶部は、
前記３次元モデルの形状を変化させることにより生成される複数の形状それぞれについて、前記複数の物理量設定点それぞれの位置情報と物理量とを記憶し、
前記分割部は、
前記複数の形状それぞれについて、前記分割データを生成することを特徴とする請求項１乃至３のいずれかに記載のデータ探索装置。
【請求項５】
前記分割部は、既に分割データを作成した第１の形状と、分割データの作成対象である第２の形状との違いが所定の範囲内の場合、前記第１の形状の分割データのコピーを、前記第２の形状の分割データとすることを特徴とする請求項４記載のデータ探索装置。
【請求項６】
３次元モデル内に配置された複数の物理量設定点それぞれについての位置情報と物理量とを記憶する記憶部を有するデータ探索装置の制御方法において、
前記データ探索装置が有する分割部が、前記３次元モデルを包含する第１の領域を、各領域内に含まれる物理量設定点数が均等になるように分割した複数の第２の領域のそれぞれに対応する分割データを生成し、
前記データ探索装置が有する検索部が、前記３次元モデル内の位置が指定された場合、前記複数の第２の領域のうち、指定された位置を含む第２の領域に対応する分割データが含む物理量設定点の中から、指定された位置に対応する物理量設定点の物理量を前記記憶部から取得するデータ探索装置の制御方法。
【請求項７】
３次元モデル内に配置された複数の物理量設定点それぞれについての位置情報と物理量とを記憶する記憶部を有するデータ探索装置の制御プログラムにおいて、
前記データ探索装置が有する分割部に、前記３次元モデルを包含する第１の領域を、各領域内に含まれる物理量設定点数が均等になるように分割した複数の第２の領域のそれぞれに対応する分割データを生成させ、
前記データ探索装置が有する検索部に、前記３次元モデル内の位置が指定された場合、前記複数の第２の領域のうち、指定された位置を含む第２の領域に対応する分割データが含む物理量設定点の中から、指定された位置に対応する物理量設定点の物理量を前記記憶部から取得させるデータ探索装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを探索するデータ探索装置、データ探索装置の制御方法およびデータ探索装置の制御プログラムに関する。
【背景技術】
【０００２】
近年、大規模な計算機を用いて、さまざまなシミュレーションが行われている。例えば患者の心臓の動きを再現する、心臓シミュレータが開発されている。心臓シミュレータによる心臓の動きの解析は、臨床現場における心臓の診断支援に役立つものと考えられる。
【０００３】
心臓のシミュレーションのような、生体に関するシミュレーションは、空間を構造格子または非構造格子で分割して行われる。構造格子とは、解析において計算の対象となる計算点としての節点を、座標系に沿って配置するものである。非構造格子とは、節点を、座標系によらずに不規則に配置するものである。形状が複雑で且つ動きを伴う心臓のシミュレーションにおいては、非構造格子が使用されることが一般的である。なお生体のシミュレーションでは、複数の節点間を接続して形成される多面体の要素が定義され、その要素内の物理量が計算される。
【０００４】
例えば心臓のシミュレーションでは、心筋にかかる圧力などの物理量が、要素または節点ごとに算出される。算出された物理量を、例えば統計的に解析することで、心臓の状態変化を把握することができる。
【０００５】
またシミュレーション対象物上の特定の位置を指定して、その位置における物理量を表示したい場合がある。特に心臓の動きを正確に再現する必要がある心臓シミュレータの場合、各要素に一つの心筋細胞が定義されることがある。心筋細胞の収縮と共に、各要素の位置における物理量がどのような値となるのかを確認することは、シミュレーション結果の観察や、シミュレータのデバッグの観点から重要である。
【０００６】
特定の位置の物理量を表示する場合、例えばユーザは、心臓の３次元モデル上で、特定の位置を指定する操作入力を行う。するとコンピュータで、指定された位置に対応する要素または節点が検索される。要素または節点の検索時間は、要素数や節点数が多くなるにつれて長くなる。このように、位置を指定した物理量の表示は、インタラクティブな操作によりほぼリアルタイムに行われる。そのため、物理量の確認の効率化を図るには、検索を高速化することが重要となる。
【０００７】
例えばマウスにより指定された座標点から、該当する要素を選択し、さらに物理値を表示するためには、データがメモリ上に構造化して保持される。検索をしやすいデータ構造によりデータを保持することで、検索の高速化が可能となる。検索しやすいデータ構造としては、８分木による方法が知られている。８分木でデータを保持することで、マウスで指定された座標点から、まずは大きな領域が選択され、その内部の要素から、次に細かい分割領域が選択されるということが繰り返される。その結果、マウスの座標点と要素の重心や節点との距離を全探索する必要がなく、短い時間で抽出可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１３−１６２９２１号公報
【特許文献２】特開２００４−３３４６４０号公報
【特許文献３】特開２００５−２５０７６７号公報
【特許文献４】国際公開第２００９／０３１２００号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、心臓のような生体物の場合、８分木のような手法で空間のサイズが均等になるように分割すると、分割後の領域それぞれに内包する、要素や節点などの物理量が設定された位置の数に偏りが生じる。すると、物理量の確認位置として指定された位置を包含する、領域内の物理量が設定された位置の数量の違いにより、検索時間も変動する。その結果、指定された位置を包含する領域が、他の領域よりも多くの位置に物理量が設定されている場合、指定された位置と、物理量が設定された位置との距離の計算回数が多くなり、検索時間が長期化してしまう。
【００１０】
１つの側面では、本発明は、物理量を確認する位置の違いによる検索時間の長期化を抑止することを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、記憶部、分割部、および検索部を有するデータ探索装置が提供される。記憶部は、３次元モデル内に配置された複数の物理量設定点それぞれについての位置情報と物理量とを記憶する。分割部は、３次元モデルを包含する第１の領域を、各領域内に含まれる物理量設定点数が均等になるように分割した複数の第２の領域のそれぞれに対応する分割データを生成する。検索部は、３次元モデル内の位置が指定された場合、複数の第２の領域のうち、指定された位置を含む第２の領域に対応する分割データが含む物理量設定点の中から、指定された位置に対応する物理量設定点の物理量を記憶部から取得する。
【発明の効果】
【００１２】
１態様によれば、物理量を確認する位置の違いによる検索時間の長期化を抑止することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るデータ探索装置の機能の一例を示す図である。
【図２】８分木による空間の分割例を示す図である。
【図３】第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
【図４】第２の実施の形態に係るコンピュータの機能を示すブロック図である。
【図５】非構造格子データ記憶部のデータ構造の一例を示す図である。
【図６】心臓の３次元モデルの一例を示す図である。
【図７】シミュレーション結果記憶部のデータ構造の一例を示す図である。
【図８】８分木分割データ生成処理の手順の一例を示すフローチャートである。
【図９】領域分割処理の手順の一例を示すフローチャートである。
【図１０】８分割処理の手順を示すフローチャートである。
【図１１】８分木の生成例を示す図である。
【図１２】８分木記憶部のデータ構造の一例を示す図である。
【図１３】検索処理の手順の一例を示すフローチャートである。
【図１４】物理量の表示例を示す図である。
【図１５】キータイムステップの一例を示す図である。
【図１６】第３の実施の形態における領域分割処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るデータ探索装置の機能の一例を示す図である。データ探索装置１０は、記憶部１１、分割部１２、および検索部１４を有する。
【００１５】
記憶部１１は、３次元モデル内に配置された複数の物理量設定点それぞれの位置情報と、その物理量設定点における物理量とを記憶する。物理量設定点は、例えば３次元モデルが複数の要素の集合体の場合における、各要素の位置である。３次元モデルを構成する要素は、例えば四面体である。要素の位置は、例えばその要素の重心である。また各要素の形状を定義する際に使用される節点を物理量設定点に含めることもできる。例えば４面体の要素であれば、その要素の頂点を示す４つの節点を、物理量設定点とすることができる。
【００１６】
なお、記憶部１１は、データ探索装置１０の外部に設けられていてもよい。例えばデータ探索装置１０にネットワークを経由して接続されている装置内に記憶部１１が設けられていてもよい。
【００１７】
分割部１２は、記憶部１１を参照し、３次元モデルを包含する第１の領域１３ａを、各領域内に含まれる物理量設定点数が均等になるように、複数の第２の領域１３ｃに分割する。第１の領域１３ａは、例えば３次元モデルのバウンディングボックスである。バウンディングボックスは、３次元モデルに外接する直方体である。さらに分割部１２は、分割して得られた複数の第２の領域１３ｃそれぞれに対して、第２の領域に含まれる物理量設定点の識別情報を対応付けた分割データ１３を生成する。
【００１８】
分割部１２は、例えば、第１の領域１３ａを所定数に分割すると共に、分割で得られた領域それぞれをさらに所定数に分割する処理を繰り返す。そして分割部１２は、上位の領域の下位に、その領域から分割された領域を接続した木構造を生成する。１つの領域を分割する際の分割数が８つであれば、生成される木構造は、８分木である。分割部１２は、木構造の葉となる複数の領域を、複数の第２の領域１３ｃとする。
【００１９】
分割データ１３を木構造で表した場合、木構造の根となるノードに、第１の領域１３ａが割り当てられる。また木構造の節となるノードに、第２の領域が生成されるまでの過程で生成される、第１・第２の領域以外の中間の領域１３ｂが割り当てられる。そして木構造の葉となるノードに、第２の領域が割り当てられる。木構造の各ノードには、対応する領域が空間に占める範囲を示す情報が設定される。また葉のノードには、対応する領域に含まれる物理量設定点のリストが設定される。
【００２０】
検索部１４は、３次元モデル内の位置が指定されると、分割データ１３に示される複数の第２の領域１３ｃのうち、指定された位置を含む第２の領域を特定する。例えば分割データ１３が木構造で表されている場合、検索部１４は、木構造の根のノードから下位に向かって、指定された位置を含む領域を選択していく。そして検索部１４は、根のノードに達した場合、そのノードの対応する領域が、指定された位置を含む第２の領域であると特定する。
【００２１】
そして検索部１４は、分割データ１３において、特定された第２の領域に対応付けられている物理量設定点の中から、指定された位置の物理量を示す物理量設定点を検索する。例えば検索部１４は、記憶部１１を参照し、特定された第２の領域に対応付けられている各物理量設定点の位置を取得する。そして検索部１４は、指定された位置と、各物理量設定点の位置との距離を計算し、指定された位置に最も近い物理量設定点を、指定された位置の物理量設定点と判断する。検索部１４は、指定された位置の物理量設定点を検索すると、例えば、その物理量設定点の物理量の値を記憶部１１から取得し、取得した値を出力する。
【００２２】
このようなデータ探索装置１０によれば、分割部１２により、各領域内に含まれる物理量設定点数が均等な複数の第２の領域１３ｃそれぞれに対して、第２の領域に含まれる物理量設定点の識別情報を対応付けた分割データ１３が生成される。そして、３次元モデル内の位置が指定されると、検索部１４により、分割データ１３において、特定された第２の領域に対応付けられている物理量設定点の中から、指定された位置にある物理量設定点が検索される。
【００２３】
ここで、複数の第２の領域１３ｃは、各領域内に含まれる物理量設定点数が均等である。そのため、指定された位置が、複数の第２の領域１３ｃのうちのどの領域に含まれていたとしても、指定された位置を含む第２の領域からの物理量設定点を検出するときの、検出候補となる物理量設定点数に変動はない。その結果、指定された位置の違いによる検索時間の長期化が抑止される。
【００２４】
なお、分割部１２と検索部１４とは、例えばデータ探索装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えばデータ探索装置１０が有するメモリにより実現することができる。分割部１２と検索部１４とをプロセッサで実現する場合、分割部１２と検索部１４とが実行する処理を記述した、データ探索装置１０の制御プログラムが用意される。プロセッサが制御プログラムを実行し、データ探索装置１０を制御することで、データ探索装置１０内で分割部１２と検索部１４との機能が実現される。
【００２５】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、心臓の動きをシミュレーションした結果を表示する際に、指定された点の物理量を、指定された位置に依存せずに、迅速に表示できるようにしたものである。
【００２６】
心臓を３次元モデルで表すと、心室内のように、心筋が存在しない空間が存在する。そのため、例えば、心筋における物理量を求めた場合、物理量が算出された位置に、空間的な偏りが生じる。なお、物理量は、３次元モデルを構成する要素ごと、または各要素の形状や位置を定義するための節点ごとに求められる。
【００２７】
第２の実施の形態では、心臓の３次元モデルに含まれる要素や節点に対し、バウンディングボックス内の要素および節点数が均等となるように、８分木が作成される。
図２は、８分木による空間の分割例を示す図である。図２には、心臓の３次元モデル３１を内包するバウンディングボックス３２を８分木で分割する場合の、２つの分割例が示されている。図２の左側は、分割して得られる各領域のサイズが均等になるようにバウンディングボックス３２を分割した例である。図２の右側は、分割して得られる各領域に含まれる要素・節点数が均等になるようにバウンディングボックス３２を分割した例である。図２に示すように、分割後の各領域に含まれる要素・節点数が均等になるようにバウンディングボックス３２を分割すると、分割後の各領域のサイズは不均一となる。
【００２８】
バウンディングボックス３２が８分木により複数の領域に分割されると、各領域の位置およびサイズを定義するデータと、その領域に含まれる要素および節点を示すデータとが生成される。作成された８分木に関するデータは、例えば上位の構造のデータはメモリ内に保持し、任意のレベルより下の構造のデータについてはストレージに保存することができる。
【００２９】
また、心臓のモデルに含まれる要素および節点の空間内での分布は、シミュレーション上のタイムステップが近接するデータ間では、あまり変化がない。そこで、第２の実施の形態では、キーとなるタイムステップを変化量に応じて決定し、キーのタイムステップでの分割データをコピーすることで、それ以外のタイムステップのデータを構造化する。
【００３０】
また、心臓は複雑な形状をしており、シミュレーション結果の確認については左心室の心尖部と僧帽弁の弁領域中心を結ぶ心軸に直行する断面での観察が多くおこなわれる。よって、心臓外側を包む領域の１辺を心軸と平行になるように設定することでより短時間で物理値を抽出可能とする。
【００３１】
図３は、第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３２】
メモリ１０２は、コンピュータ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３３】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３４】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００３５】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３６】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３７】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３８】
機器接続インタフェース１０７は、コンピュータ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３９】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したデータ探索装置１０も、図３に示したコンピュータ１００と同様のハードウェアにより実現することができる。
【００４１】
コンピュータ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。コンピュータ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またコンピュータ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４２】
図４は、第２の実施の形態に係るコンピュータの機能を示すブロック図である。コンピュータ１００は、非構造格子データ記憶部１１０、心臓シミュレータ１２０、シミュレーション結果記憶部１３０、領域分割部１４０、８分木記憶部１５０、および検索部１６０を有する。
【００４３】
非構造格子データ記憶部１１０は、心臓の形状を３次元で表す非構造格子データを記憶する。非構造格子データでは、例えば複数の４面体の要素によって心臓の形状が表される。その場合、心臓が存在する空間に、多数の節点が設けられる。そして４つの節点を頂点とする多数の４面体が定義される。１つの４面体が、例えば心臓の心筋細胞を表す要素である。非構造格子データ記憶部１１０としては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４４】
心臓シミュレータ１２０は、心臓の３次元モデルに基づいて、拍動を含む心臓の動きをシミュレーションする。そして心臓シミュレータ１２０は、シミュレーション結果を、シミュレーション結果記憶部１３０に格納する。例えば心臓シミュレータ１２０は、シミュレーション上の時刻を所定時間ずつ進行させ、その都度、３次元モデルの節点の位置、および要素や節点における物理量を算出する。各時刻での節点の位置や物理量は、その前の時刻における節点の位置や物理量に基づいて算出される。心臓シミュレータ１２０は、シミュレーション上の時刻における所定のタイミングで、その時点での節点の位置、および要素や節点における物理量を、シミュレーション結果として出力する。
【００４５】
シミュレーション結果記憶部１３０は、シミュレーション結果を記憶する。シミュレーション結果記憶部１３０としては、例えばメモリ１０２またはＨＤＤ１０３の記憶領域の一部が使用される。
【００４６】
領域分割部１４０は、シミュレーション結果を検索しやすいように、心臓の３次元モデルを含む空間を、８分木によって複数の領域に分割する。そして領域分割部１４０は、分割後の領域ごとに、その領域に属する要素および節点のリストを作成する。領域分割部１４０は、８分木により生成した領域と、各領域に属する要素および節点のリストを、８分木分割データとして、８分木記憶部１５０に格納する。
【００４７】
８分木記憶部１５０は、８分木分割データを記憶する。例えばメモリ１０２の記憶領域の一部と、ＨＤＤ１０３の記憶領域の一部とが、８分木記憶部１５０として使用される。その場合、８分木の上位の構造を格納する領域がメモリ１０２内に設けられ、下位の構造を格納する領域がＨＤＤ１０３内に設けられる。
【００４８】
検索部１６０は、３次元モデル上の任意の位置の指定を受けて、その位置の物理量を検索する。例えば検索部１６０は、シミュレーション上の時刻の指定を受けると、シミュレーション結果記憶部１３０に示される各節点の位置に基づいて、指定された時刻における心臓の３次元モデルを再現し、表示する。次に検索部１６０は、再現した３次元モデル上の任意の位置の指定を受けると、シミュレーション結果記憶部１３０から、指定された位置に最も近い要素または節点を検索する。そして検索部１６０は、該当する要素または節点の物理量を表示する。
【００４９】
なおシミュレーション結果記憶部１３０は、図１に示した記憶部１１の一例である。領域分割部１４０は、図１に示した分割部１２の一例である。検索部１６０は、図１に示した検索部１４の一例である。
【００５０】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５１】
次に、非構造格子データ記憶部１１０のデータ構造例について説明する。
図５は、非構造格子データ記憶部のデータ構造の一例を示す図である。非構造格子データ記憶部１１０には、例えば節点情報テーブル１１１と要素情報テーブル１１２とが含まれる。節点情報テーブル１１１と要素情報テーブル１１２とによって、非構造格子データが構成される。節点情報テーブル１１１には、節点ごとに、節点番号と、節点の位置を示す座標とが設定されている。なお、節点情報テーブル１１１に設定されている各節点の座標は、シミュレーション開示前の節点の位置を示しており、シミュレーションにより心臓の拍動が再現されると、節点の位置も変化する。要素情報テーブル１１２には、要素ごとに、要素番号と、４面体の要素の頂点となる節点の節点番号とが設定されている。
【００５２】
図５に示した非構造格子データ記憶部１１０に格納されたデータに基づいて、心臓の３次元モデルが生成できる。
図６は、心臓の３次元モデルの一例を示す図である。図６の例では、３次元モデル３１は、４面体の要素の集合体である。このような３次元モデル３１に対して、心筋の収縮や拡張の動作に関する条件を与えることで、心臓の動きのシミュレーションが可能となる。シミュレーションが行われると、シミュレーション結果が、シミュレーション結果記憶部１３０に格納される。
【００５３】
図７は、シミュレーション結果記憶部のデータ構造の一例を示す図である。シミュレーション結果記憶部１３０には、１回分のシミュレーション結果の記録時点を１タイムステップとし、タイムステップごとの心筋データ１３１，１３２，１３３，・・・が格納されている。心筋データ１３１，１３２，１３３，・・・は、タイムステップのときの心臓の状態を示す情報である。
【００５４】
例えば心筋データ１３１，１３２，１３３，・・・には、要素・節点ＩＤに対応付けて、要素または節点の位置、および１または複数の物理量の値が設定されている。なお要素の位置は、例えば４面体の要素の重心位置である。また１つの物理量に関し、要素と節点の両方に値が設定されていてもよく、要素または節点の一方にのみ値が設定されていてもよい。
【００５５】
このようなタイムステップごとの心筋データ１３１，１３２，１３３，・・・に基づいて、心臓の３次元モデル３１の存在する空間が、８分木により、複数の領域に分割される。
【００５６】
図８は、８分木分割データ生成処理の手順の一例を示すフローチャートである。
［ステップＳ１０１］領域分割部１４０は、心筋データ１３１，１３２，１３３，・・・が格納されたタイムステップの先頭から順に、処理対象とするタイムステップを選択する。
【００５７】
［ステップＳ１０２］領域分割部１４０は、選択したタイムステップにおける心筋データについて、領域分割処理を行う。領域分割処理の詳細は後述する（図９参照）。
［ステップＳ１０３］領域分割部１４０は、すべてのタイムステップについて、領域分割処理を行ったか否かを判断する。すべてのタイムステップの領域分割処理が完了していれば、処理が終了する。未処理のタイムステップがあれば、処理がステップＳ１０１に進められる。
【００５８】
次に、領域分割処理の詳細について説明する。
図９は、領域分割処理の手順の一例を示すフローチャートである。
［ステップＳ１１１］領域分割部１４０は、選択されたタイムステップの心筋データをシミュレーション結果記憶部１３０から取得する。
【００５９】
［ステップＳ１１２］領域分割部１４０は、取得した心筋データに基づいて、心軸を抽出する。例えば領域分割部１４０は、取得した心筋データと、非構造格子データ記憶部１１０内の非構造格子データとに基づいて、指定されたステップにおける心臓の形状を把握する。そして領域分割部１４０は、左心室の心尖部と僧帽弁の弁領域中心とを結ぶ直線を、心軸とする。この場合、例えば左心室の心尖部の位置を示す重要と、僧帽弁の弁領域の位置を示す情報とを、予め非構造格子データ記憶部１１０に格納しておく。
【００６０】
［ステップＳ１１３］領域分割部１４０は、心軸に平行な座標軸を持つローカル座標系を設定する。例えば領域分割部１４０は、心軸と平行なｙ軸と、ｙ軸に直交するｘ軸およびｚ軸を有する直交座標系を設定する。
【００６１】
［ステップＳ１１４］領域分割部１４０は、分割の終了条件が満たされたか否かを判断する。例えば領域分割部１４０は、分割された領域のうちｚ方向の大きさが最も大きい領域のｚ方向の大きさが、所定値以下の場合に、分割の終了条件が満たされたと判断する。また領域分割部１４０は、８分木による分割のレベル（８分割による細分化の回数）が、所定のレベルに達した場合に、終了条件が満たされたと判断してもよい。分割終了条件が満たされた場合、処理がステップＳ１１９に進められる。分割終了条件が満たされていなければ、処理がステップＳ１１５に進められる。
【００６２】
［ステップＳ１１５］領域分割部１４０は、分割対象となる領域のレベルを設定する。例えば領域分割部１４０は、心臓すべてを包含するバウンディングボックスを生成し、そのバウンディングボックスで囲われる領域のレベルを「レベル０」とする。そして領域分割部１４０は、最初に、「レベル０」を分割対象のレベルとする。「レベル０」の領域を８分割して得られた８つの領域のレベルが「レベル１」となる。そこで、次に領域分割部１４０は、「レベル１」を分割対象のレベルとする。このように、領域分割部１４０は、あるレベルの領域の分割により生成された領域のレベルが、次に分割対象とする領域のレベルとなる。
【００６３】
［ステップＳ１１６］領域分割部１４０は、分割対象のレベルの領域のうちの、未分割の領域を１つ選択する。
［ステップＳ１１７］領域分割部１４０は、選択した領域を８分割する。なお、８分割処理の詳細は後述する（図１０参照）。
【００６４】
［ステップＳ１１８］領域分割部１４０は、分割対象のレベルのすべての領域に対する８分割が終了したかどうかを判断する。該当レベルの分割が終了した場合、処理がステップＳ１１４に進められる。分割対象のレベルのすべての領域の中に、未分割の領域があれば、処理がステップＳ１１６に進められる。
【００６５】
［ステップＳ１１９］領域分割部１４０は、分割終了条件が満たされると、８分木分割データを出力する。例えば領域分割部１４０は、分割によって生成された領域を示す情報を、８分木記憶部１５０に格納する。
【００６６】
このような手順で、心臓全体を包含する領域から、８分割を繰り返すことで、８分木分割データが生成される。次に８分割処理について詳細に説明する。
図１０は、８分割処理の手順を示すフローチャートである。
【００６７】
［ステップＳ１２１］領域分割部１４０は、選択する要素または節点の順番を示す変数ｉに１を設定する。
［ステップＳ１２２］領域分割部１４０は、ｉの値が、分割対象の領域内の要素と接点との合計数（ｍａｘ＿ｎｏｄｅ）以下か否かを判断する。ｉの値がｍａｘ＿ｎｏｄｅ以下であれば、処理がステップＳ１２３に進められる。ｉの値がｍａｘ＿ｎｏｄｅを超えていれば、処理がステップＳ１２４に進められる。
【００６８】
［ステップＳ１２３］領域分割部１４０は、要素および節点を並べたときのｉ番目の要素または節点のｘ方向の座標値を、メモリに保存する。なお、要素の位置とは、例えば要素の重心である。領域分割部１４０は、座標値を保存したら、変数ｉの値をインクリメント（１を加算）し、処理をステップＳ１２２に進める。
【００６９】
［ステップＳ１２４］ｉの値がｍａｘ＿ｎｏｄｅを超えた場合、領域分割部１４０は、保存したｘ座標値を、値の大きさでソートする。
［ステップＳ１２５］領域分割部１４０は、ｘ軸方向の要素および節点数を２分割する位置を、領域のｘ方向の分割位置とする。例えばｍａｘ＿ｎｏｄｅが偶数であれば、領域分割部１４０は、ソート後のｘ座標値の「ｍａｘ＿ｎｏｄｅ／２」番目の値と「（ｍａｘ＿ｎｏｄｅ／２）＋１」番目の値との中点を、分割位置とする。また、ｍａｘ＿ｎｏｄｅが奇数であれば、領域分割部１４０は、ソート後のｘ座標値の「（ｍａｘ＿ｎｏｄｅ＋１）／２」番目の値を、分割位置とする。
【００７０】
［ステップＳ１２６］領域分割部１４０は、変数ｉに１を設定する。
［ステップＳ１２７］領域分割部１４０は、ｉの値が、分割対象の領域内の要素と接点との合計数（ｍａｘ＿ｎｏｄｅ）以下か否かを判断する。ｉの値がｍａｘ＿ｎｏｄｅ以下であれば、処理がステップＳ１２８に進められる。ｉの値がｍａｘ＿ｎｏｄｅを超えていれば、処理がステップＳ１２９に進められる。
【００７１】
［ステップＳ１２８］領域分割部１４０は、要素および節点を並べたときのｉ番目の要素または節点のｙ方向の座標値を、メモリに保存する。領域分割部１４０は、座標値を保存したら、変数ｉの値をインクリメント（１を加算）し、処理をステップＳ１２７に進める。
【００７２】
［ステップＳ１２９］ｉの値がｍａｘ＿ｎｏｄｅを超えた場合、領域分割部１４０は、保存したｙ座標値を、値の大きさでソートする。
［ステップＳ１３０］領域分割部１４０は、ｙ軸方向の要素および節点数を２分割する位置を、領域のｙ方向の分割位置とする。例えばｍａｘ＿ｎｏｄｅが偶数であれば、領域分割部１４０は、ソート後のｙ座標値の「ｍａｘ＿ｎｏｄｅ／２」番目の値と「（ｍａｘ＿ｎｏｄｅ／２）＋１」番目の値との中点を、分割位置とする。また、ｍａｘ＿ｎｏｄｅが奇数であれば、領域分割部１４０は、ソート後のｙ座標値の「（ｍａｘ＿ｎｏｄｅ＋１）／２」番目の値を、分割位置とする。
【００７３】
［ステップＳ１３１］領域分割部１４０は、選択する要素または節点の順番を示す変数ｉに１を設定する。
［ステップＳ１３２］領域分割部１４０は、ｉの値が、分割対象の領域内の要素と接点との合計数（ｍａｘ＿ｎｏｄｅ）以下か否かを判断する。ｉの値がｍａｘ＿ｎｏｄｅ以下であれば、処理がステップＳ１３３に進められる。ｉの値がｍａｘ＿ｎｏｄｅを超えていれば、処理がステップＳ１３４に進められる。
【００７４】
［ステップＳ１３３］領域分割部１４０は、要素および節点を並べたときのｉ番目の要素または節点のｚ方向の座標値を、メモリに保存する。なお、要素の位置とは、例えば要素の重心である。領域分割部１４０は、座標値を保存したら、変数ｉの値をインクリメント（１を加算）し、処理をステップＳ１３２に進める。
【００７５】
［ステップＳ１３４］ｉの値がｍａｘ＿ｎｏｄｅを超えた場合、領域分割部１４０は、保存したｚ座標値を、値の大きさでソートする。
［ステップＳ１３５］領域分割部１４０は、ｚ軸方向の要素および節点数を２分割する位置を、領域のｚ方向の分割位置とする。例えばｍａｘ＿ｎｏｄｅが偶数であれば、領域分割部１４０は、ソート後のｚ座標値の「ｍａｘ＿ｎｏｄｅ／２」番目の値と「（ｍａｘ＿ｎｏｄｅ／２）＋１」番目の値との中点を、分割位置とする。また、ｍａｘ＿ｎｏｄｅが奇数であれば、領域分割部１４０は、ソート後のｚ座標値の「（ｍａｘ＿ｎｏｄｅ＋１）／２」番目の値を、分割位置とする。
【００７６】
［ステップＳ１３６］領域分割部１４０は、ｘ方向、ｙ方向、およびｚ方向に設定した分割位置で、分割対象の領域を８分割する。例えば領域分割部１４０は、まず、ｘ方向の分割位置を通る、ｙ−ｚ平面に平行な平面により、分割対象の領域を２分割する。次に領域分割部１４０は、ｙ方向の分割位置を通る、ｚ−ｘ平面に平行な平面により、２分割して得られた２つの領域それぞれを２分割する。最後に領域分割部１４０は、ｚ方向の分割位置を通る、ｘ−ｙ平面に平行な平面により、２度の２分割で得られた４つの領域それぞれを２分割する。これにより、分割対象の領域を８分割した、８つの領域が得られる。
【００７７】
図９、図１０に示した処理により、心臓を包含する領域が繰り返し８分割され、８分木分割データが生成される。
図１１は、８分木の生成例を示す図である。バウンディングボックス３２で囲われた領域内には、入れ子構造の多数の領域が含まれている。入れ子構造を木構造で表すと、８分木３３で表される。８分木の各ノードは、領域を表している。８分木３３のルートのノードは、心臓全体を包含するバウンディングボックス３２である。バウンディングボックス３２で囲われた領域のレベルを、例えば「レベル０」とする。「レベル０」の領域を８分割して、８つの領域が得られる。この領域のレベルは「レベル１」である。「レベル１」の領域それぞれを８分割して、６４個の領域が得られる。この領域のレベルは「レベル２」である。さらに「レベル２」の領域それぞれを８分割すれば、５１２個の領域が得られる。この領域のレベルは「レベル３」である。
【００７８】
８分木３３を示す８分木分割データを格納する場合、メモリ１０２とＨＤＤ１０３とに分けて格納することができる。例えば、レベル２より上位の構造を示すデータはメモリ１０２に格納され、レベル３より下位の構造を示すデータは、例えば領域ごとにファイルに纏められ、ＨＤＤ１０３に格納される。
【００７９】
図１２は、８分木記憶部のデータ構造の一例を示す図である。８分木記憶部１５０は、メモリ１０２の記憶領域とＨＤＤ１０３の記憶領域とを含んでいる。８分木記憶部１５０のメモリ１０２内の領域は、タイムステップごとの８分木データ領域１５１ａ，１５２ａ，１５３ａ，・・・が設けられている。各８分木データ領域１５１ａ，１５２ａ，１５３ａ，・・・には、例えば領域識別子に対応付けて、領域の最小値、最大値、および下位構造が設定されている。領域の最小値は、その領域における、ローカル座標系の原点に最も近い角の座標である。領域の最大値は、その領域における、ローカル座標系の原点から最も遠い角の座標である。下位構造は、領域を８分割して得られた各領域の識別子である。
【００８０】
８分木記憶部１５０のＨＤＤ１０３内の領域には、例えばタイムステップごとのディレクトリ１５１ｂ，１５２ｂ，１５３ｂ，・・・が設けられている。各ディレクトリ１５１ｂ，１５２ｂ，１５３ｂ，・・・には、対応するタイムステップにおける８分木の下位の構造の領域ごとの８分木データファイル１５１ｃが格納されている。８分木データファイル１５１ｃには、例えば、対応する領域の最小値、最大値、および要素・節点インデックスが含まれる。要素・節点インデックスは、対応する領域の領域内の要素の識別番号と、その領域内の節点の識別番号とのリストである。
【００８１】
このような８分木分割データに基づいて、３次元モデル上でユーザが任意に指定した位置の要素または節点を検索し、物理量を表示することができる。以下、検索処理について詳細に説明する。
【００８２】
図１３は、検索処理の手順の一例を示すフローチャートである。
［ステップＳ１４１］検索部１６０は、物理量を表示させる位置を指定する入力を受け付ける。例えば検索部１６０は、非構造格子データ記憶部１１０に格納されている非構造格子データと、所定のステップにおける心筋データとに基づいて、心臓の３次元モデルをモニタ２１に表示する。ユーザは、例えばマウス２３を用いて、物理量を知りたい３次元モデル上の位置を指定する。指定された位置は、画面上での２次元の値（Ｘ値，Ｙ値）である。検索部１６０は、指定された位置に表示されている心臓の３次元モデルの位置を判断し、該当する位置のローカル座標系での３次元の値を得る。
【００８３】
［ステップＳ１４２］検索部１６０は、視線ベクトルに基づいて、モニタ２１の画面上で手前側の領域を判定する。例えば図１１に示したバウンディングボックス３２であれば、「Ａ１」〜「Ａ７」の各領域は手前側の領域であるが、「Ａ８」は他の領域の後ろが隠れているため、手前側の領域ではない。
【００８４】
［ステップＳ１４３］検索部１６０は、まず、検索対象とする領域のレベルｊを「１」に設定する。
［ステップＳ１４４］検索部１６０は、ｊの値が、８分木で生成されたレベルの最大値（ｍａｘ＿ｌｅｖｅｌ）以下か否かを判断する。ｊの値がｍａｘ＿ｌｅｖｅｌ以下であれば、処理がステップＳ１４５に進められる。ｊの値がｍａｘ＿ｌｅｖｅｌを超えていれば、処理がステップＳ１５１に進められる。
【００８５】
［ステップＳ１４５］検索部１６０は、レベルｊの判定対象の領域の数を、変数「ｍａｘ＿ｒｅｇｉｏｎｓ」に設定する。例えば検索部１６０は、ｊ＝１の場合、心臓を包含するバウンディングボックス３２で示される領域を分割して得られた領域のうちの、視線ベクトルに対して手前側の領域を、レベルｊの判定対象の領域とする。また検索部１６０は、ｊ＞１の場合、ステップＳ１４６の処理で最後に選択された領域を分割して得られた領域のうちの、視線ベクトルに対して手前側の領域を、レベルｊの判定対象の領域とする。
【００８６】
［ステップＳ１４６］検索部１６０は、レベルｊの領域の判定対象の領域に番号を振る。そして検索部１６０は、選択領域を示す変数ｋに１を設定し、ｋ番目の領域を選択する。
【００８７】
［ステップＳ１４７］検索部１６０は、ｋの値がｍａｘ＿ｒｅｇｉｏｎｓ以下か否かを判断する。ｋの値がｍａｘ＿ｒｅｇｉｏｎｓ以下であれば、処理がステップＳ１４８に進められる。ｋの値がｍａｘ＿ｒｅｇｉｏｎｓを超えた場合、指定された位置が、心臓のバウンディングボックス３２外であると判断され、処理が終了する。
【００８８】
［ステップＳ１４８］検索部１６０は、選択した領域（レベルｊのｋ番目の領域）内に、ユーザから指定された位置が含まれるか否かを判断する。例えば検索部１６０は、ｋ番目の領域の最小値から最大値で示される範囲内に、指定された位置の座標が含まれるか否かを判断する。選択した領域内に指定された位置が含まれる場合、処理がステップＳ１５０に進められる。選択した領域内に指定された位置が含まれない場合、処理がステップＳ１４９に進められる。
【００８９】
［ステップＳ１４９］検索部１６０は、変数ｋの値をインクリメント（１を加算）して、処理をステップＳ１４７に進め、次の領域に対する処理を行う。
［ステップＳ１５０］検索部１６０は、レベルｊの領域から、指定された位置を含む領域を検出した場合、ｊの値をインクリメント（１を加算）して、処理をステップＳ１４４に進める。
【００９０】
［ステップＳ１５１］検索部１６０は、最後に選択した領域内の要素または節点から、指定された位置に最も近い要素または節点を検索する。例えば検索部１６０は、最後に選択した領域の８分木データファイル１５１ｃ（図１２参照）に基づいて、その領域内に要素と節点とを認識する。次に検索部１６０は、表示されている心筋の３次元モデルの状態を示す心筋データに基づいて、最後に選択した領域内の要素および節点の位置を認識する。さらに検索部１６０は、指定された位置と、要素および節点それぞれとの距離を計算し、最も近い要素または節点を特定する。そして検索部１６０は、処理対象ステップの心筋データを参照し、特定した要素または節点の物理量を、モニタ２１に表示する。
【００９１】
なお、ユーザによって表示する物理量の種別が指定されている場合、検索部１６０は、指定された物理量を表示する。また、要素または節点の一方にしか設定されていない物理量が表示対象として指定されている場合も考えられる。その場合には、検索部１６０は、最後に選択した領域内の要素または節点のうち、指定された物理量が設定された方から、指定された位置に最も近い要素または節点を検索する。
【００９２】
このようにして、ユーザが指定した位置の物理量が、モニタ２１に表示される。
図１４は、物理量の表示例を示す図である。モニタ２１の画面４０には、３次元モデル３１が表示されている。その３次元モデル３１内の任意の位置（指定位置４１）がユーザによって指定されると、その位置の物理量４２が表示される。図１４の例では、指定位置４１に最も近い要素または節点の識別子と、その要素または節点について計算された単位体積当たりのエネルギー量が表示されている。
【００９３】
以上説明したように、第２の実施の形態では、心臓を包含するバウンディングボックス３２について、同じレベルの領域間で、内包する要素および節点の数が均等となるように、８分木で分割している。これにより、ユーザが指定した位置が、分割後のどの領域内の位置であっても、その領域に含まれる要素および節点の数は同じとなる。その結果、指定した位置が属する領域の違いによる検索時間の変動が抑止される。すなわち、ユーザが物理量を表示する位置を指定したら、常に同程度の時間で、物理量が表示される。その結果、あるときだけ物理量の表示に長い時間がかかる、といった事態が抑止される。
【００９４】
なお心臓は複雑な形状をしており、シミュレーション結果の確認については左心室の心尖部と僧帽弁の弁領域中心を結ぶ心軸に直行する断面での観察が多く行われる。第２の実施の形態では、ローカル座標系の１軸が、心軸と並行となるように、ローカル座標系が定義されている。すなわち、心臓外側を包む領域の１辺が、心軸と平行になるように設定されている。これにより、心軸に直交する断面を観察中は、視線ベクトルの手前に位置する領域の数が最小限の数に抑えられる。その結果、物理量の表示を短時間で行うことができる。
【００９５】
また、第２の実施の形態では、８分木分割データのうち、木構造の上位レベルについては、メモリ１０２に保存したため、ユーザから指定された位置を含む領域の絞り込みを高速に行うことができる。
【００９６】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、８分木分割データの生成処理の効率化を図ったものである。以下、第３の実施の形態における、第２の実施の形態との相違点を説明する。
【００９７】
近接するタイムステップ間では、３次元モデルの形状にあまり変化がない。３次元モデルを包含するバウンディングボックスを８分木で分割する構造化処理の時間を考えると、すべてのタイムステップで構造化処理を行うのは非効率である。そのため第３の実施の形態では、キーとなるタイムステップが変化量に応じて決定され、キーのタイムステップでの８分木分割データが生成される。そしてキーとなっていないタイムステップについては、キーのタイムステップの８分木分割データがコピーされる。
【００９８】
図１５は、キータイムステップの一例を示す図である。例えば、先頭のタイムステップが、まずキータイムステップ５１として設定される。その後の各タイムステップにおける心臓の３次元モデルの、キータイムステップ５１からの空間的な変化が確認される。空間的な変化は、例えば、８分木の構造を作成する際に用いるバウンディングボックスのサイズの変化で判断される。また空間的な変化を、バウンディングボックスの分割位置の変化で判断することもできる。空間的な変化は、例えば変化率で表される。その場合、直前のキータイムステップと比較したタイムステップの変化率が任意の割合を超えたとき、そのタイムステップはキータイムステップとして設定される。図１５の例では、複数のキータイムステップ５１〜５４が設定されている。
【００９９】
なおキータイムステップ５１〜５４間の間隔の広さは、３次元モデルの形状の変化の度合いに応じて変わる。変化が大きいと、キータイムステップ間の間隔が狭くなる。他方、変化が小さいと、キータイムステップ間の間隔が広くなる。
【０１００】
８分木を構成する処理を全要素・節点を対象に行う。それ以外のタイムステップでは、自分の前側のキータイムステップの空間分割を引き継ぎ、コピーを行う。
第３の実施の形態では、領域分割処理の詳細が第２の実施の形態と異なる。
【０１０１】
図１６は、第３の実施の形態における領域分割処理の手順の一例を示すフローチャートである。図１６に示した処理のうち、ステップＳ２０１〜２０３，Ｓ２０８〜Ｓ２１３の各処理は、図９に示したステップＳ１１１〜Ｓ１１９の処理と同様である。以下、図９と異なるステップＳ２０４〜Ｓ２０７について説明する。
【０１０２】
［ステップＳ２０４］領域分割部１４０は、心臓全体を包含するバウンディングボックスの８分割処理を行う。８分割処理の詳細は、図１０に示した通りである。
［ステップＳ２０５］領域分割部１４０は、直前のタイムステップからの変化の度合いを示す評価値を算出する。例えば領域分割部１４０は、直前のタイムステップの８分木分割データにおける、心臓全体を包含するバウンディングボックスを８分割して得られた各領域と、ステップＳ２０４で生成された各領域とを比較して、類似度を求める。
【０１０３】
類似度の計算方法としては、例えば分割位置を比較する方法が考えられる。この場合、領域分割部１４０は、選択中のタイムステップ（time step n+1）と直前のタイムステップ（time step n）とのそれぞれについて、心臓全体を包含するバウンディングボックスを８分割した際のｘ方向の分割位置Ｘｄｉｖを算出する。そして、領域分割部１４０は、以下の式（１）で評価値を計算する。
｜Ｘｄｉｖ＿ｎ−Ｘｄｉｖ＿ｎ＋１｜／Ｘｄｉｖ＿ｎ  ・・・（１）
ここで、「Ｘｄｉｖ＿ｎ」は、直前のタイムステップ（time step n）のｘ方向の分割位置である。「Ｘｄｉｖ＿ｎ＋１」は、選択中のタイムステップ（time step n+1）のｘ方向の分割位置である。式（１）は、原点から分割位置までの長さの違いを、原点から分割位置までの長さに対する比で表したものである。式（１）の計算結果が、評価値となる。この場合、式（１）の値が大きいほど、直前のタイムステップから選択中のタイムステップまでの心臓の形状の変化が大きいことを表している。
【０１０４】
［ステップＳ２０６］領域分割部１４０は、評価値が閾値未満か否かを判断する。例えば、以下の式（２）の真偽が判定される。
｜Ｘｄｉｖ＿ｎ−Ｘｄｉｖ＿ｎ＋１｜／Ｘｄｉｖ＿ｎ＜α  ・・・（２）
ここでαは、０より大きく１より小さい定数である。評価値が閾値未満であれば、処理がステップＳ２０７に進められる。また評価値が閾値以上であれば、処理がステップＳ２０８に進められる。
【０１０５】
［ステップＳ２０７］領域分割部１４０は、直前のタイムステップ（time step n）の８分木分割データをコピーし、選択中のタイムステップ（time step n+1）の８分木分割データとする。例えばαが０．０１であれば、直前のタイムステップにおけるｘ方向の分割位置に対する、選択中のタイムステップのｘ方向の分割位置のずれが、原点から分割位置までの長さの１％未満であれば、８分木分割データがコピーされる。すなわち選択中のタイムステップの８分木分割データは、直前のタイムステップと同じ分割位置により分割した８分木分割データとなる。その後、処理がステップＳ２１３に進められる。
【０１０６】
このようにして、シミュレーションによって得られた心臓の形状の変化が少ない場合には、既に作成されている８分木分割データをコピーすることで、処理の効率化を図ることができる。なお図１６の例では、直前のタイムステップの８分木分割データと比較しているが、例えば直近のキータイムステップの８分木分割データと比較してもよい。
【０１０７】
なお、第２および第３の実施の形態では、８分木による領域分割を行っているが、４分木などの他の木構造への分割を行ってもよい。
また第２・第３の実施の形態では、心臓のシミュレーション結果として得られた物理量を表示しているが、心臓以外の臓器のシミュレーション結果についても、同様に表示することができる。さらに第２・第３の実施の形態と同様の検索により、臓器または臓器以外の３次元モデル内の任意の位置に設定された各種情報を表示することもできる。
【０１０８】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１０９】
１０  データ探索装置
１１  記憶部
１２  分割部
１３  分割データ
１４  検索部
【図１】
2015106228.tif 000003
【図２】
2015106228.tif 000004
【図３】
2015106228.tif 000005
【図４】
2015106228.tif 000006
【図５】
2015106228.tif 000007
【図６】
2015106228.tif 000008
【図７】
2015106228.tif 000009
【図８】
2015106228.tif 000010
【図９】
2015106228.tif 000011
【図１０】
2015106228.tif 000012
【図１１】
2015106228.tif 000013
【図１２】
2015106228.tif 000014
【図１３】
2015106228.tif 000015
【図１４】
2015106228.tif 000016
【図１５】
2015106228.tif 000017
【図１６】
2015106228.tif 000018