C#でDICOMファイルからボリュームレンダリング ActiViz(VTK)による方法
C#でActiVizを使って,DICOM形式画像の連番ファイルを読み込みボリュームレンダリングにより3D画像を生成・表示する.
ActiViz
ActiVizは,3Dコンピュータグラフィックスの可視化ライブラリVTK(The Visualization ToolKit)のC#ラッパである.NuGetからインストールできる.簡単な解説は以下のページを参照.
C#で3Dモデル表示(VTKのC#ラッパActiVizによる方法) - whoopsidaisies's diary
ボリュームレンダリング
ActiVizには,DICOM画像を読み込むクラスもボリュームレンダリングを行うクラスも用意されているので,簡単にDICOM画像からの3D画像の表示を行える.以下にサンプルコードを示す.
using (var dicomReader = new vtkDICOMImageReader()) using (var mapper = new vtkFixedPointVolumeRayCastMapper()) using (var opacity = new vtkPiecewiseFunction()) using (var property = new vtkVolumeProperty()) using (var volume = new vtkVolume()) { // DICOM画像が入っているフォルダを指定 dicomReader.SetDirectoryName(@"DICOM"); dicomReader.Update(); // MapperにDICOM画像を読み込んで3Dボリュームへ登録 mapper.SetInputConnection(dicomReader.GetOutputPort()); volume.SetMapper(mapper); // 不透明度と補間アルゴリズムの設定 opacity.AddSegment(0, 0, 3900, 1); property.SetScalarOpacity(opacity); property.SetInterpolationTypeToLinear(); volume.SetProperty(property); // 表示用ウィンドウへの3Dボリュームの登録 renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer().AddVolume(volume); }
VTKのWIKIページにDICOMのサンプルデータがあったので表示させてみた結果を以下に示す.プログラム上では,マウスドラッグにより視点の変更が可能である.