VTK三维重建(2)-根据脚部骨骼CT的三维重建和显示
[效果演示]
根据脚部的骨骼CT扫描的照片,利用VTK完成读取和三维重建.
[程序实现]
void main () { vtkRenderer *aRenderer = vtkRenderer::New(); vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer(aRenderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); vtkDICOMImageReader *v16 = vtkDICOMImageReader::New(); v16->SetDataByteOrderToLittleEndian(); v16->SetDirectoryName("Foot-CTs"); v16->SetDataSpacing (3.2, 3.2, 1.5); vtkContourFilter *skinExtractor = vtkContourFilter::New(); skinExtractor->SetInputConnection(v16->GetOutputPort()); skinExtractor->SetValue(0, 500); vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New(); skinNormals->SetInputConnection(skinExtractor->GetOutputPort()); skinNormals->SetFeatureAngle(60.0); vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New(); skinMapper->SetInputConnection(skinNormals->GetOutputPort()); skinMapper->ScalarVisibilityOff(); vtkActor *skin = vtkActor::New(); skin->SetMapper(skinMapper); vtkOutlineFilter *outlineData = vtkOutlineFilter::New(); outlineData->SetInputConnection(v16->GetOutputPort()); vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New(); mapOutline->SetInputConnection(outlineData->GetOutputPort()); vtkActor *outline = vtkActor::New(); outline->SetMapper(mapOutline); outline->GetProperty()->SetColor(0,0,0); vtkCamera *aCamera = vtkCamera::New(); aCamera->SetViewUp (0, 0, -1); aCamera->SetPosition (0, 1, 0); aCamera->SetFocalPoint (0, 0, 0); aCamera->ComputeViewPlaneNormal(); aRenderer->AddActor(outline); aRenderer->AddActor(skin); aRenderer->SetActiveCamera(aCamera); aRenderer->ResetCamera (); aCamera->Dolly(1.5); aRenderer->SetBackground(1,1,1); renWin->SetSize(640, 480); aRenderer->ResetCameraClippingRange (); // Initialize the event loop and then start it. iren->Initialize(); iren->Start(); v16->Delete(); skinExtractor->Delete(); skinNormals->Delete(); skinMapper->Delete(); skin->Delete(); outlineData->Delete(); mapOutline->Delete(); outline->Delete(); aCamera->Delete(); iren->Delete(); renWin->Delete(); aRenderer->Delete(); }

浙公网安备 33010602011771号