(57)【要約】      （修正有）【課題】所定の対象物について所定の間隔で撮影された複数の２次元の断層画像に基づいて、信号値に対して色成分の値と不透明度を対応付けて定義されたカラ−マップを参照してレンダリング画像を生成するボリュームレンダリング装置を提供する。【解決手段】ボリュームレンダリング装置において、カラ−マップを参照して、各断層画像の各画素の信号値から不透明度を取得し、不透明度が０でない画素が存在する範囲に３次元の各軸方向において外接する不透明外接領域を算出する不透明外接領域算出手段５０と、カラ−マップを参照して、各断層画像のうち、不透明外接領域に含まれる各画素の信号値を変換し、画素値として色成分および不透明度が定義された２次元の要素画像が重ねて配置されたボクセル画像を作成するボクセル画像作成手段６０と、ボクセル画像を用いてレンダリング画像を生成するレンダリング手段７０と、を有する。【選択図】図３
2020086806.tif 000002
【特許請求の範囲】
【請求項１】
所定の対象物について所定の間隔で撮影された複数の２次元の断層画像に基づいて、信号値に対して色成分の値と不透明度を対応付けて定義されたカラ−マップを参照してレンダリング画像を生成するためのボリュームレンダリング装置であって、
前記各断層画像の各画素のうち、前記カラ−マップを参照して得られた不透明度が０でない画素が存在する領域に３次元の各軸方向において外接する領域である不透明外接領域を算出する不透明外接領域算出手段と、
前記各断層画像のうち、前記不透明外接領域に対応する領域をボクセル化領域とし、前記カラ−マップを参照して当該ボクセル化領域の各画素の信号値を変換し、画素値として色成分および不透明度が定義された２次元の要素画像が所定の間隔で重ねて配置されたボクセル画像を作成するボクセル画像作成手段と、
前記ボクセル画像を用いてレンダリング画像を生成するレンダリング手段と、
を有するボリュームレンダリング装置。
【請求項２】
前記ボクセル画像作成手段は、
前記ボクセル化領域における最外周となる画素に対応する不透明度が０でない場合に、当該画素に対応する不透明度を０に置き換えるようにボクセル画像を作成する請求項１に記載のボリュームレンダリング装置。
【請求項３】
各前記要素画像のｘ軸方向の左端に対応する座標をＸｓｏ、ｘ軸方向の右端に対応する座標をＸｅｏ、ｙ軸方向の上端に対応する座標をＹｓｏ、ｙ軸方向の下端に対応する座標をＹｅｏ、第１番目の要素画像が配置されるｚ座標をＺｓｏ、断層画像の総数であるＭ番目の要素画像が配置されるｚ座標をＺｅｏとすると、Ｘｓｏ≦Ｘｓ＜Ｘｅ≦Ｘｅｏ、Ｙｓｏ≦Ｙｓ＜Ｙｅ≦Ｙｅｏ、Ｚｓｏ≦Ｚｓ＜Ｚｅ≦Ｚｅｏを満たす、レンダリング画像を生成する対象となるボクセル画像領域を指定する６つの座標Ｘｓ，Ｘｅ，Ｙｓ，Ｙｅ，Ｚｓ，Ｚｅが定義されている場合、
前記ボクセル画像作成手段は、ｘ≦Ｘｓまたはｘ≧Ｘｅまたはｙ≦Ｙｓまたはｙ≧Ｙｅまたはｚ≦Ｚｓまたはｚ≧Ｚｅを満たす範囲においてボクセル画像を作成する請求項１または請求項２に記載のボリュームレンダリング装置。
【請求項４】
前記断層画像に対応して、０（表示しない）または１（表示する）の値をもつマスクデータが定義されている場合、
前記不透明外接領域算出手段は、前記マスクデータを参照して、前記不透明度が０でない画素を特定するようにしている請求項１から請求項３のいずれか一項に記載のボリュームレンダリング装置。
【請求項５】
前記不透明外接領域算出手段は、所定の分割数をＮ（Ｎ＞１）として、各前記断層画像をＮ個の断層画像群に分割し、Ｎ個の各断層画像群に対して、前記不透明外接領域の一部を作成する処理を並行して実行する請求項１から請求項４のいずれか一項に記載のボリュームレンダリング装置。
【請求項６】
前記要素画像に対応して、０（表示しない）または１（表示する）の値をもつマスクデータが定義されている場合、
前記ボクセル画像作成手段は、各画素に不透明度および色成分を与えながら前記要素画像を作成する際、当該要素画像に対応する前記マスクデータを参照し、当該画素に対応する前記マスクデータの値が０の場合は、当該要素画像の当該画素の不透明度を０にするようにしている請求項１から請求項５のいずれか一項に記載のボリュームレンダリング装置。
【請求項７】
前記ボクセル画像作成手段は、ボクセル画像の３次元座標値により定まる不透明度補正テーブルを用いて、不透明度を補正する不透明度補正手段を備える請求項１から請求項６のいずれか一項に記載のボリュームレンダリング装置。
【請求項８】
前記ボクセル画像作成手段は、所定の分割数をＮ（Ｎ＞１）として、前記ボクセル化領域に対応する各前記断層画像をＮ個の断層画像群に分割し、Ｎ個の各断層画像群に対して、前記要素画像を作成する処理を並行して実行する請求項１から請求項７のいずれか一項に記載のボリュームレンダリング装置。
【請求項９】
前記ボクセル画像作成手段は、作成された各要素画像の各画素について、前記各画素を含む少なくともｘｙｚ軸方向の近傍に位置する画素の不透明度を参照して、前記要素画像の画素の色成分の値を補正する陰影付加手段を備える請求項８に記載のボリュームレンダリング装置。
【請求項１０】
前記断層画像群において、順に配置された一端を先頭、他端を末尾としたとき、
前記陰影付加手段は、前記断層画像群の先頭の断層画像から末尾の断層画像までの全ての断層画像について前記要素画像が作成された後、前記先頭の断層画像に対応する要素画像と前記末尾の断層画像に対応する要素画像の画素の色成分の値を補正するようにしている請求項９に記載のボリュームレンダリング装置。
【請求項１１】
前記断層画像群において、順に配置された一端を先頭、他端を末尾としたとき、
前記ボクセル画像作成手段は、前記断層画像群の末尾の断層画像について、前記要素画像を作成した後、前記断層画像群の先頭の断層画像から末尾の１つ前の断層画像までの各断層画像に対して、前記要素画像を作成し、
前記陰影付加手段は、前記先頭の断層画像に対応する要素画像、前記末尾の１つ前の断層画像に対応する要素画像および前記末尾の断層画像に対応する要素画像に対して色成分の値を補正する請求項９に記載のボリュームレンダリング装置。
【請求項１２】
前記レンダリング手段は、
前記ボクセル画像で構成される３Ｄテクスチャ画像を生成する３Ｄテクスチャ登録手段と、
前記３Ｄテクスチャ画像に対して所定の座標変換を行って変換後３Ｄテクスチャ画像を生成する座標変換手段と、
３次元空間のｘｙ座標面上の四角形をｚ軸方向に並べ、前記各四角形の４頂点の各３次元座標を前記変換後３Ｄテクスチャ画像の所定の４箇所の各３次元座標に対応付けた積層四角形を設定する積層四角形設定手段と、
所定の視点からｚ軸方向に平行な視線上の前記積層四角形上の３次元座標に対応する前記変換後３Ｄテクスチャ画像のボクセルの（Ｒ，Ｇ，Ｂ）で構成される色成分を当該ボクセルの不透明度に基づいて前記視点から遠い四角形の順にアルファブレンディングして得られた色成分を、前記レンダリング画像の（Ｒ，Ｇ，Ｂ）で構成される画素値として与えるようにしている画素値算出手段と、
を備えている請求項１から請求項１１のいずれか一項にボリュームレンダリング装置。
【請求項１３】
前記座標変換手段は、
所定の３次元座標系における回転を定義した４×４行列、視野角度、視点位置、クリッピング位置、ｘｙｚ軸方向のオフセット値、ｘｙｚ軸方向の拡大又は縮小倍率、ｚ軸方向変倍率を含む所定の座標変換のパラメータを取得し、
前記３Ｄテクスチャ画像に対して、前記取得したパラメータを用いた前記所定の座標変換を行って前記変換後３Ｄテクスチャ画像を生成するようにしている請求項１２にボリュームレンダリング装置。
【請求項１４】
前記座標変換手段および前記画素値算出手段は、汎用コンピュータのビデオカードに搭載されているＧＰＵおよびフレームメモリを用いて実行するようにしている請求項１３にボリュームレンダリング装置。
【請求項１５】
請求項１から請求項１４のいずれか一項に記載のボリュームレンダリング装置として、コンピュータを機能させるためのプログラム。
【請求項１６】
所定の対象物について所定の間隔で撮影された複数の２次元の断層画像の各画素に対応し、あらかじめ定義されたカラ−マップを参照して定められた各ボクセルで構成されるボクセル構造体のボクセルデータであって、
ｘｙｚ各軸の最外周となる境界面のボクセルは全て不透明度が０であり、境界面に隣接する面において、少なくとも１つの不透明度が０でないボクセルを有しているボクセルデータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、２次元の断層画像を複数枚用いて、３次元的に可視化するためのボリュームレンダリング技術に関する。
【背景技術】
【０００２】
従来、ＣＴ、ＭＲＩ、ＰＥＴなど医療画像診断機器（モダリティ）により所定のスライス間隔で連続的に撮像され、ＤＩＣＯＭ形式等でＰＡＣＳ（Picture Archiving and Communication Systems）等の医療情報システムに保管されている複数の断層画像を基に、臓器等を３次元的に可視化することが行われている。
【０００３】
３Ｄコンピュータグラフィックス分野においては、レンダリング像を２５６色などの限定色で生成し、ハードウェア実装のカラーマップ（カラー・ルックアップテーブル）を対話形式に変更してレンダリング像の色をリアルタイムに変更する手法が用いられている（特許文献１参照）。
【０００４】
また、カラーマップに依存しないＶＩＳボリューム（信号値、陰影輝度値、不透明度強度係数の３パラメータをもつボクセル）でレンダリングする方法も提案されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１−３２１５７７号公報
【特許文献２】特許第２６５１７８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術では、変更できるのはＲＧＢ値のみであり、ボリュームレンダリングで重要な、不透明度を表現したα値を制御することは開示されていない。また、特許文献２に記載の技術では、信号値に対してカラーマップを適用して再レンダリングする場合に比べ、処理負荷の抑制は限定的である。
【０００７】
そこで、本開示は、複数の断層画像に対してカラーマップを適用して、レンダリング画像を生成する際、レンダリング画像の生成処理の速度を向上させることが可能なボリュームレンダリング装置を提供することを課題とする。
【課題を解決するための手段】
【０００８】
本開示は、上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、
所定の対象物について所定の間隔で撮影された複数の２次元の断層画像に基づいて、信号値に対して色成分の値と不透明度を対応付けて定義されたカラ−マップを参照してレンダリング画像を生成するためのボリュームレンダリング装置であって、
前記各断層画像の各画素のうち、前記カラ−マップを参照して得られた不透明度が０でない画素が存在する領域に３次元の各軸方向において外接する領域である不透明外接領域を算出する不透明外接領域算出手段と、
前記各断層画像のうち、前記不透明外接領域に対応する領域をボクセル化領域とし、前記カラ−マップを参照して当該ボクセル化領域の各画素の信号値を変換し、画素値として色成分および不透明度が定義された２次元の要素画像が所定の間隔で重ねて配置されたボクセル画像を作成するボクセル画像作成手段と、
前記ボクセル画像を用いてレンダリング画像を生成するレンダリング手段と、を有する。
【０００９】
また、本開示では、
前記ボリュームレンダリング装置として、コンピュータを機能させるためのプログラムを提供する。
【００１０】
また、本開示では、
所定の対象物について所定の間隔で撮影された複数の２次元の断層画像の各画素に対応し、あらかじめ定義されたカラ−マップを参照して定められた各ボクセルで構成されるボクセル構造体のボクセルデータであって、
ｘｙｚ各軸の最外周となる境界面のボクセルは全て不透明度が０であり、境界面に隣接する面において、少なくとも１つの不透明度が０でないボクセルを有しているボクセルデータを提供する。
【発明の効果】
【００１１】
本開示によれば、複数の断層画像に対してカラーマップを適用して、レンダリング画像を生成する処理を高速に行うことが可能となる。
【図面の簡単な説明】
【００１２】
【図１】複数の断層画像と、ボリュームレンダリング像として生成されるカラーのレンダリング画像を示す図である。
【図２】本開示の一実施形態に係るボリュームレンダリング装置１００のハードウェア構成図である。
【図３】本実施形態に係るボリュームレンダリング装置の構成を示す機能ブロック図である。
【図４】本実施形態に係るボリュームレンダリング装置の処理動作を示すフローチャートである。
【図５】本実施形態で用いるカラーマップを示す図である。
【図６】図４に示したステップＳ３０における不透明外接領域算出処理を複数のＣＰＵコアで並行して行う場合を示すフローチャートである。
【図７】図６のステップＳ３３０における断層画像群に対する不透明外接領域の算出処理を示すフローチャートである。
【図８】図６のステップＳ３６０における断層画像群全体の不透明外接領域の算出処理を示すフローチャートである。
【図９】ＲＯＩと不透明外接領域を比較した図である。
【図１０】図４に示したステップＳ４０におけるボクセル画像作成処理等を並行して行う場合を示すフローチャートである。
【図１１】図６に示したステップＳ５１０、Ｓ５３０における要素画像の作成処理を示すフローチャートである。
【図１２】３Ｄテクスチャマッピングにおける対応付けを示す図である。
【図１３】３Ｄテクスチャマッピング方式の処理を行う場合の、レンダリング手段７０の構成を示す図である。
【図１４】本実施形態のレンダリング手段７０による投影画面設定の一例を示す説明図である。
【図１５】３Ｄテクスチャマッピング方式によるレンダリング処理の詳細を示すフローチャートである。
【図１６】コンピュータによりボリュームレンダリング装置１００を実現する場合の並列化処理を示す図である。
【図１７】コンピュータによりボリュームレンダリング装置１００を実現する場合の並列化処理のソフトウェアによる流れを示す図である。
【発明を実施するための形態】
【００１３】
以下、本開示の好適な実施形態について図面を参照して詳細に説明する。
本開示は、複数の断層画像に基づいて、信号値に対して色成分の値と不透明度を対応付けて定義されたカラ−マップを参照してレンダリング画像を生成するものである。図１は、複数の断層画像と、レンダリング画像を示す図である。図１（ａ）は複数の断層画像、図１（ｂ）は１枚の断層画像、図１（ｃ）はレンダリング画像である。図１（ａ）（ｂ）に示す断層画像は、ＤＩＣＯＭ形式のものを示している。図１（ａ）は、３７０枚の断層画像群であり、図１（ｂ）は、そのうちの１枚を拡大したものである。後述する実施形態のボリュームレンダリング装置では、図１（ａ）に示したような複数の断層画像に対してレンダリング処理を実行して、図１（ｃ）に示したような１枚のレンダリング画像を生成する。図１（ｃ）に示したレンダリング画像は、５１２×５１２画素であって、１画素についてＲＧＢ各色８ビットの計２４ビットで表現したものである。
【００１４】
＜１．装置構成＞
図２は、本開示の一実施形態に係るボリュームレンダリング装置１００のハードウェア構成図である。本実施形態に係るボリュームレンダリング装置１００は、汎用のコンピュータで実現することができ、図２に示すように、ＣＰＵ（Central Processing Unit）１と、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２と、ＣＰＵ１が実行するプログラムやデータを記憶するためのハードディスク、ＳＳＤ（Solid State Drive），フラッシュメモリ等の大容量の記憶装置３と、キーボード、マウス等の指示入力Ｉ／Ｆ（インターフェース）４と、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５と、液晶ディスプレイ等の表示デバイスである表示部６と、グラフィックスに特化した演算処理部であるＧＰＵ（Graphics Processing Unit）７と、表示部６に表示する画像を保持するフレームメモリ８と、を備え、互いにバスを介して接続されている。ＧＰＵ７による演算結果はフレームメモリ８に書き込まれるため、ＧＰＵ７とフレームメモリ８は、表示部６へのインタフェースを備えたビデオカードに搭載されて汎用のコンピュータにバス経由で装着されていることが多い。
【００１５】
本実施形態において、ＣＰＵ１は、マルチコアＣＰＵであり、複数のＣＰＵコアを有し、並列処理が可能となっている。図２の例では、ＲＡＭ２が１つだけ示されているが、ＣＰＵ１の各ＣＰＵコアが、１つのＲＡＭ２にアクセスするように構成されている。なお、ＣＰＵ１は複数であってもよい。またマルチコアＣＰＵは、各々のＣＰＵコアが論理的に複数の実行スレッドを受け入れるＣＰＵであってもよい。
【００１６】
図３は、本実施形態に係るボリュームレンダリング装置の構成を示す機能ブロック図である。図３において、１０は断層画像読込手段、２０はカラーマップ読込手段、３０はＲＯＩクリッピング設定手段、４０はマスク設定手段、５０は不透明外接領域算出手段、６０はボクセル画像作成手段、６１は不透明度補正手段、６２は陰影付加手段、７０はレンダリング手段、８０はレンダリング画像出力手段である。
【００１７】
断層画像読込手段１０は、ＣＴ、ＭＲＩ、ＰＥＴなどの医用画像診断機器により収集および蓄積されたＰＡＣＳから、記憶媒体や入力部を経由して、複数の断層画像を読み込む手段である。断層画像は、対象物に対して所定の間隔で撮影されて得られたものであり、各画素に信号値が付与された２次元の断層画像である。カラーマップ読込手段２０は、図示されていないカラーマップ作成手段により、あらかじめ作成されたカラーマップを記憶媒体や入力部から、カラーマップを読み込む手段である。ＲＯＩクリッピング設定手段３０は、読み込んだ複数の断層画像のうち、ボクセル画像の作成対象を、関心領域であるＲＯＩとして設定する手段である。マスク設定手段４０は、読み込んだ複数の断層画像のうち、表示させない領域をマスク設定する手段である。不透明外接領域算出手段５０は、信号値に対して色成分の値と不透明度を対応付けて定義されたカラーマップを参照して、複数の断層画像の各画素に不透明度を対応付けて、その不透明度に基づいて不透明外接領域を算出する手段である。詳しくは後述するが、不透明外接領域とは、不透明度が０でない画素が存在する範囲に３次元の各軸方向において外接する領域である。
【００１８】
ボクセル画像作成手段６０は、信号値に対して色成分の値と不透明度を対応付けて定義されたカラーマップを参照して、複数の断層画像の各画素と対応付けて３次元に配置した各ボクセルに対して、色成分の値と不透明度を与えることによりボクセル画像を作成する手段である。ボクセル画像作成手段６０は、さらに不透明度補正手段６１、陰影付加手段６２を備えている。不透明度補正手段６１は、所定のテーブルを用いてボクセル画像の各画素の不透明度αを補正する手段である。陰影付加手段６２は、ボクセル画像の各ボクセルの（Ｒ，Ｇ，Ｂ）で構成される色成分に対して、そのボクセルの近傍のボクセルの不透明度αを基に、そのボクセルにおける勾配ベクトルを算出し、算出した勾配ベクトルを用いて、陰影値を算出し、色成分（Ｒ，Ｇ，Ｂ）の各値に陰影値を乗算した値に置き換える手段である。
【００１９】
断層画像読込手段１０およびカラーマップ読込手段２０は、ＣＰＵ１が補助しながら、主にデータ入出力Ｉ／Ｆ５において実現される。ＲＯＩクリッピング設定手段３０およびマスク設定手段４０は、ＣＰＵ１が補助しながら、主に指示入力Ｉ／Ｆ４において実現される。不透明外接領域算出手段５０、ボクセル画像作成手段６０、不透明度補正手段６１、陰影付加手段６２は、ＣＰＵ１が、記憶装置３に記憶されているプログラムを実行することにより実現される。レンダリング手段７０は、ＣＰＵ１が補助しながら、主にＧＰＵ７においてプログラムを実行することにより実現される。レンダリング画像出力手段８０は、ＣＰＵ１が補助しながら、主にフレームメモリ８と表示部６において実現される。
【００２０】
図３に示した各構成手段は、現実には図２に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、ＣＰＵ、ＧＰＵ等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、ＧＰＵを搭載するタブレットなどの携帯端末や様々な装置に組み込まれたコンピュータも含む。
【００２１】
＜２．処理動作＞
次に、図２、図３に示したボリュームレンダリング装置の処理動作について説明する。図４は、本実施形態に係るボリュームレンダリング装置の処理動作を示すフローチャートである。まず、断層画像読込手段１０が、複数の断層画像を読み込む。複数の断層画像は、図１（ａ）に示したような態様のものである。本実施形態では、ＤＩＣＯＭ形式の断層画像群Ｄｏ（ｘ，ｙ，ｚ）（−３２７６８≦Ｄｏ（ｘ，ｙ，ｚ）≦３２７６７，０≦ｘ≦Ｓｘ−１，０≦ｙ≦Ｓｙ−１，０≦ｚ≦Ｓｚ−１; 解像度：Ｒｘｙ，Ｒｚ）を読み込むものとする。断層画像群Ｄｏ（ｘ，ｙ，ｚ）は１画素が１６ビットで記録されるため、−３２７６８〜３２７６７の信号値Ｄｏ（ｘ，ｙ，ｚ）が記録されている。断層画像群Ｄｏ（ｘ，ｙ，ｚ）は、ｘ座標のサイズ（画素数）がＳｘ、ｙ座標のサイズ（画素数）がＳｙの断層画像が、Ｓｚ枚積層されたものである。なお、以後の説明では、断層画像の枚数ＳｚをＭとも表現する。図１（ｂ）における１枚の断層画像の左右方向がｘ軸、上下方向がｙ軸に対応し、図１（ａ）に示した複数の断層画像を当該断層画像のＤＩＣＯＭヘッダに記録されている所定のスライス間隔（隣接する断層画像のImage Positionタグ情報の差分）で重ねた場合の積層方向がｚ軸に対応する。
【００２２】
ＤＩＣＯＭ形式の複数の断層画像を読み込んだら、ＲＯＩクリッピング設定手段３０が、ＲＯＩクリッピング設定を行う（ステップＳ１０）。ＲＯＩとはＲｅｇｉｏｎ  ｏｆ  Ｉｎｔｅｒｅｓｔの略であり、本明細書では３次元空間における関心領域を意味する（学術的には、ＲＯＩは２次元領域を指し、３次元領域の場合、ＶＯＩ（Ｖｏｌｕｍｅ  ｏｆ  Ｉｎｔｅｒｅｓｔ）と称するが、医用画像業界では３次元領域でもＲＯＩが多用される）。ここでは、レンダリング画像およびボクセル画像の作成対象とする範囲を示す。ＲＯＩをクリッピング（切り取り）して設定することにより、３次元的に任意の位置で被写体を断裁したボリュームレンダリング像を生成することができ、体表や骨に隠れた臓器や臓器の内部を描出するのに用いられる。ステップＳ４０以降の処理において、所定の範囲にボクセル画像作成対象が限定されるように、ステップＳ１０においてＲＯＩを設定する。この設定は、ｘｙｚ各軸方向のそれぞれの座標範囲を数値で指定することにより行われる。数値の指定は、直接行ってもよいし、マウス等により画面上で位置を指示し、指示入力Ｉ／Ｆ４を介して数値に変換することにより行ってもよい。
【００２３】
読み込んだ各断層画像のｘ軸方向の左端に対応する座標をＸｓｏ、ｘ軸方向の右端に対応する座標をＸｅｏ、ｙ軸方向の上端に対応する座標をＹｓｏ、ｙ軸方向の下端に対応する座標をＹｅｏ、第１スライス（先頭：第１番目）の断層画像に対応する座標をＺｓｏ、最終スライス（末尾：第Ｍ番目）の断層画像に対応する座標をＺｅｏとすると、Ｘｓｏ≦Ｘｓ＜Ｘｅ≦Ｘｅｏ、Ｙｓｏ≦Ｙｓ＜Ｙｅ≦Ｙｅｏ、Ｚｓｏ≦Ｚｓ＜Ｚｅ≦Ｚｅｏを満たす［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］、［Ｚｓ，Ｚｅ］の直方体で定義される範囲をＲＯＩと定義し処理対象として特定する。すなわち、レンダリング画像を生成する対象となるボクセル画像領域を指定する６つの座標Ｘｓ，Ｘｅ，Ｙｓ，Ｙｅ，Ｚｓ，Ｚｅが定義される。この６つの座標により、ｘｙｚ各軸に沿った辺をもつ直方体が定義され、その直方体の内部がクリッピングされたＲＯＩとなる。本実施形態では、後述のステップＳ３０において不透明外接領域を算出するが、この不透明外接領域もｘｙｚ各軸の所定の範囲で定義される直方体形状の領域としている。
【００２４】
ステップＳ１０におけるＲＯＩクリッピング設定の結果、処理対象の画素数が（Ｘｅｏ−Ｘｓｏ＋１）×（Ｙｅｏ−Ｙｓｏ＋１）×（Ｚｅｏ−Ｚｓｏ＋１）画素から、（Ｘｅ−Ｘｓ＋１）×（Ｙｅ−Ｙｓ＋１）×（Ｚｅ−Ｚｓ＋１）画素に削減されることになる。ＲＯＩクリッピング設定手段３０によるステップＳ１０のＲＯＩクリッピング設定を行うことにより、観察対象の臓器を露出させたボリュームレンダリング像が得られるという効果に加え、処理対象の画素が減って処理負荷を抑え応答性を向上させることができるという二重のメリットがあるため、設定される場合が多いが、必須の処理ではなく省略することも可能である。尚、ステップＳ１０のＲＯＩクリッピング設定の段階では、ＲＯＩクリッピングを適用する範囲を定義するだけで、具体的なＲＯＩのクリッピング処理は、ステップＳ４０以降の各処理で実行される。各々の処理において、ボクセル画像のＲＯＩ内に限定して演算が行われることにより処理負荷が軽減され、ステップＳ６０のレンダリング処理でクリッピング（断裁）されたボリュームレンダリング像が生成される。
【００２５】
ＲＯＩクリッピング設定手段３０により、ＲＯＩクリッピング設定が行われたら、次に、マスク設定手段４０が、マスク設定を行う（ステップＳ２０）。マスク設定とは、断層画像の各画素を表示させるか否かの設定である。マスク設定の手法は、特に限定されないが、本実施形態では、ステップＳ１０において読み込んだ断層画像群をＭＰＲ画像（アキシャル・コロナル・サジタルの３画面）として画面表示するとともに、本明細書に記載の方法または公知の手法により作成されるボリュームレンダリング像を表示させ、これら２次元投影された複数の画像の中から最も指示がしやすい画像を選択し、選択した画像の２次元領域を指示しながら、マスクして表示させない範囲とマスクせずに表示させる領域を特定する。このマスク設定により、断層画像群に対応した３次元空間におけるマスクデータが得られる。マスクデータＭａｓｋ（ｘ，ｙ，ｚ）は、断層画像群Ｄｏ（ｘ，ｙ，ｚ）の各画素に対応して“０”か“１”かのいずれかの値が設定されたものである。このような３次元マスクを作成する処理は必須の処理に近いが、省略することも可能である。観察対象の臓器を描出する方法として、上述のＲＯＩクリッピングもあるが、３次元マスクに比べ操作が簡便であり、処理負荷も減少するため、ＲＯＩクリッピング処理も併用される頻度が多い。ＲＯＩクリッピング設定手段３０、マスク設定手段４０により表示させるべき特定の領域が設定されることになるが、両手段で設定されている場合は、いずれも表示すべき領域として設定された領域が有効領域となり、いずれか一方が設定されている場合は、設定された領域が有効領域となる。ＲＯＩクリッピング設定手段３０、マスク設定手段４０のどちらも用いられない場合は、読み込まれた断層画像群の全領域が有効領域となる。
【００２６】
次に、不透明外接領域算出手段５０が、不透明外接領域の算出処理を行う（ステップＳ３０）。不透明外接領域とは、不透明度が０でない画素が存在する範囲に３次元の各軸方向において外接する領域である。不透明外接領域は不透明度が０でない画素が存在する範囲に外接する領域であれば、外接する辺（線分）の方向は特に限定されない。この外接する辺は直線に限定されず曲線であってもよい。しかし、断層画像の２つの座標軸の方向と、断層画像を積層した方向に沿った辺で規定される直方体の内部の領域とすることが好ましい。具体的な処理としては、カラーマップ読込手段２０から読み込んだカラーマップを用いて、クリッピング設定後の断層画像のＲＯＩに含まれる各画素の信号値に対して対応する不透明度を付与し、付与した不透明度に基づいて不透明外接領域を算出する。図５は、本実施形態で用いるカラーマップを示す図である。図５において、信号値は、断層画像の各画素に記録された信号値であり、Ｒ、Ｇ、Ｂは、それぞれ赤、緑、青の色成分であり、αはそのボクセルの表示の程度を規定する不透明度である。図５は、断層画像の信号値が１６ビットで記録され、−３２７６８〜３２７６７の値をとる場合のカラーマップである。なお、ＣＴ画像の場合は、水（water）成分を０として−２０４８から２０４８の範囲に正規化される場合が多い。図５に示すように、カラーマップには、断層画像の各画素の信号値に対して、Ｒ、Ｇ、Ｂの各色成分と不透明度αが対応付けられている。このカラーマップは、ボクセル画像作成手段６０によるボクセル画像作成処理においても用いられる（後述：ステップＳ４０）。ステップＳ３０における不透明外接領域の算出処理においては、カラーマップのうち不透明度αのみを用いる。カラーマップを参照して得られた不透明度αを用いることにより、断層画像においてα＝０となる不透明な画素が存在する領域を不透明外接領域として算出することができる。この不透明外接領域に対応する領域をボクセル化領域として、ステップＳ４０においてボクセル画像を作成する。「不透明外接領域に対応する領域」として、不透明外接領域をそのままボクセル化の対象とするボクセル化領域とすることもできるが、本実施形態では、後述するように、不透明外接領域を１画素分広げた領域を、不透明外接領域に対応するボクセル化領域としている。
【００２７】
次に、ボクセル画像作成手段６０が、ボクセル画像作成処理を行う（ステップＳ４０）。ボクセル画像とは、断層画像の各画素が３次元空間にボクセルとして配置されたボクセル構造体である。ステップＳ４０における具体的な処理としては、カラーマップ読込手段２０から読み込んだカラーマップを用いて、クリッピング設定後の断層画像のＲＯＩ範囲に含まれる各画素の信号値に対して対応する値を付与し、ステップＳ３０において算出されたボクセル化領域に含まれるボクセル画像を作成する。図５に示したようなカラーマップを用いて、断層画像の各画素に対応するボクセル画像の各ボクセルに対して、その画素の信号値に対応するＲ、Ｇ、Ｂの各色成分と不透明度αをボクセル値として与えることにより、フルカラーのボリュームレンダリング像を生成するためのボクセル画像を作成することができる。
【００２８】
図５に示したようなカラーマップを用いることにより、断層画像において所定の信号値を有する箇所を、任意の色成分、任意の不透明度で表現することができる。断層画像においては、臓器、器官等の部位に応じて信号値が異なるため、ボリュームレンダリング像において、カラーマップを定義することにより、信号値の相違に基づいて、人為的に、特定の臓器を色分けしたり、特定の器官を透明にして背後に隠れた臓器を露出させたりすることができる。特定の部位の不透明度αを最大値（α＝２５５）に設定すれば、その部位だけが明瞭に表示され、その部位の奥に位置する部位は描出されない。逆に特定の部位の不透明度αを最小値（α＝０）に設定すれば、その部位は不可視（透明）になり、その部位の奥に位置する部位が露出される。特定の部位の不透明度αを中間調（０＜α＜２５５）に設定すれば、その部位が半透明で表示され、その奥に位置する部位が透かし合成されて表示される。また、色成分Ｒ、Ｇ、Ｂとしては、目的とする部位を視認し易くするための任意の値を設定することができる。
【００２９】
したがって、カラーマップは、観察対象の部位ごとに設定しておくことができ、同じ断層画像群に対しても、異なるカラーマップを使用することにより、異なるボリュームレンダリング像が得られることになる。すなわち、肺用のカラーマップを用いれば、肺の部分が目立ったボリュームレンダリング像が得られ、心臓用のカラーマップを用いれば、心臓の部分が目立ったボリュームレンダリング像が得られる。ただし、各臓器の信号値分布は互いにオーバーラップしていることもあるため、特定の臓器のみを描出するカラーマップを作成することはできないことが多い。例えば、心臓用のカラーマップでは肋骨・胸骨も同時に描出され、心臓はこれらの骨に隠れてしまうため、ＲＯＩクリッピングを設定して肋骨を仮想的に断裁するなどの工夫が必要になる。
【００３０】
本実施形態では、指示入力Ｉ／Ｆ４を介した操作により、使用中のカラーマップに変更を加えたり、異なるカラーマップを読み込んだりすることが可能となっている。そして、ボリュームレンダリング装置は、変更されたカラーマップまたは新たに読み込まれたカラーマップを参照して、ボリュームレンダリング像として提示するためのレンダリング画像を生成する。本実施形態のボリュームレンダリング装置は、レンダリング画像を高速で生成することが可能であるため、カラーマップの変更に対してリアルタイムにボリュームレンダリング像を更新できる。
【００３１】
ステップＳ４０においては、ボクセル画像作成手段６０が、複数の断層画像のＸｓ＜ｘ＜ＸｅかつＹｓ＜ｙ＜ＹｅかつＺｓ＜ｚ＜Ｚｅの範囲内であって、かつステップＳ３０において算出されたボクセル化領域に含まれる各画素（ｘ，ｙ，ｚ）における信号値を用いてカラーマップを参照し、信号値に対応する色成分であるＲ、Ｇ、Ｂと、不透明度αの値を取得し、その値を対応するボクセルの値とする。複数枚の断層画像における全ての画素に対して、この処理を行うことにより、複数枚の断層画像に対応した３次元のボクセル画像が得られる。これにより、ボクセル画像の各ボクセルの値は、Ｒ、Ｇ、Ｂ、αの４つとなる。各色成分Ｒ、Ｇ、Ｂ、αはそれぞれ１画素につき８ビットで記録されるため、ボクセル画像においては、１画素３２ビットで記録されることになる。
【００３２】
本実施形態では、ステップＳ３０における不透明外接領域の算出処理、ステップＳ４０におけるボクセル画像作成処理は、複数のＣＰＵコアにより並行して行われる。ここで、ステップＳ３０における不透明外接領域の算出処理の詳細について説明する。図６は、ステップＳ３０における不透明外接領域の算出処理等を並行して行う場合を示すフローチャートである。不透明外接領域算出手段５０は、ステップＳ１０で読み込んだ断層画像群をＮ個（Ｎ≧２の整数）に分割し、各ＣＰＵコアで並列処理を行う。（ｘ，ｙ）座標を備えた各断層画像が積層された方向がｚ軸方向となるため、ｚ座標の値に応じてＮ個に分割する。具体的には、各断層画像群の先頭の断層画像の座標をＺ１、末尾の断層画像の座標をＺ２とし、先頭座標Ｚ１、末尾座標Ｚ２に、読み込んだ断層画像を割り当てていく。例えば、１番目のＣＰＵコアには、Ｚ１＝Ｚｓ、Ｚ２＝Ｚｓ＋（Ｚｅ−Ｚｓ＋１）／Ｎ−１が設定される。各断層画像群には、断層画像が順に配置されているが、一端を先頭、他端を末尾としている。
【００３３】
次に、処理対象とする断層画像群に対する不透明外接領域を算出する（ステップＳ３３０）。ステップＳ３３０における処理は、Ｎ個のＣＰＵコアにより並行して処理が行われる。ステップＳ３３０における処理の詳細については後述する。
【００３４】
ステップＳ３３０における断層画像群に対する不透明外接領域の算出を終えたら、Ｎ個の断層画像群からなる断層画像全体に対して、不透明外接領域の算出を行う（ステップＳ３６０）。ステップＳ３６０における処理の詳細についても後述する。本実施形態では、複数に分割した断層画像群を複数のＣＰＵコアで並行に処理する。
【００３５】
上述のステップＳ３３０の処理の詳細について説明する。図７は、ステップＳ３３０における断層画像群に対する不透明外接領域の算出処理を示すフローチャートである。ステップＳ３３０の処理は、分割されたＮ個の各断層画像群に対して行われる。ステップＳ３３０においては、各断層画像群の先頭の断層画像の座標をＺ１、末尾の断層画像の座標をＺ２とし、先頭座標Ｚ１、末尾座標Ｚ２に、読み込んだ断層画像を割り当てる。例えば、１番目のＣＰＵコアには、Ｚ１＝Ｚｓ、Ｚ２＝Ｚｓ＋（Ｚｅ−Ｚｓ＋１）／Ｎ−１が設定される。各断層画像群には、断層画像が順に配置されているが、一端を先頭、他端を末尾としている。
【００３６】
まず、初期設定を行う（ステップＳ３３１）。具体的には、断層画像を特定するｚと、断層画像の座標値であるｘ，ｙと、ｘの最小値、最大値をそれぞれ決定するための変数Ｘｍｉｎ（ｔｉｄ）、Ｘｍａｘ（ｔｉｄ）と、ｙの最小値、最大値をそれぞれ決定するための変数Ｙｍｉｎ（ｔｉｄ）、Ｙｍａｘ（ｔｉｄ）と、ｚの最小値、最大値をそれぞれ決定するための変数Ｚｍｉｎ（ｔｉｄ）、Ｚｍａｘ（ｔｉｄ）に初期値を与える。（ｔｉｄ）は、断層画像群を特定する識別情報であり、Ｎ個の各断層画像群に対応する値が与えられる。このｔｉｄは、処理スレッドを特定する識別情報でもある。
【００３７】
ｘ，ｙとしては、ステップＳ１０においてＲＯＩクリッピング設定が行われている場合、その最小値Ｘｓ、最小値Ｙｓをそれぞれ与える。また、Ｘｍｉｎ（ｔｉｄ）、Ｘｍａｘ（ｔｉｄ）、Ｙｍｉｎ（ｔｉｄ）、Ｙｍａｘ（ｔｉｄ）、Ｚｍｉｎ（ｔｉｄ）、Ｚｍａｘ（ｔｉｄ）としては、ステップＳ１０においてＲＯＩクリッピング設定が行われている場合、最小値を決定するための変数には、ＲＯＩクリッピング設定による最大値を与え、最大値を決定するための変数には、ＲＯＩクリッピング設定による最小値を与える。したがって、ＲＯＩクリッピング設定が行われている場合、以下の〔数式１〕に示すように初期値が設定される。
【００３８】
〔数式１〕
Ｘｍｉｎ（ｔｉｄ）＝Ｘｅ
Ｘｍａｘ（ｔｉｄ）＝Ｘｓ
Ｙｍｉｎ（ｔｉｄ）＝Ｙｅ
Ｙｍａｘ（ｔｉｄ）＝Ｙｓ
Ｚｍｉｎ（ｔｉｄ）＝Ｚｅ
Ｚｍａｘ（ｔｉｄ）＝Ｚｓ
【００３９】
なお、ステップＳ１０においてＲＯＩクリッピング設定が省略されている場合には、［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］、［Ｚｓ，Ｚｅ］に代えて断層画像群の最小値、最大値である［Ｘｓｏ，Ｘｅｏ］、［Ｙｓｏ，Ｙｅｏ］、［Ｚｓｏ，Ｚｅｏ］が初期値として設定される。
【００４０】
初期設定が行われたら、断層画像の対象画素の信号値により図５に示したカラーマップを参照し、不透明度αを取得する（ステップＳ３３２）。次に、取得した不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の少なくとも一方が“０”であるか否かを判定する（ステップＳ３３３）。なお、ステップＳ２０におけるマスク設定が省略されている場合には、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）が“０”であるか否かの判定は行わず、不透明度αのみが“０”であるか否かの判定を行う。
【００４１】
ステップＳ３３３において、“Ｎｏ”すなわち不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない場合には、不透明とすべき画素であると考えられるため、最小値を決定するための変数Ｘｍｉｎ（ｔｉｄ）、Ｙｍｉｎ（ｔｉｄ）、Ｚｍｉｎ（ｔｉｄ）、最大値を決定するための変数Ｘｍａｘ（ｔｉｄ）、Ｙｍａｘ（ｔｉｄ）、Ｚｍａｘ（ｔｉｄ）を変更する（ステップＳ３３４）。具体的には、以下の〔数式２〕に従った処理を実行することにより、変数の値を変更する。
【００４２】
〔数式２〕
ｘ＜Ｘｍｉｎ（ｔｉｄ）の場合、Ｘｍｉｎ（ｔｉｄ）＝ｘ
ｘ＞Ｘｍａｘ（ｔｉｄ）の場合、Ｘｍａｘ（ｔｉｄ）＝ｘ
ｙ＜Ｙｍｉｎ（ｔｉｄ）の場合、Ｙｍｉｎ（ｔｉｄ）＝ｙ
ｙ＞Ｙｍａｘ（ｔｉｄ）の場合、Ｙｍａｘ（ｔｉｄ）＝ｙ
ｚ＜Ｚｍｉｎ（ｔｉｄ）の場合、Ｚｍｉｎ（ｔｉｄ）＝ｚ
ｚ＞Ｚｍａｘ（ｔｉｄ）の場合、Ｚｍａｘ（ｔｉｄ）＝ｚ
【００４３】
〔数式２〕により、対象とする断層画像群（ｔｉｄ）における不透明外接領域を定義するｘｙｚ各軸方向の最小値または最大値の各値が、前述の不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でないという条件を満足する断層画像（ｚ）における画素（ｘ，ｙ）の３次元座標値（ｘ，ｙ，ｚ）により更新される。
【００４４】
ステップＳ３３３において、すなわち不透明度α等が“０”であると判定された場合、“０”でないと判定されてステップＳ３３４により変数を変更された場合のいずれにおいても、対象とする画素に対する処理を終えたことになるので、次に、対象画素をｘ軸方向において変更する（ステップＳ３３５）。具体的には、ｘ座標の値をインクリメントする。ｘ座標の変更の結果、ｘ≦Ｘｅである場合は、ステップＳ３３３に戻って、次の画素に対する処理を行う。一方、ステップＳ３３５において、ｘ＞Ｘｅとなった場合は、対象画素をｙ軸方向において変更する（ステップＳ３３６）。具体的には、ｙ座標の値をインクリメントする。ｘ座標の変更の結果、ｙ≦Ｙｅである場合は、ステップＳ３３３に戻って、次の画素に対する処理を行う。このようにして、あるｚで特定される断層画像の全ての画素（ｘ，ｙ）に対して処理を終えたら、対象画素をｚ軸方向において変更する（ステップＳ３３７）。すなわち、対象とする断層画像を変更する。ステップＳ３３７において、Ｚ＞ｚ２となった場合は、１つの断層画像群における（Ｚ２−Ｚ１＋１）個の断層画像に対して処理を終えたことになるので、図７に示したステップＳ３３０の処理を終了する。
【００４５】
１つの断層画像群における全ての断層画像、画素について処理を行うことにより、不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない全ての断層画像、画素について、ステップＳ３３４における〔数式２〕に従った処理が実行されることになる。これにより、途中に不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）いずれかが“０”の画素があったとしても不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない最も外側の断層画像、画素の位置を取得することができる。
【００４６】
図６に示したステップＳ３３０の処理をｚ＝Ｚ１〜ｚ＝Ｚ２まで行うことにより、分割された１つの断層画像群における不透明外接領域が算出される。そして、ステップＳ３６０において、Ｎ個の全ての断層画像群を集めた断層画像群全体の不透明外接領域を算出する。ステップＳ３６０の処理の詳細について説明する。図８は、ステップＳ３６０における断層画像群全体の不透明外接領域の算出処理を示すフローチャートである。まず、初期設定を行う（ステップＳ３６１）。具体的には、断層画像群を特定する識別情報であるｔｉｄと、処理スレッド数を示す固定値Ｎと、ｘの最小値、最大値をそれぞれ決定するための変数Ｘｍｉｎ、Ｘｍａｘと、ｙの最小値、最大値をそれぞれ決定するための変数Ｙｍｉｎ、Ｙｍａｘと、ｚの最小値、最大値をそれぞれ決定するための変数Ｚｍｉｎ、Ｚｍａｘに初期値を与える。
【００４７】
次に、各分割画像群において算出された最小値Ｘｍｉｎ（ｔｉｄ）、Ｙｍｉｎ（ｔｉｄ）、Ｚｍｉｎ（ｔｉｄ）、最大値Ｘｍａｘ（ｔｉｄ）、Ｙｍａｘ（ｔｉｄ）、Ｚｍａｘ（ｔｉｄ）を用いて、最小値を決定するための変数Ｘｍｉｎ、Ｙｍｉｎ、Ｚｍｉｎ、最大値を決定するための変数Ｘｍａｘ、Ｙｍａｘ、Ｚｍａｘを変更する（ステップＳ３６２）。具体的には、以下の〔数式３〕に従った処理を実行することにより、変数の値を変更する。
【００４８】
〔数式３〕
Ｘｍｉｎ（ｔｉｄ）＜Ｘｍｉｎの場合、Ｘｍｉｎ＝Ｘｍｉｎ（ｔｉｄ）
Ｘｍａｘ（ｔｉｄ）＞Ｘｍａｘの場合、Ｘｍａｘ＝Ｘｍａｘ（ｔｉｄ）
Ｙｍｉｎ（ｔｉｄ）＜Ｙｍｉｎの場合、Ｙｍｉｎ＝Ｙｍｉｎ（ｔｉｄ）
Ｙｍａｘ（ｔｉｄ）＞Ｙｍａｘの場合、Ｙｍａｘ＝Ｙｍａｘ（ｔｉｄ）
Ｚｍｉｎ（ｔｉｄ）＜Ｚｍｉｎの場合、Ｚｍｉｎ＝Ｚｍｉｎ（ｔｉｄ）
Ｚｍａｘ（ｔｉｄ）＞Ｚｍａｘの場合、Ｚｍａｘ＝Ｚｍａｘ（ｔｉｄ）
【００４９】
〔数式３〕により、対象とする断層画像群（ｔｉｄ）における不透明外接領域のｘｙｚ各軸方向の最小値または最大値の各値が、全体の不透明外接領域を定義する範囲を超える場合、当該断層画像群（ｔｉｄ）における不透明外接領域のｘｙｚ各軸方向の最小値または最大値の値により、全体の不透明外接領域を定義する範囲が拡大更新される。
【００５０】
次に、対象とする断層画像群を変更する（ステップＳ３６３）。具体的には、ｔｉｄの値をインクリメントする。ｔｉｄの値をインクリメントした結果、ｔｉｄがＮより小さい場合は、全ての断層画像群に対して処理を終えていないことを意味するので、ステップＳ３６２に戻って、次の断層画像群に対して最小値、最大値を決定するための変数を変更する処理を行う。ｔｉｄの値をインクリメントした結果、ｔｉｄがＮ以上である場合は、全ての断層画像群に対して処理を終えたことを意味するので、不透明外接領域の境界処理を行う（ステップＳ３６４）。ステップＳ３６４では、モアレ対策として、不透明度αが０の透明な画素で構成される境界面（x=Xs'またはx=Xe'またはy=Ys'またはy=Ye' またはz=Zｓ'またはz=Ze'）を不透明外接領域の最外周となる外接直方体のエッジに１画素幅だけ付加する。具体的には、ステップＳ３６２を繰り返すことにより算出された領域をｘｙｚ各軸方向に１画素ずつ拡張する処理を行う。より具体的には、以下の〔数式４〕に従った処理を実行することにより、変数の値を変更する。
【００５１】
〔数式４〕
Ｘｓ´＝Ｘｍｉｎ−１とし、Ｘｓ´＜Ｘｓの場合、Ｘｓ´＝Ｘｓ
Ｘｅ´＝Ｘｍａｘ＋１とし、Ｘｅ´＞Ｘｅの場合、Ｘｅ´＝Ｘｅ
Ｙｓ´＝Ｙｍｉｎ−１とし、Ｙｓ´＜Ｙｓの場合、Ｙｓ´＝Ｙｓ
Ｙｅ´＝Ｙｍａｘ＋１とし、Ｙｅ´＞Ｙｅの場合、Ｙｅ´＝Ｙｅ
Ｚｓ´＝Ｚｍｉｎ−１とし、Ｚｓ´＜Ｚｓの場合、Ｚｓ´＝Ｚｓ
Ｚｅ´＝Ｚｍａｘ＋１とし、Ｚｅ´＞Ｚｅの場合、Ｚｅ´＝Ｚｅ
【００５２】
ステップＳ３６４においては、境界となる画素を１画素分だけ外側に移動させている。このようにして外側に１画素分広げた領域をボクセル画像の作成対象とするボクセル化領域とする。ボクセル化領域の最外側の画素は、不透明度αが“０”であるはずなので、ボクセル化領域の最外周の画素、いわゆるボクセル化領域の境界面に位置する画素は、全て透明な画素となる。したがって、不透明外接領域算出手段５０は、各軸方向における最外周となる画素に対応する不透明度が０となるようにボクセル化領域を算出することになる。ただし、ボクセル化領域の境界面に位置する画素の色成分（ＲＧＢ値）は、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）が０またはＲＯＩの範囲外であるか否かにかかわらず、断層画像の信号値を基にカラーマップで定義されるＲＧＢ値をそのまま付与する。これにより、ボクセル化領域の内部と外部で、不透明度は不連続になるがＲＧＢ値は連続性が維持され、このボクセル化領域に対応するボクセル画像に対してレンダリング処理を行った場合、ボクセル化領域の境界面に発生するモアレを抑制することが可能となる。ステップＳ３６４における処理の結果得られる［Ｘｓ´，Ｘｅ´］、［Ｙｓ´，Ｙｅ´］、［Ｚｓ´，Ｚｅ´］の直方体で定義される範囲をボクセル化領域と定義し処理対象として特定する。なお、図８のステップＳ３６４においては、不透明外接領域の外側に１画素分広げた領域ををボクセル化領域とすることにより、後述するボクセル画像の作成時にボクセル化領域の各軸方向における最外周となるボクセル（画素）に対応する不透明度が０となるようにした。しかし、これに限定されず、不透明外接領域で規定される領域をそのままボクセル化領域とし、後述するボクセル画像の作成時に、最外周となる画素の不透明度が０でない場合であっても、最外周となるボクセルの不透明度を強制的に０に置き換えることにより、最外周となるボクセルに対応する不透明度が０となるようにしてもよい。
【００５３】
上記のようにして、ステップＳ３０の処理により不透明外接領域が算出される。ここで、ステップＳ１０のＲＯＩクリッピング処理により得られるＲＯＩと、ステップＳ３０の処理により得られる不透明外接領域を比較してみる。図９は、ＲＯＩと不透明外接領域を比較した図である。このうち、図９（ａ）は、ＲＯＩ、図９（ｂ）は、不透明外接領域を示している。図９（ａ）（ｂ）において、楕円状の実線は、複数の断層画像による空間内における不透明画素（α＞０）の分布範囲を示している。ここで、不透明画素とは、カラーマップを参照した結果、不透明度αが０より大きい値をもつ画素であり、不透明画素の分布範囲とは、不透明画素が存在している最大範囲を示している。すなわち、不透明画素の分布範囲内には、不透明度αが０である透明画素も存在している。ここでは、図９（ａ）（ｂ）に示す不透明画素の分布範囲は同一のものを示している。
【００５４】
図９（ａ）においては、実線の直方体がＲＯＩを示し、破線の直方体が不透明外接領域を示している。図９（ｂ）においては、実線の直方体が不透明外接領域を示している。上述のように、ＲＯＩは、ステップＳ１０におけるＲＯＩクリッピング設定において、ｘｙｚ各軸方向のそれぞれの座標範囲を数値で指定することにより行われる。また、不透明外接領域は、ステップＳ３０における不透明外接領域の算出において、不透明画素の分布範囲に外接する不透明外接領域を算出することにより行われる。通常、ステップＳ１０におけるＲＯＩクリッピング設定においては、不透明画素の分布範囲を含むように利用者が設定し、ステップＳ３０における不透明外接領域の算出においては、不透明画素の分布範囲を含む最小の不透明外接領域が算出される。そのため、図９（ａ）に実線の直方体と破線の直方体で示したように、不透明外接領域がＲＯＩに完全に包含され、不透明外接領域の方がＲＯＩよりも小さくなる。
【００５５】
したがって、後述のステップＳ４０においては、不透明外接領域に基づくボクセル化領域においてボクセル画像が作成されることになる。しかし、ＲＯＩは、ステップＳ１０におけるＲＯＩクリッピング設定において任意に設定できるため、必ずしも不透明画素の分布範囲全体を含むように設定されるとは限らない。その場合、ボクセル画像は、ＲＯＩと不透明外接領域の両方に含まれる範囲内で作成される。また、マスク設定処理（Ｓ２０）においてマスクが定義されている場合、図９のα＞０の範囲として示されている楕円体のような任意の３次元形状で囲まれる範囲の外側がマスクされα＝０となるが、不透明画素の分布範囲とは独立して定義される。即ち、図９のα＞０の範囲として示されている楕円体のような分布が２種類存在し、これらの２種類の分布が重なったα＞０の分布範囲に外接するように不透明外接領域が設定されることになり、不透明外接領域は更に小さくなる。
【００５６】
ここで、不透明外接領域の内部における画素の分布について説明する。図９（ｃ）は、図９（ｂ）に対し、ドーナツ型のマスクデータＭａｓｋ（ｘ，ｙ，ｚ）を追加したもので、図９（ｃ）の三重の楕円で挟まれた白色の領域がＭａｓｋ（ｘ，ｙ，ｚ）＝０となるマスク領域である。図９（ｃ）においては、不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない画素を網掛けで示しており、不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）のいずれかが“０”の画素を網掛けせずに示している。図９（ｃ）に示すように、不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない画素の分布が内側と外側の二重になっていたとしても、不透明度α、マスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない画素の分布の最も外側を含むように、不透明外接領域は設定される。内側のマスクデータＭａｓｋ（ｘ，ｙ，ｚ）の両方が“０”でない画素の分布に対しては、不透明外接領域は設定されない。
【００５７】
このようにして、不透明外接領域に対応する範囲に縮小したボクセル画像を構築してボリュームレンダリングを行っても、得られるボリュームレンダリング像は、従来の断層画像全体に対してボクセル画像を構築してボリュームレンダリングを行う場合と差異は無い。しかし、後者に比べボクセル画像を構築する処理負荷およびボクセル画像を保持するメモリ負荷、更には後述するボクセル画像を３Ｄテクスチャ画像としてＧＰＵ側に転送して実行させる負荷が各々抑制され、従来より短い時間でボリュームレンダリング像を取得することが可能になる。
【００５８】
次に、不透明外接領域に対応する範囲に縮小したボクセル画像を更に高速に作成できるようにした、ステップＳ４０におけるボクセル画像作成処理の詳細について説明する。ステップＳ３６４における処理の結果得られた［Ｘｓ´，Ｘｅ´］、［Ｙｓ´，Ｙｅ´］、［Ｚｓ´，Ｚｅ´］の直方体で定義される範囲であるボクセル化領域を、以下［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］、［Ｚｓ，Ｚｅ］として説明する。図１０は、ステップＳ４０におけるボクセル画像作成処理を各ＣＰＵコアで並行して行う処理を示すフローチャートである。ボクセル画像作成手段６０は、不透明外接領域算出手段５０により削減された、ボクセル化領域に含まれるＺｅ−Ｚｓ＋１枚の断層画像群をＮ個（Ｎ≧２の整数）に分割し、各ＣＰＵコアで並列処理を行う。具体的には、各断層画像群の先頭の断層画像の座標をＺ１、末尾の断層画像の座標をＺ２とし、先頭座標Ｚ１、末尾座標Ｚ２に、読み込んだ断層画像を割り当てていく。例えば、１番目のＣＰＵコアには、Ｚ１＝Ｚｓ、Ｚ２＝Ｚｓ＋（Ｚｅ−Ｚｓ＋１）／Ｎ−１が設定される。各断層画像群には、断層画像が順に配置されているが、一端を先頭、他端を末尾としている。
【００５９】
断層画像群がＮ個に分割され、それぞれが各ＣＰＵコアに割り当てられたら、各ＣＰＵコアは、図１０に示したフローチャートに従った処理を実行する。はじめに、図１０のステップＳ５２０からＳ５５０までのコア部分の処理について概要構成を説明する。この処理は、分割された断層画像群の各断層画像に対して、基本的には先頭Ｚ１から末尾Ｚ２の順に要素画像を作成し（ステップＳ５３０）、作成された要素画像に対して陰影付加処理（ステップＳ５４０）を行い、要素画像を更新するものである。要素画像は、断層画像のボクセル化領域に対応する［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］の範囲に含まれる画素の各画素値（信号値）を色値（Ｒ，Ｇ，Ｂ）と不透明度（α）に変換し、画素数を（Ｘｅ−Ｘｓ＋１）×（Ｙｅ−Ｙｓ＋１）画素に縮小した画像で、３次元のボクセル画像において、ｚ座標を特定したものであり、３次元画像の一部である。すなわち、２次元の要素画像が所定の間隔で重ねて配置されることによりボクセル画像が得られる。そのため、要素画像の各ボクセルの値は、上述のように、Ｒ、Ｇ、Ｂ、αの４つとなる。座標ｚの要素画像は、座標ｚの断層画像の［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］の範囲の各画素と１対１に対応して作成されるが、座標ｚの要素画像に対して陰影付加処理（ステップＳ５４０）を実行するためには、座標ｚ−１の要素画像と座標ｚ＋１の要素画像を参照する必要があるため、そのまま続けて実行することはできないという第１の問題が生じる。そこで、１つ前に作成された座標ｚ−１の要素画像に対して、その前に作成された座標ｚ−２の要素画像と今回作成された座標ｚの要素画像を参照しながら陰影付加処理を行い、１つ前に作成された座標ｚ−１の要素画像を更新するようにしている。即ち、陰影付加処理（ステップＳ５４０）は常にｚ座標が１つ遅れで実行されることになる。ただし、ｚ＝Ｚ１およびｚ＝Ｚ１＋１の最初の２ステップでは、陰影付加処理（ステップＳ５４０）を実行する段階では、座標ｚ―２の要素画像または座標ｚ−１の要素画像は存在しないため、陰影付加処理（ステップＳ５４０）は見送り、ｚ＝Ｚ１＋１に対する陰影付加処理はｚ＝Ｚ１＋２の段階で行い、ｚ＝Ｚ１に対する陰影付加処理は最後のステップＳ５６０で実行する。
【００６０】
このようにして、先頭Ｚ１から末尾Ｚ２の順にステップＳ５２０からＳ５５０までの処理を繰り返すと、先頭Ｚ１から末尾Ｚ２までの要素画像は全て作成されるが（図１０の処理では末尾Ｚ２の１つ前のＺ２−１で止めているため、この処理では末尾Ｚ２の要素画像は作成されない）、先頭Ｚ１および末尾Ｚ２の要素画像に対して陰影付加処理が実行されていない。そこで、これら２つの要素画像に対する陰影付加処理は最後のステップＳ５６０で実行する。先頭Ｚ１および末尾Ｚ２の要素画像に対して陰影付加処理を実行させるためには、座標Ｚ１−１の要素画像および座標Ｚ２＋１の要素画像を参照する必要があるが、これらの要素画像は、並列実行されている他のＣＰＵコアで作成される。そこで、ステップＳ５２０からＳ５５０までの一連の処理を終了した後、共有メモリに配置されている他のＣＰＵコアで作成された要素画像を参照しながら、先頭Ｚ１および末尾Ｚ２の要素画像に対して陰影付加処理を実行する。この追加処理が図１０のステップＳ５６０に対応する。
【００６１】
ここで、もう１つ問題が生じる。末尾Ｚ２の要素画像に対して陰影付加処理を実行する際、共有メモリに配置されている他のＣＰＵコアで作成された座標Ｚ２＋１の要素画像を参照するが、当該要素画像は他のＣＰＵコアでは先頭Ｚ１の要素画像に対応し、順番的に最初に作成される要素画像になるため、当該ＣＰＵコアが末尾Ｚ２の要素画像に対して陰影付加処理を実行する段階で、座標Ｚ２＋１の要素画像は既に作成されている可能性が高いため問題はない。しかし、先頭Ｚ１の要素画像に対して陰影付加処理を実行する際、他のＣＰＵコアで作成された座標Ｚ１−１の要素画像を参照するが、当該要素画像は他のＣＰＵコアでは末尾Ｚ２の要素画像に対応し、順番的に最後に作成される要素画像になるため、当該ＣＰＵコアが先頭Ｚ１の要素画像に対して陰影付加処理を実行する段階で、座標Ｚ１−１の要素画像の作成が間に合わない可能性がある（実験では間に合わない場合が過半数以上あった）。そこで、各ＣＰＵコアは末尾Ｚ２の要素画像の作成を最優先で行うようにする（ステップＳ５１０）。その後、ステップＳ５２０からＳ５５０までの処理を実行するが、末尾Ｚ２の要素画像の作成は既に終了しているため、繰り返し範囲をステップＳ５５０に示されるように、先頭Ｚ１から末尾Ｚ２−１までに短縮する。そうすると、先頭Ｚ１、末尾Ｚ２の要素画像に加え、座標Ｚ２−１の要素画像に対しても陰影付加処理が未実行となる。そこで、ステップ５６０に示されるように、先頭Ｚ１、末尾Ｚ２および座標Ｚ２−１の３点の要素画像に対して陰影付加処理のみを追加で行う。
【００６２】
以上を踏まえ、図１０に示したフローチャートに従って、処理内容を詳細に説明する。まず、末尾のｚ座標となる断層画像に対応する要素画像を作成する（ステップＳ５１０）。なお、ステップＳ５１０においては、必須でない処理として、作成された要素画像の不透明度を補正する処理も行われる。ステップＳ５１０における処理の詳細については後述する。ステップＳ５１０において、末尾の断層画像に対応する要素画像のボクセル値の特定および不透明度の補正を終えたら、次に、先頭のｚ座標となる断層画像に処理対象を移行する（ステップＳ５２０）。具体的には、先頭のｚ＝Ｚ１に処理対象を移行する。Ｚ１は、Ｚｓ≦Ｚ１＜Ｚ２≦Ｚｅを満たす整数である。
【００６３】
次に、処理対象とするｚ座標の断層画像の［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］の範囲に対応する要素画像を作成する（ステップＳ５３０）。ステップＳ５３０においても、必須ではないが好ましい処理として、作成された要素画像の不透明度を補正する処理が行われる。ステップＳ５３０における具体的な処理は、処理対象の要素画像が異なる以外は、ステップＳ５１０と全く同じである。したがって、ステップＳ５３０における処理の詳細についても後述する。
【００６４】
ステップＳ５３０における要素画像の作成後、ｚと（Ｚ１＋２）を比較し、ｚ≧（Ｚ１＋２）である場合は、陰影付加処理を行う（ステップＳ５４０）。したがって、ｚ＜（Ｚ１＋２）である場合は、ステップＳ５４０における陰影付加処理は行わない。すなわち、先頭の要素画像（ｚ＝Ｚ１）については、陰影付加処理を行わない（先頭から２番目の要素画像（ｚ＝Ｚ１＋１）については、ｚ＝Ｚ１＋２の段階で陰影付加処理が行われる）。ステップＳ５４０における陰影付加処理は、１断層前の要素画像に対して行われる。ステップＳ５４０における処理の詳細についても後述する。
【００６５】
ステップＳ５４０における陰影付加処理を終えたら、ｚをインクリメント（ｚ←ｚ＋１）する。そして、ｚ＜Ｚ２である場合は、ステップＳ５３０に戻って、ステップＳ５５０までの処理を繰り返して行う。一方、ｚ≧Ｚ２である場合は、先頭（ｚ＝Ｚ１）の要素画像、末尾（ｚ＝Ｚ２）の要素画像、末尾の１つ前（ｚ＝Ｚ２−１）の要素画像に対して、陰影付加処理を行う（ステップＳ５６０）。ステップＳ５６０における具体的な処理は、処理対象の要素画像が異なる以外は、ステップＳ５４０と全く同じである。したがって、ステップＳ５６０における処理の詳細についても後述する。
【００６６】
結局、図１０のフローチャートに示した処理では、最初に、末尾（ｚ＝Ｚ２）の要素画像の作成を行い（ステップＳ５１０）、次に、先頭（ｚ＝Ｚ１）の要素画像から順番に、末尾の１つ前（ｚ＝Ｚ２−１）までの要素画像の作成と陰影付加処理を繰り返し行う（ステップＳ５３０〜Ｓ５５０）。ただし、先頭の要素画像と末尾の２枚の要素画像については、陰影付加処理を行わない。そして、最後に、陰影付加処理が行われなかった３枚の要素画像に対して陰影付加処理を行う（ステップＳ５６０）。すなわち、ステップＳ５１０〜ステップＳ５５０において、断層画像群の先頭の断層画像から末尾の断層画像までの全ての断層画像について要素画像が作成された後、ステップＳ５６０において、陰影付加手段６２が、先頭の断層画像に対応する要素画像と末尾の２枚の断層画像に対応する要素画像の画素の色成分の値を補正して、陰影付加を行っている。より詳細には、ステップＳ５１０〜ステップＳ５５０において、ボクセル画像作成手段６０が、断層画像群の末尾の断層画像について、要素画像を作成した後、断層画像群の先頭の断層画像から末尾の１つ前の断層画像までの各断層画像に対して要素画像を作成し、ステップＳ５６０において、陰影付加手段６２が、先頭の断層画像に対応する要素画像、末尾の１つ前の断層画像に対応する要素画像および末尾の断層画像に対応する要素画像に対して色成分の値を補正して、陰影付加を行っている。
【００６７】
本実施形態では、複数に分割した断層画像群を複数のＣＰＵコアで並行に処理して、最後に統合し、ボクセル画像を作成する。また、ある要素画像に対する陰影付加処理は、隣接する要素画像を用いて行う必要がある。そのため、先頭の要素画像の陰影付加処理は、他の分割断層画像群の末尾の要素画像が必要となり、末尾の要素画像の陰影付加処理は、他の分割断層画像群の先頭の要素画像が必要となる。ただし、ｚ＝Ｚｓに対応する先頭の要素画像およびｚ＝Ｚｅに対応する末尾の要素画像に対しては陰影付加処理における輝度値の計算を行わず、輝度値として１．０を与え、当該要素画像の色成分の値を全て元のまま補正しない。
【００６８】
同様に、各要素画像のＸ軸方向の両端であるｘ＝Ｘｓおよびｘ＝Ｘｅに対応するＹ軸方向の（Ｙｅ−Ｙｓ＋１）×２個の画素、およびＹ軸方向の両端であるｙ＝Ｙｓおよびｙ＝Ｙｅに対応するＸ軸方向の（Ｘｅ−Ｘｓ＋１）×２個の画素に対しても隣接画素が一部存在しないため、輝度値の計算を行わず、輝度値として１．０を与え、当該要素画像の色成分の値を全て元のまま補正しない。前述の通り、これらの輝度値の計算を行わない画素の不透明度は全て０に設定しており、色成分の値については対応する断層画像の画素の信号値を基にカラーマップで定義された値を設定することにより、ボクセル画像の境界面におけるモアレ発生を抑制している。ステップＳ４０におけるボクセル画像の作成範囲は、ステップＳ３０において算出された不透明外接領域に基づくボクセル化領域の範囲とする。このため、断層画像群の全ての画素をボクセルとして作成する場合に比べて、作成されるボクセルが大幅に減り、データ量の削減が図られる。このため、後述するレンダリング処理においても、処理対象のボクセル数が減るため、処理負荷の軽減が図られる。
【００６９】
上述のステップＳ５１０、Ｓ５３０の処理の詳細について説明する。図１１は、ステップＳ５１０、Ｓ５３０における要素画像の作成処理を示すフローチャートである。まず、対象とするｚ座標の断層画像の［Ｘｓ，Ｘｅ］、［Ｙｓ，Ｙｅ］の範囲に対応する要素画像を作成する（ステップＳ５１１）。具体的には、図５に示したようなカラーマップを用いて、断層画像のボクセル化領域内の各画素に対応するボクセル画像の各ボクセルに対して、その画素の信号値に対応するＲ、Ｇ、Ｂの各色成分と不透明度αをボクセル値として与えることにより要素画像を作成する。例えば、ｚ＝ｚｕの場合、ボクセル値Ｖ（ｘ，ｙ，ｚｕ，ｃ）（ｃ＝０（Ｒ）、１、（Ｇ）、２（Ｂ）、３(α)）をもつ要素画像が作成される。
【００７０】
次に、不透明度であるα値の補正を行う（ステップＳ５１２）。具体的には、ボクセル画像の３次元座標値により定まる不透明度補正テーブルＳα（ｘ，ｙ，ｚ）（０≦Ｓα（ｘ，ｙ，ｚ）≦１；０≦ｘ≦Ｓｘ−１，０≦ｙ≦Ｓｙ−１，０≦ｚ≦Ｓｚ−１）を用いて、以下の〔数式５〕に従った処理を実行することにより、不透明度αを補正する。不透明度補正テーブルＳα（ｘ，ｙ，ｚ）は、あらかじめ（ｘ、ｙ、ｚ）の３次元空間に不透明度に対する補正倍率が定義された多次元伝達関数である。同関数は、内臓が存在する中心部の領域の補正倍率を最大に設定し、周辺に向けて補正倍率を所定の関数で減衰させ、骨領域より外側（体表面：脂肪・筋肉・皮膚層、体外：寝台、ヘッドレスト・固定治具）において補正倍率が０になるように定義される。これを用いて、〔数式５〕に従った処理を実行すると、骨領域より外側が透明になり、内臓領域のみが露出したボリュームレンダリング像を得ることができる。
【００７１】
〔数式５〕
Ｖ´（ｘ，ｙ，ｚｕ，３）＝Ｖ（ｘ，ｙ，ｚｕ，３）・Ｓα（ｘ＋Ｘｓ，ｙ＋Ｙｓ，ｚｕ＋Ｚｓ）
【００７２】
〔数式５〕において、Ｖ（ｘ，ｙ，ｚｕ，３）は、ｃ＝３の場合であるので、補正前の不透明度αを示している。Ｖ´（ｘ，ｙ，ｚｕ，３）は、不透明度補正テーブルＳα（ｘ，ｙ，ｚｕ）による補正後の不透明度αを示している。Ｖ（ｘ，ｙ，ｚｕ，３）およびＶ´（ｘ，ｙ，ｚｕ，３）は、Ｘｓ≦ｘ≦Ｘｅ，Ｙｓ≦ｙ≦Ｙｅ，Ｚｓ≦ｚｕ≦Ｘｅの範囲に縮小されて定義されているのに対し、Ｓα（ｘ，ｙ，ｚ）は元の断層画像と同じ０≦ｘ≦Ｓｘ−１，０≦ｙ≦Ｓｙ−１，０≦ｚ≦Ｓｚ−１の範囲に定義されているため、Ｖ（０，０，０，３）はＳα（Ｘｓ，Ｙｓ，Ｚｓ）に対応する。
【００７３】
本実施形態で作成されるボクセルデータは、複数の２次元の断層画像の各画素に対応し、あらかじめ定義されたカラ−マップを参照して定められた各ボクセルで構成されるボクセル構造体である。このボクセルデータは、断層画像の総数をＭ、要素画像の総数をＭ’＝Ｚｅ−Ｚｓ＋１、所定の分割数をＮ（Ｍ’、Ｎは共に整数であり、Ｎ＞１かつＮ＜Ｍ’ ≦Ｍを満たす。）として、［Ｚｓ，Ｚｅ］の範囲に対応するＭ’個の断層画像に対応して作成されたＭ’個の要素画像が、Ｎ個の要素画像群に分割されており、Ｎ個の要素画像群は、Ｎ個の要素画像群を統合したボクセル画像を作成するボクセル画像作成手段により並行して処理されて作成される。
【００７４】
上述のステップＳ５４０の陰影付加処理の詳細について説明する。ステップＳ５４０においては、陰影付加手段６２が、陰影付加処理を行う。これは、所定の照明環境に対応した陰影をボクセル画像に付加する処理であり、具体的にはＸｓ≦ｘ≦ＸｅかつＹｓ≦ｙ≦ＹｅかつＺｓ≦ｚ≦Ｚｅの範囲のボクセルの不透明度αを参照しながら、Ｘｓ＜ｘ＜ＸｅかつＹｓ＜ｙ＜ＹｅかつＺｓ＜ｚ＜Ｚｅの範囲のボクセルの色成分を更新する処理である。このために、ある平行光源と環境光成分を設定し、付加すべき陰影の計算を行う。具体的には、まず、平行光源の向きを示す単位ベクトルとして光源ベクトル（Ｌｘ，Ｌｙ，Ｌｚ）と、環境光成分Ａｂを設定する。光源ベクトル（Ｌｘ，Ｌｙ，Ｌｚ）、環境光成分Ａｂの数値は、表現したい像の状況に応じて適宜設定することができるが、例えば、（Ｌｘ，Ｌｙ，Ｌｚ）＝（０．５７７３５，０．５７７３５，０．５７７３５）、Ａｂ＝０．２と設定する。Ｌｘ，Ｌｙ，Ｌｚは絶対値が１未満の実数値（負値を含む），Ａｂは０以上１以下の実数値である。そして、ボクセル画像のボクセル（ｘ，ｙ，ｚｕ−１）におけるにおける勾配ベクトル（Ｇｘ，Ｇｙ，Ｇｚ）を以下の〔数式６〕に従った処理を実行することにより算出する。
【００７５】
〔数式６〕
Ｇｘ＝（Ｖ（ｘ＋１，ｙ，ｚｕ−１，３）−Ｖ（ｘ−１，ｙ，ｚｕ−１，３））・（Ｒｘｙ／Ｒｚ）
Ｇｙ＝（Ｖ（ｘ，ｙ＋１，ｚｕ−１，３）−Ｖ（ｘ，ｙ−１，ｚｕ−１，３））・（Ｒｘｙ／Ｒｚ）
Ｇｚ＝（Ｖ（ｘ，ｙ，ｚｕ，３）−Ｖα（ｘ，ｙ，ｚｕ−２，３））
Ｇ＝（Ｇｘ2＋Ｇｙ2＋Ｇｚ2）1/2
【００７６】
〔数式６〕において、Ｖ（ｘ，ｙ，ｚｕ−１，３）はボクセル画像のボクセル（ｘ，ｙ，ｚｕ−１）における不透明度αで、Ｒｘｙは断層画像の解像度（画素間隔の逆数でｍｍあたりの画素数で、ｘ軸方向とｙ軸方向は同一）、Ｒｚは断層画像のスライス解像度（断層画像のスライス間隔の逆数で、ｍｍあたりの断層画像のスライス数）、Ｇは勾配ベクトル（Ｇｘ，Ｇｙ，Ｇｚ）の大きさである。Ｒｘｙ／Ｒｚはｚ軸方向変倍率と定義され、〔数式６〕において、ＧｘとＧｙを算出する式にＲｘｙ／Ｒｚを乗ずる代わりに、Ｇｚを算出する式にＲｚ／Ｒｘｙ、即ちｚ軸方向変倍率の逆数を乗じてもよい。〔数式６〕に示すように、陰影付加手段６２は、ボクセル画像の当該ボクセルのｘ軸方向、ｙ軸方向、ｚ軸方向の各々２近傍のボクセルの不透明度の差分値を勾配ベクトルのｘ軸方向成分、ｙ軸方向成分、ｚ軸方向成分として算出し、あらかじめ定義されたｚ軸方向変倍率に基づいてｘ軸方向・ｙ軸方向成分またはｚ軸方向成分に補正を施した単位ベクトルを、当該ボクセルにおける勾配ベクトルとして算出する。さらに、Ｇ≧１の場合、以下の〔数式７〕に従った処理を実行して、拡散反射成分のみを含んだ輝度値Ｓ（ｘ，ｙ，ｚｕ−１）を算出する。Ｓ（ｘ，ｙ，ｚｕ−１）は、０以上１以下の実数値である。
【００７７】
〔数式７〕
Ｓ（ｘ，ｙ，ｚｕ−１）＝（１−Ａｂ）（｜Ｇｘ・Ｌｘ＋Ｇｙ・Ｌｙ＋Ｇｚ・Ｌｚ｜）／Ｇ＋Ａｂ
【００７８】
一方、〔数式６〕において算出されたＧの値がＧ＜１の場合、不透明度の勾配が存在しない均一な領域（背景部の空気中や肺野など）であるか、最外側であると考えられるため、陰影付加を行わず、輝度値Ｓ（ｘ，ｙ，ｚｕ−１）＝０とする。〔数式７〕において、｜Ｇｘ・Ｌｘ＋Ｇｙ・Ｌｙ＋Ｇｚ・Ｌｚ｜は、絶対値を示し、逆方向の光源ベクトル（−Ｌｘ，−Ｌｙ，−Ｌｚ）も仮想的に同時に照射し、被写体が逆向きのアングルになっても同一の輝度の拡散反射光が得られるようにしている。
【００７９】
そして、算出された輝度値Ｓ（ｘ，ｙ，ｚｕ−１）を用いて以下の〔数式８〕に従った処理を実行して、ボクセル画像の各ボクセル値Ｖ（ｘ，ｙ，ｚｕ−１，ｃ）を補正して、補正後の各ボクセル値Ｖ´（ｘ，ｙ，ｚｕ−１，ｃ）を得る。
【００８０】
〔数式８〕
Ｖ´（ｘ，ｙ，ｚｕ−１，ｃ）＝Ｓ（ｘ，ｙ，ｚｕ−１）・Ｖ（ｘ，ｙ，ｚｕ−１，ｃ）
【００８１】
〔数式８〕において、ｃ＝０，１，２であり、それぞれＲ，Ｇ，Ｂの色成分に対応する。すなわち、〔数式８〕においては、色成分のみを補正する。このようにして、ｚ＝ｚｕ―１の断層について陰影付加処理がなされた要素画像Ｖ´（ｘ，ｙ，ｚｕ−１，ｃ）が得られる。結局、陰影付加手段６２は、〔数式６〕〜〔数式８〕に従った処理を実行することにより、作成された各要素画像（ｚｕ−１）の各画素について、その要素画像に隣接する要素画像（ｚｕ，ｚｕ−２）を含むｘｙｚ軸方向の近傍に位置する画素の不透明度αを参照して、その要素画像（ｚｕ−１）の画素の色成分の値を補正し、陰影付加を行っている。本実施形態では、好ましい例として、不透明度αを参照する画素として隣接する画素を用いたが、隣接する画素に限定されず、近傍の他の画素を参照するようにしてもよい。
【００８２】
図１０に示したステップＳ５４０では、（Ｚ１＋１）≦ｚ≦（Ｚ２−２）の各ｚ座標について、上記の陰影付加処理が行われる。また、図１０に示したステップＳ５６０では、ｚ＝Ｚ１、ｚ＝Ｚ２−１、ｚ＝Ｚ２の３つの要素画像について、上記の陰影付加処理が行われる。
【００８３】
以上のようにして、ボクセル画像が得られる。ステップＳ４０におけるボクセル画像作成処理を終了したら、ボクセル画像を３Ｄテクスチャ画像に登録する（ステップＳ５０）。具体的には、レンダリング手段７０が、３Ｄテクスチャマッピング方式を実行する際に用いられる３Ｄテクスチャ画像としてボクセル画像を登録する。上述のように、ボクセル画像は、ボクセル化領域のみにおいて作成される。このため、ボクセル画像をＯｐｅｎＧＬの３Ｄテクスチャとして登録することにより、ボクセル作成負荷とテクスチャメモリへの転送負荷が削減される。
【００８４】
図１２は３Ｄテクスチャマッピングにおける対応付けを示す図である。図１２（ａ）は、テクスチャ座標系における３Ｄテクスチャマップ、図１２（ｂ）は、ワールド座標系で定義される積層四角形を示す。積層四角形を構成する各四角形の４頂点には、３Ｄテクスチャ画像の４ボクセルが対応付られており、図１２のように回転がかかっていない状態では、各四角形はテクスチャマップの基になっている断層画像に対して［Ｘｓ，Ｘｅ］［Ｙｓ，Ｙｅ］［Ｚｓ，Ｚｅ］の範囲が切り取られた要素画像と１対１で対応しており、各四角形の４頂点は要素画像の４隅の画素、ボクセルに対応付られている。ＯｐｅｎＧＬに登録される３Ｄテクスチャ画像は物理的には、（Ｘｅ−Ｘｓ＋１）×（Ｙｅ−Ｙｓ＋１）×（Ｚｅ−Ｚｓ＋１）個のボクセルをもっていてｘｙｚ軸方向のサイズが異なるが、３次元テクスチャ座標系ではｘｙｚ軸方向一律に［０，１］の範囲に定義されサイズは１に正規化される。そのため、後述するスケーリングにおいて、断層画像のｘｙ軸方向とｚ軸方向の解像度の相違に伴うｚ軸方向変倍処理に加え、ｘｙｚ軸方向に各々１／（Ｘｅ−Ｘｓ＋１）、１／（Ｙｅ−Ｙｓ＋１）、１／（Ｚｅ−Ｚｓ＋１）の倍率で変倍処理を施す必要がある。
【００８５】
具体的には、図１２（ｂ）に示すように、定義された積層四角形に対し、３Ｄテクスチャマッピングを行う。この場合、ワールド座標系（視点座標系に対応）における各四角形の４頂点の３次元ワールド座標とテクスチャ座標系（ボクセル座標系に対応）における３Ｄテクスチャ画像の３次元テクスチャ座標とを対応付ける。図１２に示すように、（−１，−１，ｚ）、（−１，１，ｚ）、（１，−１，ｚ）、（１，１，ｚ）の４頂点で構成される四角形に対して、ワールド座標の（−１，−１，ｚ）は、テクスチャ座標（０，０，ｒ）に対応付けられている。
【００８６】
後述の通り、アングル変更の指示があると、図１２（ａ）のテクスチャマップがテクスチャ座標系において３次元的に回転した、変換後３Ｄテクスチャ画像が生成されるため、各四角形と要素画像との対応関係は崩れる。ボクセル画像を、ＯｐｅｎＧＬ（グラフィックＡＰＩ）を介して３Ｄテクスチャ画像として登録する。
【００８７】
続いて、レンダリング処理を行う（ステップＳ６０）。図１３は、レンダリング手段７０の構成を示す図である。図１３に示すように、レンダリング手段７０は、３Ｄテクスチャ登録手段７１、座標変換手段７２、積層四角形設定手段７３、画素値算出手段７４を有する。上述のように、レンダリング手段７０は、３Ｄテクスチャマッピング方式の場合は、ＣＰＵ１が補助しながら、主にＧＰＵ７においてプログラムを実行することにより実現されるが、特に処理負荷が大きい座標変換手段７２および画素値算出手段７４は、汎用コンピュータのビデオカードに搭載されているＧＰＵおよびフレームメモリを用いて実行するようにすることが好ましい。
【００８８】
３Ｄテクスチャマッピング方式の処理においては、まず投影画面を設定する。図１４は、本実施形態のレンダリング手段７０による投影画面設定の一例を示す説明図である。レンダリング手段７０は、レンダリング画像のスクリーンサイズ（縦横画素数、縦横アスペクト比率）を設定する。レンダリング手段７０は、平行投影（通常の外観レンダリング）又は透視投影（内視鏡モード）のいずれかを設定する。尚、「レンダリング画像」は「ボリュームレンダリング像」と同義で、「ボリュームレンダリング像」を「レンダリング画像」と表記する場合がある。そして、レンダリング手段７０は、透視投影が設定された場合、透視投影パラメータを設定する。透視投影パラメータは、例えば、カメラの視野角度（焦点距離）、視点位置（視点と注視点で構成され、前者は目の位置で後者は見ている対象物上の位置で、双方ともｚ軸上に設定される。一般に、注視点はワールド座標系の原点に固定）、クリッピング位置（視点からのｚ軸上の距離、近方及び遠方の２箇所）などを含む。なお、クリッピング位置は、近方だけでもよい。図１４に示すように、平行投影の場合には、視点からの視線は全てｚ軸に平行となり、視点は仮想的に左方向に無限遠に離れた位置にあることを想定しているため、ｚ軸方向に定義されている全ての積層四角形がレンダリング対象になる。一方、透視投影の場合には、視点からの視野角度に応じて、視線が広がり、視点が積層四角形の内部に入るため、レンダリング対象は近方クリッピングより遠方クリッピング（通常は積層四角形の視点から最も遠い四角形）までの範囲に制限されている。
【００８９】
図１５は３Ｄテクスチャマッピング方式によるレンダリング処理の詳細を示すフローチャートである。まず、図１３の３Ｄテクスチャ登録手段７１が、ボクセル画像を３Ｄテクスチャ画像としてＯｐｅｎＧＬに登録する。次に、座標変換手段７２が、３Ｄテクスチャ画像に対して所定の座標変換を行って変換後３Ｄテクスチャ画像を生成する（Ｓ６１〜Ｓ６３）。
【００９０】
具体的には、座標変換手段７２は、所定の３次元座標系における回転を定義した４×４行列、視野角度、視点位置、クリッピング位置、ｘｙｚ各軸方向のオフセット値、ｘｙｚ各軸方向の拡大又は縮小倍率、ｚ軸方向変倍率を含む所定の座標変換のパラメータを取得し、３Ｄテクスチャ画像に対して、取得したパラメータを用いた所定の座標変換を行って変換後３Ｄテクスチャ画像を生成する。
【００９１】
個々のステップについて説明すると、座標変換手段７２は、３Ｄテクスチャ画像に対するスケーリング及びｚ軸方向変倍処理を行う（ステップＳ６１）。スケーリングはｘｙｚ軸方向に対して同一の倍率Ｓｃａｌｅで拡大または縮小を行うが、ｚ軸方向変倍処理はｘｙ軸方向の解像度Ｒｘｙとｚ軸方向の解像度Ｒｚの相違を補正するため、ｚ軸方向のみに指定倍率Ｓｃｚ（＝Ｒｘｙ／Ｒｚ）で拡大または縮小を行う。更に前述の通り、登録される３Ｄテクスチャ画像がｘｙｚ軸方向に同一サイズに正規化されるため、各々１／（Ｘｅ−Ｘｓ＋１）、１／（Ｙｅ−Ｙｓ＋１）、１／（Ｚｅ−Ｚｓ＋１）の倍率で変倍処理を加える。そして、座標変換手段７２は、所定の３次元座標系における回転を定義した４×４行列を用いて３Ｄテクスチャ画像に対する回転処理を行う（ステップＳ６２）。
【００９２】
そして、座標変換手段７２は、ｘｙｚ各軸方向のオフセット値（Ｘｏｆｆ，Ｙｏｆｆ，Ｚｏｆｆ）を用いて３Ｄテクスチャ画像に対するオフセット処理を行う（ステップＳ６３）。これらの処理（Ｓ６１〜Ｓ６３）により、変換後３Ｄテクスチャ画像が生成される。次に、積層四角形設定手段７３は、複数の四角形で構成される積層四角形を設定する（ステップＳ６４）。具体的には、３次元空間のｘｙ座標面上の四角形をｚ軸方向に並べた積層四角形を設定する。３Ｄテクスチャマッピングを設定する場合、積層四角形設定手段７３は、複数のｘｙ平面画像の数と同数の四角形をｚ軸方向に並べた積層四角形を設定する。
【００９３】
積層四角形における四角形の数は任意に設定することができるが、四角形の数と要素画像の枚数（Ｚｅ−Ｚｓ＋１）とが一致しない場合、ｚ軸方向に補間処理が働き、座標変換による座標値の丸め誤差が累積し、ストライプ・格子状のモアレが発生する。そして、図１２で示されるように、各四角形の４頂点に対して、対応する変換後３Ｄテクスチャ画像における４箇所のボクセル座標を定義することにより、変換後３Ｄテクスチャ画像との対応付けを行う（ステップＳ６５）。定義するボクセル座標は、ボクセル画像の座標系ではなく、ＯｐｅｎＧＬのテクスチャ座標系（ｒ，ｓ，ｔの３軸方向に対し０から１の範囲の実数値）に基づいたものである。
【００９４】
具体的には、図１２（ｂ）に示すように、定義された積層四角形に対し、３Ｄテクスチャマッピングを行う。この場合、ワールド座標系における各四角形の４頂点の３次元ワールド座標とテクスチャ座標系における３Ｄテクスチャ画像の３次元テクスチャ座標とを対応付ける。図１２に示すように、（−１，−１，ｚ）、（−１，１，ｚ）、（１，−１，ｚ）、（１，１，ｚ）の４頂点で構成される四角形に対して、ワールド座標の（−１，−１，ｚ）は、テクスチャ座標（０，０，ｒ）に対応付けられている。
【００９５】
次に、画素値算出手段７４は、所定の視点からｚ軸方向に平行な視線上の最も遠い四角形から視点に最も近い四角形の順にスキャンコンバージョン（四角形内部の塗りつぶし）を行う（ステップＳ６６）。この時、各四角形に貼りついている変換後３Ｄテクスチャ画像のボクセルの色成分（Ｒ，Ｇ，Ｂ）に基づいて四角形内部を塗りつぶすとともに、同一画素に塗り重ねる際、変換後３Ｄテクスチャ画像のボクセルの不透明度に基づいてアルファブレンディングを併せて行う。このように、積層四角形のｘｙｚ座標に対応する変換後３Ｄテクスチャ画像のボクセルの（Ｒ，Ｇ，Ｂ）で構成される色成分（Ｒ，Ｇ，Ｂ）をボクセルの不透明度に基づいて視点から遠い四角形の順にアルファブレンディングして得られた（Ｒ，Ｇ，Ｂ）で構成される色成分を、ボリュームレンダリング像の画素値として与える。これにより、ボリュームレンダリング像が得られる。
【００９６】
より具体的には、あらかじめレンダリング画像の画素値（ＲＧＢ値）は全て背景色（例えば、Ｒ＝Ｇ＝Ｂ＝０）で初期化しておく。画素値算出手段７４は、視点から最も遠い四角形に対して、貼り付いている変換後３Ｄテクスチャ画像を参照しながら、スキャンコンバージョンを行う。図１４で定義したレンダリング画像に平行投影または透視投影を行い、投影された四角形のワールド座標系におけるｘｙｚ座標の（−１，−１，−１）からｘ軸方向及びｙ軸方向に、投影されたレンダリング画像に対して塗り潰す画素の座標を（ｉ，ｊ）とし、レンダリング画像における画素間隔に対応する間隔ｕ（レンダリング画像の１画素に対応するワールド座標の間隔をｕとする。例えばｕ＝０．００２）でスキャンコンバージョンを行う。スキャンコンバージョンされた、各ワールド座標（−１＋ｉｕ，−１＋ｊｕ，−１）（ｉ，ｊはレンダリング画像の座標値で、例えば０≦ｉ，ｊ≦５１１の整数）において、各々対応するテクスチャ座標（２ｉｕ，２ｊｕ，０）を算出し、算出したテクスチャ座標に基づいて変換後３Ｄテクスチャ画像を参照し色成分の値（ＲＧＢ値）及び不透明度を取得して、対応するレンダリング画像の座標（ｉ，ｊ）に既に記録されている画素値（ＲＧＢ値）と取得した不透明度に基づいてアルファブレンディング処理を行い、対応するレンダリング画像の座標（ｉ，ｊ）の画素値を更新する。
【００９７】
このようにして、視点から最も遠い単一の四角形が投影されるレンダリング画像の対応する全ての画素についてアルファブレンディング処理が終了すると、ｚ座標をｖ（四角形がｚ軸方向に配置されているワールド座標の間隔をｖとする。例えば、ｖ＝２／Ｓｚ）だけ増やし、視点方向に次に近い四角形（−１＋ｉｕ，−１＋ｊｕ，−１＋ｖ）について同様の処理を繰り返してレンダリング画像を更新する。全ての四角形についてスキャンコンバージョンしてワールド座標（−１＋ｉｕ，−１＋ｊｕ，−１＋ｋｖ）（ｋは四角形の番号で、０≦ｋ≦Ｓｚ−１の整数）に対してアルファブレンディングの処理が終了するとレンダリング画像が完成する。アルファブレンディング処理は、以下の〔数式９〕に従った処理として行われる。
【００９８】
〔数式９〕
Ｒ´＝Ｒ・α＋（１−α）・Ｒｂ
Ｇ´＝Ｇ・α＋（１−α）・Ｇｂ
Ｂ´＝Ｂ・α＋（１−α）・Ｂｂ
【００９９】
〔数式９〕において、Ｒ′、Ｇ′、Ｂ′は、投影面において更新されるレンダリング画像の画素値（ＲＧＢ値）である。Ｒ、Ｇ、Ｂは、四角形のワールド座標（−１＋ｉｕ，−１＋ｊｕ，−１＋ｋｖ）に対応する変換後３Ｄテクスチャ画像のボクセル（２ｉｕ，２ｊｕ，２ｋｖ）における色成分（ＲＧＢ値）であり、重ねる色の値に相当する。αも、四角形のワールド座標（−１＋ｉｕ，−１＋ｊｕ，−１＋ｋｖ）に対応する変換後３Ｄテクスチャ画像のボクセル（２ｉｕ，２ｊｕ，２ｋｖ）におけるα値であり、重ねる割合を制御する。また、Ｒｂ、Ｇｂ、Ｂｂは、ワールド座標（−１＋ｉｕ，−１＋ｊｕ，−１＋ｋｖ）に対応するレンダリング画像の座標（ｉ，ｊ）に既に記録されている画素値（ＲＧＢ値）であり、当該四角形に対して視点と反対側に１つ前に位置する四角形に対して上記〔数式９〕に基づいて算出されたＲ′、Ｇ′、Ｂ′の値に一致し、視点から最も遠い四角形に対して算出する場合は背景色（例えば、Ｒｂ＝Ｇｂ＝Ｂｂ＝０）が与えられる。以上のようにして得られたレンダリング画像をレンダリング画像出力手段８０が出力することにより、ボリュームレンダリング像が認識される。
【０１００】
ボクセル化領域の境界面、すなわちボクセル化領域の最外周のボクセルの不透明度αの値を０に設定するとともに色成分のＲＧＢ値には画素の信号値を基にカラーマップで定義される自然なＲＧＢ値を与えることにより、処理負荷を抑制しながら境界面に発生するモアレを抑制することができる。本実施形態では、ボクセル画像自体も、不透明外接領域に基づくボクセル化領域と同じ範囲で作成しているため、一層処理負荷を抑制しながらモアレを抑制することができる。
【０１０１】
上述のように、本実施形態に係るボリュームレンダリング装置１００では、マルチコアＣＰＵであるＣＰＵ１がプログラムを実行することにより、不透明外接領域算出手段５０、ボクセル画像作成手段６０が実現される。このプログラムは、読み込んだ断層画像を複数（例えばＮ個）の断層画像群に分割し、各ＣＰＵスレッドに各断層画像群を割り当てて、各ＣＰＵスレッドが不透明外接領域の一部を算出する処理、各断層画像群に対応する要素画像群を作成する処理、を並行して行う。ボリュームレンダリング装置１００を、汎用的なコンピュータであるパソコンで実現した場合について説明する。図１６は、コンピュータによりボリュームレンダリング装置１００を実現する場合の並列化処理を示す図である。図１６に示すように、不透明外接領域算出手段５０、ボクセル画像作成手段６０が、アプリケーションプログラムにより実現され、例えばＮ＝４個の断層画像群に分割する場合、アプリケーションプログラムは、４個の各断層画像群に対する処理を４つの処理スレッド♯ｎ１〜処理スレッド♯ｎ４に分割する。そして、不透明外接領域算出手段５０、ボクセル画像作成手段６０（アプリケーションプログラム）が稼働するマルチタスク・オペレーティングシステムのジョブスケジューラが、複数のＣＰＵコアが有するＣＰＵスレッド＃１〜ＣＰＵスレッド＃８に割り当てる。
【０１０２】
図１７は、コンピュータによりボリュームレンダリング装置１００を実現する場合の並列化処理のソフトウェアによる流れを示す図である。図１７に示すように、不透明外接領域算出手段５０、ボクセル画像作成手段６０を実現するアプリケーションプログラムは、４個の各要素画像群に対する処理を４つの処理スレッド♯ｎ１〜処理スレッド♯ｎ４に分割した後、それぞれ並列処理関数を起動する。そうすると、マルチタスク・オペレーティングシステムのジョブスケジューラが、４つのスレッド♯ｎ１〜スレッド♯ｎ４を複数のＣＰＵコアが有するＣＰＵスレッド＃３、ＣＰＵスレッド＃５、ＣＰＵスレッド＃７、ＣＰＵスレッド＃２、にそれぞれ割り当てる。このようにして、オペレーティングシステムにより空いているＣＰＵコアのＣＰＵスレッドに、処理すべき処理スレッドが割り当てられるため、並列処理が可能となる。図１７の例では、アプリケーションプログラムが各ＣＰＵスレッドからの終了メッセージを待ち、全てのＣＰＵスレッドから終了メッセージが得られたら、作成された要素画像群を統合したボクセル画像を作成する。そして、一括してレンダリング処理した後、レンダリング画像を表示部６に出力し、表示を行う。
【０１０３】
４コア構成のＣＰＵ(Intel CORE-i7)が実装されているWindows10/64bitsのパーソナルコンピュータで実測した結果、図１７の構成ではシングルスレッド実行時(512×512×370のフル解像度画像のＣＰＵによるボクセル生成時間：約０．９秒)の１．５倍弱程度の処理速度が得られた (同生成時間：約０．６秒)。しかし、一部のＣＰＵスレッドに処理待ちが生じた。そこで、要素画像群の分割数をＮ＝８に上げて、８処理スレッドで並列処理を行ったところ、シングルスレッド実行時のほぼ２倍の処理性能が得られた(同生成時間：約0.45sec)。さらに、Ｎ＞８に上げて実験した結果、処理性能は殆ど変化せず２倍で頭打ちであり、各スレッド間で共有メモリへのアクセス待ちが発生し所望の並列化効果が十分得られていなかった。一方、ボクセル画像作成後のレンダリング処理Ｓ６０はＧＰＵ７で実行され、512×512のフル解像度のレンダリング画像の生成時間は約０．０１５秒であった。
【０１０４】
＜３．Ｋ分の１の間引き＞
上記ボリュームレンダリング装置では、ボクセル画像作成手段６０が、複数の断層画像と同等の密度によるボクセル画像を作成するようにしたが、ボクセルを間引いてボクセルの密度を低くしたボクセル画像を作成するようにしてもよい。その場合、ボクセル画像作成手段６０は、複数の断層画像の２次元のｘｙ軸方向、断層画像と直交するｚ軸方向の三軸の各軸方向において、Ｋ画素おきに対応付けて３次元に配置した各ボクセルに対して、そのボクセルの信号値を色成分および不透明度αに置き換え、ボクセル値として色成分および不透明度が定義されたボクセル画像を作成する。例えば、Ｋ＝２とした場合、ｘｙｚ軸方向を各々１／２に間引くことができるため、処理するボクセル数が１／８となり、高速な処理を行うことができる。これにより、利用者が、指示入力Ｉ／Ｆ４を介して対話的に、カラーマップを連続的に切り替えた場合であっても、画質が粗いボリュームレンダリング像を順次表示させて、カラーマップの更新に追従させながらボリュームレンダリング像を表示することができる。
【０１０５】
＜４．断層画像の階調落とし＞
上記実施形態では、各画素が１６ビットの信号値を記録した断層画像をそのまま用いてボクセル画像を作成するようにしたが、断層画像を８ビットに階調変換して階調低下画像を作成した後、ボクセル画像を作成するようにしてもよい。断層画像を８ビットに階調変換することにより、各画素の処理における負荷を削減することができ、ボリュームレンダリング像の高速な生成に寄与する。
【０１０６】
この場合、断層画像階調変換手段を更に設け、断層画像読込手段１０が単一の断層画像を読み込むごとに、階調変換を行う。具体的には、一連のＤＩＣＯＭ形式の断層画像Ｄｏ（ｘ，ｙ，ｚ）（−３２７６８≦Ｄｏ（ｘ，ｙ，ｚ）≦３２７６７，０≦ｘ≦Ｓｘ−１，０≦ｙ≦Ｓｙ−１，０≦ｚ≦Ｓｚ−１; 解像度：Ｒｘｙ，Ｒｚ）の中で、Ｓｚ／２番目の中間の断層画像Ｄｏ（ｘ，ｙ，ｚ／２）を最初に読み込み、同断層画像における全ての画素の最小値をＤｍｉｎ、最大値をＤｍａｘとする。ＤｍｉｎとＤｍａｘは全ての断層画像より最小値と最大値を求める方法をとっても良いが、中間の断層画像だけで決定する方法をとると、大容量の１６ビットの原断層画像の全てのスライス分を読み込んでメモリ上に保持することなく、階調低下画像である階調圧縮断層画像Ｄ８（ｘ，ｙ，ｚ）だけをメモリ上に直接構築できる。続いて、以下の〔数式１０〕に従った処理を実行して、下限値Ｌｍｉｎ および上限値Ｌｍａｘを算出する。
【０１０７】
〔数式１０〕
下限値Ｌｍｉｎ＝(Ｄｍａｘ−Ｄｍｉｎ)・γ＋Ｄｍｉｎ
上限値Ｌｍａｘ＝(Ｄｍａｘ−Ｄｍｉｎ)・(１−γ)＋Ｄｍｉｎ
【０１０８】
〔数式１０〕において、γは階調圧縮画像のコントラスト調整幅で、０に近いほどコントラストが増大するが輝度が小さくなる。γは０．３未満の実数値であるが、通常はγ＝０．１に設定する。レンダリング画像の輝度コントラストはカラーマップなど種々の設定で調整できるので、γは固定で良い。そして、下限値Ｌｍｉｎおよび上限値Ｌｍａｘの範囲を２５６段階に圧縮して階調圧縮断層画像Ｄ８（ｘ，ｙ，ｚ）を得る。具体的には、階調圧縮断層画像Ｄ８（ｘ，ｙ，ｚ）（０≦Ｄ８（ｘ，ｙ，ｚ）≦２５５，０≦ｘ≦Ｓｘ−１，０≦ｙ≦Ｓｙ−１，０≦ｚ≦Ｓｚ−１; 解像度：Ｒｘｙ，Ｒｚ）としたとき、以下の〔数式１１〕に従った処理を実行して、階調圧縮断層画像Ｄ８（ｘ，ｙ，ｚ） を算出する。
【０１０９】
〔数式１１〕
Ｄ８（ｘ，ｙ，ｚ）＝（Ｄｏ（ｘ，ｙ，ｚ）−Ｌｍｉｎ）・２５５／（Ｌｍａｘ−Ｌｍｉｎ）
Ｄ８（ｘ，ｙ，ｚ）＞２５５の場合：Ｄ８（ｘ，ｙ，ｚ）＝２５５、Ｄ８（ｘ，ｙ，ｚ）＜０の場合：Ｄ８（ｘ，ｙ，ｚ）＝０
【０１１０】
〔数式１１〕の第２式に示すように、信号値が上限値Ｌｍａｘを超える場合は２５５、下限値Ｌｍｉｎを下回る場合は０として、下限値Ｌｍｉｎから上限値Ｌｍａｘの範囲を０から２５５に線形変換する。なお、階調圧縮断層画像を用いてボクセル画像を作成する場合、図５のカラーマップに代えて、階調低下画像用のカラーマップとして、８ビットの信号値用のカラーマップを用意しておく。具体的には、信号値０〜２５５に対応付けてＲ，Ｇ，Ｂ、αが記録されたカラーマップを用いる。
【０１１１】
以上、本開示の好適な実施形態について説明したが、本開示は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、ＣＰＵ１として、複数のＣＰＵコアを有し、並列処理が可能なマルチコアＣＰＵを用いるようにしたが、１つのＣＰＵコアが１つの処理スレッドの処理のみを行うシングルコアＣＰＵを用いるようにしてもよい。
【０１１２】
また、上記実施形態では、モアレ対策を行うため、ボクセル化領域の最外周のボクセルの不透明度を０として、ボクセル画像を作成するようにしたが、モアレが目立たない場合は、必ずしも最外周のボクセルの不透明度を０としてボクセル画像を作成する必要はない。
【符号の説明】
【０１１３】
１・・・ＣＰＵ（Central Processing Unit）
２・・・ＲＡＭ（Random Access Memory）
３・・・記憶装置
４・・・指示入力Ｉ／Ｆ
５・・・データ入出力Ｉ／Ｆ
６・・・表示部
７・・・ＧＰＵ
８・・・フレームメモリ
１０・・・断層画像読込手段
２０・・・カラーマップ読込手段
３０・・・ＲＯＩクリッピング設定手段
４０・・・マスク設定手段
５０・・・不透明外接領域算出手段
６０・・・ボクセル画像作成手段
６１・・・不透明度補正手段
６２・・・陰影付加手段
７０・・・レンダリング手段
７１・・・３Ｄテクスチャ登録手段
７２・・・座標変換手段
７３・・・積層四角形設定手段
７４・・・画素値算出手段
８０・・・レンダリング画像出力手段
１００・・・ボリュームレンダリング装置
【図１】
2020086806.tif 000003
【図２】
2020086806.tif 000004
【図３】
2020086806.tif 000005
【図４】
2020086806.tif 000006
【図５】
2020086806.tif 000007
【図６】
2020086806.tif 000008
【図７】
2020086806.tif 000009
【図８】
2020086806.tif 000010
【図９】
2020086806.tif 000011
【図１０】
2020086806.tif 000012
【図１１】
2020086806.tif 000013
【図１２】
2020086806.tif 000014
【図１３】
2020086806.tif 000015
【図１４】
2020086806.tif 000016
【図１５】
2020086806.tif 000017
【図１６】
2020086806.tif 000018
【図１７】
2020086806.tif 000019