Bootstrap

VTK Examples中MIP和MPR的功能实现与源码分析

本篇博客由Markdown编辑器编辑而成。

1. 前言

在之前关于ParaView技术调研中,已经通过修改ParaView5.0的源代码实现了MIP/minIP/aveIP的功能。但是由于对ParaView的代码结构还不是完全了解,至少在目前的了解程度上,还无法做到完全根据自己的实际需要来进行MIP。如我需要将体数据首先在空间中进行一定的旋转和平移后,再进行指定厚度的MIP展现。这个需求在ParaView中还无法通过组合现有的滤波器来实现。

由于ParaView的底层是VTK,因此如果需要在ParaView中实现较复杂的MIP呈现,首先必须先对VTK实现MIP的管道结构了解。

本篇文档主要介绍如何在VTK中实现MIP的功能实现。

2. VTK Examples中实现MIP/minIP/aveIP

VTK实现MIP功能在源代码的Examples目录下已经包含。因此,这里首先需要编译VTK的源码。这里的编译环境为:

编辑环境版本
操作系统Windows 8
CMake2.8.11
VTK6.3.0
QT4.8.3(安装包为:qt-win-opensource-4.8.3-vs2008.exe)
VS2008(Visual Studio 9 2008)//注意是Win32的,因为QT4.8.3是Win32版的。

这里写图片描述
图1. CMake编译VTK6.3源码的设置界面

VTK中实现MIP的源代码路径在:VTK-6.3.0\Examples\GUI\Qt\FourPaneViewer下。

编译VTK源代码时,可以在CMake编译选项中勾选BUILD_EXAMPLES的选择框;也可以在全部源代码编译完成后,再单独用用CMake去编译所要实验的例子。

我在实际的操作中是,在CMake编译时虽然也选择了BUILD_EXAMPLES。但是等VTK编译完成后,并没有把例子也同时编译完。所以,最后我又单独去找到上面的例子,用CMake单独生成实现MIP的例子的project然后再编译和运行。

在源代码中,输入一组测试数据的目录,然后再次编译运行,可以看到程序运行后的效果为:

这里写图片描述
图2. 加载一个CT序列的初始界面图

这里写图片描述
图3. 点击Oblique Reslice后的MPR的界面图

这里写图片描述
图4. 点击Thick Slab,然后再选择Max Intensity Blend后呈现MIP的界面
(注:在依次点击Thick Slab和Max Intensity Blend后还不能显示以上的效果,通过两次点击Oblique Reslice才可以实现上述效果)

这里写图片描述
图5. 调节Slab Thickness后的MIP效果图
(注:例子中是通过将鼠标放在三视图的两根轴线上,点击右键进行向上或向下拖动来实现Slab Thickness的调节的。向上拖动是增加厚度,向下拖动是减小厚度。)

这里写图片描述
图6. 旋转轴线后的MIP效果图
(注:将鼠标放在三视图的两根相互垂直的轴线上的任意一根,左键按下并顺时针或逆时针旋转时,可以实现斜切后MIP的效果。)

这里写图片描述
图7. VTK实现aveIP的界面图

这里写图片描述
图8. VTK实现minIP的界面图

以上是演示VTK的例子中自带的可以实现MIP/minIP/aveIP的效果图。

3. 源码分析

未完待续。

;