読者です 読者をやめる 読者になる 読者になる

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のサンプルデータがあったので表示させてみた結果を以下に示す.プログラム上では,マウスドラッグにより視点の変更が可能である.

f:id:whoopsidaisies:20131230234937p:plain