在Form1的Load事件中:
复制代码
private void Form1_Load(object sender, EventArgs e)
{
//创建数据读取对象
vtkDICOMImageReader reader = new vtkDICOMImageReader();
//小端字节
reader.SetDataByteOrderToLittleEndian();
//设置切片数据路径
reader.SetDirectoryName(@"C:\Users\Administrator\Desktop\vtk\801");
vtkImageShrink3D shrink = new vtkImageShrink3D();
shrink.SetShrinkFactors(4, 4, 1);
shrink.AveragingOn();
shrink.SetInput((vtkDataObject)(reader.GetOutput()));
//提取等值面
vtkMarchingCubes skinExtractor = new vtkMarchingCubes();
//建立算法对象,从CT切片数据中提取出皮肤
skinExtractor.SetValue(0, 50); //提取出CT值为50的组织
skinExtractor.SetInputConnection(shrink.GetOutputPort());
vtkDecimatePro deci = new vtkDecimatePro();
deci.SetTargetReduction(0.3);
deci.SetInputConnection(skinExtractor.GetOutputPort());
vtkSmoothPolyDataFilter smooth = new vtkSmoothPolyDataFilter(); //光滑图像
smooth.SetInputConnection(deci.GetOutputPort());
smooth.SetNumberOfIterations(200);
vtkPolyDataNormals skinNormals = new vtkPolyDataNormals(); //法线
skinNormals.SetInputConnection(smooth.GetOutputPort());
skinNormals.SetFeatureAngle(60.0);
vtkStripper stripper = new vtkStripper();
stripper.SetInputConnection(skinNormals.GetOutputPort());
vtkDataSetMapper skinMapper = new vtkDataSetMapper();
skinMapper.SetInput(stripper.GetOutput());
skinMapper.ScalarVisibilityOff();
//设置相机
vtkCamera aCamera = new vtkCamera();
aCamera.SetViewUp(0, 0, -1);
aCamera.SetPosition(0, 1, 0);
aCamera.SetFocalPoint(0, 0, 0);
aCamera.ComputeViewPlaneNormal();
//设置Actor
vtkActor coneActor = new vtkActor();
coneActor.SetMapper(skinMapper);
coneActor.GetProperty().SetAmbient(0.5);
coneActor.GetProperty().SetDiffuse(1);
coneActor.GetProperty().SetSpecular(0.6);
//显示类
vtkRenderer renderer = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
renderer.AddActor(coneActor);//添加coneActor对象
//renderer.AddActor2D(new vtkProp());//添加textActor对象
renderer.SetBackground(0, 0, 0);
renderer.SetActiveCamera(aCamera);//添加相机
renderer.ResetCamera();
vtkRenderWindow renWin = renderWindowControl1.RenderWindow;//设置绘图窗口renWin->AddRenderer(renderer);//装载绘图类
vtkWin32RenderWindowInteractor iren = new vtkWin32RenderWindowInteractor();
iren.SetRenderWindow(renWin);//装载绘图窗口
}
复制代码
龙华大道1号http://www.kinghill.cn/LongHuaDaDao1Hao/index.html