(57)【要約】      （修正有）【課題】複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数のＣＰＵコアを有するレンダリング装置を提供する。【解決手段】ボリュームレンダリングの投影面を複数の処理領域に分割する分割手段と、処理領域の各画素に対応するボクセルを断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段と、各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当て手段と、を備える。割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成する。【選択図】図７
2020042327.tif 000002
【特許請求の範囲】
【請求項１】
複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数のＣＰＵコアを有するレンダリング装置であって、
ボリュームレンダリングの投影面を複数の処理領域に分割する分割手段と、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段と、
各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当て手段と、を備え、
割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング装置。
【請求項２】
前記分割手段は、前記投影面を所定軸方向に等分割し、等分割された各領域を各処理領域とする
請求項１に記載のレンダリング装置。
【請求項３】
前記分割手段は、前記投影面を処理領域数分の画素からなる画素ブロックで分割し、
各処理領域が、各画素ブロックから１つずつ選択された画素から構成される
請求項１に記載のレンダリング装置。
【請求項４】
前記レンダリング手段は、
前記処理領域の画素毎に、視線方向に向かって最も近い不透明なボクセルの座標を、仮想光線の照射を開始する起点座標として探索する起点座標探索手段と、
前記処理領域の画素毎に、探索された起点座標より視線方向に向けて仮想光線を照射しながら、仮想光線上のボクセルの色値および不透明度に基づいて、前記処理領域の各画素の画素値を算出するレイキャスティング手段と、を備える
請求項１に記載のレンダリング装置。
【請求項５】
前記起点座標探索手段は、
前記処理領域の画素毎に、視線方向に向かって所定のステップ幅で当該画素に対応するボクセルの不透明度を順次取得しながら、起点座標を探索する
請求項４に記載のレンダリング装置。
【請求項６】
前記起点探索手段により不透明なボクセルが探索されなかった場合、予め決められた所定値を返す
請求項５に記載のレンダリング装置。
【請求項７】
前記起点探索手段は、不透明なボクセルが探索された場合、当該ボクセルの位置と前記ステップ幅だけ視線方向と逆の方向に戻った位置との間に存在する不透明なボクセルを探索する
請求項５に記載のレンダリング装置。
【請求項８】
前記レンダリング手段は、視点座標系における回転を定義した回転行列、ＸＹＺ軸各方向のオフセット値、ＸＹＺ軸方向の拡大又は縮小倍率、Ｚ軸方向の変倍率を含む座標変換パラメータを取得し、
前記座標変換パラメータに基づいて、前記視点座標系の３次元座標からボクセル座標を算出し、
算出したボクセル座標に基づいて近傍の複数のボクセルを特定する
請求項１から請求項７のいずれかに記載のレンダリング装置。
【請求項９】
前記レンダリング手段は、特定した複数のボクセルの色値および不透明度に基づいて、前記３次元座標に対応するボクセルの色値および不透明度を算出する
請求項８に記載のレンダリング装置。
【請求項１０】
所定の有効領域が設定されている場合には、
前記レンダリング手段は、
特定したボクセルのうち、ボクセル座標が前記有効領域に含まれるボクセルの不透明度は改変せず、ボクセル座標が前記有効領域に含まれないボクセルの不透明度は０に設定する
請求項１から請求項９のいずれかに記載のレンダリング装置。
【請求項１１】
前記レンダリング手段は、
色値に関しては、ボクセル座標が前記有効領域に含まれる否かに関わらず特定したボクセルの色値を改変しない
請求項１０に記載のレンダリング装置。
【請求項１２】
前記起点座標探索手段は、視点座標系における回転を定義した回転行列、ＸＹＺ軸各方向のオフセット値、ＸＹＺ軸方向の拡大又は縮小倍率、Ｚ軸方向の変倍率を含む座標変換パラメータを取得し、
前記座標変換パラメータに基づいて、前記視点座標系の３次元座標からボクセル座標を算出し、
算出したボクセル座標に対応する１つのボクセルの不透明度を取得する
請求項５から請求項７のいずれかに記載のレンダリング装置。
【請求項１３】
ボリュームレンダリング画像の表示中に、当該ボリュームレンダリング画像に対する表示変更イベントが発生すると、
前記レンダリング手段は、前記処理領域の一部の画素に対してレンダリング処理を実行する請求項１から請求項１２のいずれかに記載のレンダリング装置。
【請求項１４】
前記表示変更イベントの発生後、所定時間内に表示変更イベントが再度発生しない場合、
前記レンダリング手段は、前記処理領域の全画素に対してレンダリング処理を実行する
請求項１３に記載のレンダリング装置。
【請求項１５】
複数のＣＰＵコアを有するコンピュータが、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング方法であって、
ボリュームレンダリングの投影面を複数の処理領域に分割する分割ステップと、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリングステップと、
各処理領域に対する各レンダリング処理をそれぞれ異なるコアに割り当てる割り当てステップと、を含み、
割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング方法。
【請求項１６】
複数のＣＰＵコアを有するコンピュータを、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
ボリュームレンダリングの投影面を複数の処理領域に分割する分割手段、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段、
各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当て手段、として機能させ、
割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するプログラム。
【請求項１７】
複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数のＣＰＵコアを有するレンダリング装置において処理される投影面の画像データのデータ構造であって、
ボリュームレンダリングの投影面を所定軸方向に等分割した複数の処理領域から構成され、
各処理領域の各画素には、各処理領域毎に異なるＣＰＵコアを用いて前記レンダリング装置によって並行して実行されるレンダリング処理であって、当該処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理、によって求められた画素値が割り当てられる
画像データのデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、レンダリング装置、レンダリング方法、プログラム、及びデータ構造に関する。
【背景技術】
【０００２】
医用画像診断において、Ｘ線ＣＴ（Computed 
Tomography）装置やＭＲＩ（Magnetic  Resonance 
Imaging）から得られる断層画像群（３次元のボリュームデータ）から、被検体についての３次元情報が反映された２次元のボリュームレンダリング画像を生成・描画する技術が普及している。
【０００３】
ボリュームレンダリング処理は、大容量の断層画像群を処理する必要があるため計算量が膨大となる。このため、リアルタイムにレンダリングを行うためには、処理の高速化が必要不可欠である。
【０００４】
例えば、特許文献１では、ボリュームレンダリング処理を複数のコンピュータを用いて分散処理させることで、高速にボリュームレンダリング処理を実行する方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−２３３６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のように、ボリュームレンダリング処理を複数のコンピュータを用いて実行する構成とすると、コンピュータ間でデータ通信が発生するため、通信状況によってはデータのロスや処理の遅延が生じる可能性がある。また、被検体を撮影した断層画像は機密性の高いデータであり、これらデータが複数のコンピュータにコピーされるため、セキュリティ対策や個人情報等の取り扱いが複雑になる。
【０００７】
本開示は、上記した解題に鑑みてなされたものであり、複数のコンピュータを用いることなく、ボリュームレンダリング処理の高速化を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一実施形態によると、複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数のＣＰＵコアを有するレンダリング装置であって、ボリュームレンダリングの投影面を複数の処理領域に分割する分割手段と、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段と、各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当て手段と、を備え、割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング装置が提供される。
【０００９】
また本開示の一実施形態によると、複数のＣＰＵコアを有するコンピュータが、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング方法であって、ボリュームレンダリングの投影面を複数の処理領域に分割する分割ステップと、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリングステップと、各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当てステップと、を含み、割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング方法が提供される。
【００１０】
また本開示の一実施形態によると、複数のＣＰＵコアを有するコンピュータを、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、ボリュームレンダリングの投影面を複数の処理領域に分割する分割手段、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段、各処理領域に対する各レンダリング処理をそれぞれ異なるＣＰＵコアに割り当てる割り当て手段、として機能させ、割り当てられた各ＣＰＵコアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するプログラムが提供される。
【００１１】
また本開示の一実施形態によると、複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数のＣＰＵコアを有するレンダリング装置において処理される投影面の画像データのデータ構造であって、ボリュームレンダリングの投影面を所定軸方向に等分割した複数の処理領域から構成され、各処理領域の各画素には、各処理領域毎に異なるＣＰＵコアを用いて前記レンダリング装置によって並行して実行されるレンダリング処理であって、当該処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理、によって求められた画素値が割り当てられる画像データのデータ構造が提供される。
【発明の効果】
【００１２】
本開示によれば、複数のコンピュータを用いることなく、ボリュームレンダリング処理の高速化が実現される。
【図面の簡単な説明】
【００１３】
【図１】ボリュームレンダリング処理の概要を示す図
【図２】レンダリング装置１のハードウェア構成を示す図
【図３】ボリュームレンダリングの投影面の処理領域の分割例を示す図
【図４】ボリュームレンダリングの投影面の処理領域の分割例を示す図
【図５】レンダリング処理を並行して実行させる仕組みの一例を示す図
【図６】レンダリング装置１の動作を示すフローチャート
【図７】レンダリング処理を示すフローチャート
【図８】レンダリング処理を並行して実行させる処理を示す図
【図９】プログレッシブレンダリング処理を示すフローチャート
【図１０】画素を間引いたレンダリング処理（低解像度レンダリング処理）の結果
【図１１】全画素を用いたレンダリング処理（高解像度レンダリング処理）の結果
【図１２】レイキャスティング法によるレンダリング処理の概要を示した図
【図１３】レイキャスティング法によるレンダリング処理の全体の流れを示すフローチャート
【図１４】レイキャスティング処理を示すフローチャート
【図１５】不透明ボクセル探索処理を示すフローチャート
【図１６】本実施の形態のマスク処理について説明する図
【図１７】本実施の形態のマスク処理の効果を示す図
【発明を実施するための形態】
【００１４】
以下図面に基づいて、本開示の実施の形態を詳細に説明する。本実施の形態では、Ｘ線ＣＴ装置により撮影されたＣＴ画像に基づいてボリュームレンダリング画像を生成する場合について説明するが、本開示はＣＴ画像以外の医用画像（ＭＲＩ画像やＰＥＴ画像等）に基づいてボリュームレンダリング画像を生成する場合にも適用可能である。
【００１５】
（１．ボリュームレンダリング概要）
図１は、レンダリング装置１が実行するボリュームレンダリング処理の概要を示す図である。図２に示すように、レンダリング装置１は、複数の断層画像（図の例では、５１２×５１２ピクセルの３７０枚の胸部ＣＴ画像）に基づいてボリュームレンダリング処理を実行し、所定の視点から被検体を観察したボリュームレンダリング画像を得る。
【００１６】
（２．レンダリング装置１のハードウェア構成）
図２は、本実施の形態におけるレンダリング装置１のハードウェア構成を示すブロック図である。図２に示すように、レンダリング装置１は、制御部１１、記憶部１２、メディア入出力部１３、通信制御部１４、入力部１５、表示部１６、周辺機器Ｉ／Ｆ部１７等が、バス１８を介して接続される汎用のコンピュータで実現される。但し、これに限ることなく、用途、目的に応じて様々な構成を採ることが可能である。
【００１７】
制御部１１は、マルチコアＣＰＵで構成されるプロセッサ又はプロセッサが複数個で構成されるマルチプロセッサ（以降、どちらも単に「ＣＰＵ」と表記し、ＣＰＵが有するコアをＣＰＵコアと表記する）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フレームメモリ(Frame Memory)等によって構成される。ＣＰＵは、記憶部１２、ＲＯＭ、記録媒体等に格納されるレンダリングプログラムをＲＡＭ、フレームメモリ上のワークメモリ領域に呼び出して実行し、バス１８を介して接続された各装置を駆動制御し、レンダリング装置１が行う後述する処理を実現する。なお、本開示では、複数のＣＰＵコアを用いた処理を後述するが、複数のＣＰＵコアは物理的に複数のＣＰＵコアだけでなく、論理的に複数のＣＰＵコアも含まれる。
【００１８】
ＲＯＭは、不揮発性メモリであり、コンピュータのブートプログラムやＢＩＯＳ等のプログラム、データ等を恒久的に保持している。ＲＡＭ、フレームメモリは、揮発性メモリであり、記憶部１２、ＲＯＭ、記録媒体等からロードしたプログラム、データ等を一時的に保持するとともに、制御部１１が各種処理を行う為に使用するワークエリアを備える。
【００１９】
記憶部１２は、ＨＤＤ（Hard Disk Drive）等であり、制御部１１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ（Operating System）等が格納される。プログラムに関しては、ＯＳに相当する制御プログラムや、後述する処理をコンピュータに実行させるためのアプリケーションプログラムが格納されている。これらの各プログラムコードは、制御部１１により必要に応じて読み出されてＲＡＭ、フレームメモリに移され、ＣＰＵに読み出されて各種の手段として実行される。
【００２０】
メディア入出力部１３（ドライブ装置）は、データの入出力を行い、例えば、ＣＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）、ＤＶＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）等のメディア入出力装置を有する。通信制御部１４は、通信制御装置、通信ポート等を有し、コンピュータとネットワーク間の通信を媒介する通信インタフェースであり、ネットワークを介して、他のコンピュータ間との通信制御を行う。ネットワークは、有線、無線を問わない。
【００２１】
入力部１５は、データの入力を行い、例えば、キーボード、マウス等のポインティングデバイス、テンキー等の入力装置を有する。入力部１５を介して、コンピュータに対して、操作指示、動作指示、データ入力等を行うことができる。表示部１６は、液晶パネル等のディスプレイ装置、ディスプレイ装置と連携してコンピュータのビデオ機能を実現するための論理回路等（ビデオアダプタ等）を有する。なお、入力部１５及び表示部１６は、タッチパネルディスプレイのように、一体となっていてもよい。
【００２２】
周辺機器Ｉ／Ｆ（Interface）部１７は、コンピュータに周辺機器を接続させるためのポートであり、周辺機器Ｉ／Ｆ部１７を介してコンピュータは周辺機器とのデータの送受信を行う。周辺機器Ｉ／Ｆ部１７は、ＵＳＢ（Universal Serial Bus）やＩＥＥＥ１３９４やＲＳ−２３２Ｃ等によって構成されており、通常複数の周辺機器Ｉ／Ｆを有する。周辺機器との接続形態は有線、無線を問わない。バス１８は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【００２３】
（３．データ内容）
次に、レンダリング装置１が扱うデータ内容について説明する。
【００２４】
＜断層画像群Ｄｏ＞
断層画像群Ｄｏは、被検体（人体）を頭尾軸に沿って所定のスライス間隔で連続的に撮影した複数の断層画像（ＣＴ画像）である。各断層画像はＤＩＣＯＭ形式の２次元の画像データである。ＤＩＣＯＭ形式は、１ファイルにヘッダ部と画像データ部を含む医療画像で一般的に用いられる画像フォーマットであり、画像撮影時のパラメータや診断情報を保存しておくことができる。
【００２５】
１つの断層画像は、例えば、５１２×５１２ピクセルの画像（ＣＴ画像）である。断層画像の各画素には、信号値ｖが付与されており、ＣＴ画像の場合、信号値ｖはＣＴ値である。本実施の形態では、信号値ｖ（ＣＴ値）は１６ビット（−３２７６８≦ｖ≦３２７６７）のデータとする（但し、信号値ｖのビット数は特に限定されない）。
【００２６】
ＣＴ値は、水を基準として表現した組織のＸ線減弱係数であり、ＣＴ値により組織や病変の種類等が判断できるようになっている(単位はＨＵ（Hounsfield Unit））。ＣＴ値は、水と空気のＸ線減弱係数で標準化されており、水のＣＴ値は０、空気のＣＴ値を−１０００である。また、脂肪のＣＴ値は−１２０〜−１００程度であり、通常組織のＣＴ値は０〜１２０程度であり、骨のＣＴ値は１０００前後を示す。
【００２７】
断層画像群Ｄｏは、ＸＹの２次元データである断層画像をＺ軸方向に積層したものであり、ＸＹＺの３次元データとして表現可能である。例えば断層画像群Ｄｏは、以下のように、ＸＹＺの３次元データ（Ｄｏ（ｘ、ｙ、ｚ））として定義される。尚、本開示において、Ｘ軸は人体の左右軸、Ｙ軸は人体の背腹軸（前後軸）、Ｚ軸は人体の頭尾軸（上下軸）に相当するものとする。ＸＹ軸は、例えば、ＣＴ装置での撮影時に設定される。また、本開示において、Ｘ軸方向を横方向、Ｙ軸方向を縦方向と呼ぶ場合がある。
【００２８】
（式１）
−３２７６８≦Ｄｏ（ｘ、ｙ、ｚ）≦３２７６７
０≦ｘ≦Ｓｘ−１、０≦ｙ≦Ｓｙ−１、０≦ｚ≦Ｓｚ−１
解像度：Ｒｘｙ、解像度Ｒｚ
【００２９】
（式１）において、Ｓｘは断層画像の横方向（Ｘ軸方向）の画素数、Ｓｙは断層画像の縦方向（Ｙ軸方向）の画素数、Ｓｚはスライス枚数（断層画像の枚数）を表す。ＲｘｙはＸ軸方向及びＹ軸方向の断層画像の解像度であり、画素の間隔の逆数、すなわち単位距離あたりの画素数を示す。Ｒｚはスライスの解像度であり、断層画像のスライス間隔（例えば、０．５ｍｍや１ｍｍ）の逆数、すなわち単位距離あたりのスライス枚数を表す。
【００３０】
後述するように（図６のステップＳ２参照）、断層画像群Ｄｏの信号値は、必要に応じて８ビットに階調圧縮される場合がある。８ビットに階調圧縮された断層画像Ｄｏ（ｘ、ｙ、ｚ）は以下のように定義される。
【００３１】
（式２）
０≦Ｄｏ（ｘ、ｙ、ｚ）≦２５５      
０≦ｘ≦Ｓｘ−１、０≦ｙ≦Ｓｙ−１、０≦ｚ≦Ｓｚ−１
解像度：Ｒｘｙ、解像度Ｒｚ
【００３２】
＜カラーマップＣｍａｐ＞
カラーマップＣｍａｐは、信号値ｖと色値（具体的にはＲＧＢ値）及び不透明度(α値)との対応関係を定義するものであり、信号値ｖを２４ビットの色（ＲＧＢ値）及び８ビットの不透明度（α値）に変換する関数（実体的には２次元のデータテーブル）として表現可能である。例えば、１６ビットの断層画像群Ｄｏ（（式１）参照）に適用されるカラーマップＣｍａｐは次のように定義される。
【００３３】
（式３）
０≦Ｃｍａｐ（ｖ、ｎ）≦２５５
−３２７６８≦ｖ≦３２７６７
ｎ＝０（Ｒ）、１（Ｇ）、２（Ｂ）、３（α）
【００３４】
また、８ビットの断層画像群Ｄｏ（（式２）参照）に適用されるカラーマップＣｍａｐ（ｖ、ｎ）は次のように定義される。
【００３５】
（式４）
０≦Ｃｍａｐ（ｖ、ｎ）≦２５５
０≦ｖ≦２５５
ｎ＝０（Ｒ）、１（Ｇ）、２（Ｂ）、３（α）
【００３６】
（式３）、（式４）に示すカラーマップＣｍａｐ（ｖ、ｎ）（０≦ｎ≦３）のうち、特にカラーマップＣｍａｐ（ｖ、ｎ）（０≦ｎ≦２）は、信号値ｖを色値（ＲＧＢ値）に変換する関数に相当する。本開示では、信号値ｖを色値に変換するカラーマップＣｍａｐ（ｖ、ｎ）（０≦ｎ≦２）を「カラーパレット」と称する。
【００３７】
また、（式３）、（式４）に示すカラーマップＣｍａｐ（ｖ、ｎ）（０≦ｎ≦３）のうち、特にカラーマップＣｍａｐ（ｖ、３）は、信号値ｖを不透明度に変換する関数に相当し、一般的に「オパシティカーブ」と呼ばれる。
【００３８】
カラーマップＣｍａｐ（ｖ、３）（オパシティカーブ）は、例えば、通常組織（１６ビットの信号値ｖ＝０〜１２０程度）の不透明度が２５５に設定（不透明度＝２５５は不透明（光がすべて反射）であることを示す）され、骨領域（１６ビットの信号値ｖ＝１０００前後）の不透明度が１〜２５４の中間値に設定（不透明度＝１〜２５４は半透明（入射光の一部が反射され、その他は透過）であることを示す）され、その他の組織等の部位を不透明度が０に設定（不透明度＝０は透明（入射光の全てが透過）であることを示す）される。
【００３９】
＜クリッピング領域ＲＯＩ＞
クリッピング領域ＲＯＩ（Region of Interest）は、断層画像群Ｄｏにおける関心領域であり、本実施の形態では、クリッピング領域ＲＯＩは直方体で設定される。クリッピング領域ＲＯＩは、以下のように、Ｘ軸方向ＲＯＩ、Ｙ軸方向ＲＯＩ、Ｚ軸方向ＲＯＩによって定義される。
【００４０】
（式５）
Ｘ軸方向ＲＯＩ：Ｘｓ−Ｘｅ
Ｙ軸方向ＲＯＩ：Ｙｓ−Ｙｅ
Ｚ軸方向ＲＯＩ：Ｚｓ−Ｚｅ
尚、クリッピング領域を設定しない場合は、Ｘｓ＝０、Ｘｅ＝Ｓｘ−１、Ｙｓ＝０、Ｙｅ＝Ｓｙ−１、Ｚｓ＝０、Ｚｅ＝Ｓｚ−１となる。
【００４１】
＜マスクデータＭａｓｋ＞
マスクデータＭａｓｋは、断層画像群Ｄｏの各画素（ｘ、ｙ、ｚ）の可視／不可視の情報を保持する３次元データであり、以下のように定義される。
【００４２】
（式６）
Ｍａｓｋ（ｘ、ｙ、ｚ）＝  ０（不可視）または１（可視）
０≦ｘ≦Ｓｘ−１、０≦ｙ≦Ｓｙ−１、０≦ｚ≦Ｓｚ−１
解像度：Ｒｘｙ、解像度Ｒｚ
【００４３】
例えば、図１６のような断層画像群Ｄｏに円柱のマスク領域を設定し、マスク領域内を可視化対象とする場合、円柱内部の画素に対応するマスクデータＭａｓｋ（ｘ、ｙ、ｚ）には「１」が設定され、円柱外部の画素に対応するマスクデータＭａｓｋ（ｘ、ｙ、ｚ）には「０」が設定される。
【００４４】
なお、本開示において有効領域とは、断層画像群Ｄｏに設定される上記したクリッピング領域やマスク領域のことを指す。
【００４５】
＜補正テーブルＳα＞
補正テーブルＳαは、断層画像群Ｄｏの各画素（ｘ、ｙ、ｚ）に対応する不透明度の補正倍率を格納するデータテーブルであり、以下のように定義される。補正テーブルＳαによって、オパシティカーブで規定される信号値に応じた不透明度を各画素毎に調整することができる。
【００４６】
（式７）
０≦Ｓα（ｘ、ｙ、ｚ）≦１
０≦ｘ≦Ｓｘ−１、０≦ｙ≦Ｓｙ−１、０≦ｚ≦Ｓｚ−１
【００４７】
＜ボリュームレンダリング画像Ｉｍａｇｅ＞
ボリュームレンダリング画像Ｉｍａｇｅは、ボリュームレンダリング処理により得られる２次元画像（Ｓｉｚｅ×Ｓｉｚｅの画像）であり、以下のように定義される。
【００４８】
（式８）
０≦Ｉｍａｇｅ（ｘ、ｙ、ｎ）≦２５５
０≦ｘ≦Ｓｉｚｅ−１、０≦ｙ≦Ｓｉｚｅ−１
ｎ＝０（Ｒ）、１（Ｇ）、２（Ｂ）
【００４９】
（４．レンダリング処理の並行化）
本開示では、ボリュームレンダリングの投影面を複数の処理領域に分割したうえで、各処理領域に対してそれぞれレンダリング処理を実行する。この際、レンダリング装置１は、各レンダリング処理を、レンダリング装置１が備える複数のＣＰＵコアに別々に割り当てることで、各レンダリング処理を並行して実行させる。このように、ボリュームレンダリングの投影面を複数の処理領域に分割し、各処理領域におけるレンダリング処理を並行して実行させることで、高速にボリュームレンダリング画像を得ることができる。
【００５０】
図３は、ボリュームレンダリングの投影面の分割例を示す。図は、Ｓｉｚｅ×Ｓｉｚｅの投影面ＰをＹ軸方向に４分割（等分割）した例である。図に示すように、投影面Ｐが、４つの処理領域Ｐ１、Ｐ２、Ｐ３、Ｐ４に分割される。図３のように、画像を等分割することにより各ＣＰＵコアの処理時間のバランスをとり、効率のよい並行処理を行うことができる。なお、投影面の分割は図の例に限定されない。例えば、投影面をＸ軸方向に等分割してもよい（被写体のボリュームをＸ軸中心に反時計方向に９０度回転させた正面アングルでレンダリングする場合には、むしろＹ軸方向に分割する場合に比べメモリアクセスの効率が向上する）。
【００５１】
また、図４のように、投影面Ｐを２×２の画素ブロックに分割し、各ブロックの左上の画素から構成される領域を処理領域Ｐ１とし、各ブロックの右上の画素から構成される領域を処理領域Ｐ２とし、各ブロックの左下の画素から構成される領域を処理領域Ｐ３とし、各ブロックの右下の画素から構成される領域を処理領域Ｐ４としてもよい。なお、画素ブロックは２×２である必要はなく、３×３や４×４などでもよい。
【００５２】
図４の分割方法では、少なくとも１つの処理領域のレンダリング結果だけでも投影面の全体像を可視化できるメリットがある。例えば、ある処理領域のレンダリング処理が遅延した場合であっても、遅延した処理の結果を待たずに他の処理結果に基づきレンダリング結果（全体像に対して均質に間引きされた画像）を表示させ、投影面の全体像の概観を確認することができる。
【００５３】
本実施の形態では、図３のように、ボリュームレンダリングの投影面をＹ軸方向に等分割（４分割）したものとして説明する。
【００５４】
図５は、レンダリング処理を並行して実行させる仕組みの例を示している。図５の例では、レンダリング装置１（コンピュータ）に搭載されたマザーボード（図下）は、４つのＣＰＵ（物理コア）を備え、かつ、各ＣＰＵが２つの論理コアを有する構成（マルチコアＣＰＵ）とする。すなわち、レンダリング装置１は、実質８コア（スレッド＃１〜＃８）を備えている。はじめに、レンダリング装置１に格納されているレンダリングプログラムが起動すると、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラによりＣＰＵコア＃１のスレッド＃１に割り当てられて実行される。続いて、レンダリングプログラムは、処理領域Ｐ１に係るレンダリング処理（図の並行処理スレッド＃１）、処理領域Ｐ２に係るレンダリング処理（図の並行処理スレッド＃２）、処理領域Ｐ３に係るレンダリング処理（図の並行処理スレッド＃３）、処理領域Ｐ４に係るレンダリング処理（図の並行処理スレッド＃４）の各スレッドを起動し、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラに登録する。
【００５５】
Windowsマルチタスク・オペレーティングシステムでは、コアの空き状況等によって、登録された各並行処理スレッド＃１〜＃４を、８コア（スレッド＃１〜＃８）のいずれかに割り当て、各並行処理スレッド＃１〜＃４を並行して実行する。図５の例では、並行処理スレッド＃１、並行処理スレッド＃２および並行処理スレッド＃３は、ジョブスケジューラにより物理コアが空いているＣＰＵコア＃２のスレッド＃３、ＣＰＵコア＃３のスレッド＃５、ＣＰＵコア＃４のスレッド＃７に各々割り当てられる。残る並行処理スレッド＃４は、物理コアは空いていないがＣＰＵコア＃１の論理スレッド＃２に割り当てられている。ＣＰＵコア＃１の論理スレッド＃１ではレンダリングプログラム本体が使用中であるが、レンダリングプログラム本体は４つの並行処理スレッドの起動を行って、これらの終了待ち状態になっているため、ＣＰＵコア＃１の論理スレッド＃２に割り当てられている並行処理スレッド＃４が主に実行することになる。
【００５６】
なお本開示では、１台のコンピュータ（レンダリング装置１）で並行化処理を行うものとする。従って、例えばグリッドコンピューティングのように複数台のコンピュータを用いて並行化処理（分散処理）を行うことはしない。ただし、前記並行化処理を実行する１台のコンピュータをサーバーとして、コンピュータのＧＵＩ操作系のみをネットワーク接続された複数のクライアントコンピュータで実行させる、いわゆるリモートデスクトップ（マイクロソフト社の登録商標）等の構成は本開示に含む。リモートデスクトップにおけるサーバーを含め、並行化処理を１台のコンピュータで完結させることで、たとえ複数のユーザが同時に使用しても、サーバーコンピュータ間の通信が発生しないので、通信経路上でデータが喪失（データロス）したり、ネットワーク遅延等に起因するレンダリング処理の遅延が生じない。また、機密性の高い断層画像群Ｄｏ（ＤＩＣＯＭ画像）が複数のクライアントコンピュータにコピーされるようなことがないため、セキュリティ対策や個人情報の取り扱いが容易となる。
【００５７】
（５．レンダリング装置１の動作）
次に、図６〜図８を参照しながら、レンダリング装置１の動作について説明する。
図６は、レンダリング装置１の動作を示すフローチャートである。
【００５８】
まず、レンダリング装置１の制御部１１は、断層画像群Ｄｏ（（式１）参照）、カラーマップＣｍａｐ（（式３）参照）、クリッピング領域ＲＯＩ（（式５）参照）、マスクデータＭａｓｋ（（式６）参照）、補正テーブルＳα（（式７）参照）を取得する（図６のステップＳ１）。
【００５９】
続いて、制御部１１は、必要に応じて、断層画像群Ｄｏに対して階調圧縮処理を施す（図６のステップＳ２）。具体的には、制御部１１は、以下の手順で１６ビットの断層画像群Ｄｏ（（式１）参照）を８ビットの断層画像群Ｄｏ（（式２）参照）に変換する。
【００６０】
（式９）
（１）断層画像群ＤｏのＳｚ／２番目の中間スライスＤｏ（ｚ／２）における全ての画素の最小値Ｄｍｉｎ、最大値Ｄｍａｘを算出する。なおＤｍｉｎとＤｍａｘは全てのスライスより最小値と最大値を求める方法をとっても良いが、本実施の形態のように中間スライスだけで決定する方法をとることで、大容量の１６ビットの断層画像群Ｄｏをメモリ上に保持する必要がなくなる。
（２）下限値Ｌｍｉｎ＝（Ｄｍａｘ−Ｄｍｉｎ）・γ＋Ｄｍｉｎ、上限値Ｌｍａｘ＝（Ｄｍａｘ−Ｄｍｉｎ）・（１−γ）＋Ｄｍｉｎを設定する。ここで、γは階調圧縮画像のコントラスト調整幅で、０に近いほどコントラストが増大する（但し、輝度が小さくなる）。通常はγ＝０．１に設定する。
【００６１】
（３）断層画像群Ｄｏを以下の計算式で８ビットの断層画像群Ｄｏ（（式２）参照）に変換する（下限値Ｌｍｉｎ〜上限値Ｌｍａｘの範囲で２５６段階に圧縮する）。
Ｄｏ（ｘ、ｙ、ｚ）
＝（Ｄｏ（ｘ、ｙ、ｚ）−Ｌｍｉｎ）・２５５／（Ｌｍａｘ−Ｌｍｉｎ）
但し、Ｄｏ（ｘ、ｙ、ｚ）＞２５５の場合はＤｏ（ｘ、ｙ、ｚ）＝２５５、Ｄｏ（ｘ、ｙ、ｚ）＜０の場合はＤｏ（ｘ、ｙ、ｚ）＝０に飽和させる。
【００６２】
このように階調圧縮をすることで、断層画像群を保持するためのメモリ容量を半分に抑えることができる。たとえ信号値の階調が１６ビットあっても、カラーマップＣｍａｐにより、変換される色値（ＲＧＢ値）及び不透明度（α値）の階調はディスプレイの階調に合わせて８ビットに制限されるため、階調圧縮に伴う画質劣化は殆ど生じない。
【００６３】
続いて、制御部１１は、レンダリング処理を実行し、ボリュームレンダリング画像Ｉｍａｇｅを生成する（図６のステップＳ３）。
【００６４】
図７は、図６のステップＳ３におけるレンダリング処理を示すフローチャートである。
制御部１１は、まず、ボリュームレンダリングの投影面を複数の処理領域に分割する（図７のステップＳ１１）。ここでは、図３に示したように、投影面をＹ軸方向に４つに等分割するものとする。すなわち、投影面が、４つの処理領域Ｐ１、Ｐ２、Ｐ３、Ｐ４に分割される。
【００６５】
そして、制御部１１は、各処理領域Ｐ１〜Ｐ４に対してレンダリング処理を並行して実行する（図７のステップＳ１２）。
【００６６】
図８は、レンダリング処理を並行して実行させる処理を示す図である。図に示すように、制御部１１（レンダリングプログラム）が、処理領域Ｐ１に係るレンダリング処理（図の並行処理スレッド＃１）、処理領域Ｐ２に係るレンダリング処理（図の並行処理スレッド＃２）、処理領域Ｐ３に係るレンダリング処理（図の並行処理スレッド＃３）、処理領域Ｐ４に係るレンダリング処理（図の並行処理スレッド＃４）の各並行処理スレッドを起動し（図８のステップＳ２１）、各並行処理スレッドからの終了メッセージを待つ（図８のステップＳ２２）。
【００６７】
各並行処理スレッド＃１〜＃４は、図５において述べたように、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラに基づいて並行して実行される。図の例では、処理領域Ｐ１に係る並行処理スレッド＃１がＣＰＵコア＃２（スレッド＃３）で実行され、処理領域Ｐ２に係る並行処理スレッド＃２がＣＰＵコア＃３（スレッド＃５）で実行され、処理領域Ｐ３に係る並行処理スレッド＃３がＣＰＵコア＃４（スレッド＃７）で実行され、処理領域Ｐ４に係る並行処理スレッド＃４がＣＰＵコア＃１（スレッド＃２）で実行される（図８のステップＳ２３）。
【００６８】
制御部１１は、各並行処理スレッド＃１〜＃４から処理の終了メッセージを受信し、全ての並行処理スレッドから終了メッセージを受信すると、並行処理を終了する（図８のステップＳ２４）。なお、前述したように、図４のような分割方法を採用した場合には、図９のステップＳ２４において、制御部１１は、全ての並行処理スレッドの終了を待たなくてもよい。例えば、個々の並行処理スレッドの処理の終了メッセージを受信する度に、図６のステップＳ４において、制御部１１は、終了メッセージを受信した並行処理スレッドの結果（一部の処理領域のレンダリング結果）に基づいてボリュームレンダリング画像を部分的に生成・表示してもよい。そうすると、一部の並行処理スレッドを実行させるためのＣＰＵコアの割り当てが遅延し、当該並行処理スレッドが終了していなくても、少なくとも１つの並行処理スレッドが終了していれば、間引きされた状態でボリュームレンダリング画像の全体像を確認することができる。
【００６９】
図６のフローチャートに戻る。
制御部１１は、並行して実行されたレンダリング処理の結果である各処理領域Ｐ１〜Ｐ４のレンダリング画像を結合して、ボリュームレンダリング画像Ｉｍａｇｅを生成し、表示部１６に表示する（図６のステップＳ４）。
【００７０】
以上のように、投影面を複数の処理領域に分割したうえで、各処理領域に対してそれぞれレンダリング処理を実行する。この際、レンダリング装置１は、各レンダリング処理を、レンダリング装置１が備える複数のＣＰＵコアに別々に割り当てることで、各レンダリング処理を並行して実行する。このように、投影面を複数の処理領域に分割し、各処理領域のレンダリング処理を並行して実行させることで、高速にボリュームレンダリング画像を得ることができる。
【００７１】
なお、ボリュームレンダリング画像を表示したあと、ユーザ操作によってボリュームレンダリング画像に対する表示変更操作（カラーマップＣｍａｐの変更操作やアングル変更操作など）が行われると、制御部１１は、再度レンダリング処理を実行し、ボリュームレンダリング画像を生成・表示する（図６のステップＳ３、Ｓ４）。
この場合、以下のようにプログレッシブレンダリングを行うことようにしてもよい。
【００７２】
（６．プログレッシブレンダリング）
具体的には、図９に示すように、表示中のボリュームレンダリング画像に対して表示変更イベントが発生すると（図９のステップＳ７１）、制御部１１は、各処理領域の画素の一部に対して（画素を間引いて）各レンダリング処理を並行して実行し、ボリュームレンダリング画像を生成・表示する（図９のステップＳ７２）。表示変更イベントとは、ユーザによるカラーマップＣｍａｐの変更操作やアングル変更操作などである。
【００７３】
例えば、制御部１１は、各処理領域の画素の３／４を間引き、間引き後（解像度を１／４に落とした後）の各処理領域に対してレンダリング処理（低解像度レンダリング処理）を並行して実行し（図７のステップＳ１２）、各レンダリング処理により得られたレンダリング結果を統合してボリュームレンダリング画像を生成・表示する。
【００７４】
制御部１１は、表示変更イベントの発生を所定時間待ち（図９のステップＳ７３）、所定時間内に表示変更イベントが再度発生すると、ステップＳ７２に戻り、各処理領域の画素の一部に対して（解像度を落とした）レンダリング処理（低解像度レンダリング処理）を再度実行し、ボリュームレンダリング画像を生成・表示する。
【００７５】
一方、所定時間内に表示変更イベントが発生しない場合（タイムアウト）、ユーザによる表示変更操作が確定（終了）したものとし、制御部１１は、各処理領域の全画素に対して通常のレンダリング処理（高解像度レンダリング処理）を実行し、ボリュームレンダリング画像を生成・表示する（図９のステップＳ７４）。
【００７６】
以上のように、表示変更イベント発生中は画像の解像度を落としたレンダリング処理を実行することで、ユーザ操作に追従させながらレンダリング結果を高速に表示させ、表示変更イベント終了後には全画素データに対して高解像度のレンダリング処理を実行するようにしてもよい。
【００７７】
図１０は、ステップＳ７２における表示変更イベント発生中のボリュームレンダリング画像の表示例を示す。図に示すように、各処理領域のデータの一部に対してレンダリング処理（低解像度レンダリング処理）をおこなうため、解像度が落ちるものの、レンダリング結果がユーザ操作に追従して高速に表示される。
【００７８】
図１１は、ステップＳ７４における表示変更イベント操作終了後のボリュームレンダリング画像の表示例を示す。図に示すように、各処理領域の全データに対してレンダリング処理（高解像度レンダリング処理）をおこなうため、高精細なレンダリング結果を得ることができる。
【００７９】
以上、本開示におけるレンダリング装置１の主要な動作について説明した。
【００８０】
以降、レンダリング処理の具体的な処理内容について説明する。
【００８１】
（７．レイキャスティング法によるレンダリング処理）
本開示では、レンダリング処理の具体例として、レイキャスティング法によるレンダリング処理について説明する。
図１２は、レイキャスティング法によるレンダリング処理の概要を示す図である。図１２（ａ）に示すように、投影面（ボリュームレンダリング画像）の各点からボクセルデータに対して任意の方向にレイを発射し、最深点（レイ方向で光が届く最も深い点）よりその軌跡を逆にたどり、投影面上の点の輝度値を算出する。
また、図１２（ｂ）に示すように、計算を簡単にするため、ボクセルデータに座標変換を施し、投影面の各点よりＺ軸負方向の最深点までレイを進め、同時に累積輝度計算を行うことで、ボリュームレンダリング画像を生成する。
【００８２】
本開示では、レイキャスティング法によるレンダリング処理は各処理領域毎に実行され、各処理領域のレンダリング結果を結合することでボリュームレンダリング画像（全体像）が生成される。
【００８３】
図１３は、レイキャスティング法によるレンダリング処理の全体の流れを示すフローチャートである。
まず、制御部１１は、座標変換パラメータを設定する（図１３のステップＳ３１）。本開示では、後述するレイキャスティング処理（図１３のステップＳ３３、図１４）で、視点座標系の各３次元座標毎にボクセルを参照するため、逐次座標変換を行う方法をとる。そのため、制御部１１は、以下のように、各座標変換処理に共通する座標変換パラメータを事前に設定・算出しておく。
【００８４】
＜座標変換パラメータ＞
回転パラメータ行列Ｒ：
Ｒ＝［Ｒ１１  Ｒ１２  Ｒ１３；
Ｒ２１  Ｒ２２  Ｒ２３；
Ｒ３１  Ｒ３２  Ｒ３３］
（ボクセル座標系から視点座標系への座標変換を行うための３×３の行列の逆行列、ＧＵＩ側はボクセル座標系から視点座標系への座標変換を指示するが、レンダリング側は視点座標系からボクセル座標系に座標変換を行う。）
Ｘ軸方向のオフセットＸｏｆｆ
Ｙ軸方向のオフセットＹｏｆｆ
Ｚ軸方向のオフセットＺｏｆｆ
Ｘ軸方向のＲＯＩ：Ｘｓ−Ｘｅ（０≦Ｘｓ、Ｘｅ≦Ｓｘ−１）
Ｙ軸方向のＲＯＩ：Ｙｓ−Ｙｅ（０≦Ｙｓ、Ｙｅ≦Ｓｙ−１）
Ｚ軸方向のＲＯＩ：Ｚｓ−Ｚｅ（０≦Ｚｓ、Ｚｅ≦Ｓｚ−１）
拡大縮小倍率Ｓｃａｌｅ（ＸＹＺ軸方向で同一）
Ｚ軸方向変倍率Ｓｃｚ＝Ｒｘｙ／Ｒｚ
座標変換サブサンプル・オフセット：Ｘ軸方向ｄｘ、Ｙ軸方向ｄｙ、Ｚ軸方向ｄｚ
生成するボリュームレンダリング画像のサイズ：Ｓｉｚｅ（ＸＹ軸方向で同一）
仮想光線のサブサンプリング倍率：Ｓｒａｙ（通常は１以上の整数で値が大きいと高精細になる。１未満の実数も指定可）
【００８５】
制御部１１は、上記した回転パラメータ行列Ｒに対して、初期値として単位行列を設定する。すなわち、Ｒ１１＝１、Ｒ１２＝０、Ｒ１３＝０、Ｒ２１＝０、Ｒ２２＝１、Ｒ２３＝０、Ｒ３１＝０、Ｒ３２＝０、Ｒ３３＝１と設定する。
そして、ＧＵＩの指示に従い、Ｘ軸中心回転Ｒｘ、Ｙ軸中心回転Ｒｙ、Ｚ軸中心回転Ｒｚ（角度単位：ラジアン）のいずれかを逐次指定し、以下のように、各々回転行列Ａを生成して回転パラメータ行列Ｒに右から乗算して、回転パラメータ行列Ｒを更新する。これにより、ＧＵＩの指示により生成されるボクセル座標系から視点座標系への回転行列の逆行列が算出される。
【００８６】
回転行列Ａを
Ａ＝［Ａ１１  Ａ１２  Ａ１３；
Ａ２１  Ａ２２  Ａ２３；
Ａ３１  Ａ３２  Ａ３３］
とすると、
Ｘ軸中心回転Ｒｘの場合の回転行列Ａの各要素は、
Ａ１１＝１、Ａ１２＝０、Ａ１３＝０
Ａ２１＝０、Ａ２２＝ｃｏｓＲｘ、Ａ２３＝ｓｉｎＲｘ
Ａ３１＝０、Ａ３２＝ｓｉｎＲｘ、Ａ３３＝ｃｏｓＲｘ
Ｙ軸中心回転Ｒｙの場合の回転行列Ａの各要素は、
Ａ１１＝ｃｏｓＲｙ、Ａ１２＝０、Ａ１３＝ｓｉｎＲｙ
Ａ２１＝０、Ａ２２＝１、Ａ２３＝０
Ａ３１＝−ｓｉｎＲｙ、Ａ３２＝０、Ａ３３＝ｃｏｓＲｙ
Ｚ軸中心回転Ｒｚの場合の回転行列Ａの各要素は、
Ａ１１＝ｃｏｓＲｚ、Ａ１２＝ｓｉｎＲｚ、Ａ１３＝０
Ａ２１＝−ｓｉｎＲｚ、Ａ２２＝ｃｏｓＲｚ、Ａ２３＝０
Ａ３１＝０、Ａ３２＝０、Ａ３３＝１
となる。
回転パラメータ行列Ｒは、Ｒ←Ｒ×Ａと更新される。
【００８７】
以上で定義された座標変換パラメータに基づく座標変換処理は、レイキャスティング処理（図１３のステップＳ３３、図１４）の各処理の中で逐次実行される。
【００８８】
続いて、制御部１１は、処理回数ｌ＝０、サブサンプル・オフセット値をｄｘ＝ｄｙ＝ｄｚ＝０に初期化する（図１３のステップＳ３２）。
そして、制御部１１は、Ｓｉｚｅ×（Ｙ２−Ｙ１＋１）サイズ（ボリュームレンダリングの投影面をＹ軸方向に４分割（等分割）したサイズ）の処理領域に対して、レイキャスティング処理（処理領域の各座標（ｘ、ｙ）毎に色値を算出する処理）を実行する（図１３のステップＳ３３）。
【００８９】
図１４のフローチャートを参照して、このレイキャスティング処理について説明する。
制御部１１は、まず、生成する２４ビット（ＲＧＢ）のレンダリング画像Ｉｍａｇｅ（ｘ、ｙ、ｎ）の初期値を全て０に設定する（Ｉｍａｇｅ（ｘ、ｙ、ｎ）＝０、ｎ＝０（Ｒ）、１（Ｇ）、２（Ｂ））。そして、サブサンプル回数Ｌとして、各２次元座標（ｘ、ｙ）（０≦ｘ≦Ｓｉｚｅ−１、０≦ｙ≦Ｓｉｚｅ−１）に対して、以下の処理を実行する。
【００９０】
まず、制御部１１は、光源Ｌｉｇｈｔ（ｎ）（ｎ＝０（Ｒ）、１（Ｇ）、２（Ｂ）、０≦Ｌｉｇｈｔ（ｎ）≦２５５）を設定し、ｘ＝０、ｙ＝Ｙ１とする（図１４のステップＳ４１）。
【００９１】
続いて、制御部１１は、仮想光強度Ｔｒａｎｓ＝１．０、累積輝度値Ｅｎｅｒｇｙ（ｎ）＝０．０（０≦ｎ≦２）に初期化する（図１４のステップＳ４２）。
【００９２】
続いて、制御部１１は、Ｚｓ＝Ｓｉｚｅ・Ｓｒａｙ−１から先頭の不透明ボクセルのＺ座標ｚ（仮想光線の照射を開始する起点座標）を高速探索する（図１４のステップＳ４３）。不透明ボクセルのＺ座標ｚを高速探索（不透明ボクセル探索処理）については後述する（「８．不透明ボクセル探索処理」、図１５参照）。
【００９３】
ｚ＜０の場合（不透明ボクセルが探索されなかった場合）、ステップＳ５０へ移行し、画素（ｘ、ｙ）におけるＲＧＢ画素値を決定する。
【００９４】
一方、ｚ≧０の場合、制御部１１は、３次元座標（ｘ、ｙ、ｚ）を座標変換してボクセルα値（Ｖα）を取得し、Ａｌｐｈａ＝Ｖα／２５５を求める（図１４のステップＳ４４）。座標変換を行い、ボクセルα値（Ｖα）を取得する処理については後述する（「１０．ボクセルα値、ＲＧＢ値の取得」参照）。
【００９５】
ステップＳ４４において算出したＡｌｐｈａがＡｌｐｈａ＝０かつｚ＝０の場合、ステップＳ５０へ移行し、画素（ｘ、ｙ）におけるＲＧＢ画素値を決定する。
【００９６】
一方、ステップＳ４４において算出したＡｌｐｈａがＡｌｐｈａ＞０の場合、制御部１１は、３次元座標（ｘ、ｙ、ｚ）を座標変換してボクセルＲＧＢ値Ｖｃ（ｎ）を取得する（図１４のステップＳ４７）。座標変換を行い、ボクセルＲＧＢ値（Ｖｃ（ｎ））を取得する処理については後述する（「１０．ボクセルα値、ＲＧＢ値の取得」参照）。
【００９７】
続いて、制御部１１は、仮想光線サブサンプルに基づくα値を、
Ａｌｐｈａ’＝１−（１−Ａｌｐｈａ）１／Ｓｒａｙ
と更新した上で、更新されたＡｌｐｈａ’をＡｌｐｈａとして、
累積輝度を、
Ｅｎｅｒｇｙ（ｎ）＝Ｅｎｅｒｇｙ（ｎ）＋Ｔｒａｎｓ／Ａｌｐｈａ・Ｖｃ（ｎ）／２５５
透過光強度を、
Ｔｒａｎｓ＝Ｔｒａｎｓ・（１．０−Ａｌｐｈａ）
と更新する（図１４のステップＳ４８）。
【００９８】
Ｔｒａｎｓ＜０．００１の場合、ステップＳ５０へ移行し、画素（ｘ、ｙ）におけるＲＧＢ画素値を決定する。それ以外の場合、制御部１１は、ｚ＝ｚ−１に更新し（図１４のステップＳ４９）、ｚ≧０の場合、ステップＳ４４に戻り、ｚ＜０の場合、ステップＳ５０へ移行し、画素（ｘ、ｙ）におけるＲＧＢ画素値を
決定する。
【００９９】
一方、ステップＳ４４において算出したＡｌｐｈａがＡｌｐｈａ＝０かつｚ＞０の場合、制御部１１は、Ｚｓ＝ｚ−１から座標変換して先頭の不透明ボクセルのＺ座標ｚ’を高速探索する（図１４のステップＳ４５）。不透明ボクセルのＺ座標ｚを高速探索（不透明ボクセル探索処理）については後述する（「８．不透明ボクセル探索処理」、図１５参照）。
【０１００】
探索されたｚ’がｚ’＜０の場合、ステップＳ５０へ移行し、画素（ｘ、ｙ）におけるＲＧＢ画素値を決定する。ｚ’≧０の場合、制御部１１は、ｚ＝ｚ'に更新し（図１４のステップＳ４６）、ステップＳ４４の処理に戻る。
【０１０１】
ステップＳ５０において、制御部１１は、画素（ｘ、ｙ）におけるＲＧＢ画素値を次のように決定する。
Ｉｍａｇｅ（ｘ、ｙ、ｎ）＝Ｉｍａｇｅ（ｘ、ｙ、ｎ）＋ｋ・Ｅｎｅｒｇｙ（ｎ）・Ｌｉｇｈｔ（ｎ）／Ｌ
ここで、ｋは強度倍率であり、初期値はｋ＝１．０に設定されている。
【０１０２】
続いて、制御部１１は、ｘ←ｘ＋１と更新し（図１４のステップＳ５１）、ｘ＜Ｓｉｚｅの場合、ステップＳ４２に戻り、次の画素ｘのＲＧＢ値を決定する処理（ステップＳ４２〜Ｓ５０）を実行する。ｘ≧Ｓｉｚｅの場合、ｙ←ｙ＋１と更新し、ｙ≦Ｙ２の場合、ｘ＝０としたうえで、ステップＳ４２に戻り、ｙ行目の画素（ｘ、ｙ）のＲＧＢ値を決定する処理（ステップＳ４２〜Ｓ５０）を繰り返す。ｙ＞Ｙ２の場合、制御部１１は、処理を終了する。
すなわち、処理領域の全画素のＲＧＢ値が算出されるまで（ステップＳ５１；ｘ≧Ｓｉｚｅ、かつ、ステップＳ５２；ｙ＞Ｙ２）、ステップＳ４２〜Ｓ５０の処理を繰り返す。
【０１０３】
図１３のフローチャートに戻る。
制御部１１は、処理回数をｌ←ｌ＋１に更新し、サブサンプル・オフセット値を、ｄｘ←ｄｘ＋１／Ｌ、ｄｙ←ｄｙ＋１／Ｌ、ｄｚ←ｄｚ＋１／Ｌに更新する（図１３のステップＳ３４）。制御部１１は、処理回数ｌ＝Ｌ−１となるまで（ステップＳ３４；Ｙｅｓ）、ステップＳ３３のレイキャスティング処理を繰り返し、処理領域に対応するレンダリング画像Ｉｍａｇｅ（ｘ、ｙ、ｎ）（ｎ≦０≦２）を出力する（図１３のステップＳ３５）。
【０１０４】
以上のレイキャスティング法によるレンダリング処理は、レンダリング装置１が備える複数のＣＰＵコアを用いて処理領域毎に並行して実行される。そして、各処理領域のレンダリング結果（レンダリング画像）を結合することで、全領域のレンダリング画像が得られる。
【０１０５】
（８．不透明ボクセル探索処理）
図１５のフローチャートを参照して、図１４のステップＳ４３、Ｓ４５において実行される、不透明ボクセルのＺ座標ｚ（仮想光線の照射を開始する起点座標）を高速に探索する処理（不透明ボクセル探索処理）について説明する。
【０１０６】
まず、制御部１１は、ｚをｚ＝Ｚｓと初期化し、探索対象画素（ｘ、ｙ）を入力する（図１５のステップＳ８１）。続いて、制御部１１は、３次元座標（ｘ、ｙ、ｚ）に対して座標変換を行い、ボクセルの透明／不透明の判定を行う（図１５のステップＳ８２）。座標変換を行い、ボクセルの透明／不透明の判定を行う処理（透明／不透明判定処理）は後述する（「９．透明／不透明判定処理」参照）。
【０１０７】
ステップＳ８２において透明と判定された場合（ボクセルのα値がα＝０の場合）、制御部１１は、ｚ←ｚ−ｍ（例えばｍ＝４）に更新する（図１５のステップＳ８３）。ｍは探索時のＺ軸方向のスキップ幅であり、ｍが大きいほど高速に探索できるが、スキップ幅が大きすぎると不透明ボクセルの探索精度が悪化する場合がある。
【０１０８】
ｚ＜０の場合、制御部１１は、ｚ＝−１（不透明ボクセルが存在しないことを示す値）を返し（図１５のステップＳ８４）、処理を終了する。ｚ≧０の場合、制御部１１は、ステップＳ８２に戻る。
【０１０９】
一方、ステップＳ８２において不透明と判定された場合（ボクセルのα値がα＞０の場合）、以下のように、Ｚ軸の＋方向（視線逆方向）に戻って正確な不透明ボクセルを探索する。
【０１１０】
制御部１１は、まず、ｉをｉ＝０と初期化する（図１５のステップＳ８５）。続いて、制御部１１は、ｉ←ｉ＋１に更新し（図１５のステップＳ８６）、ｉ＜ｍかつｚ＋ｉ＜Ｚｓの場合、３次元座標（ｘ、ｙ、ｚ＋ｉ）に対して座標変換を行い、ボクセルの透明／不透明の判定を行う（図１５のステップＳ８７）。座標変換を行い、ボクセルの透明／不透明の判定を行う処理（透明／不透明判定処理）は後述する（「９．透明／不透明判定処理」参照）。
【０１１１】
一方、ｉ≧ｍまたはｚ＋ｉ≧Ｚｓの場合、制御部１１は、ｚ＝ｚ＋ｉ−１を返し（図１５のステップＳ８８）、処理を終了する。
【０１１２】
また、ステップＳ８７において透明と判定された場合（ボクセルのα値がα＝０の場合）、制御部１１は、ｚ＝ｚ＋ｉ−１を返し（図１５のステップＳ８８）、処理を終了する。
【０１１３】
一方、ステップＳ８７において不透明と判定された場合（ボクセルのα値がα＞０の場合）、ステップＳ８６に戻り、ステップＳ８８において透明と判定されるまで、ステップＳ８６〜Ｓ８７の処理を繰り返す。
【０１１４】
以上のように、先頭の不透明ボクセルのＺ座標ｚ（仮想光線の照射を開始する起点座標）を所定のステップ幅で探索することで（ステップＳ８２、Ｓ８３）、不透明ボクセルを高速に特定できる。また、不透明ボクセルが探索された場合、当該ボクセルの位置とステップ幅だけ視線逆方向（Ｚ軸の＋方向）に戻った位置との間に存在する可能性がある不透明ボクセルを再探索することで（ステップＳ８５〜Ｓ８７）、先頭の不透明ボクセルを正確に特定することができる。
【０１１５】
（９．透明／不透明判定処理）
不透明ボクセル探索処理（図１５）のステップＳ８２およびステップＳ８７において実行される、座標変換を行いボクセルの透明／不透明の判定を行う処理について説明する。
【０１１６】
（９−１．座標変換（実数の座標値を取得））
まず座標変換について説明する。
座標変換は、視点座標系をボクセル座標系に変換する処理であり、ＧＵＩ側の変換処理とは逆になる。ＧＵＩ側では関心領域ＲＯＩによるクリッピング、スケーリング、Ｚ軸方向変倍処理、オフセット（ＸＹＺ軸方向同時）、回転、透視変換の順に行うものと仮定し、制御部１１は、与えられた視点座標系の３次元座標値（ｘ、ｙ、ｚ）（整数値）に対応するボクセルの実数の座標値（ｘｒ、ｙｒ、ｚｒ）を以下のように算出する。
【０１１７】
制御部１１は、視点座標系の座標値（ｘ、ｙ、ｚ）（整数値）を次のように実数値（ｘｘ、ｙｙ、ｚｚ）に変換する。視点座標系はＳｉｚｅ（Ｘ軸方向のサイズ）×Ｓｉｚｅ（Ｙ軸方向のサイズ）×Ｓｉｚｅ・Ｓｒａｙ（Ｚ軸方向のサイズ）の直方体で、Ｓｘ×Ｓｙ×Ｓｚの断層画像群Ｄｏとは独立して定義される。通常Ｓｘ＝Ｓｙ＝５１２であればＳｉｚｅ＝５１２となる。視点座標系のＺ軸方向は仮想光線サブサンプルＳｒａｙ倍に引き伸ばされていることを考慮して、はじめに以下のようにオフセット処理（ＸＹＺ軸方向同時）を行う。
【０１１８】
ｘｘ＝ｘ−Ｓｉｚｅ／２＋ｄｘ＋Ｘｏｆｆ
ｙｙ＝ｙ−Ｓｉｚｅ／２＋ｄｙ＋Ｙｏｆｆ
ｚｚ＝ｚ／Ｓｒａｙ−Ｓｉｚｅ／２＋ｄｚ＋Ｚｏｆｆ
【０１１９】
続いて、制御部１１は、以下のように、回転パラメータ行列Ｒを用いて回転処理を行う。
【０１２０】
ｘｘ’＝Ｒ１１・ｘｘ＋Ｒ１２・ｙｙ＋Ｒ１３・ｚｚ
ｙｙ’＝Ｒ２１・ｘｘ＋Ｒ２２・ｙｙ＋Ｒ２３・ｚｚ
ｚｚ’＝Ｒ３１・ｘｘ＋Ｒ３２・ｙｙ＋Ｒ３３・ｚｚ
回転処理後の（ｘｘ’、ｙｙ’、ｚｚ’）を（ｘｘ、ｙｙ、ｚｚ）とする。
【０１２１】
制御部１１は、スケーリング、Ｚ軸方向変倍処理を同時に行い、以下のように、ボクセルの座標値（ｘｒ、ｙｒ、ｚｒ）（実数値）を取得する。
【０１２２】
ｘｒ＝ｘｘ／Ｓｃａｌｅ＋Ｓｘ／２
ｙｒ＝ｙｙ／Ｓｃａｌｅ＋Ｓｙ／２
ｚｒ＝ｚｚ／Ｓｃａｌｅ／Ｓｃｚ＋Ｓｚ／２
【０１２３】
（９−２．座標変換（整数の座標値に変換））
続いて、制御部１１は、算出したボクセルの座標値（ｘｒ、ｙｒ、ｚｒ）（実数値）に対して、各値に０．５を加算して、以下のように、小数点以下を切り捨て整数化した座標値を（ｘｉ、ｙｉ、ｚｉ）（四捨五入した整数値）を求める。
【０１２４】
ｘｉ＝ＩＮＴ［ｘｒ＋０．５］
ｙｉ＝ＩＮＴ［ｙｒ＋０．５］
ｚｉ＝ＩＮＴ［ｚｒ＋０．５］
【０１２５】
（９−３．透明／不透明判定）
そして、制御部１１は、クリッピング領域ＲＯＩ、マスクデータＭａｓｋ、または補正テーブルＳαが定義されている場合、これらを考慮して、透明／不透明度の判定を行う。
【０１２６】
１）ｘｉ＜Ｘｓ、ｘｉ＞Ｘｅ、ｙｉ＜Ｙｓ、ｙｉ＞Ｙｅ、ｚｉ＜Ｚｓ、又はｚｉ＞Ｚｅのいずれかを満たす場合（クリッピング範囲の場合）
透明判定（α＝０とする）
２）上記１）を満たさない場合
ボクセル（ｘｉ、ｙｉ、ｚｉ）における不透明度αを、
α＝Ｃｍａｐ（Ｄｏ（ｘｉ、ｙｉ、ｚｉ）、３）・Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ）・Ｓα（ｘｉ、ｙｉ、ｚｉ）
と求め、
α＞０の場合：不透明判定
α＝０の場合：透明判定
【０１２７】
（１０．ボクセルα値、ＲＧＢ値の取得）
図１３のステップＳ４４、Ｓ４７において実行される、３次元座標値（ｘ、ｙ、ｚ）に対して座標変換を行い、ボクセルα値（Ｖα）、ボクセルＲＧＢ値を取得する処理について説明する。
【０１２８】
（１０−１．座標変換）
まず、前記した（９−１．座標変換（実数の座標値を取得））と同様の方法で、３次元座標値（ｘ、ｙ、ｚ）に対応するボクセルの実数の座標値（ｘｒ、ｙｒ、ｚｒ）を算出する。
【０１２９】
続いて、制御部１１は、算出したボクセルの座標値（ｘｒ、ｙｒ、ｚｒ）（実数値）に対して、小数点以下を切り捨て整数化した座標値を（ｘｉ、ｙｉ、ｚｉ）（整数値）とし、切り捨てた小数点以下の端数を（ｗｘ、ｗｙ、ｗｚ）（０≦ｗｘ、ｗｙ、ｗｚ＜１）とする（すなわち、ｘｒ＝ｘｉ＋ｗｘ、ｙｒ＝ｙｉ＋ｗｙ、ｚｒ＝ｚｉ＋ｗｚ）。
【０１３０】
（１０−２．ボクセル信号値の抽出）
そして、制御部１１は、クリッピング領域ＲＯＩを考慮して、視点座標系の３次元座標値（ｘ、ｙ、ｚ）（整数値）に対応するボクセルの信号値を断層画像群Ｄｏに基づいて以下のように抽出する。
【０１３１】
１）ｘｉ＜Ｘｓ、ｘｉ＞Ｘｅ、ｙｉ＜Ｙｓ、ｙｉ＞Ｙｅ、ｚｉ＜Ｚｓ、又はｚｉ＞Ｚｅのいずれかを満たす場合（クリッピング範囲）
Ｄ０００＝−９９９９９（無効の値）
２）上記１）の条件を満たさない場合において、ｘｉ＋１＞Ｘｅ、ｙｉ＋１＞Ｙｅ、又はｚｉ＋１＞Ｚｅのいずれかを満たす場合（補間しない）
Ｄ０００＝Ｄｏ（ｘｉ、ｙｉ、ｚｉ）
【０１３２】
３）上記１）２）の条件を満たさない場合（８近傍ボクセルの信号値を抽出）
Ｄ０００＝Ｄｏ（ｘｉ、ｙｉ、ｚｉ）
Ｄ１００＝Ｄｏ（ｘｉ＋１、ｙｉ、ｚｉ）
Ｄ０１０＝Ｄｏ（ｘｉ、ｙｉ＋１、ｚｉ）
Ｄ１１０＝Ｄｏ（ｘｉ＋１、ｙｉ＋１、ｚｉ）
Ｄ００１＝Ｄｏ（ｘｉ、ｙｉ、ｚｉ＋１）
Ｄ１０１＝Ｄｏ（ｘｉ＋１、ｙｉ、ｚｉ＋１）
Ｄ０１１＝Ｄｏ（ｘｉ、ｙｉ＋１、ｚｉ＋１）
Ｄ１１１＝Ｄｏ（ｘｉ＋１、ｙｉ＋１、ｚｉ＋１）
【０１３３】
ここで、マスクデータＭａｓｋ、補正テーブルＳαが定義されている場合は、制御部１１は、抽出した補間対象ボクセルの信号値に対応するα値スケールＳ０００〜Ｓ１１１（０≦Ｓ０００、・・・、Ｓ１１１≦１）を以下のように設定する。なお、マスクデータＭａｓｋ、補正テーブルＳαを使用しない場合は、Ｓ０００＝Ｓ１００＝Ｓ０１０＝Ｓ１１０＝Ｓ００１＝Ｓ１０１＝Ｓ０１１＝Ｓ１１１＝１である。
【０１３４】
１）１）ｘｉ＜Ｘｓ、ｘｉ＞Ｘｅ、ｙｉ＜Ｙｓ、ｙｉ＞Ｙｅ、ｚｉ＜Ｚｓ、又はｚｉ＞Ｚｅのいずれかを満たす場合（クリッピング範囲）
Ｓ０００＝０
２）上記１）の条件を満たさない場合において、ｘｉ＋１＞Ｘｅ、ｙｉ＋１＞Ｙｅ、又はｚｉ＋１＞Ｚｅのいずれかを満たす場合（補間しない）
Ｓ０００＝Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ）・Ｓα（ｘｉ、ｙｉ、ｚｉ）
【０１３５】
３）上記１）２）の条件を満たさない場合（８近傍ボクセルの信号値を抽出）
Ｓ０００＝Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ）・Ｓα（ｘｉ、ｙｉ、ｚｉ）
Ｓ１００＝Ｍａｓｋ（ｘｉ＋１、ｙｉ、ｚｉ）・Ｓα（ｘｉ＋１、ｙｉ、ｚｉ）
Ｓ０１０＝Ｍａｓｋ（ｘｉ、ｙｉ＋１、ｚｉ）・Ｓα（ｘｉ、ｙｉ＋１、ｚｉ）
Ｓ１１０＝Ｍａｓｋ（ｘｉ＋１、ｙｉ＋１、ｚｉ）・Ｓα（ｘｉ＋１、ｙｉ＋１、ｚｉ）
Ｓ００１＝Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ＋１）・Ｓα（ｘｉ、ｙｉ、ｚｉ＋１）
Ｓ１０１＝Ｍａｓｋ（ｘｉ＋１、ｙｉ、ｚｉ＋１）・Ｓα（ｘｉ＋１、ｙｉ、ｚｉ＋１）
Ｓ０１１＝Ｍａｓｋ（ｘｉ、ｙｉ＋１、ｚｉ＋１）・Ｓα（ｘｉ、ｙｉ＋１、ｚｉ＋１）
Ｓ１１１＝Ｍａｓｋ（ｘｉ＋１、ｙｉ＋１、ｚｉ＋１）・Ｓα（ｘｉ＋１、ｙｉ＋１、ｚｉ＋１）
【０１３６】
（１０−３．ボクセルα値の取得）
そして、制御部１１は、抽出した補間対象ボクセルの信号値に基づいて、視点座標系の３次元座標値（ｘ、ｙ、ｚ）（整数値）に対応するボクセルのα値Ｖαを以下のように決定する。
【０１３７】
１）ｘｉ＜Ｘｓ、ｘｉ＞Ｘｅ、ｙｉ＜Ｙｓ、ｙｉ＞Ｙｅ、ｚｉ＜Ｚｓ、又はｚｉ＞Ｚｅのいずれかを満たす場合（クリッピング範囲）
Ｖα＝０
２）上記１）の条件を満たさない場合において、ｘｉ＋１＞Ｘｅ、ｙｉ＋１＞Ｙｅ、又はｚｉ＋１＞Ｚｅのいずれかを満たす場合（補間しない）
Ｖα＝Ｃｍａｐ（Ｄ０００、３）・Ｓ０００
【０１３８】
３）上記１）２）の条件を満たさない場合（補間する）
Ｖα＝（１−ｗｚ）（１−ｗｙ）（１−ｗｘ）・Ｃｍａｐ（Ｄ０００、３）・Ｓ０００＋（１−ｗｚ）（１−ｗｙ）・ｗｘ・Ｃｍａｐ（Ｄ１００、３）・Ｓ１００＋（１−ｗｚ）・ｗｙ・（１−ｗｘ）・Ｃｍａｐ（Ｄ０１０、３）・Ｓ０１０＋（１−ｗｚ）・ｗｙ・ｗｘ・Ｃｍａｐ（Ｄ１１０、３）・Ｓ１１０＋ｗｚ・（１−ｗｙ）（１−ｗｘ）・Ｃｍａｐ（Ｄ００１、３）・Ｓ００１＋ｗｚ・（１−ｗｙ）・ｗｘ・Ｃｍａｐ（Ｄ１０１、３）・Ｓ１０１＋ｗｚ・ｗｙ・（１−ｗｘ）・Ｃｍａｐ（Ｄ０１１、３）・Ｓ０１１＋ｗｚ・ｗｙ・ｗｘ・Ｃｍａｐ（Ｄ１１１、３）・Ｓ１１１
【０１３９】
（１０−４．ボクセルＲＧＢ値の取得）
また、制御部１１は、抽出した補間対象ボクセルの信号値に基づいて、視点座標系の３次元座標値（ｘ、ｙ、ｚ）（整数値）に対応するボクセルのＲＧＢ値（Ｖｃ（ｎ））（０≦ｎ≦２）を以下のように決定する。
【０１４０】
１）ｘｉ＜Ｘｓ、ｘｉ＞Ｘｅ、ｙｉ＜Ｙｓ、ｙｉ＞Ｙｅ、ｚｉ＜Ｚｓ、又はｚｉ＞Ｚｅのいずれかを満たす場合（クリッピング範囲）
Ｖｃ（ｎ）＝０  （０≦ｎ≦２）
２）上記１）の条件を満たさない場合において、ｘｉ＋１＞Ｘｅ、ｙｉ＋１＞Ｙｅ、又はｚｉ＋１＞Ｚｅのいずれかを満たす場合（補間しない）
Ｖｃ（ｎ）＝Ｃｍａｐ（Ｄ０００、ｎ）  （０≦ｎ≦２）
【０１４１】
３）上記１）２）の条件を満たさない場合（補間する）
Ｖｃ（ｎ）＝（１−ｗｚ）（１−ｗｙ）（１−ｗｘ）・Ｃｍａｐ（Ｄ０００、ｎ）＋（１−ｗｚ）（１−ｗｙ）・ｗｘ・Ｃｍａｐ（Ｄ１００、ｎ）＋（１−ｗｚ）・ｗｙ・（１−ｗｘ）・Ｃｍａｐ（Ｄ０１０、ｎ）＋（１−ｗｚ）・ｗｙ・ｗｘ・Ｃｍａｐ（Ｄ１１０、ｎ）＋ｗｚ・（１−ｗｙ）（１−ｗｘ）・Ｃｍａｐ（Ｄ００１、ｎ）＋ｗｚ・（１−ｗｙ）・ｗｘ・Ｃｍａｐ（Ｄ１０１、ｎ）＋ｗｚ・ｗｙ・（１−ｗｘ）・Ｃｍａｐ（Ｄ０１１、ｎ）＋ｗｚ・ｗｙ・ｗｘ・Ｃｍａｐ（Ｄ１１１、ｎ）  （０≦ｎ≦２）
【０１４２】
ここで、α値と異なり、ＲＧＢ値を取得する場合には、Ｓ０００、Ｓ１００、・・・、Ｓ１１１を乗算するマスク処理を行わない。すなわち、図１６に示すように、マスク領域の外（非描画部ボクセル）のα値のみを０に改変し、ＲＧＢ値は元のまま改変しない。これにより、マスク境界面でのモアレの発生を抑制することができる。
【０１４３】
図１７は、マスク処理の効果を示す図である。図１７（左）は、α値・ＲＧＢ値ともにマスク処理を施した場合のボリュームレンダリング画像を表す。図に示すように円筒形のマスク境界面において顕著なモアレが発生することが分かる。一方、図１７（右）は、α値のみにマスク処理を施した場合のボリュームレンダリング画像を表す。図に示すようにモアレがほとんど発生しないことが分かる。
【０１４４】
なお、マスク境界面におけるモアレの発生を抑制するために、ボクセルα値に対してスムージング処理を施したり、アンチエリアシング処理を施す場合がある。しかし、これらの処理は計算負荷が高く、本開示のようにリアルタイムにレンダリングを行う目的には適さない。
【０１４５】
（１１．陰影計算）
なお、制御部１１は、必要に応じて、次のように陰影計算を行ってもよい。
まず、光源ベクトル（Ｌｘ、Ｌｙ、Ｌｚ）（単位ベクトル）を設定する。例えば、（Ｌｘ、Ｌｙ、Ｌｚ）＝（０．５７７３５、０．５７７３５、０．５７７３５）と設定する。また、環境光成分Ａｂ（０≦Ａｂ≦１、例えばＡｂ＝０．２）を設定する。
【０１４６】
続いて、制御部１１は、次のように、座標変換により算出された３次元座標（ｘｉ、ｙｉ、ｚｉ）における６近傍ボクセルの不透明度Ｖ１００、Ｖ２００、Ｖ０１０、Ｖ０２０、Ｖ００１、Ｖ００２を取得する。
【０１４７】
Ｖ１００＝Ｃｍａｐ（Ｄｏ（ｘｉ＋１、ｙｉ、ｚｉ）、３）・Ｍａｓｋ（ｘｉ＋１、ｙｉ、ｚｉ）・Ｓα（ｘｉ＋１、ｙｉ、ｚｉ）
Ｖ２００＝Ｃｍａｐ（Ｄｏ（ｘｉ−１、ｙｉ、ｚｉ）、３）・Ｍａｓｋ（ｘｉ−１、ｙｉ、ｚｉ）・Ｓα（ｘｉ−１、ｙｉ、ｚｉ）
Ｖ０１０＝Ｃｍａｐ（Ｄｏ（ｘｉ、ｙｉ＋１、ｚｉ）、３）・Ｍａｓｋ（ｘｉ、ｙｉ＋１、ｚｉ）・Ｓα（ｘｉ、ｙｉ＋１、ｚｉ）
Ｖ０２０＝Ｃｍａｐ（Ｄｏ（ｘｉ、ｙｉ−１、ｚｉ）、３）・Ｍａｓｋ（ｘｉ、ｙｉ−１、ｚｉ）・Ｓα（ｘｉ、ｙｉ−１、ｚｉ）
Ｖ００１＝Ｃｍａｐ（Ｄｏ（ｘｉ、ｙｉ、ｚｉ＋１）、３）・Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ＋１）・Ｓα（ｘｉ、ｙｉ、ｚｉ＋１）
Ｖ００２＝Ｃｍａｐ（Ｄｏ（ｘｉ、ｙｉ、ｚｉ−１）、３）・Ｍａｓｋ（ｘｉ、ｙｉ、ｚｉ−１）・Ｓα（ｘｉ、ｙｉ、ｚｉ−１）
【０１４８】
但し、ｘｉ＋１＞ＸｅのときＶ１００＝０、ｘｉ−１＜ＸｓのときＶ２００＝０、ｙｉ＋１＞ＹｅのときＶ０１０＝０、ｙｉ−１＜ＹｓのときＶ０２０＝０、ｚｉ＋１＜ＺｓのときＶ００１＝０、ｚｉ−１＜ＺｓのときＶ００２＝０とする。すなわち、隣接するボクセルがクリッピング範囲の場合は不透明度を０として扱う。
【０１４９】
続いて、制御部１１は、座標変換により算出された３次元座標（ｘｉ、ｙｉ、ｚｉ）における勾配ベクトル（Ｇｘ、Ｇｙ、Ｇｚ）を、以下の式で算出する。
【０１５０】
Ｇｘ＝（Ｖ１００−Ｖ２００）・Ｒｘｙ／Ｒｚ
Ｇｙ＝（Ｖ０１０−Ｖ０２０）・Ｒｘｙ／Ｒｚ
Ｇｚ＝Ｖ００１−Ｖ００２
Ｇ＝｛Ｇｘ２＋Ｇｙ２＋Ｇｚ２｝１／２
【０１５１】
続いて、Ｇ≧１の場合、制御部１１は、輝度値（陰影値）Ｓ（０≦Ｓ≦１）は、拡散反射成分のみ算出し、
Ｓ＝（１−Ａｂ）｜Ｇｘ・Ｌｘ＋Ｇｙ・Ｌｙ＋Ｇｚ・Ｌｚ｜／Ｇ＋Ａｂ
を与える。Ｇ＜１の場合（αが変化しない場合）、制御部１１は、輝度値（陰影値）Ｓとして、Ｓ＝０を与える（視線を変えても勾配ベクトルは変わらないため、鏡面反射成分を加えることはできない）。
【０１５２】
そして、制御部１１は、
Ｖｃ’（ｎ）＝Ｓ・Ｖｃ（ｎ）
とし、算出されたＲＧＢ値Ｖｃ（ｎ）（０≦ｎ≦２）の成分を改変する。
【０１５３】
以上、図１２〜図１７を参照しながら、レイキャスティング法によるレンダリング処理について具体的に説明した。
【０１５４】
以上、本開示の実施の形態によれば、ボリュームレンダリングの投影面を複数の処理領域に分割したうえで、各処理領域に対してそれぞれレンダリング処理を実行する。この際、レンダリング装置１は、各レンダリング処理を、レンダリング装置１が備える複数のＣＰＵコアに別々に割り当てることで、各レンダリング処理を並行化させる。このように、ボリュームレンダリングの投影面を複数の処理領域に分割し、各処理領域のレンダリング処理を並行して実行させることで、高速にボリュームレンダリング画像を得ることができる。
【０１５５】
また本開示では、並行化処理を１台のコンピュータ（レンダリング装置１）で完結させることで、リモートデクストップ等の構成で複数のユーザが使用しても、サーバーコンピュータ間の通信が発生しないので、通信経路上でデータが喪失（データロス）したり、ネットワーク遅延等に起因するレンダリング処理の遅延が生じない。また、機密性の高い断層画像群Ｄｏ（ＤＩＣＯＭ画像）が複数のクライアントコンピュータにコピーされるようなことがないため、セキュリティ対策や個人情報の取り扱いが容易となる。
【０１５６】
以上、添付図面を参照しながら、本開示に係るレンダリング装置１等の好適な実施形態について説明したが、本開示はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。
【符号の説明】
【０１５７】
１          ：レンダリング装置
Ｄｏ        ：断層画像群
Ｃｍａｐ    ：カラーマップ
ＲＯＩ      ：クリッピング領域
Ｍａｓｋ    ：マスクデータ
Ｓα        ：補正テーブル
Ｉｍａｇｅ  ：ボリュームレンダリング画像
Ｐ          ：投影面
Ｐ１〜Ｐ４  ：処理領域
【図１】
2020042327.tif 000003
【図２】
2020042327.tif 000004
【図３】
2020042327.tif 000005
【図４】
2020042327.tif 000006
【図５】
2020042327.tif 000007
【図６】
2020042327.tif 000008
【図７】
2020042327.tif 000009
【図８】
2020042327.tif 000010
【図９】
2020042327.tif 000011
【図１０】
2020042327.tif 000012
【図１１】
2020042327.tif 000013
【図１２】
2020042327.tif 000014
【図１３】
2020042327.tif 000015
【図１４】
2020042327.tif 000016
【図１５】
2020042327.tif 000017
【図１６】
2020042327.tif 000018
【図１７】
2020042327.tif 000019
【手続補正書】
【提出日】平成31年4月2日(2019.4.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータで構成されるレンダリング装置であって、
ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割手段と、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段と、
各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当て手段と、を備え、
割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング装置。
【請求項２】
前記分割手段は、前記投影面を所定軸方向に等分割し、等分割された各領域を各処理領域とする
請求項１に記載のレンダリング装置。
【請求項３】
前記分割手段は、前記投影面を処理領域数分の画素からなる画素ブロックで分割し、
各処理領域が、各画素ブロックから１つずつ選択された画素から構成される
請求項１に記載のレンダリング装置。
【請求項４】
前記レンダリング手段は、
前記処理領域の画素毎に、視線方向に向かって最も近い不透明なボクセルの座標を、仮想光線の照射を開始する起点座標として探索する起点座標探索手段と、
前記処理領域の画素毎に、探索された起点座標より視線方向に向けて仮想光線を照射しながら、仮想光線上のボクセルの色値および不透明度に基づいて、前記処理領域の各画素の画素値を算出するレイキャスティング手段と、を備える
請求項１に記載のレンダリング装置。
【請求項５】
前記起点座標探索手段は、
前記処理領域の画素毎に、視線方向に向かって所定のステップ幅で当該画素に対応するボクセルの不透明度を順次取得しながら、起点座標を探索する
請求項４に記載のレンダリング装置。
【請求項６】
前記起点探索手段により不透明なボクセルが探索されなかった場合、予め決められた所定値を返す
請求項５に記載のレンダリング装置。
【請求項７】
前記起点探索手段は、不透明なボクセルが探索された場合、当該ボクセルの位置と前記ステップ幅だけ視線方向と逆の方向に戻った位置との間に存在する視線方向に向かって最も近い不透明なボクセルを探索する
請求項５に記載のレンダリング装置。
【請求項８】
前記レンダリング手段は、視点座標系における回転を定義した回転行列、ＸＹＺ軸各方向のオフセット値、ＸＹＺ軸方向の拡大又は縮小倍率、Ｚ軸方向の変倍率を含む座標変換パラメータを取得し、
前記座標変換パラメータに基づいて、前記視点座標系の３次元座標からボクセル座標を算出し、
算出したボクセル座標に基づいて近傍の複数のボクセルを特定する
請求項１から請求項７のいずれかに記載のレンダリング装置。
【請求項９】
前記レンダリング手段は、特定した複数のボクセルの色値および不透明度に基づいて、前記３次元座標に対応するボクセルの色値および不透明度を算出する
請求項８に記載のレンダリング装置。
【請求項１０】
所定の有効領域が設定されている場合には、
前記レンダリング手段は、
特定したボクセルのうち、ボクセル座標が前記有効領域に含まれるボクセルの不透明度は改変せず、ボクセル座標が前記有効領域に含まれないボクセルの不透明度は０に設定する
請求項１から請求項９のいずれかに記載のレンダリング装置。
【請求項１１】
前記レンダリング手段は、
色値に関しては、ボクセル座標が前記有効領域に含まれる否かに関わらず特定したボクセルの色値を改変しない
請求項１０に記載のレンダリング装置。
【請求項１２】
前記起点座標探索手段は、視点座標系における回転を定義した回転行列、ＸＹＺ軸各方向のオフセット値、ＸＹＺ軸方向の拡大又は縮小倍率、Ｚ軸方向の変倍率を含む座標変換パラメータを取得し、
前記座標変換パラメータに基づいて、前記視点座標系の３次元座標からボクセル座標を算出し、
算出したボクセル座標に対応する１つのボクセルの不透明度を取得する
請求項５から請求項７のいずれかに記載のレンダリング装置。
【請求項１３】
ボリュームレンダリング画像の表示中に、当該ボリュームレンダリング画像に対する表示変更イベントが発生すると、
前記レンダリング手段は、前記処理領域の全体を所定の間引き率で間引いたあとの当該処理領域の画素に対してレンダリング処理を実行する請求項１から請求項１２のいずれかに記載のレンダリング装置。
【請求項１４】
前記表示変更イベントの発生後、所定時間内に表示変更イベントが再度発生しない場合、
前記レンダリング手段は、前記処理領域の全画素に対してレンダリング処理を実行する
請求項１３に記載のレンダリング装置。
【請求項１５】
複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータが、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング方法であって、
ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割ステップと、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリングステップと、
各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当てステップと、を含み、
割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング方法。
【請求項１６】
複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータを、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割手段、
前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段、
各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当て手段、として機能させ、
割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本開示の一実施形態によると、複数の断層画像に基づいてボリュームレンダリング画像を生成する、複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータで構成されるレンダリング装置であって、ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割手段と、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段と、各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当て手段と、を備え、割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング装置が提供される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
また本開示の一実施形態によると、複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータが、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング方法であって、ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割ステップと、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリングステップと、各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当てステップと、を含み、割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するレンダリング方法が提供される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また本開示の一実施形態によると、複数の物理コアを有し、かつ各物理コアが複数の論理コアを有するコンピュータを、複数の断層画像に基づいてボリュームレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、ボリュームレンダリングの投影面全体を複数の処理領域に分割する分割手段、前記処理領域の各画素に対応するボクセルを前記断層画像から特定し、特定したボクセルの色値および不透明度に基づいて、当該処理領域の各画素の画素値を求めるレンダリング処理を実行するレンダリング手段、各処理領域に対する各レンダリング処理をそれぞれ前記コンピュータのオペレーティングシステムのジョブスケジューラを介して前記複数の論理コアのいずれかに割り当てる割り当て手段、として機能させ、割り当てられた各論理コアで各レンダリング処理を並行して実行させることで、ボリュームレンダリング画像を生成するプログラムが提供される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本開示は、レンダリング装置、レンダリング方法、及びプログラムに関する。