JP7205189B2 - レンダリング装置、レンダリング方法、及びプログラム - Google Patents

レンダリング装置、レンダリング方法、及びプログラム Download PDF

Info

Publication number
JP7205189B2
JP7205189B2 JP2018218847A JP2018218847A JP7205189B2 JP 7205189 B2 JP7205189 B2 JP 7205189B2 JP 2018218847 A JP2018218847 A JP 2018218847A JP 2018218847 A JP2018218847 A JP 2018218847A JP 7205189 B2 JP7205189 B2 JP 7205189B2
Authority
JP
Japan
Prior art keywords
voxel
effective
calculated
voxels
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018218847A
Other languages
English (en)
Other versions
JP2020086803A (ja
Inventor
敏雄 茂出木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2018218847A priority Critical patent/JP7205189B2/ja
Publication of JP2020086803A publication Critical patent/JP2020086803A/ja
Application granted granted Critical
Publication of JP7205189B2 publication Critical patent/JP7205189B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)

Description

本開示は、レンダリング装置、レンダリング方法、及びプログラムに関する。
医用画像診断においては、X線CT(Computed
Tomography)装置やMRI(Magnetic Resonance
Imaging)から得られる断層画像群(3次元のボリュームデータ)に対して、レイキャスティング法によるレンダリング処理を実行し、ボリュームレンダリング画像やMIP(Maximum Intensity Projection)画像などの2次元のレンダリング画像を生成・描画する技術が普及している。
レイキャスティング法によるレンダリング処理は、大容量の断層画像群を処理する必要があるため計算量が膨大となる。特に、レイキャスティング法において冗長な処理として、レイキャスティング計算を開始する起点(仮想光線を照射する起点)を探索する処理がある。この処理は、レンダリングの投影面から視線方向に向かってボクセルをしらみつぶしに確認しながら、視点に最も近い有効なボクセル(例えば、ボリュームレンダリングの場合は不透明なボクセル)を探索する必要がある。
このようにボクセルをしらみつぶしに探索する方法の最大の難点は、描画対象が存在しない背景部にあり、視線方向の全てのボクセルを確認しないと、背景部の画素であることを決定できない。すなわち、背景部の面積が広いほど多くの処理時間がかかってしまう。
これに対し、特許文献1では、レンダリングの投影面とボクセルデータ内の描画対象(3次元オブジェクト)との距離の分布を示すデプスマップを生成し、デプスマップを参照して、各仮想光線ごとに対応する距離以上の地点からレイキャスティング計算を行う方法が開示されている。デプスマップを参照することで、仮想光線上に描画対象が全く存在していない状態を認識することができるため、描画対象が存在しない背景部での無駄な計算が回避できる。
特開2006-099422号公報
ところで、特許文献1のようにデプスマップを生成する方法では、レンダリング結果の精度がデプスマップの生成精度に大きく依存する。このため、高精度なレンダリング結果を得るためには、デプスマップの生成精度も高める必要がある。しかしながら、デプスマップの生成精度を高めるためには、描画対象の3次元形状を詳細に反映したオクトリーデータ(ボクセルデータをブロック分割したデータ)を作成する必要があるため、演算量が膨大となり、レンダリング処理の高速化効果が十分に得られないといった問題があった。
本願は、上記した問題に鑑みてなされたものであり、デプスマップを生成することなく、レンダリング処理の高速化を実現する、レンダリング装置等を提供することを目的とする。
本開示の一実施形態によると、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、を備えるレンダリング装置が提供される。
また本開示の一実施形態によると、コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、を含むレンダリング方法が提供される。
また本開示の一実施形態によると、コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、前記コンピュータを、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、として機能させるプログラムが提供される。
本開示によれば、デプスマップを生成することなく、レンダリング処理の高速化を実現する。
ボリュームレンダリング処理の概要を示す図 レンダリング装置1のハードウェア構成を示す図 (a)従来のレイキャスティング法を表す概念図、(b)新規のレイキャスティング法を表す概念図 ボリュームレンダリング画像を生成する場合における有効ボクセル領域Vrを示す図 MIP画像を生成する場合における有効ボクセル領域Vrを示す図 ボクセル空間Rの分割例を示す図 有効ボクセル領域算出処理を並行して実行させる仕組みの例を示す図 レンダリングの投影面の分割例を示す図 レンダリングの投影面の分割例を示す図 レンダリング装置1の全体の動作を示すフローチャート 有効ボクセル領域Vrを算出する処理の全体の流れを示すフローチャート ボリュームレンダリング画像を生成する場合において、各有効ボクセル領域Vr(i)を算出する処理を示すフローチャート MIP画像を生成する場合において、各有効ボクセル領域Vr(i)を算出する処理を示すフローチャート 有効ボクセル領域算出処理を並行して実行させる処理を示すフローチャート 各ボクセル空間の各有効ボクセル領域に基づいて、ボクセル空間R全体における有効ボクセル領域Vrを算出する処理を示すフローチャート レンダリング処理の全体の流れを示すフローチャート レンダリング処理を並行して実行させる処理を示す図 レイキャスティング法に基づいてボリュームレンダリング画像を生成する処理の全体の流れを示すフローチャート レイキャスティング処理を示すフローチャート 有効ボクセル領域Vrと仮想光線との交点を算出する様子を示す図 有効ボクセル領域Vrと仮想光線との交点を算出する様子を示す図 起点座標探索処理を示すフローチャート レイキャスティング法によるMIP画像を生成する処理の全体の流れを示すフローチャート レイキャスティング処理を示すフローチャート 起点座標探索処理を示すフローチャート スキップ幅を変えた場合のレンダリング画像の画像精度を比較した図 スキップ幅を変えた場合のレンダリング画像の画像精度を比較した図 スキップ幅を変えた場合のレンダリング画像の画像精度を比較した図
以下図面に基づいて、本開示の実施の形態を詳細に説明する。本実施の形態では、X線CT装置により撮影されたCT画像に基づいてレンダリング画像を生成する場合について説明するが、本開示はCT画像以外の医用画像(MRI画像やPET画像等)に基づいてレンダリング画像を生成する場合にも適用可能である。
(1.レンダリング処理の概要)
図1は、レンダリング装置1が実行するレンダリング処理の概要を示す図である。図に示すように、レンダリング装置1は、複数の断層画像(図の例では、512×512ピクセルの370枚の胸部CT画像)に基づいてレイキャスティング法に基づくレンダリング処理を実行し、所定の視点から被検体を観察したレンダリング画像(ボリュームレンダリング画像やMIP(Maximum Intensity Projection)画像)を生成する。
(2.レンダリング装置1のハードウェア構成)
図2は、本実施の形態におけるレンダリング装置1のハードウェア構成を示すブロック図である。図2に示すように、レンダリング装置1は、制御部11、記憶部12、メディア入出力部13、通信制御部14、入力部15、表示部16、周辺機器I/F部17等が、バス18を介して接続される汎用のコンピュータで実現される。但し、これに限ることなく、用途、目的に応じて様々な構成を採ることが可能である。
制御部11は、単一プロセッサ、或いはマルチコアCPUで構成されるプロセッサ又はプロセッサが複数個で構成されるマルチプロセッサ(以降、いずれも単に「CPU」と表記し、CPUが有するコアをCPUコアと表記する)、ROM(Read Only Memory)、RAM(Random Access Memory)、フレームメモリ(Frame Memory)等によって構成される。CPUは、記憶部12、ROM、記録媒体等に格納されるレンダリングプログラムをRAM、フレームメモリ上のワークメモリ領域に呼び出して実行し、バス18を介して接続された各装置を駆動制御し、レンダリング装置1が行う後述する処理を実現する。なお、本開示では、複数のCPUコアを用いた処理を後述するが、複数のCPUコアは物理的に複数のCPUコアだけでなく、論理的に複数のCPUコアも含まれる。
ROMは、不揮発性メモリであり、コンピュータのブートプログラムやBIOS等のプログラム、データ等を恒久的に保持している。RAM、フレームメモリは、揮発性メモリであり、記憶部12、ROM、記録媒体等からロードしたプログラム、データ等を一時的に保持するとともに、制御部11が各種処理を行う為に使用するワークエリアを備える。
記憶部12は、HDD(Hard Disk Drive)等であり、制御部11が実行するプログラム、プログラム実行に必要なデータ、OS(Operating System)等が格納される。プログラムに関しては、OSに相当する制御プログラムや、後述する処理をコンピュータに実行させるためのアプリケーションプログラムが格納されている。これらの各プログラムコードは、制御部11により必要に応じて読み出されてRAM、フレームメモリに移され、CPUに読み出されて各種の手段として実行される。
メディア入出力部13(ドライブ装置)は、データの入出力を行い、例えば、CDドライブ(-ROM、-R、-RW等)、DVDドライブ(-ROM、-R、-RW等)等のメディア入出力装置を有する。通信制御部14は、通信制御装置、通信ポート等を有し、コンピュータとネットワーク間の通信を媒介する通信インタフェースであり、ネットワークを介して、他のコンピュータ間との通信制御を行う。ネットワークは、有線、無線を問わない。
入力部15は、データの入力を行い、例えば、キーボード、マウス等のポインティングデバイス、テンキー等の入力装置を有する。入力部15を介して、コンピュータに対して、操作指示、動作指示、データ入力等を行うことができる。表示部16は、液晶パネル等のディスプレイ装置、ディスプレイ装置と連携してコンピュータのビデオ機能を実現するための論理回路等(ビデオアダプタ等)を有する。なお、入力部15及び表示部16は、タッチパネルディスプレイのように、一体となっていてもよい。
周辺機器I/F(Interface)部17は、コンピュータに周辺機器を接続させるためのポートであり、周辺機器I/F部17を介してコンピュータは周辺機器とのデータの送受信を行う。周辺機器I/F部17は、USB(Universal Serial Bus)やIEEE1394やRS-232C等によって構成されており、通常複数の周辺機器I/Fを有する。周辺機器との接続形態は有線、無線を問わない。バス18は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
(3.データ内容)
次に、レンダリング装置1が扱うデータ内容について説明する。
<断層画像群Do>
断層画像群Doは、被検体(人体)を頭尾軸に沿って所定のスライス間隔で連続的に撮影した複数の断層画像(CT画像)である。各断層画像はDICOM形式の2次元の画像データである。DICOM形式は、1ファイルにヘッダ部と画像データ部を含む医療画像で一般的に用いられる画像フォーマットであり、画像撮影時のパラメータや診断情報を保存しておくことができる。
1つの断層画像は、例えば、512×512ピクセルの画像(CT画像)である。断層画像の各画素には、信号値vが付与されており、CT画像の場合、信号値vはCT値である。本実施の形態では、信号値v(CT値)は16ビット(-32768≦v≦32767)のデータとする(但し、信号値vのビット数は特に限定されない)。
CT値は、水を基準として表現した組織のX線減弱係数であり、CT値により組織や病変の種類等が判断できるようになっている(単位はHU(Hounsfield Unit))。CT値は、水と空気のX線減弱係数で標準化されており、水のCT値は0、空気のCT値を-1000である。また、脂肪のCT値は-120~-100程度であり、通常組織のCT値は0~120程度であり、骨のCT値は1000前後を示す。
断層画像群Doは、XYの2次元データである断層画像をZ軸方向に積層したものであり、XYZの3次元データ(ボクセルデータ)として表現可能である。例えば断層画像群Doは、以下のように、XYZの3次元データ(Do(x、y、z))として定義される。尚、本開示において、X軸は人体の左右軸、Y軸は人体の背腹軸(前後軸)、Z軸は人体の頭尾軸(上下軸)に相当するものとする。XY軸は、例えば、CT装置での撮影時に設定される。また、本開示において、X軸方向を横方向、Y軸方向を縦方向と呼ぶ場合がある。
(式1)
-32768≦Do(x、y、z)≦32767
0≦x≦Sx-1、0≦y≦Sy-1、0≦z≦Sz-1
解像度:Rxy、解像度Rz
(式1)において、Sxは断層画像の横方向(X軸方向)の画素数、Syは断層画像の縦方向(Y軸方向)の画素数、Szはスライス枚数(断層画像の枚数)を表す。RxyはX軸方向及びY軸方向の断層画像の解像度であり、画素の間隔の逆数、すなわち単位距離あたりの画素数を示す。Rzはスライスの解像度であり、断層画像のスライス間隔(例えば、0.5mmや1mm)の逆数、すなわち単位距離あたりのスライス枚数を表す。
後述するように(図10のステップS2参照)、断層画像群Doの信号値は、必要に応じて8ビットに階調圧縮される場合がある。8ビットに階調圧縮された断層画像Do(x、y、z)は以下のように定義される。
(式2)
0≦Do(x、y、z)≦255
0≦x≦Sx-1、0≦y≦Sy-1、0≦z≦Sz-1
解像度:Rxy、解像度Rz
<カラーマップCmap>
カラーマップCmapは、信号値vと色値(具体的にはRGB値)及び不透明度(α値)との対応関係を定義するものであり、信号値vを24ビットの色(RGB値)及び8ビットの不透明度(α値)に変換する関数(実体的には2次元のデータテーブル)として表現可能である。例えば、16ビットの断層画像群Do((式1)参照)に適用されるカラーマップCmapは次のように定義される。
(式3)
0≦Cmap(v、n)≦255
-32768≦v≦32767
n=0(R)、1(G)、2(B)、3(α)
また、8ビットの断層画像群Do((式2)参照)に適用されるカラーマップCmap(v、n)は次のように定義される。
(式4)
0≦Cmap(v、n)≦255
0≦v≦255
n=0(R)、1(G)、2(B)、3(α)
(式3)、(式4)に示すカラーマップCmap(v、n)(0≦n≦3)のうち、特にカラーマップCmap(v、n)(0≦n≦2)は、信号値vを色値(RGB値)に変換する関数に相当する。
また、(式3)、(式4)に示すカラーマップCmap(v、n)(0≦n≦3)のうち、特にカラーマップCmap(v、3)は、信号値vを不透明度に変換する関数に相当し、一般的に「オパシティカーブ」と呼ばれる。
カラーマップCmap(v、3)(オパシティカーブ)は、例えば、通常組織(16ビットの信号値v=0~120程度)の不透明度が255に設定(不透明度=255は不透明(光がすべて反射)であることを示す)され、骨領域(16ビットの信号値v=1000前後)の不透明度が1~254の中間値に設定(不透明度=1~254は半透明(入射光の一部が反射され、その他は透過)であることを示す)され、その他の組織等の部位を不透明度が0に設定(不透明度=0は透明(入射光の全てが透過)であることを示す)される。
<クリッピング領域ROI>
クリッピング領域ROI(Region of Interest)は、断層画像群Doにおける関心領域であり、本実施の形態では、クリッピング領域ROIは直方体で設定される。クリッピング領域ROIは、以下のように、X軸方向ROI、Y軸方向ROI、Z軸方向ROIによって定義される。
(式5)
X軸方向ROI:Xs-Xe
Y軸方向ROI:Ys-Ye
Z軸方向ROI:Zs-Ze
尚、クリッピング領域を設定しない場合は、Xs=0、Xe=Sx-1、Ys=0、Ye=Sy-1、Zs=0、Ze=Sz-1となる。
<マスクデータMask>
マスクデータMaskは、断層画像群Doの各画素(x、y、z)の可視/不可視の情報を保持する3次元データであり、以下のように定義される。
(式6)
Mask(x、y、z)= 0(不可視)または1(可視)
0≦x≦Sx-1、0≦y≦Sy-1、0≦z≦Sz-1
解像度:Rxy、解像度Rz
例えば、断層画像群Doに円柱のマスク領域を設定し、マスク領域内を可視化対象とする場合、円柱内部の画素に対応するマスクデータMask(x、y、z)には「1」が設定され、円柱外部の画素に対応するマスクデータMask(x、y、z)には「0」が設定される。なお、マスク領域外を可視化対象としてもよい。この場合、円柱内部の画素に対応するマスクデータMask(x、y、z)には「0」が設定され、円柱外部の画素に対応するマスクデータMask(x、y、z)には「1」が設定される。
<補正テーブルSα>
補正テーブルSαは、断層画像群Doの各画素(x、y、z)に対応する不透明度の補正倍率を格納するデータテーブルであり、以下のように定義される。補正テーブルSαによって、オパシティカーブで規定される信号値に応じた不透明度を各画素毎に調整することができる。
(式7)
0≦Sα(x、y、z)≦1
0≦x≦Sx-1、0≦y≦Sy-1、0≦z≦Sz-1
<ボリュームレンダリング画像Image>
ボリュームレンダリング画像Imageは、レイキャスティング法に基づいてボリュームレンダリング画像を生成する処理(図18参照)によって得られるフルカラー(24ビット)の2次元画像(Size×Sizeの画像)であり、以下のように定義される。
(式8)
0≦Image(x、y、n)≦255
0≦x≦Size-1、0≦y≦Size-1
n=0(R)、1(G)、2(B)
<MIP画像Image>
MIP画像Imageは、レイキャスティング法に基づいてMIP画像を生成する処理(図23参照)によって得られるモノクロ(8ビット)の2次元画像(Size×Sizeの画像)であり、以下のように定義される。MIP画像Imageを生成する段階では、階調は元のDICOM画像の信号値のままモノクロ(16ビット)で計算する方法が一般的であり、Image(x、y)は-32768≦Image(x、y)≦32767の値をもつ場合があるが、表示される段階では以下のようにモノクロ(8ビット)に変換される。
(式9)
0≦Image(x、y)≦255
0≦x≦Size-1、0≦y≦Size-1
<有効ボクセル領域Vr>
有効ボクセル領域Vrは、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセル(以下、「有効ボクセル」とも表記する)を全て含み、かつ有効ボクセルに外接する直方体領域であり、以下のように、X軸方向ROI、Y軸方向ROI、Z軸方向ROIによって定義される。ここで「ボクセル値」とは、各ボクセルに対応づけられる数値情報であり、モダリティで測定された信号値(例えばCT撮影の場合はCT値)や、信号値をカラーマップCmapに通して得られる不透明度や色値、などを含む。
(式10)
X軸方向ROI:Xis-Xie
Y軸方向ROI:Yis-Yie
Z軸方向ROI:Zis-Zie
(4.従来のレイキャスティング法)
図3(a)は、従来のレイキャスティング法を表す概念図である。レイキャスティング法では、投影面(レンダリング画像)の各画素から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出する。この際、図に示すように、レイキャスティング計算を開始する起点(視点座標系において仮想光線を照射する起点)の座標(起点座標)を探索する必要がある。
従来、図3(a)に示すように、断層画像群Doから構成されるボクセル空間Rにおいて、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルである有効ボクセル(例えば、不透明度が0でない値をもつボクセル)が見つかるまで、各画素から視線方向に向かってしらみつぶしにボクセルを確認していた。ボクセルを確認するにあたっては、視点座標系からボクセル座標系へ逐一座標変換を行う必要があり、また、ボリュームレンダリングではカラーマップCmapを逐一参照する必要があるため、それなりの計算負荷を伴う。
この方法の最大の難点は、図3(a)の画素1のように、有効ボクセルが存在しない背景部にあり、この場合、視線方向の全てのボクセル値を確認しないと、背景部の画素であることを決定できない。このため、背景部の面積が広いほど、多くの処理時間がかかってしまう。
(5.新規のレイキャスティング方法)
図3(b)は、本開示における新規のレイキャスティング法を表す概念図である。本開示では、図3(b)に示すように、ボクセル空間Rにおいて、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルである有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出する。
具体的には、ボリュームレンダリング画像を生成する場合には、図4に示すように、不透明度が0でない値(α>0)をもつボクセル(不透明ボクセル)を有効ボクセルとし、有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出することが望ましい。
また、MIP画像を生成する場合には、図5に示すように、信号値が所定の閾値以上(例えば、空気でない信号値以上)であるボクセルを有効ボクセルとし、有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出することが望ましい。
そして、図3(b)に示すように、投影面(レンダリング画像)の各画素から伸びる視線方向のベクトル(仮想光線)と、有効ボクセル領域Vrとの交点座標を幾何計算により算出し、交点座標から視線方向に向かって起点座標の探索を開始する。すなわち、従来のように投影面から起点座標の探索を開始する必要がないため、起点座標を高速に探索することが可能となる。
例えば、図3の画素1については、従来方法(図3(a)参照)では、探索範囲Aの範囲のボクセルを探索する必要があったが、本開示の方法(図3(b)参照)では、画素1については交点座標が存在しないため起点座標の探索を実行しない。すなわち、有効ボクセルが存在しない背景部において無駄な探索が一切行われない。
また画素2については、従来方法(図3(a)参照)では、探索範囲Bの範囲のボクセルを探索する必要があったが、本開示の方法(図3(b)参照)では、交点座標から探索を開始するため、探索範囲Cの範囲だけの探索で済み(探索範囲B-探索範囲Cの範囲の探索を省略できる)、背景部以外においても起点座標の探索が高速化される。
なお、クリッピング領域ROI((式5)参照)が設定されている場合は、クリッピング領域ROIにより規定された描画範囲に含まれ、かつ、図4または図5の有効ボクセル領域に含まれるボクセル(不透明度が0でないボクセルまたは信号値が所定の閾値以上のボクセル)を有効ボクセルとする。そして、有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出する。
また、マスク領域(マスクデータMask、(式6)参照)が設定されている場合は、マスクにより規定された描画範囲(Mask=1のボクセル範囲)に含まれ、かつ、図4または図5の有効ボクセル領域に含まれるボクセル(不透明度が0でないボクセルまたは信号値が所定の閾値以上のボクセル)を有効ボクセルとする。そして、有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出する。
また、クリッピング領域ROI((式5)参照)およびマスク領域(マスクデータMask、(式6)参照)が設定されている場合は、クリッピング領域ROIにより規定された描画範囲およびマスクにより規定された描画範囲(Mask=1のボクセル範囲)に含まれ、かつ、図4または図5の有効ボクセル領域に含まれるボクセル(不透明度が0でないボクセルまたは信号値が所定の閾値以上のボクセル)を有効ボクセルとする。そして、有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域Vrとして算出する。
(6.有効ボクセル領域算出処理の並行化)
また本開示では、複数のCPUコアを用いて、有効ボクセル領域Vrを高速に算出する。具体的には、断層画像群Doから構成されるボクセル空間RをZ軸方向に等分割し、分割した各ボクセル空間に対してそれぞれ有効ボクセル領域を算出する処理(有効ボクセル領域算出処理)を実行する。この際、レンダリング装置1は、各ボクセル空間に対する各有効ボクセル領域算出処理を、レンダリング装置1が備える複数のCPUコアに別々に割り当てることで、各有効ボクセル領域算出処理を並行して実行させる。そして、算出された各有効ボクセル領域を統合してボクセル空間R全体における有効ボクセル領域Vrを算出する。このように、ボクセル空間Rを分割し、分割したボクセル空間ごとに有効ボクセル領域を並行して算出し、算出した各有効ボクセル領域を統合する方法をとることで高速に有効ボクセル領域Vrを求める。
図6は、ボクセル空間Rの分割例を示す。図は、断層画像群Doから構成されるボクセル空間RをZ軸方向に4分割(等分割)した例である。図に示すように、ボクセル空間Rが、4つのボクセル空間R(0)、R(1)、R(2)、R(3)に分割される。各ボクセル空間のZ軸方向の上限座標、下限座標をZ1、Z2とすると、ボクセル空間R(0)はZ1=ZsからZ2=Zs+(Ze-Zs+1)/4-1の範囲の断層画像群Doから構成され、ボクセル空間R(1)はZ1=Zs+(Ze-Zs+1)/4からZ2=Zs+(Ze-Zs+1)/2-1の範囲の断層画像群Doから構成され、ボクセル空間R(2)はZ1=Zs+(Ze-Zs+1)/2からZ2=Zs+(Ze-Zs+1)・3/4-1の範囲の断層画像群Doから構成され、ボクセル空間R(3)はZ1=Zs+(Ze-Zs+1)・3/4からZ2=Zeまでの範囲の断層画像群Doから構成される。
図7は、有効ボクセル領域算出処理を並行して実行させる仕組みの例を示している。図7の例では、レンダリング装置1(コンピュータ)に搭載されたマザーボード(図下)は、4つのCPU(物理コア)を備え、かつ、各CPUが2つの論理コアを有する構成(マルチコアCPU)とする。すなわち、レンダリング装置1は、実質8コア(スレッド#1~#8)を備えている。はじめに、レンダリング装置1に格納されているレンダリングプログラムが起動すると、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラによりCPUコア#1のスレッド#1に割り当てられて実行される。続いて、レンダリングプログラムは、ボクセル空間R(0)に係る有効ボクセル領域算出処理(図の並行処理スレッド#1)、ボクセル空間R(1)に係る有効ボクセル領域算出処理(図の並行処理スレッド#2)、ボクセル空間R(2)に係る有効ボクセル領域算出処理(図の並行処理スレッド#3)、ボクセル空間R(3)に係る有効ボクセル領域算出処理(図の並行処理スレッド#4)の各スレッドを起動し、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラに登録する。
Windowsマルチタスク・オペレーティングシステムでは、コアの空き状況等によって、登録された各並行処理スレッド#1~#4を、8コア(スレッド#1~#8)のいずれかに割り当て、各並行処理スレッド#1~#4を並行して実行する。図7の例では、並行処理スレッド#1、並行処理スレッド#2および並行処理スレッド#3は、ジョブスケジューラにより物理コアが空いているCPUコア#2のスレッド#3、CPUコア#3のスレッド#5、CPUコア#4のスレッド#7に各々割り当てられる。残る並行処理スレッド#4は、物理コアは空いていないがCPUコア#1の論理スレッド#2に割り当てられている。CPUコア#1の論理スレッド#1ではレンダリングプログラム本体が使用中であるが、レンダリングプログラム本体は4つの並行処理スレッドの起動を行って、これらの終了待ち状態になっているため、CPUコア#1の論理スレッド#2に割り当てられている並行処理スレッド#4が主に実行することになる。
なお本開示では、1台のコンピュータ(レンダリング装置1)で並行化処理を行うものとする。従って、例えばグリッドコンピューティングのように複数台のコンピュータを用いて並行化処理(分散処理)を行うことはしない。ただし、前記並行化処理を実行する1台のコンピュータをサーバーとして、コンピュータのGUI操作系のみをネットワーク接続された複数のクライアントコンピュータで実行させる、いわゆるリモートデスクトップ(マイクロソフト社の登録商標)等の構成は本開示に含む。リモートデスクトップにおけるサーバーを含め、並行化処理を1台のコンピュータで完結させることで、たとえ複数のユーザが同時に使用しても、サーバーコンピュータ間の通信が発生しないので、通信経路上でデータが喪失(データロス)したり、ネットワーク遅延等に起因する処理の遅延が生じない。また、機密性の高い断層画像群Do(DICOM画像)が複数のクライアントコンピュータにコピーされるようなことがないため、セキュリティ対策や個人情報の取り扱いが容易となる。
(7.レンダリング処理の並行化)
また本開示では、複数のCPUコアを用いて、レンダリング画像の投影面の画素値を計算するレンダリング処理を高速に実行する。具体的には、レンダリング画像の投影面を複数の画素領域に分割したうえで、各画素領域に対してそれぞれレンダリング処理を実行する。この際、レンダリング装置1は、各レンダリング処理を、レンダリング装置1が備える複数のCPUコアに別々に割り当てることで、各レンダリング処理を並行して実行させる。レンダリング処理の並行化についても、図7と同様にWindowsマルチタスク・オペレーティングシステムの仕組みを用いて実現される。
図8は、レンダリングの投影面の分割例を示す。図は、Size×Sizeの投影面PをY軸方向に4分割(等分割)した例である。図に示すように、投影面Pが、4つの画素領域P(0)、P(1)、P(2)、P(3)に分割される。各画素領域のY軸方向の上限座標、下限座標をY1、Y2とすると、画素領域P(0)はY1=0からY2=Size/4-1の範囲の画素から構成され、画素領域P(1)はY1=Size/4からY2=Size/2-1の範囲の画素から構成され、画素領域P(2)はY1=Size/2からY2=Size・3/4-1の範囲の画素から構成され、画素領域P(3)はY1=Size・3/4からY2=Size-1までの範囲の画素から構成される。
図8のように、画像を等分割することにより各CPUコアの処理時間のバランスをとり、効率のよい並行処理を行うことができる。なお、投影面の分割は図の例に限定されない。例えば、投影面をX軸方向に等分割してもよい(被写体のボリュームをX軸中心に反時計方向に90度回転させた正面アングルでレンダリングする場合には、むしろY軸方向に分割する場合に比べメモリアクセスの効率が向上する)。
また、図9のように、投影面Pを2×2の画素ブロックに分割し、各ブロックの左上の画素から構成される領域を画素領域P(0)とし、各ブロックの右上の画素から構成される領域を画素領域P(1)とし、各ブロックの左下の画素から構成される領域を画素領域P(2)とし、各ブロックの右下の画素から構成される領域を処理領域P(3)としてもよい。なお、画素ブロックは2×2である必要はなく、3×3や4×4などでもよい。
図9の分割方法では、少なくとも1つの処理領域のレンダリング結果だけでも投影面の全体像を可視化できるメリットがある。例えば、ある画素領域のレンダリング処理が遅延した場合であっても、遅延した処理の結果を待たずに他の処理結果に基づきレンダリング結果(全体像に対して均質に間引きされた画像)を表示させ、投影面の全体像の概観を確認することができる。
レンダリング処理の並行化は、図7と同様の仕組みにより実現される。例えば、図7において、並列処理スレッド#1が画素領域P(0)に係るレンダリング処理、並列処理スレッド#2が画素領域P(1)に係るレンダリング処理、並列処理スレッド#3が画素領域P(2)に係るレンダリング処理、並列処理スレッド#4が画素領域P(3)に係るレンダリング処理、などに相当する。
(8.レンダリング装置1の動作)
次に、図10~図25を参照しながら、レンダリング装置1の動作について説明する。
図10は、レンダリング装置1の全体の動作を示すフローチャートである。
まず、レンダリング装置1の制御部11は、断層画像群Do((式1)参照)、カラーマップCmap((式3)参照)、クリッピング領域ROI((式5)参照)、マスクデータMask((式6)参照)、補正テーブルSα((式7)参照)を取得する(図10のステップS1)。
続いて、制御部11は、必要に応じて、断層画像群Doに対して階調圧縮処理を施す(図10のステップS2)。具体的には、制御部11は、以下の手順で16ビットの断層画像群Do((式1)参照)を8ビットの断層画像群Do((式2)参照)に変換する。
(1)断層画像群DoのSz/2番目の中間スライスDo(z/2)における全ての画素の最小値Dmin、最大値Dmaxを算出する。なおDminとDmaxは全てのスライスより最小値と最大値を求める方法をとっても良いが、本実施の形態のように中間スライスだけで決定する方法をとることで、大容量の16ビットの断層画像群Doをメモリ上に保持する必要がなくなる。
(2)下限値Lmin=(Dmax-Dmin)・γ+Dmin、上限値Lmax=(Dmax-Dmin)・(1-γ)+Dminを設定する。ここで、γは階調圧縮画像のコントラスト調整幅で、0に近いほどコントラストが増大する(但し、輝度が小さくなる)。通常はγ=0.1に設定する。
(3)断層画像群Doを以下の計算式で8ビットの断層画像群Do((式2)参照)に変換する(下限値Lmin~上限値Lmaxの範囲で256段階に圧縮する)。
Do(x、y、z)
=(Do(x、y、z)-Lmin)・255/(Lmax-Lmin)
但し、Do(x、y、z)>255の場合はDo(x、y、z)=255、Do(x、y、z)<0の場合はDo(x、y、z)=0に飽和させる。
このように階調圧縮をすることで、断層画像群を保持するためのメモリ容量を半分に抑えることができる。たとえ信号値の階調が16ビットあっても、カラーマップCmapにより、変換される色値(RGB値)及び不透明度(α値)の階調はディスプレイの階調に合わせて8ビットに制限されるため、階調圧縮に伴う画質劣化は殆ど生じない。
続いて、制御部11は、 有効ボクセル領域Vrを算出する(図10のステップS3)。有効ボクセル領域Vrを算出する処理については後述する(「9.有効ボクセル領域算出処理」参照)。
続いて、制御部11は、レンダリング処理を実行し、レンダリング画像Image(ボリュームレンダリング画像またはMIP画像)を生成する(図10のステップS4)。この際、制御部11は、ステップS3において算出した有効ボクセル領域Vrを考慮してレンダリング処理を高速に実行する。レンダリング処理については後述する(「10.レンダリング処理」「11.ボリュームレンダリング画像の生成」「12.MIP画像の生成」参照)。
そして、制御部11は、ステップS4において生成したレンダリング画像Image(ボリュームレンダリング画像またはMIP画像)を表示部16に表示する(図10のステップS5)。
(9.有効ボクセル領域算出処理)
図11~図15を参照して、図10のステップS3において実行される有効ボクセル領域Vrを算出する処理について説明する。
図11は、有効ボクセル領域Vrを算出する処理の全体の流れを示すフローチャートである。
制御部11は、まず、ボクセル空間RをZ軸方向に等分割する(図11のステップS11)。ここでは、図6に示したように、断層画像群Doから構成されるボクセル空間RをZ軸方向に4分割するものとする。すなわち、ボクセル空間R全体が、ボクセル空間R(0)、R(1)、R(2)、R(3)に分割される。
そして、制御部11は、分割したボクセル空間R(i)(i=0~3)に対してそれぞれ有効ボクセル領域Vr(i)(i=0~3)を個別に算出する(図11のステップS12)。
図12、図13は、図11のステップS12において実行される各有効ボクセル領域Vr(i)(i=0~3)を算出する処理を示すフローチャートであり、図12はボリュームレンダリング画像を生成する場合における処理、図13はMIP画像を生成する場合における処理を示す。
図12、図13の処理は、各ボクセル空間Ri(i=0~3)に対して並行して実行され、各ボクセル空間R(i)における各有効ボクセル領域Vr(i)(X軸方向ROI、Y軸方向ROI、Z軸方向ROI)を定義するパラメータとして、各ボクセル空間R(i)内の有効ボクセルのXYZ軸方向の最小座標(Xmin(i)、Ymin(i)、Zmin(i))および最大座標(Xmax(i)、Ymax(i)、Zmax(i))が算出される。
まず、図12を参照して、ボリュームレンダリング画像を生成する場合における有効ボクセル領域Vr(i)を算出する処理を説明する。
制御部11は、まず、ボクセル(x、y、z)の座標をx=Xs、y=Ys、z=Z1に初期化し、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標(Xmin(i)、Ymin(i)、Zmin(i))および最大座標(Xmax(i)、Ymax(i)、Zmax(i))を、Xmin(i)=Xe、Xmax(i)=Xs、Ymin(i)=Ye、Ymax(i)=Ys、Zmin(i)=Ze、Zmax(i)=Zsに初期化する(図12のステップS31)。
続いて、制御部11は、ボクセル(x、y、z)の不透明度Vαを、カラーマップCmapを参照して取得する(図12のステップS32)。
Vα=Cmap(Do(x、y、z)、3)
ここでVα=0およびMask(x、y、z)=0のいずれも満たさない場合(有効ボクセルの場合)(図12のステップS33;No)、制御部11は、次のように、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標および最大座標を更新し(図12のステップS34)、ステップS35へ移行する。
x<Xmin(i)の場合: Xmin(i)=x
x>Xmax(i)の場合: Xmax(i)=x
y<Ymin(i)の場合: Ymin(i)=y
y>Ymax(i)の場合: Ymax(i)=y
z<Zmin(i)の場合: Zmin(i)=z
z>Zmax(i)の場合: Zmax(i)=z
一方、Vα=0またはMask(x、y、z)=0の場合(有効ボクセルでない場合)(図12のステップS33;Yes)、制御部11は、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標および最大座標を更新することなく、ステップS35へ移行する。
続いて、制御部11は、ボクセル(x、y、z)のx座標をx←x+1に更新する(図12のステップS35)。x≦Xeの場合はステップS32に戻り、ステップS32~S34の処理を繰り返す。一方、x>Xeの場合はボクセル(x、y、z)のy座標をy←y+1に更新する(図12のステップS36)。y≦Yeの場合はステップS32に戻り、ステップS32~S34の処理を繰り返す。一方、y>Yeの場合はボクセル(x、y、z)のz座標を更新する(図12のステップS37)。z≦Z2の場合はステップS32に戻り、ステップS32~S34の処理を繰り返す。一方、z>Z2の場合は処理を終了する。
すなわち、制御部11は、ボクセル空間R(i)内のボクセルをクリッピング領域ROI内の範囲で走査し、ボクセル空間R(i)内における有効ボクセル(不透明ボクセル)のXYZ軸方向の最小座標および最大座標を決定する。
次に、図13を参照して、MIP画像を生成する場合における有効ボクセル領域Vr(i)を算出する処理を説明する。
制御部11は、まず、ボクセル(x、y、z)の座標をx=Xs、y=Ys、z=Z1に初期化し、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標(Xmin(i)、Ymin(i)、Zmin(i))および最大座標(Xmax(i)、Ymax(i)、Zmax(i))を、Xmin(i)=Xe、Xmax(i)=Xs、Ymin(i)=Ye、Ymax(i)=Ys、Zmin(i)=Ze、Zmax(i)=Zsに初期化する(図13のステップS41)。
続いて、制御部11は、次のように、ボクセル(x、y、z)の8ビットの信号値V8を取得する(図13のステップS42)。
断層画像群Doの信号値が16ビットの場合:
V8=(Do(x、y、z)-Lmin)・255/(Lmax-Lmin)
断層画像群Doの信号値が8ビットの場合:
V8=Do(x、y、z)
ここでV8=0(信号値が所定の閾値未満であることを示す)およびMask(x、y、z)=0のいずれも満たさない場合(即ち、有効ボクセルの場合)(図13のステップS43;No)、制御部11は、次のように、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標および最大座標を更新し(図13のステップS44)、ステップS45へ移行する。
x<Xmin(i)の場合: Xmin(i)=x
x>Xmax(i)の場合: Xmax(i)=x
y<Ymin(i)の場合: Ymin(i)=y
y>Ymax(i)の場合: Ymax(i)=y
z<Zmin(i)の場合: Zmin(i)=z
z>Zmax(i)の場合: Zmax(i)=z
一方、V8=0またはMask(x、y、z)=0の場合(即ち、有効ボクセルでない場合)(図13のステップS43;Yes)、制御部11は、ボクセル空間R(i)における有効ボクセルのXYZ軸方向の最小座標および最大座標を更新することなく、ステップS45へ移行する。
続いて、制御部11は、ボクセル(x、y、z)のx座標をx←x+1に更新する(図13のステップS45)。x≦Xeの場合はステップS42に戻り、ステップS42~S44の処理を繰り返す。一方、x>Xeの場合はボクセル(x、y、z)のy座標をy←y+1に更新する(図13のステップS46)。y≦Yeの場合はステップS42に戻り、ステップS42~S34の処理を繰り返す。一方、y>Yeの場合はボクセル(x、y、z)のz座標を更新する(図13のステップS47)。z≦Z2の場合はステップS42に戻り、ステップS42~S44の処理を繰り返す。一方、z>Z2の場合は処理を終了する。
すなわち、制御部11は、ボクセル空間R(i)内のボクセルをクリッピング領域ROI内の範囲で走査し、ボクセル空間R(i)内における有効ボクセル(信号値が所定の閾値以上のボクセル)のXYZ軸方向の最小座標および最大座標を決定する。
図12または図13の処理を各ボクセル空間R(i)(i=0~3)ごとに実行することで、各ボクセル空間R(i)における各有効ボクセル領域Vr(i)(X軸方向ROI、Y軸方向ROI、Z軸方向ROI)を定義するパラメータとして、各ボクセル空間R(i)内の有効ボクセルのXYZ軸方向の最小座標(Xmin(i)、Ymin(i)、Zmin(i))(i=0~3)および最大座標(Xmax(i)、Ymax(i)、Zmax(i))(i=0~3)が算出される。
ここで、前記したように、制御部11は、各ボクセル空間R(i)(i=0~3)に対して実行される各有効ボクセル領域算出処理(図11のステップS12(図12、図13))を、レンダリング装置1が備える複数のCPUコアに別々に割り当てることで、各有効ボクセル領域Vr(i)(i=0~3)を並行して算出する。
図14は、各ボクセル空間R(i)(i=0~3)に対する各有効ボクセル領域算出処理を並行して実行させる処理を示す。図に示すように、制御部11(レンダリングプログラム)が、ボクセル空間R(0)(Z1=Zs~Z2=Zs+(Ze-Zs+1)/4-1)に係る有効ボクセル領域算出処理(図の並行処理スレッド#1)、ボクセル空間R(1)(Z1=Zs+(Ze-Zs+1)/4~Z2=Zs+(Ze-Zs+1)/2-1)に係る有効ボクセル領域算出処理(図の並行処理スレッド#2)、ボクセル空間R(2)(Z1=Zs+(Ze-Zs+1)/2~Z2=Zs+(Ze-Zs+1)・3/4-1)に係る有効ボクセル領域算出処理(図の並行処理スレッド#3)、ボクセル空間R(3)(Z1=Zs+(Ze-Zs+1)・3/4~Z2=Ze)に係る有効ボクセル領域算出処理(図の並行処理スレッド#4)の各並行処理スレッドを起動し(図14のステップS21)、各並行処理スレッドからの終了メッセージを待つ(図14のステップS22)。
各並行処理スレッド#1~#4は、図7において述べたように、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラに基づいて並行して実行される。図の例では、ボクセル空間R(0)に係る並行処理スレッド#1がCPUコア#2(スレッド#3)で実行され、ボクセル空間R(1)に係る並行処理スレッド#2がCPUコア#3(スレッド#5)で実行され、ボクセル空間R(2)に係る並行処理スレッド#3がCPUコア#4(スレッド#7)で実行され、ボクセル空間R(3)に係る並行処理スレッド#4がCPUコア#1(スレッド#2)で実行される(図14のステップS23)。
制御部11は、各並行処理スレッド#1~#4から処理の終了メッセージを受信し、全ての並行処理スレッドから終了メッセージを受信すると、並行処理を終了する(図14のステップS24)。
以上のように、複数のCPUコアを用いることで、各ボクセル空間R(i)(i=0~3)に対する各有効ボクセル領域Vr(i)(i=0~3)が並行して算出される。
図11のフローチャートに戻る。
制御部11は、ステップS12(図12、図13)において算出した各ボクセル空間R(i)(i=0~3)の各有効ボクセル領域Vr(i)(i=0~3)に基づいて、ボクセル空間R全体における有効ボクセル領域Vrを算出する(図11のステップS13)。
図15は、ボクセル空間R全体における有効ボクセル領域Vrを算出する処理を示すフローチャートである。
制御部11は、まず、i=0に初期化し、ボクセル空間Rの有効ボクセルのXYZ軸方向の最小座標(Xmin、Ymin、Zmin)および最大座標(Xmax、Ymax、Zmax)を、Xmin=Xe、Xmax=Xs、Ymin=Ye、Ymax=Ys、Zmin=Ze、Zmax=Zsに初期化する(図15のステップS51)。
続いて、制御部11は、次のように、ボクセル空間R内の有効ボクセルのXYZ軸方向の最小座標および最大座標を更新する(図15のステップS52)。
Xmin(i)<Xminの場合: Xmin=Xmin(i)
Xmax(i)>Xmaxの場合: Xmax=Xmax(i)
Ymin(i)<Yminの場合: Ymin=Ymin(i)
Ymax(i)>Ymaxの場合: Ymax=Ymax(i)
Zmin(i)<Zminの場合: Zmin=Zmin(i)
Zmax(i)>Zmaxの場合: Zmax=Zmax(i)
続いて、制御部11は、i←i+1に更新し(図15のステップS53)、i≧ボクセル分割数(=4)となるまで、ステップS52、S53の処理を繰り返す。これにより、最小座標(Xmin、Ymin、Zmin)には、各ボクセル空間R(i)(i=0~3)における有効ボクセルの最小座標(Xmin(i)、Ymin(i)、Zmin(i))(i=0~3)のうち、最も小さい座標値が割り当てられ、最大座標(Xmax、Ymax、Zmax)には、各ボクセル空間R(i)(i=0~3)における最大座標(Xmax(i)、Ymax(i)、Zmax(i))(i=0~3)のうち、最も大きい座標値が割り当てられる。
続いて、制御部11は、モアレ対策として、以下のように、α値が0の透明ボクセルで構成される境界面(x=Xis、x=Xie、y=Yis、y=Yie、z=Zis、またはz=Zieのいずれかを満たす)を有効ボクセル領域Vr(外接直方体)のエッジに1ボクセル幅だけ付加する補正を行う(図15のステップS54)。
Xis=Xmin-1とし、Xis<Xsの場合、Xis=Xs
Xie=Xmax+1とし、Xie>Xeの場合、Xie=Xe
Yis=Ymin-1とし、Yis<Ysの場合、Yis=Ys
Yie=Ymax+1とし、Yie>Yeの場合、Yie=Ye
Zis=Zmin-1とし、Zis<Zsの場合、Zis=Zs
Zie=Zmax+1とし、Zie>Zeの場合、Zie=Ze
なお本補正は必須ではなく、補正をしない場合には、制御部11は、Xis=Xmin、Xie=Xmax、・・・のように、ステップS52で求めた座標をそのまま設定する。また、MIP画像を生成する場合は、モアレ対策が不要なため、本補正は行わない。
以上の処理により、ボクセル空間R全体における有効ボクセル領域Vr(X軸方向ROI、Y軸方向ROI、Z軸方向ROI)((式10)参照)を定義するパラメータとして、ボクセル空間R内の有効ボクセルのXYZ軸方向の最小座標(Xis、Yis、Zis)および最大座標(Xie、Yie、Zie)が算出される。
(10.レンダリング処理)
図16は、図10のステップS4において実行されるレンダリング処理の全体の流れを示すフローチャートである。
制御部11は、まず、レンダリングの投影面を複数の画素領域に分割する(図16のステップS61)。ここでは、図3に示したように、レンダリングの投影面をY軸方向に4分割(等分割)するものとする。すなわち、レンダリングの投影面が、4つの画素領域P(0)、P(1)、P(2)、P(3)に分割される。
そして、制御部11は、分割した各画素領域P(0)~P(3)に対してそれぞれレンダリング処理を実行する(図16のステップS62)。ここで、前記したように、各画素領域P(0)~P(3)に対して実行されるレンダリング処理を、レンダリング装置1が備える複数のCPUコアに別々に割り当てることで、各レンダリング処理を並行して実行する。
図17は、レンダリング処理を並行して実行させる処理を示す図である。図に示すように、制御部11(レンダリングプログラム)が、画素領域P(0)に係るレンダリング処理(図の並行処理スレッド#1)、画素領域P(1)に係るレンダリング処理(図の並行処理スレッド#2)、画素領域P(2)に係るレンダリング処理(図の並行処理スレッド#3)、画素領域P(3)に係るレンダリング処理(図の並行処理スレッド#4)の各並行処理スレッドを起動し(図17のステップS71)、各並行処理スレッドからの終了メッセージを待つ(図17のステップS72)。
各並行処理スレッド#1~#4は、Windowsマルチタスク・オペレーティングシステムのジョブスケジューラに基づいて並行して実行される。図の例では、画素領域P(0)に係る並行処理スレッド#1がCPUコア#2(スレッド#3)で実行され、画素領域P(1)に係る並行処理スレッド#2がCPUコア#3(スレッド#5)で実行され、画素領域P(2)に係る並行処理スレッド#3がCPUコア#4(スレッド#7)で実行され、画素領域P(3)に係る並行処理スレッド#4がCPUコア#1(スレッド#2)で実行される(図17のステップS73)。
制御部11は、各並行処理スレッド#1~#4から処理の終了メッセージを受信し、全ての並行処理スレッドから終了メッセージを受信すると、並行処理を終了する(図17のステップS74)。なお、前述したように、図9のような分割方法を採用した場合には、図17のステップS74において、制御部11は、全ての並行処理スレッドの終了を待たなくてもよい。例えば、個々の並行処理スレッドの処理の終了メッセージを受信する度に、後述の図16のステップS63において、制御部11は、終了メッセージを受信した並行処理スレッドの結果(一部の画素領域のレンダリング結果)に基づいてレンダリング画像を部分的に生成してもよい。そうすると、一部の並行処理スレッドを実行させるためのCPUコアの割り当てが遅延し、当該並行処理スレッドが終了していなくても、少なくとも1つの並行処理スレッドが終了していれば、間引きされた状態でレンダリング画像の全体像を確認することができる。
図16のフローチャートに戻る。
制御部11は、ステップS62において得られた各画素領域P(0)~P(3)のレンダリング画像を結合して、全体のレンダリング画像Image(ボリュームレンダリング画像またはMIP画像)を生成する(図16のステップS63)。
以降、図16のステップS62において実行されるレンダリング処理として、レイキャスティング法に基づいてボリュームレダンリグ画像を生成する処理例と、レイキャスティング法に基づいてMIP画像を生成する処理例を順に説明する。
(11.ボリュームレンダリング画像の生成)
図18は、レイキャスティング法に基づいてボリュームレンダリング画像を生成する処理の全体の流れを示すフローチャートである。この処理は、前記したように、投影面を分割した各画素領域P(0)~P(3)に対して並行して実行される。
まず、制御部11は、座標変換パラメータを設定する(図18のステップS81)。本開示では、後述するレイキャスティング処理(図18のステップS83、図19)で、視点座標系の各3次元座標毎にボクセルを参照するため、逐次座標変換を行う方法をとる。そのため、制御部11は、以下のように、各座標変換処理に共通する座標変換パラメータを事前に設定・算出しておく。
<座標変換パラメータ>
回転パラメータ行列R:
R=[R11 R12 R13;
R21 R22 R23;
R31 R32 R33]
(ボクセル座標系から視点座標系への座標変換を行うための3×3の行列の逆行列、GUI側はボクセル座標系から視点座標系への座標変換を指示するが、レンダリング側は視点座標系からボクセル座標系に座標変換を行う。)
XYZ軸方向のオフセット:
Xoff、Yoff、Zoff(2次元画面上で指定するため、通常Zoff=0)
クリッピング領域:
X軸方向ROI:Xs-Xe
Y軸方向ROI:Ys-Ye
Z軸方向ROI:Zs-Ze
有効ボクセル領域(外接直方体領域):
X軸方向ROI:Xis-Xie
Y軸方向ROI:Yis-Yie
Z軸方向ROI:Zis―Zie
拡大縮小倍率Scale(XYZ軸方向で同一)
Z軸方向変倍率Scz=Rxy/Rz
座標変換サブサンプル・オフセット:X軸方向dx、Y軸方向dy、Z軸方向dz
生成するボリュームレンダリング画像のサイズ:Size(XY軸方向で同一)
仮想光線のサブサンプリング倍率:Sray(通常は1で、値が1より大きいと粗くなり、1未満だと高精細になる。ボリュームレンダリング画像を生成する場合はSray=1、MIP画像を生成する場合はSray=2などに設定する。)
制御部11は、上記した回転パラメータ行列Rに対して、初期値として単位行列を設定する。すなわち、R11=1、R12=0、R13=0、R21=0、R22=1、R23=0、R31=0、R32=0、R33=1と設定する。
そして、GUIの指示に従い、X軸中心回転Rx、Y軸中心回転Ry、Z軸中心回転Rz(角度単位:ラジアン)のいずれかを逐次指定し、以下のように、各々回転行列Aを生成して回転パラメータ行列Rに右から乗算して、回転パラメータ行列Rを更新する。これにより、GUIの指示により生成されるボクセル座標系から視点座標系への回転行列の逆行列が算出される。
回転行列Aを
A=[A11 A12 A13;
A21 A22 A23;
A31 A32 A33]
とすると、
X軸中心回転Rxの場合の回転行列Aの各要素は、
A11=1、A12=0、A13=0
A21=0、A22=cosRx、A23=sinRx
A31=0、A32=sinRx、A33=cosRx
Y軸中心回転Ryの場合の回転行列Aの各要素は、
A11=cosRy、A12=0、A13=sinRy
A21=0、A22=1、A23=0
A31=-sinRy、A32=0、A33=cosRy
Z軸中心回転Rzの場合の回転行列Aの各要素は、
A11=cosRz、A12=sinRz、A13=0
A21=-sinRz、A22=cosRz、A23=0
A31=0、A32=0、A33=1
となる。
回転パラメータ行列Rは、R←R×Aと更新される。
以上で定義された座標変換パラメータに基づく座標変換処理は、レイキャスティング処理(図18のステップS83、図19)の各処理の中で逐次実行される。
続いて、制御部11は、処理回数l=0、サブサンプル・オフセット値をdx=dy=dz=0に初期化する(図18のステップS82)。
そして、制御部11は、Size×(Y2-Y1+1)サイズ(投影面をY軸方向に4分割(等分割)したサイズ)の画素領域に対して、レイキャスティング処理(画素領域の各座標(x、y)毎に色値を算出する処理)を実行する(図18のステップS83)。
図19のフローチャートを参照して、このレイキャスティング処理について説明する。
制御部11は、まず、生成する24ビット(RGB)のレンダリング画像Image(x、y、n)の初期値を全て0に設定する(Image(x、y、n)=0、n=0(R)、1(G)、2(B))。そして、サブサンプル回数Lとして、各2次元座標(x、y)(0≦x≦Size-1、0≦y≦Size-1)に対して、以下の処理を実行する。
制御部11は、背景色bg(n)(n=0(R)、1(G)、2(B)、0≦bg(n)≦255)を設定し、x=0、y=Y1とする(図19のステップS91)。
続いて、制御部11は、仮想光強度Trans=1.0、累積輝度値Energy(n)=0.0(0≦n≦2)に初期化する(図19のステップS92)。
続いて、制御部11は、有効ボクセル領域Vrと仮想光線との交点のZ座標(Zc)を算出する(図19のステップS93)。有効ボクセル領域Vrと仮想光線との交点のZ座標(Zc)を算出する処理については後述する(「11-1.交点算出処理」参照)
続いて、制御部11は、ZstをZst=Zcに設定し(図19のステップS94)、Zstから先頭の有効ボクセル(不透明ボクセル)のZ座標z(仮想光線の照射を開始する起点座標)を探索する(図19のステップS95)。すなわち、ステップS93において算出された交点から視線方向に向かってレイキャスティング計算を開始する起点座標を探索する。起点座標zを探索する処理については後述する(「11-2.起点座標探索処理」、図22参照)。
z<0の場合、ステップS101へ移行する。
一方、z≧0の場合、制御部11は、3次元座標(x、y、z)を座標変換してボクセルα値(Vα)を取得し、Alpha=Vα/255を求める(図19のステップS96)。座標変換を行い、ボクセルα値(Vα)を取得する処理については後述する(「11-4.ボクセルα値、RGB値の取得(補間あり)」参照)。
ステップS96において算出したAlphaがAlpha=0かつz=0の場合、Zst=z-1としたうえで(ステップS96)、ステップS95に戻り、不透明ボクセルのZ座標zを再度探索する。
一方、ステップS96において算出したAlphaがAlpha<0(有効ボクセル領域Vrを通過)、またはAlpha=0かつz=0の場合、ステップS101へ移行し、画素(x、y)におけるRGB画素値を決定する。これにより、有効ボクセル領域Vrを逸脱(通過)している場合(Alpha<0)は、その先に描画対象のボクセルは存在しないため、レイキャスティング処理を早期に打ち切り、冗長な処理を省略する。
一方、ステップS96において算出したAlphaがAlpha>0の場合、制御部11は、3次元座標(x、y、z)を座標変換してボクセルRGB値Vc(n)を取得する(図19のステップS98)。座標変換を行い、ボクセルRGB値(Vc(n))を取得する処理については後述する(「11-4.ボクセルα値、RGB値の取得(補間あり)」参照)。
続いて、制御部11は、仮想光線サブサンプルに基づくα値を、
Alpha’=1-(1-Alpha)1/Sray
と補正し、
累積輝度を、
Energy(n)=Energy(n)+Trans/Alpha・Vc(n)/255
透過光強度を、
Trans=Trans・(1.0-Alpha)
と更新する(図19のステップS99)。
Trans<0.001の場合、ステップS101へ移行し、画素(x、y)におけるRGB画素値を決定する。Trans≧0.001の場合、制御部11は、z=z-1に更新し(図19のステップS100)、z≧0の場合、ステップS96に戻り、z<0の場合、ステップS101へ移行し、画素(x、y)におけるRGB画素値を決定する。
ステップS101において、制御部11は、画素(x、y)におけるRGB画素値を次のように決定する。
Image(x、y、n)=Image(x、y、n)+k・Energy(n)・Light(n)/L
ここで、kは強度倍率であり、初期値はk=1.0に設定されている。
続いて、制御部11は、x←x+1に更新し(図19のステップS102)、x<Sizeの場合、ステップS92に戻り、次の画素xのRGB値を決定する処理(ステップS92~S101)を実行する。x≧Sizeの場合、y←y+1に更新し(図19のステップS103)、y≦Y2の場合、x=0としたうえで、ステップS92に戻り、y行目の画素(x、y)のRGB値を決定する処理(ステップS92~S101)を繰り返す。y>Y2の場合、制御部11は、処理を終了する。
すなわち、画素領域の全画素のRGB値が算出されるまで(ステップS102;x≧Size、かつ、ステップS103;y>Y2)、ステップS92~S101の処理を繰り返す。
図18のフローチャートに戻る。
制御部11は、処理回数をl←l+1に更新し、サブサンプル・オフセット値をdx←dx+1/L、dy←dy+1/L、dz←dz+1/Lに更新する(図LのステップS84)。制御部11は、処理回数lがl>L-1を満たすまで(ステップS84;l>L-1)、ステップS83のレイキャスティング処理を繰り返す。レイキャスティング処理が終了すると、制御部11は、画素領域に対応するレンダリング画像Image(x、y、n)(n≦0≦2)を出力する(図18のステップS85)。
(11-1.交点算出処理)
図19のステップS93において実行される有効ボクセル領域Vrと仮想光線との交点のZ座標(Zc)を算出する処理について説明する。
制御部11は、以下の処理手順で、レイキャスティング処理の算出対象画素(x、y)に対して、視点座標系において、z=Zo(=Size/Sray-1)からz=0の範囲で、視点z=Zoに最も近い有効ボクセル領域Vr([Xis、Xie]、[Yis、Yie]、[Zis、Zie])との交点Zcを算出する。
(1)視線ベクトル(仮想光線ベクトル)の算出
制御部11は、図20に示すように、視点座標系における視点座標(x、y、Zo)および下限座標(x、y、0)に対して各々座標変換を行い、ボクセル座標系における視点座標(x1、y1、z1)および下限座標(x2、y2、z2)を求め、視線ベクトル(vx、vy、vz)の各要素を次のように算出する。
vx=x2-x1
vy=y2-y1
vz=z2-z1
(2)視線ベクトルと有効ボクセル領域Vrとの交点の算出
制御部11は、tx=ty=tz=10と初期化し、
1)|vx|≧1の場合、tx1=(Xis-x1)/vx、tx2=(Xie-x1)/vxを算出し、いずれか小さい方をtxに設定する。
2)|vy|≧1の場合、ty1=(Yis-y1)/vy、ty2=(Yie-y1)/vyを算出し、いずれか小さい方をtyに設定する。
3)|vz|≧1の場合、tz1=(Zis-z1)/vz、tz2=(Zie-z1)/vzを算出し、いずれか小さい方をtzに設定する。
これにより、図20(右図)に示すように、ボクセル座標系における交点座標が求まる。具体的には、交点座標は(vx・t+x1,vy・t+y1,vz・t+z1)で与えられ(tは(2)で算出されたtx、ty、tzのいずれかの値)、図20の例ではz=Zisおよびz=Zieの2面に交点が存在し、z=Zieにおける交点座標は(vx・tz+x1,vy・tz+y1,vz・tz+z1)と算出できる。交点座標は、視線ベクトルと有効ボクセル領域Vr(直方体)を構成する6面との交点(通常、交点は2点以上存在する)のうち、視点に最も近い交点である。
(3)視点座標系における交点Zcの決定
制御部11は、視点座標系における交点座標ZcをZc=-1と初期化し、
1)tx≦1の場合
Y=vy・tx+y1、Z=vz・tx+z1を算出する。
Yis≦Y≦YieかつZis≦Z≦Zieの場合(ボクセル座標系における交点が有効ボクセル領域Vr内に存在する場合)、対応する視点座標系における交点Z2=Zo・(1-tx)を算出し、Z2>ZcならばZc=Z2に置換する。
2)ty≦1の場合
X=vx・ty+x1、Z=vz・ty+z1を算出する。
Xis≦X≦XieかつZis≦Z≦Zieの場合(ボクセル座標系における交点が有効ボクセル領域Vr内に存在する場合)、対応する視点座標系における交点Z2=Zo・(1-ty)を算出し、Z2>ZcならばZc=Z2に置換する。
3)tz≦1の場合
X=vx・tz+x1、Y=vy・tz+y1を算出する。
Xis≦X≦XieかつYis≦Y≦Yieの場合(ボクセル座標系における交点が有効ボクセル領域Vr内に存在する場合)、対応する視点座標系における交点Z2=Zo・(1-tz)を算出し、Z2>ZcならばZc=Z2に置換する。
これにより、図20(左図)に示すように、視点座標系における視点に最も近い交点座標(x、y、Zc)が求まる。
(4)視点より手前に算出される交点の補正
tx、ty、tzは負値をとる場合があり、その場合は交点が視点より手前になる。制御部11は、Zc>Zoの場合、Zc=Zoに補正する。すなわち、図21のように、視点座標系における交点座標が視点より手前(不可視領域)に算出された場合、当該交点座標を視点位置に補正する。
(11-2.起点座標探索処理)
図22のフローチャートを参照して、図19のステップS95において実行される、起点座標zを探索する処理について説明する。
まず、制御部11は、zをz=Zst(=交点座標Zc)に初期化し、探索対象画素(x、y)を入力する(図22のステップS111)。続いて、制御部11は、3次元座標(x、y、z)に対して座標変換を行い、ボクセルのα値を取得する(図22のステップS112)。座標変換を行い、ボクセルのα値を取得する処理は後述する(「11-3.ボクセルα値を取得(補間なし)」参照)。
ステップS112において取得したボクセルのα値がα=0の場合(ボクセルが透明の場合)、制御部11は、z←z-m(例えばm=4)に更新する(図22のステップS113)。mは探索時のZ軸方向のスキップ幅であり、mが大きいほど高速に探索できるが、スキップ幅が大きすぎると起点座標の探索精度が悪化する場合がある。
ステップS113において更新したzがz<0の場合(ボクセル空間外の場合)、制御部11は、z=-1(起点座標が存在しないことを示す値)を返し(図22のステップS114)、処理を終了する。z≧0の場合、制御部11は、ステップS112に戻る。
ステップS112において取得したボクセルのα値がα<0の場合(有効ボクセル領域Vrを通過した場合)は、制御部11は、z=-1(起点座標が存在しないことを示す値)を返し(図22のステップS114)、処理を終了する。
ステップS112において取得したボクセルのα値がα>0の場合(ボクセルが不透明の場合)、以下のように、Z軸の+方向(視線逆方向)に戻って正確な起点座標を探索する。
制御部11は、まず、iをi=0に初期化し(図22のステップS115)、i←i+1に更新する(図22のステップS116)。
i≧mまたはz+i≧Zstの場合、制御部11は、z=z+i-1を返し(図22のステップS118)、処理を終了する。
i<mかつz+i<Zstの場合、3次元座標(x、y、z+i)に対して座標変換を行い、ボクセルのα値を取得する(図22のステップS117)。座標変換を行い、ボクセルのα値を取得する処理は後述する(「11-3.ボクセルα値を取得(補間なし)」参照)。
ステップS117において取得したボクセルのα値がα=0の場合(ボクセルが透明の場合)、制御部11は、z=z+i-1を返し(図22のステップS118)、処理を終了する。
ステップS117において取得したボクセルのα値がα>0の場合(ボクセルが不透明の場合)、ステップS116に戻り、ステップS116~S117の処理を繰り返す。
以上のように、先頭の不透明ボクセルのZ座標z(仮想光線の照射を開始する起点座標)を所定のステップ幅で探索することで(ステップS112、S113)、起点座標を高速に特定できる。また、不透明ボクセルが探索された場合、当該ボクセルの位置とステップ幅だけ視線逆方向(Z軸の+方向)に戻った位置との間に存在する可能性がある不透明ボクセルを再探索することで(ステップS115~S117)、起点座標を正確に特定することができる。
(11-3.ボクセルα値を取得(補間なし))
起点座標探索処理(図22)のステップS112およびステップS117において実行される、座標変換を行いボクセルのα値を取得する処理について説明する。
(11-3-1.座標変換(実数の座標値を取得))
まず座標変換について説明する。
座標変換は、視点座標系をボクセル座標系に変換する処理であり、GUI側の変換処理とは逆になる。GUI側では関心領域ROIによるクリッピング、スケーリング、Z軸方向変倍処理、オフセット(XYZ軸方向同時)、回転、透視変換の順に行うものと仮定し、制御部11は、与えられた視点座標系の3次元座標値(x、y、z)(整数値)に対応するボクセルの実数の座標値(xr、yr、zr)を以下のように算出する。
制御部11は、視点座標系の座標値(x、y、z)(整数値)を次のように実数値(xx、yy、zz)に変換する。視点座標系はSize(X軸方向のサイズ)×Size(Y軸方向のサイズ)×Size/Sray(Z軸方向のサイズ)の直方体で、Sx×Sy×Szの断層画像群Doとは独立して定義される。通常Sx=Sy=512であればSize=512となる。視点座標系のZ軸方向は仮想光線サブサンプル1/Sray倍に伸縮されていることを考慮して、はじめに以下のようにオフセット処理(XYZ軸方向同時)を行う。
xx=x-Size/2+dx+Xoff
yy=y-Size/2+dy+Yoff
zz=z・Sray-Size/2+dz+Zoff
続いて、制御部11は、以下のように、回転パラメータ行列Rを用いて回転処理を行う。
xx’=R11・xx+R12・yy+R13・zz
yy’=R21・xx+R22・yy+R23・zz
zz’=R31・xx+R32・yy+R33・zz
回転処理後の(xx’、yy’、zz’)を(xx、yy、zz)とする。
制御部11は、スケーリング、Z軸方向変倍処理を同時に行い、以下のように、ボクセルの座標値(xr、yr、zr)(実数値)を取得する。
xr=xx/Scale+Sx/2
yr=yy/Scale+Sy/2
zr=zz/Scale/Scz+Sz/2
(11-3-2.座標変換(整数の座標値に変換))
続いて、制御部11は、算出したボクセルの座標値(xr、yr、zr)(実数値)に対して、各値に0.5を加算して、以下のように、小数点以下を切り捨て整数化した座標値を(xi、yi、zi)(四捨五入した整数値)を求める。
xi=INT[xr+0.5]
yi=INT[yr+0.5]
zi=INT[zr+0.5]
(11-3-3.ボクセルα値を取得)
そして、制御部11は、有効ボクセル領域Vr、マスクデータMask、または補正テーブルSαが定義されている場合、これらを考慮して、以下のようにボクセルα値を取得する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外の場合)
α=-1
2)上記1)を満たさない場合
α=Cmap(Do(xi、yi、zi)、3)・Mask(xi、yi、zi)・Sα(xi、yi、zi)
(11-4.ボクセルα値、RGB値の取得(補間あり))
図19のステップS96、S98において実行される、3次元座標値(x、y、z)に対して座標変換を行い、ボクセルα値(Vα)、ボクセルRGB値を取得する処理について説明する。
(11-4-1.座標変換)
まず、前記した(11-3-1.座標変換(実数の座標値を取得))と同様の方法で、3次元座標値(x、y、z)に対応するボクセルの実数の座標値(xr、yr、zr)を算出する。
続いて、制御部11は、算出したボクセルの座標値(xr、yr、zr)(実数値)に対して、小数点以下を切り捨て整数化した座標値を(xi、yi、zi)(整数値)とし、切り捨てた小数点以下の端数を(wx、wy、wz)(0≦wx、wy、wz<1)とする(すなわち、xr=xi+wx、yr=yi+wy、zr=zi+wz)。
(11-4-2.ボクセル信号値の抽出)
そして、制御部11は、有効ボクセル領域Vrを考慮して、視点座標系の3次元座標値(x、y、z)(整数値)に対応するボクセルの信号値を断層画像群Doに基づいて以下のように抽出する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外)
D000=-32769(無効の値)
2)上記1)の条件を満たさない場合において、xi+1>Xie、yi+1>Yie、又はzi+1>Zieのいずれかを満たす場合(補間しない)
D000=Do(xi、yi、zi)
3)上記1)2)の条件を満たさない場合(8近傍ボクセルの信号値を抽出)
D000=Do(xi、yi、zi)
D100=Do(xi+1、yi、zi)
D010=Do(xi、yi+1、zi)
D110=Do(xi+1、yi+1、zi)
D001=Do(xi、yi、zi+1)
D101=Do(xi+1、yi、zi+1)
D011=Do(xi、yi+1、zi+1)
D111=Do(xi+1、yi+1、zi+1)
ここで、マスクデータMask、補正テーブルSαが定義されている場合は、制御部11は、抽出した補間対象ボクセルの信号値に対応するα値スケールS000~S111(0≦S000、・・・、S111≦1)を以下のように設定する。なお、マスクデータMask、補正テーブルSαを使用しない場合は、S000=S100=S010=S110=S001=S101=S011=S111=1とする。
1)1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外)
S000=0
2)上記1)の条件を満たさない場合において、xi+1>Xie、yi+1>Yie、又はzi+1>Zieのいずれかを満たす場合(補間しない)
S000=Mask(xi、yi、zi)・Sα(xi、yi、zi)
3)上記1)2)の条件を満たさない場合(8近傍ボクセルの信号値を抽出)
S000=Mask(xi、yi、zi)・Sα(xi、yi、zi)
S100=Mask(xi+1、yi、zi)・Sα(xi+1、yi、zi)
S010=Mask(xi、yi+1、zi)・Sα(xi、yi+1、zi)
S110=Mask(xi+1、yi+1、zi)・Sα(xi+1、yi+1、zi)
S001=Mask(xi、yi、zi+1)・Sα(xi、yi、zi+1)
S101=Mask(xi+1、yi、zi+1)・Sα(xi+1、yi、zi+1)
S011=Mask(xi、yi+1、zi+1)・Sα(xi、yi+1、zi+1)
S111=Mask(xi+1、yi+1、zi+1)・Sα(xi+1、yi+1、zi+1)
(11-4-3.ボクセルα値の取得)
そして、制御部11は、抽出した補間対象ボクセルの信号値に基づいて、視点座標系の3次元座標値(x、y、z)(整数値)に対応するボクセルのα値Vαを以下のように決定する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外)
Vα=-1
2)上記1)の条件を満たさず、xi=Xis、xi=Xie、yi=Yis、yi=Yie、zi=Zis、又はzi=Zieのいずれかを満たす場合(有効ボクセル領域Vrの境界面)
Vα=0
3)上記1)2)の条件を満たさず、xi+1>Xie、yi+1>Yie、又はzi+1>Zieのいずれかを満たす場合(補間しない)
Vα=Cmap(D000、3)・S000
4)上記1)2)3)の条件を満たさない場合(補間する)
Vα=(1-wz)(1-wy)(1-wx)・Cmap(D000、3)・S000+(1-wz)(1-wy)・wx・Cmap(D100、3)・S100+(1-wz)・wy・(1-wx)・Cmap(D010、3)・S010+(1-wz)・wy・wx・Cmap(D110、3)・S110+wz・(1-wy)(1-wx)・Cmap(D001、3)・S001+wz・(1-wy)・wx・Cmap(D101、3)・S101+wz・wy・(1-wx)・Cmap(D011、3)・S011+wz・wy・wx・Cmap(D111、3)・S111
(11-4-4.ボクセルRGB値の取得)
また、制御部11は、抽出した補間対象ボクセルの信号値に基づいて、視点座標系の3次元座標値(x、y、z)(整数値)に対応するボクセルのRGB値(Vc(n))(0≦n≦2)を以下のように決定する。なお、RGB値を取得する場合には、S000、S100、・・・、S111を乗算するマスク処理を行わない。これにより、マスク境界面でのモアレの発生を抑制する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外)
Vc(n)=0 (0≦n≦2)
2)上記1)の条件を満たさず、xi+1>Xie、yi+1>Yie、又はzi+1>Zieのいずれかを満たす場合(補間しない)
Vc(n)=Cmap(D000、n) (0≦n≦2)
3)上記1)2)の条件を満たさない場合(補間する)
Vc(n)=(1-wz)(1-wy)(1-wx)・Cmap(D000、n)+(1-wz)(1-wy)・wx・Cmap(D100、n)+(1-wz)・wy・(1-wx)・Cmap(D010、n)+(1-wz)・wy・wx・Cmap(D110、n)+wz・(1-wy)(1-wx)・Cmap(D001、n)+wz・(1-wy)・wx・Cmap(D101、n)+wz・wy・(1-wx)・Cmap(D011、n)+wz・wy・wx・Cmap(D111、n) (0≦n≦2)
(11-5.陰影計算)
制御部11は、必要に応じて、次のように陰影計算を行ってもよい。
まず、光源ベクトル(Lx、Ly、Lz)(単位ベクトル)を設定する。例えば、(Lx、Ly、Lz)=(0.57735、0.57735、0.57735)と設定する。また、環境光成分Ab(0≦Ab≦1、例えばAb=0.2)を設定する。
続いて、制御部11は、次のように、座標変換により算出された3次元座標(xi、yi、zi)における6近傍ボクセルの不透明度V100、V200、V010、V020、V001、V002を取得する。但し、xi+1>XieのときV100=0、xi-1<XisのときV200=0、yi+1>YieのときV010=0、yi-1<YisのときV020=0、zi+1<ZisのときV001=0、zi-1<ZisのときV002=0とする。すなわち、隣接するボクセルがクリッピング範囲の場合は不透明度を0として扱う。
V100=Cmap(Do(xi+1、yi、zi)、3)・Mask(xi+1、yi、zi)・Sα(xi+1、yi、zi)
V200=Cmap(Do(xi-1、yi、zi)、3)・Mask(xi-1、yi、zi)・Sα(xi-1、yi、zi)
V010=Cmap(Do(xi、yi+1、zi)、3)・Mask(xi、yi+1、zi)・Sα(xi、yi+1、zi)
V020=Cmap(Do(xi、yi-1、zi)、3)・Mask(xi、yi-1、zi)・Sα(xi、yi-1、zi)
V001=Cmap(Do(xi、yi、zi+1)、3)・Mask(xi、yi、zi+1)・Sα(xi、yi、zi+1)
V002=Cmap(Do(xi、yi、zi-1)、3)・Mask(xi、yi、zi-1)・Sα(xi、yi、zi-1)
上記のように、各不透明度の要素にMask(xi+1、yi、zi)・Sα(xi+1、yi、zi)を乗算すると、カット面の反射に豊かな陰影が付くがモアレが生じやすい。その場合、V100=Cmap(Do(xi+1、yi、zi)、3)のようにMask(xi+1、yi、zi)・Sα(xi+1、yi、zi)の項を乗算しなければモアレを抑圧できるが、カット面の光沢が無くなりザラザラになる弊害がある。
続いて、制御部11は、座標変換により算出された3次元座標(xi、yi、zi)における勾配ベクトル(Gx、Gy、Gz)を、以下の式で算出する。
Gx=(V100-V200)・Rxy/Rz
Gy=(V010-V020)・Rxy/Rz
Gz=V001-V002
G={Gx+Gy+Gz1/2
続いて、G≧1の場合、制御部11は、輝度値(陰影値)S(0≦S≦1)は、拡散反射成分を算出し、
S=(1-Ab)|Gx・Lx+Gy・Ly+Gz・Lz|/G+Ab
を与える。G<1の場合(αが変化しない場合)、制御部11は、輝度値(陰影値)Sとして、S=0を与える。
そして、制御部11は、
Vc’(n)=S・Vc(n)
とし、算出されたRGB値Vc(n)(0≦n≦2)の成分を改変する。
以上、レイキャスティング法に基づいてボリュームレンダリング画像を生成する処理について説明した。
(12.MIP画像の生成)
次に、レンダリング処理として、レイキャスティング法に基づいてMIP画像を生成する処理を説明する。
図23は、レイキャスティング法によるMIP画像を生成する処理の全体の流れを示すフローチャートである。この処理は、前記したように、投影面を分割した各画素領域P(0)~P(3)に対して並行して実行される。
まず、制御部11は、座標変換パラメータを設定する(図23のステップS121)。座標変換パラメータの設定は、前記した図18のステップS81と同様である。
続いて、制御部11は、Size×(Y2-Y1+1)サイズ(投影面をY軸方向に4分割(等分割)したサイズ)の画素領域に対して、レイキャスティング処理(画素領域の各座標(x、y)毎に代表信号値を算出する処理)を実行する(図23のステップS122)。
図24のフローチャートを参照して、このレイキャスティング処理について説明する。生成するMIP画像Image(x、y)は断層画像群Doの階調に基づいてモノクロ8ビットまたは16ビットの値をもつが、図10のステップS2に示される断層画像群Doに対する階調圧縮処理を施さない場合が多く、その場合はモノクロ16ビットになる。以下、モノクロ(16ビット)のMIP画像Image(x、y)を生成する場合について説明する。
制御部11は、まず、生成するモノクロ(16ビット)のMIP画像Image(x、y)の初期値を全て0に設定する(Image(x、y)=0)。また、代表信号値算出モードmode(0:MIP、1:MinIP、2:RaySum)を設定し、各2次元座標(x、y)(0≦x≦Size-1、0≦y≦Size-1)に対して、以下の処理を実行する。
制御部11は、x=0、y=Y1と設定し(図24のステップS131)、有効ボクセル領域Vrと仮想光線との交点のZ座標(Zc)を算出する(図24のステップS132)。交点のZ座標を算出する方法は、前記した図19のステップS93(「11-1.交点算出処理」参照)と同様である。
続いて、制御部11は、代表信号値算出モードmodeに応じて、代表信号値Vmとカウンタcntを以下のように初期化し、Zst=Zcとする(図24のステップS133)。
mode=0(MIP):Vm=-32768(最小値を設定)
mode=1(MinIP):Vm=32767(最大値を設定)
mode=2(RaySum):Vm=0、cnt=0
続いて、制御部11は、Zstから後続する先頭の有効ボクセル(信号値が所定の閾値以上のボクセル)のZ座標z(起点座標)を探索する(図24のステップS134)。すなわち、ステップS132において算出された交点から視線方向に向かってレイキャスティング計算を開始する起点座標を探索する。起点座標を探索する処理については後述する(「12-1.起点座標探索処理」、図25参照)。
z<0の場合、ステップS139へ移行する。
一方、z≧0の場合、制御部11は、3次元座標(x、y、z)を座標変換してボクセル信号値Vsを取得する(図24のステップS135)。座標変換を行い、ボクセル信号値Vsを取得する処理については後述する(「12-3.ボクセル信号値Vsを取得(補間あり)」参照)。
ステップS135において取得したボクセル信号値VsがVs=-32769の場合(有効ボクセル領域Vrを通過した場合)、ステップS139へ移行する。これにより、有効ボクセル領域Vrを通過している場合(Vs=-32769)は、その先に描画対象のボクセルは存在しないため、レイキャスティング処理を早期に打ち切り、冗長な処理を省略する。
ステップS135において取得したボクセル信号値VsがVs<-32769の場合(無効値の場合)、Zst=z-1としたうえで(図24のステップS136)、ステップS134に戻り、起点座標を再度探索する。
ステップS135において取得したボクセル信号値VsがVs≧-32768の場合(有効値の場合)、制御部11は、代表信号値算出モードmodeに応じて、以下のように代表信号値Vmを算出する(図24のステップS137)。
mode=0(MIP mode):
Vs>VmならばVm=Vs
mode=1(MinIP mode):
Vs<VmならばVm=Vs
mode=2(RaySum mode):
Vm←Vm+Vs、cnt←cnt+1
z=z-1に更新し(図24のステップS138)、z≧0の場合、ステップS135に戻り、z<0の場合、ステップS139へ移行する。
ステップ139において、mode=0、1の場合(図24のステップS139;mode<2)には、制御部11は、ステップS137で得られた代表信号値Vmを画素値として記録する(Image(x、y)=Vm、図24のステップS141)。一方、mode=2(RaySum mode)の場合(図24のステップS139;mode=2)には、制御部11は、Vm←Vm/cntのように信号値の平均を計算したうえで(図24のステップS140)、代表信号値Vmを画素値として記録する(Image(x、y)=Vm、図24のステップS141)。
続いて、制御部11は、x←x+1に更新し(図24のステップS142)、x<Sizeの場合、ステップS132に戻り、次の画素xの代表信号値Vmを求める処理(ステップS132~S141)を実行する。x≧Sizeの場合、y←y+1に更新し(図24のステップS143)、y≦Y2の場合、x=0としたうえで、ステップS132に戻り、y行目の画素(x、y)の代表信号値Vmを求める処理(ステップS132~S141)を繰り返す。y>Y2の場合、制御部11は、処理を終了する。
すなわち、画素領域の全画素の代表信号値Vmが得られるまで(ステップS142;x≧Size、かつ、ステップS143;y>Y2)、ステップS132~S141の処理を繰り返す。
図23のフローチャートに戻る。
制御部11は、画素領域に対応するMIP画像Image(x、y)を出力する(図23のステップS123)。
(12-1.起点座標探索処理)
図25のフローチャートを参照して、図24のステップS134において実行される、起点座標を探索する処理について説明する。
まず、制御部11は、zをz=Zstと初期化し、探索対象画素(x、y)を入力する(図25のステップS151)。続いて、制御部11は、3次元座標(x、y、z)に対して座標変換を行い、ボクセル信号値Vsを取得する(図25のステップS152)。座標変換を行い、ボクセル信号値Vsを取得する処理は後述する(「12-2.ボクセル信号値Vsを取得(補間なし)」参照)。
ステップS152において取得したボクセル信号値VsがVs=-32769の場合(有効ボクセル領域Vrを通過した場合)、制御部11は、z=-1(起点座標が存在しないことを示す値)を返し(図25のステップS154)、処理を終了する。
一方、ステップS152において取得したボクセル信号値Vs<-32769の場合(無効値の場合)は、制御部11は、z←z-1に更新する(図25のステップS153)。
ステップS153において更新したzがz<0の場合(ボクセル空間外の場合)、制御部11は、z=-1(起点座標が存在しないことを示す値)を返し(図25のステップS154)、処理を終了する。z≧0の場合、制御部11は、ステップS152に戻る。
一方、ステップS152において取得したボクセル信号値VsがVs≧-32768の場合(有効ボクセルの場合)、制御部11は、zを起点座標として出力する。
(12-2.ボクセル信号値Vsを取得(補間なし))
起点座標探索処理(図25)のステップS152において実行される、座標変換を行いボクセル信号値Vsを取得する処理について説明する。
(12-2-1.座標変換)
まず、前記した(11-3-1.座標変換(実数の座標値を取得))および(11-3-2.座標変換(整数の座標値に変換))と同様の方法で、3次元座標値(x、y、z)に対応するボクセルの整数の座標値(xi、yi、zi)を算出する。
(12-2-2.ボクセル信号値Vsを取得)
そして、制御部11は、有効ボクセル領域Vr、マスクデータMask、または補正テーブルSαが定義されている場合、これらを考慮して、以下のようにボクセル信号値Vsを取得する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外の場合)
Vs=-32769
2)上記1)を満たさず、Mask(x、y、z)=0の場合(無効値)
Vs=-99999
3)上記1)2)を満たさない場合(有効値)
Vs=Do(xi、yi、zi)
(12-3.ボクセル信号値Vsの取得(補間あり))
(12-3-1.座標変換)
まず、前記した(11-3-1.座標変換(実数の座標値を取得))と同様の方法で、3次元座標値(x、y、z)に対応するボクセルの実数の座標値(xr、yr、zr)を算出する。
(12-3-2.ボクセル信号値の抽出)
続いて、前記した(10-2.ボクセル信号値の抽出)と同様の方法で、補間対象のボクセル信号値D000、D100、D010、D001、D101、D011、D111を抽出し、α値スケールS000、S100、S010、S110、S001、S101、S011、S111を設定する。
(12-3-3.ボクセル信号値Vsの取得)
そして、制御部11は、抽出した補間対象ボクセルの信号値に基づいて、視点座標系の3次元座標値(x、y、z)(整数値)に対応するボクセル信号値Vsを以下のように決定する。
1)xi<Xis、xi>Xie、yi<Yis、yi>Yie、zi<Zis、又はzi>Zieのいずれかを満たす場合(有効ボクセル領域Vr外)
Vs=-32769
2)上記1)の条件を満たさず、S000=0の場合(無効値)
Vs=-99999
3)上記1)2)を満たさない場合において、
xi+1>Xie、yi+1>Yie、またはzi+1>Zieのいずれかを満たすか、或いはS000、S100、S010、S110、S001、S101、S011、S111のいずれかが0の場合(補間しない)
Vs=D000
4)上記1)2)3)の条件を満たさない場合(補間する)
Vs=(1-wz)(1-wy)(1-wx)・D000+(1-wz)(1-wy)・wx・D100+(1-wz)・wy・(1-wx)・D010+(1-wz)・wy・wx・D110+wz・(1-wy)(1-wx)・D001+wz・(1-wy)・wx・D100+wz・wy・(1-wx)・D011+wz・wy・wx・D111
以上、レンダリング処理として、レイキャスティング法に基づいてMIP画像を生成する処理について説明した。
以上、本開示の実施の形態について説明した。本開示の実施の形態によれば、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する。そして、視線方向のベクトルと有効ボクセル領域との交点を幾何計算により算出し、算出された交点から視線方向に向かってレイキャスティング計算を開始する起点座標を探索する。これにより、有効ボクセル領域の外側における冗長な探索処理を削減することができ、レンダリング処理の高速化が実現できる。例えば、有効ボクセル領域との交点が存在しない背景部の画素は計算対象から外され、冗長な処理が大幅に削減される。また、背景部以外の画素についても、交点から起点座標の探索を開始すればよいため、投影面から交点までの範囲の探索を省略できる。本開示の方法は、レイキャスティング計算を開始する起点座標を探索するにあたり、投影面から有効ボクセルとの距離の分布を示すデプスマップを作成したりする必要がないので、レンダリング処理の高速化を簡便な手段で実現することができる。
また、起点座標の探索範囲が絞り込まれるので、従来に比べて起点座標を探索する際のスキップ幅を小さくすることができる。これにより、従来に比べて起点座標をより正確に求めることができ、精度の高いレンダリング画像を得ることができる。
図26~図28は、スキップ幅を変えた場合のレンダリング画像の画像精度を比較した図である。図26はスキップ幅=16、図27はスキップ幅=8、図28はスキップ幅=4とした場合のレンダリング画像を示す。(a)はフルカラー(24ビット)のボリュームレンダリング画像、(b)はモノクロ(8ビット)のボリュームレンダリング画像とMIP画像を示す。なお、図28(b)のMIP画像のみスキップ幅を1としている。
図26、図27のように、スキップ幅をある程度大きくするとレンダリング処理を高速に実行できるが、有効ボクセルの見落としが多くなるため、画素抜け(図26(a)、図27(a)参照)や画像エッジ部の波形歪み(図26(b)、図27(b)参照)が発生する。これに対し、図28のようにスキップ幅を小さくすると、有効ボクセルの見落としが少なくなるため、画素抜け(図28(a)参照)や画像エッジ部の波形歪み(図28(b)参照))の発生が抑えられる。
しかしながら、従来(図3(a)参照)のように、投影面から起点座標を探索する方法でスキップ幅を小さくすると、計算負荷が大きくなり、現実的な処理時間でレンダリング処理を実行することが困難となる。この点、本開示(図3(b)参照)のように、視線ベクトルと有効ボクセル領域との交点を算出し、この交点から起点座標を探索する方法をとることで、図28のようにスキップ幅を小さく設定しても現実的な処理時間でレンダリング処理を実行することができる。すなわち、本開示の方法によれば、レンダリング処理を高速かつ高精度に実行することが可能となる。
さらに本開示では、レイキャスティング計算の途上において、有効ボクセル領域を逸脱(通過)した場合(図19のステップS96;Alpha<0、図24のステップS135;Vs=-32769)、その先に描画対象のボクセルは存在しないため、レイキャスティング処理を早期に打ち切るようにする。これにより、有効ボクセル領域の外側におけるレイキャスティング計算を省略できる。
また本開示では、断層画像群Doから構成されるボクセル空間を分割し、分割したボクセル空間ごとに有効ボクセル領域を並行して算出し、算出した各有効ボクセル領域を統合する方法をとることで高速に有効ボクセル領域を求めることができる。また、レンダリングの投影面を複数の画素領域に分割し、各画素領域におけるレンダリング処理を並行して実行させることで、高速にレンダリング画像を得ることができる。例えば、並行化のスレッド数をN(例えばN=4)とし、レンダリング装置1で使用可能なCPUコアがN個以上存在し、N個のスレッドに異なるCPUコアが割り当てられれば、N倍の処理速度で有効ボクセル領域算出処理およびレンダリング処理を実行することが可能となる。
また本開示では、上記した並行化処理を1台のコンピュータ(レンダリング装置1)で完結させることで、リモートデクストップ等の構成で複数のユーザが使用しても、サーバーコンピュータ間の通信が発生しないので、通信経路上でデータが喪失(データロス)したり、ネットワーク遅延等に起因するレンダリング処理の遅延が生じない。また、機密性の高い断層画像群Do(DICOM画像)が複数のクライアントコンピュータにコピーされるようなことがないため、セキュリティ対策や個人情報の取り扱いが容易となる。
なお、上記した並行化処理は必須ではない。この場合、図10のステップS3において、制御部11は、ボクセル空間を分割することなく、ボクセル空間全体における有効ボクセル領域を直接算出する。また、図10のステップS4において、制御部11は、投影面を分割することなく、投影面全体を対象としてレンダリング処理(レイキャスティング処理)を実行する。
以上、添付図面を参照しながら、本開示に係るレンダリング装置1等の好適な実施形態について説明したが、本開示はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。
1 :レンダリング装置
Do :断層画像群
Cmap :カラーマップ
ROI :クリッピング領域
Mask :マスクデータ
Sα :補正テーブル
Image :レンダリング画像(ボリュームレンダリング画像、MIP画像)
Vr :有効ボクセル領域

Claims (31)

  1. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え
    クリッピング領域が設定されている場合には、
    前記有効ボクセル領域算出手段は、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記クリッピング領域に含まれるボクセルを、有効ボクセルとする、
    レンダリング装置。
  2. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    マスク領域が設定されている場合には、
    前記有効ボクセル領域算出手段は、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記マスク領域に含まれるボクセルまたは前記マスク領域に含まれないボクセルを、有効ボクセルとする
    ンダリング装置。
  3. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    前記有効ボクセル領域算出手段は、
    前記複数の断層画像を複数の断層画像群に分割する手段と、
    分割した断層画像群ごとに、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たす有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する手段と、
    算出した各有効ボクセル領域に基づいてボクセル空間全体における有効ボクセル領域を算出する手段と、を備え、
    複数のCPUコアを用いて、各断層画像群に対応する有効ボクセル領域を並行して算出する
    ンダリング装置。
  4. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    前記有効ボクセル領域算出手段は、
    信号値が所定の閾値以上のボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリング手段は、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上において所定の閾値以上の信号値をもつボクセルを抽出し、抽出したボクセルの信号値に基づいて代表信号値を算出し、レンダリング画像の画素値とする
    ンダリング装置。
  5. 前記レンダリング手段は、
    前記代表信号値として、抽出したボクセルの信号値の最大値、最小値または平均値のいずれかを算出する、
    請求項に記載のレンダリング装置。
  6. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    前記有効ボクセル領域算出手段は、
    不透明度が0でないボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリング手段は、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルの色値および不透明度に基づいて、各画素の画素値を算出する
    ンダリング装置。
  7. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    前記レンダリング手段は、
    視点座標系における回転を定義した回転行列、XYZ軸各方向のオフセット値、XYZ軸方向の拡大又は縮小倍率、Z軸方向の変倍率を含む座標変換パラメータを取得し、
    仮想光線上のボクセルの視点座標系における座標を、前記座標変換パラメータに基づいて、ボクセル座標系における座標に変換し、
    ボクセル座標系における座標に基づいて近傍の複数のボクセルを特定し、
    特定した複数のボクセルのボクセル座標系における座標が前記有効ボクセル領域に含まれる場合は、前記複数のボクセルのボクセル値に基づいて、前記画素値を算出する
    ンダリング装置。
  8. 前記レンダリング手段は、
    特定した複数のボクセルのボクセル座標系における座標が前記有効ボクセル領域に含まれる場合は、特定した複数のボクセルの各信号値に所定の重みを付けて加算し、前記画素値を算出する、
    請求項に記載のレンダリング装置。
  9. 前記レンダリング手段は、
    特定した複数のボクセルのボクセル座標系における座標が前記有効ボクセル領域に含まれる場合は、特定した複数のボクセルの各色値および各不透明度にそれぞれ所定の重みを付けて加算し、前記画素値を算出する、
    請求項に記載のレンダリング装置。
  10. 複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段と、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段と、
    を備え、
    前記レンダリング手段は、
    レンダリング画像の画素ごとに、算出された視点に近い交点を探索開始点として、視線方向に向かって最も近い有効ボクセルの座標を、仮想光線の照射を開始する起点座標として探索する起点座標探索手段と、を更に備える、
    レンダリング装置。
  11. 前記起点座標探索手段は、
    算出された視点から遠い交点までの範囲を探索する、
    請求項10に記載のレンダリング装置。
  12. 前記起点座標探索手段は、
    レンダリング画像の画素ごとに、視線方向に向かって所定のステップ幅で当該画素に対応するボクセルのボクセル値を順次取得しながら、有効ボクセルを探索する、
    請求項10または請求項11に記載のレンダリング装置。
  13. 前記起点座標探索手段により有効ボクセルが探索されなかった場合、予め決められた所定値を返す、
    請求項12に記載のレンダリング装置。
  14. 前記起点座標探索手段は、
    有効ボクセルが探索された場合、当該有効ボクセルの位置と前記ステップ幅だけ視線方向と逆の方向に戻った位置との間に存在する有効ボクセルを探索する、
    請求項12に記載のレンダリング装置。
  15. 前記起点座標探索手段は、
    視点座標系における回転を定義した回転行列、XYZ軸各方向のオフセット値、XYZ軸方向の拡大又は縮小倍率、Z軸方向の変倍率を含む座標変換パラメータを取得し、
    ボクセルの視点座標系における座標を、前記座標変換パラメータに基づいて、ボクセル座標系における座標に変換し、
    ボクセル座標系における座標が有効ボクセル領域に含まれる場合は、当該ボクセルの信号値をボクセル値として取得する、
    請求項12から請求項14のいずれかに記載のレンダリング装置。
  16. 前記起点座標探索手段は、
    視点座標系における回転を定義した回転行列、XYZ軸各方向のオフセット値、XYZ軸方向の拡大又は縮小倍率、Z軸方向の変倍率を含む座標変換パラメータを取得し、
    ボクセルの視点座標系における座標を、前記座標変換パラメータに基づいて、ボクセル座標系における座標に変換し、
    ボクセル座標系における座標が有効ボクセル領域に含まれる場合は、当該ボクセルの不透明度をボクセル値として取得する、
    請求項12から請求項14のいずれかに記載のレンダリング装置。
  17. 前記レンダリング手段は、
    レンダリング画像の投影面を複数の画素領域に分割する手段と、
    分割した画素領域ごとに、当該画素領域の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を求めるレンダリング処理を実行する手段と、
    算出した各画素領域のレンダリング結果に基づいてレンダリング画像を生成する手段と、を備え、
    複数のCPUコアを用いて、各画素領域に対する各レンダリング処理を並行して実行する、
    請求項1から請求項16のいずれかに記載のレンダリング装置。
  18. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    クリッピング領域が設定されている場合には、
    前記有効ボクセル領域算出ステップは、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記クリッピング領域に含まれるボクセルを、有効ボクセルとする、
    レンダリング方法。
  19. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    マスク領域が設定されている場合には、
    前記有効ボクセル領域算出ステップは、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記マスク領域に含まれるボクセルまたは前記マスク領域に含まれないボクセルを、有効ボクセルとする、
    レンダリング方法。
  20. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    前記有効ボクセル領域算出ステップは、
    前記複数の断層画像を複数の断層画像群に分割するステップと、
    分割した断層画像群ごとに、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たす有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出するステップと、
    算出した各有効ボクセル領域に基づいてボクセル空間全体における有効ボクセル領域を算出するステップと、を含み、
    複数のCPUコアを用いて、各断層画像群に対応する有効ボクセル領域を並行して算出する、
    レンダリング方法。
  21. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    前記有効ボクセル領域算出ステップは、
    信号値が所定の閾値以上のボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリングステップは、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上において所定の閾値以上の信号値をもつボクセルを抽出し、抽出したボクセルの信号値に基づいて代表信号値を算出し、レンダリング画像の画素値とする、
    レンダリング方法。
  22. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    前記有効ボクセル領域算出ステップは、
    不透明度が0でないボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリングステップは、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルの色値および不透明度に基づいて、各画素の画素値を算出する、
    レンダリング方法。
  23. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    前記レンダリングステップは、
    視点座標系における回転を定義した回転行列、XYZ軸各方向のオフセット値、XYZ軸方向の拡大又は縮小倍率、Z軸方向の変倍率を含む座標変換パラメータを取得し、
    仮想光線上のボクセルの視点座標系における座標を、前記座標変換パラメータに基づいて、ボクセル座標系における座標に変換し、
    ボクセル座標系における座標に基づいて近傍の複数のボクセルを特定し、
    特定した複数のボクセルのボクセル座標系における座標が前記有効ボクセル領域に含まれる場合は、前記複数のボクセルのボクセル値に基づいて、前記画素値を算出する、
    レンダリング方法。
  24. コンピュータが、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング方法であって、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出ステップと、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリングステップと、
    を含み、
    前記レンダリングステップは、
    レンダリング画像の画素ごとに、算出された視点に近い交点を探索開始点として、視線方向に向かって最も近い有効ボクセルの座標を、仮想光線の照射を開始する起点座標として探索する起点座標探索ステップと、を更に含む、
    レンダリング方法。
  25. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    クリッピング領域が設定されている場合には、
    前記有効ボクセル領域算出手段は、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記クリッピング領域に含まれるボクセルを、有効ボクセルとする、
    プログラム
  26. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    マスク領域が設定されている場合には、
    前記有効ボクセル領域算出手段は、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たし、かつ前記マスク領域に含まれるボクセルまたは前記マスク領域に含まれないボクセルを、有効ボクセルとする、
    プログラム。
  27. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    前記有効ボクセル領域算出手段は、
    前記複数の断層画像を複数の断層画像群に分割する手段と、
    分割した断層画像群ごとに、ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たす有効ボクセルを全て含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する手段と、
    算出した各有効ボクセル領域に基づいてボクセル空間全体における有効ボクセル領域を算出する手段と、を備え、
    複数のCPUコアを用いて、各断層画像群に対応する有効ボクセル領域を並行して算出する、
    プログラム。
  28. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    前記有効ボクセル領域算出手段は、
    信号値が所定の閾値以上のボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリング手段は、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上において所定の閾値以上の信号値をもつボクセルを抽出し、抽出したボクセルの信号値に基づいて代表信号値を算出し、レンダリング画像の画素値とする、
    プログラム。
  29. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    前記有効ボクセル領域算出手段は、
    不透明度が0でないボクセルを有効ボクセルとし、前記有効ボクセル領域を算出し、
    前記レンダリング手段は、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルの色値および不透明度に基づいて、各画素の画素値を算出する、
    プログラム。
  30. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    前記レンダリング手段は、
    視点座標系における回転を定義した回転行列、XYZ軸各方向のオフセット値、XYZ軸方向の拡大又は縮小倍率、Z軸方向の変倍率を含む座標変換パラメータを取得し、
    仮想光線上のボクセルの視点座標系における座標を、前記座標変換パラメータに基づいて、ボクセル座標系における座標に変換し、
    ボクセル座標系における座標に基づいて近傍の複数のボクセルを特定し、
    特定した複数のボクセルのボクセル座標系における座標が前記有効ボクセル領域に含まれる場合は、前記複数のボクセルのボクセル値に基づいて、前記画素値を算出する、
    プログラム。
  31. コンピュータを、複数の断層画像から構成される3次元ボクセルに基づいてレンダリング画像を生成するレンダリング装置として機能させるプログラムであって、
    前記コンピュータを、
    ボクセル値が描画対象のボクセルを規定するように予め定められた条件を満たすボクセルを有効ボクセルとし、全ての有効ボクセルを含み、かつ有効ボクセルに外接する直方体を有効ボクセル領域として算出する有効ボクセル領域算出手段、
    レンダリング画像の各画素に対して、視線方向のベクトルと前記有効ボクセル領域との交点を算出し、算出された視点に近い交点から視線方向に向かって仮想光線を照射し、仮想光線上のボクセルのボクセル値に基づいて、各画素の画素値を算出するレンダリング手段、
    として機能させるプログラムであって、
    前記レンダリング手段は、
    レンダリング画像の画素ごとに、算出された視点に近い交点を探索開始点として、視線方向に向かって最も近い有効ボクセルの座標を、仮想光線の照射を開始する起点座標として探索する起点座標探索手段と、を更に備える、
    プログラム。
JP2018218847A 2018-11-22 2018-11-22 レンダリング装置、レンダリング方法、及びプログラム Active JP7205189B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018218847A JP7205189B2 (ja) 2018-11-22 2018-11-22 レンダリング装置、レンダリング方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018218847A JP7205189B2 (ja) 2018-11-22 2018-11-22 レンダリング装置、レンダリング方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2020086803A JP2020086803A (ja) 2020-06-04
JP7205189B2 true JP7205189B2 (ja) 2023-01-17

Family

ID=70908208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018218847A Active JP7205189B2 (ja) 2018-11-22 2018-11-22 レンダリング装置、レンダリング方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP7205189B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002306480A (ja) 2001-04-12 2002-10-22 Toshiba Corp 画像処理装置及びその方法
JP6418344B1 (ja) 2018-02-23 2018-11-07 大日本印刷株式会社 コンピュータプログラム、画像処理装置及び画像処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147496A (ja) * 1994-11-21 1996-06-07 Hitachi Medical Corp 回転像の作成方法および装置
JP3527796B2 (ja) * 1995-06-29 2004-05-17 株式会社日立製作所 高速3次元画像生成装置および方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002306480A (ja) 2001-04-12 2002-10-22 Toshiba Corp 画像処理装置及びその方法
JP6418344B1 (ja) 2018-02-23 2018-11-07 大日本印刷株式会社 コンピュータプログラム、画像処理装置及び画像処理方法

Also Published As

Publication number Publication date
JP2020086803A (ja) 2020-06-04

Similar Documents

Publication Publication Date Title
US10546415B2 (en) Point cloud proxy for physically-based volume rendering
US10893262B2 (en) Lightfield rendering based on depths from physically-based volume rendering
US10692272B2 (en) System and method for removing voxel image data from being rendered according to a cutting region
US20050143654A1 (en) Systems and methods for segmented volume rendering using a programmable graphics pipeline
JP4588736B2 (ja) 画像処理方法および装置並びにプログラム
JP5225999B2 (ja) 結合された強度の投影
US20050237336A1 (en) Method and system for multi-object volumetric data visualization
JP2006502508A (ja) 3dモデリングシステム
US8149237B2 (en) Information processing apparatus and program
JP2016135252A (ja) 医用画像処理装置及び医用画像診断装置
JP2006055213A (ja) 画像処理装置、及びプログラム
JP2017076397A (ja) メッシュのボクセル化
JP4885042B2 (ja) 画像処理方法および装置ならびにプログラム
US20220343589A1 (en) System and method for image processing
JP7275669B2 (ja) マスク生成装置、3次元再構成像生成装置、マスク生成方法、及びプログラム
JP2006000127A (ja) 画像処理方法および装置並びにプログラム
JP6544472B1 (ja) レンダリング装置、レンダリング方法、及びプログラム
JP4376944B2 (ja) 中間画像生成方法および装置ならびにプログラム
JP7247577B2 (ja) 3次元再構成像表示装置、3次元再構成像表示方法、プログラム、及び画像生成方法
JP7205189B2 (ja) レンダリング装置、レンダリング方法、及びプログラム
JP5065740B2 (ja) 画像処理方法および装置並びにプログラム
JP7003635B2 (ja) コンピュータプログラム、画像処理装置及び画像処理方法
JP2023527438A (ja) リアルタイム深度マップを用いたジオメトリ認識拡張現実効果
JP7167699B2 (ja) ボリュームレンダリング装置
JP2006000338A (ja) 画像処理方法および装置並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220825

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221212

R150 Certificate of patent or registration of utility model

Ref document number: 7205189

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150