C++读取序列CT图片三维显示(面绘制)

时间:2019-05-14 02:45:35下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C++读取序列CT图片三维显示(面绘制)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C++读取序列CT图片三维显示(面绘制)》。

第一篇:C++读取序列CT图片三维显示(面绘制)

C++读取序列CT图片三维显示(面绘制)2007-11-17 15:24 分类:vtk 字号: 大 中 小

#include “vtkRenderer.h” #include “vtkRenderWindow.h” #include “vtkRenderWindowInteractor.h” #include “vtkDICOMImageReader.h” #include “vtkPolyDataMapper.h” #include “vtkActor.h” #include “vtkOutlineFilter.h” #include “vtkCamera.h” #include “vtkProperty.h” #include “vtkPolyDataNormals.h” #include “vtkContourFilter.h”

void main(){

// Create the renderer, the render window, and the interactor.The renderer // draws into the render window, the interactor enables mouse-and // keyboard-based interaction with the data within the render window.// vtkRenderer *aRenderer = vtkRenderer::New();vtkRenderWindow *renWin = vtkRenderWindow::New();

renWin->AddRenderer(aRenderer);vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();

iren->SetRenderWindow(renWin);

// The following reader is used to read a series of 2D slices(images)// that compose the volume.The slice dimensions are set, and the // pixel spacing.The data Endianness must also be specified.The reader // usese the FilePrefix in combination with the slice number to construct // filenames using the format FilePrefix.%d.(In this case the FilePrefix // is the root name of the file: quarter.)vtkDICOMImageReader *v16 = vtkDICOMImageReader::New();// v16->SetDataDimensions(64,64);// v16->SetImageRange(1,93);

v16->SetDataByteOrderToLittleEndian();

v16->SetDirectoryName(“E://03280848”);

v16->SetDataSpacing(3.2, 3.2, 1.5);

// An isosurface, or contour value of 500 is known to correspond to the // skin of the patient.Once generated, a vtkPolyDataNormals filter is // is used to create normals for smooth surface shading during rendering.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);

// An outline provides context around the data.// 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);

// It is convenient to create an initial view of the data.The FocalPoint // and Position form a vector direction.Later on(ResetCamera()method)// this vector is used to position the camera to look at the data in // this direction.vtkCamera *aCamera = vtkCamera::New();

aCamera->SetViewUp(0, 0,-1);

aCamera->SetPosition(0, 1, 0);

aCamera->SetFocalPoint(0, 0, 0);

aCamera->ComputeViewPlaneNormal();

// Actors are added to the renderer.An initial camera view is created.// The Dolly()method moves the camera towards the FocalPoint, // thereby enlarging the image.aRenderer->AddActor(outline);aRenderer->AddActor(skin);aRenderer->SetActiveCamera(aCamera);aRenderer->ResetCamera();aCamera->Dolly(1.5);

// Set a background color for the renderer and set the size of the // render window(expressed in pixels).aRenderer->SetBackground(1,1,1);renWin->SetSize(640, 480);

// Note that when camera movement occurs(as it does in the Dolly()// method), the clipping planes often need adjusting.Clipping planes // consist of two planes: near and far along the view direction.The // near plane clips out objects in front of the plane;the far plane // clips out objects behind the plane.This way only what is drawn // between the planes is actually rendered.aRenderer->ResetCameraClippingRange();

// Initialize the event loop and then start it.iren->Initialize();iren->Start();

// It is important to delete all objects created previously to prevent // memory leaks.In this case, since the program is on its way to // exiting, it is not so important.But in applications it is // essential.v16->Delete();skinExtractor->Delete();skinNormals->Delete();skinMapper->Delete();skin->Delete();outlineData->Delete();mapOutline->Delete();outline->Delete();aCamera->Delete();iren->Delete();renWin->Delete();aRenderer->Delete();

}

下载C++读取序列CT图片三维显示(面绘制)word格式文档
下载C++读取序列CT图片三维显示(面绘制).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐