ボリュームレンダリング
コンピュータグラフィックスにおいて、ボリュームレンダリングとは、3次元的な広がりのあるデータを直接2次元画面に表示することである。半透明な物体や発光体などを光学的に正しくレンダリングしたり(レイキャスティング)、CTなどで3次元的に撮影された画像を目的に沿って見やすく提示したりする(最大値投影処理など。)
ボリュームレンダリングに必要なデータは、CT、MRIなどによって得られた2Dスライス画像から構成される。これらは規則的なパターン(1ミリメートル毎に1スライスの画像)で撮影され、規則的な画像ピクセルデータをもっている。この各ボリューム要素をサンプリングすることによって、中身を透視できる単一の画像を構成する事ができる。
ボリュームレンダリングを行うには、まずボリュームに対して空間内でのカメラの配置を設定する必要がある。また、各ボクセルの不透明度と色を設定する必要もある。一般的には、すべてのボクセル値に対してRGBA値(赤、緑、青、アルファ)は伝達関数を用いて設定を行う。
例えば、ボリュームからアイソサーフェスを検出し、ポリゴンメッシュ方式でレンダリングを行う。またはボリュームを直接データブロックとしてレンダリングを行い、ボリュームを表示することもできる。
レンダリング方式
編集- ボリュームレイキャスティング
とても高品質なデータが得られる方式である。ボリュームレイキャスティングは、入力ボリュームデータではなく、出力画像から計算を行うため、画像ベースのボリュームレンダリング技法のひとつである。
- スプラット
品質を犠牲にして処理速度を優先したレンダリング方式である[1][2]。
- シアーワープ
- テクスチャベースのボリュームレンダリング
ハードウェアアクセラレーション
編集ボリュームレンダリングは並列的な性質を持つため、レンダリングに用いるハードウェアは高速なものが要求される。
レイキャスティングのような進歩したボリュームレンダリングアルゴリズムは、従来のコンピュータでは処理が追いつかないため、NVIDIAやAMDなどの最新のハイエンドグラフィックカードが用いられる。プログラム可能なピクセルシェーダをはじめ、複数のピクセル上での並列処理などを、グラフィックス処理ユニット(GPGPU)上で演算するコンピュータが利用されるようになった。ピクセルシェーダはビデオメモリからランダムに読み書きでき、数学的かつ論理的な計算をスピーディーに計算可能である。これらのSIMDプロセッサは、ポリゴンのレンダリングや信号処理などの一般的な計算を実行するために使用されていた。近年(内容からしてGPGPUの出始めの頃、だいぶ昔の話)のグラフィックカードでは、ピクセルシェーダはMIMDプロセッサとして働き、最大1GBのテクスチャメモリを浮動小数点数形式で使用することもできる。このようなハイエンドマシンの登場によって、ボリュームレイキャスティングや断層撮影再レンダリングなど、並行して実行できるすべてのアルゴリズムを、高速で処理できるようになった。プログラマブルピクセルシェーダを用いて、照明、影、反射、放射色などの特性の変化をシミュレートすることもできる。
ソフトウェア
編集- オープンソース
- 3D Slicer
- ClearVolume
- ImageVis3D
- ParaView
- Vaa3D
- VisIt
- Volume cartography
- Voreen
- 商業向け
- Ambivu 3D Workstation – OpenGLに対応し、一通りのボリュームレンダリング機能を搭載した医療用ソフトウェア。
- Amira – 医療および生物研究者向け解析ソフトウェア
- Avizo – エンジニア向けの解析ソフトウェア
- Imaris – 3D、4D顕微鏡データの管理、視覚化、解析などの機能を搭載したソフトウェア。
- MeVisLab – 医療用画像処理ができるクロスプラットフォーム対応ソフトウェア。
- Open Inventor
- ScanIP
- tomviz
- VoluMedic – ボリュームスライシングとレンダリングに対応するソフトウェア。
脚注
編集- ^ Westover, Lee Alan (July 1991). “SPLATTING: A Parallel, Feed-Forward Volume Rendering Algorithm” (PDF). 28 June 2012閲覧。
- ^ Huang, Jian (Spring 2002). “Splatting” (PPT). 5 August 2011閲覧。