三维重建方法:基于Marching Cube算法的面绘制。
1.读取数据
利用VTK中的vtkDICOMImageReader 可以很方便的读取切片数据,代码如下:
reader = vtkDICOMImageReader::New();
reader->SetDataByteOrderToLittleEndian();
reader->SetDirectoryName("File Path");
reader->Update();
shrink = vtkImageShrink3D::New(); // 采样,减少样本点以提高计算速度
shrink->SetInput((vtkDataObject*)reader->GetOutput());
shrink->SetShrinkFactors(4,4,2);
shrink->AveragingOn();
2.提取等值面
先利用vtkMarchingCubes或vtkContourFilter 来提取出某一特定CT 值的等值面
skinExtractor = vtkContourFilter::New();
skinExtractor->SetInputConnection(shrink->GetOutputPort());
skinExtractor->SetValue(0,200);
deci = vtkDecimatePro::New();
deci->SetInputConnection(skinExtractor->GetOutputPort());
deci->SetTargetReduction(0.3);
smooth = vtkSmoothPolyDataFilter::New(); //滤波