VTK 医学图像处理---DICOM图像显示
对第一个DICOM显示例子的展开(替换掉vtkImageViewer2类)
两个例子实现的效果对比,其中右侧是对第一个例子展开后的显示效果,展示了一个完整的VTK渲染管线的过程。
目录
简介:
在第000章节VTK的安装中,我们运行了第一个例子,来显示DICOM图像,从而让我们可以快速的看到输入、输出和交互,建立学习兴趣,在该例子中使用vtkImageViewer2来显示DICOM图像,在实际开发中我们基本不会用vtkImageViewer2,因为该类对很多内容进行了封装,使用起来不够灵活,同时也使得我们无法深入理解如何来显示一张DICOM 图像,从这一章开始,我们将完整的熟悉VTK的渲染管线。接下来我们将对vtkImageViewer2进行展开,使用完成的VTK渲染管线来渲染同样的DICOM图像,并开始熟悉VTK中的物体和相机的设置。
本章的组成为,我们先一起来看下vtkImageViewer2显示DICOM图 和 对vtkImageViewer2展开后的代码对比,读者也可以自己新建项目运行下这两种实现方式。然后我们对展开后的代码进行解释和说明。
例子中使用的数据下载链接:【免费】VTK-医学图像处理博文中需要的DICOM测试数据资源-优快云文库
1 代码对比
1、第000章节VTK的安装中第一个例子的代码
#include <vtkNew.h>
#include <vtkDICOMImageReader.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
void main()
{
// 读取指定文件夹"D:\\234"内的所有DICOM文件.
vtkNew<vtkDICOMImageReader> reader;
reader->SetDirectoryName("D:\\DicomFiles");
reader->Update();
// 创建一个交互对象,用了处理鼠标和键盘事件
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
// 显示DICOM数据
vtkNew<vtkImageViewer2> imageViewer;
imageViewer->SetInputConnection(reader->GetOutputPort());
imageViewer->SetupInteractor(renderWindowInteractor);
// 初始化渲染和相机
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
/* 指定窗口的比较颜色为灰色(.2,.2,.2)*/
imageViewer->GetRenderer()->SetBackground(.2,.2,.2);
/* 设置窗体的大小为宽800,高800*/
imageViewer->GetRenderWindow()->SetSize(800, 800);
/* 设置窗口的标题*/
imageViewer->GetRenderWindow()->SetWindowName("Read DICOM Series");
imageViewer->Render();
renderWindowInteractor->Start();
}
2、 替换掉vtkImageViewer2类后,展开的代码