由于ParaView的底层是基于VTK搭建的。VTK底层类实现的许多功能都是一个个滤波器。因此,在ParaView中,当需要实现复杂的功能时,可以通过将不同功能的滤波器通过管道进行组合来实现。
MPR是医学三维影像处理算法中非常重要的一种算法。关于MPR的介绍,可以参照维基百科的介绍:
https://en.wikipedia.org/wiki/CT_scan#Multiplanar_reconstruction
Multiplanar reconstruction (MPR) is the simplest method of reconstruction. A volume is built by stacking the axial slices. The software then cuts slices through the volume in a different plane (usually orthogonal). As an option, a special projection method, such as maximum-intensity projection (MIP) or minimum-intensity projection(mIP/MinIP), can be used to build the reconstructed slices.
Modern software allows reconstruction in non-orthogonal(oblique) planes so that the optimal plane can be chosen to display an anatomical structure. This may be particularly useful for visualising the structure of the bronchi as these do not lie orthogonal to the direction of the scan.
For vascular imaging, curved-plane reconstruction(CPR) can be performed. This allows bends in a vessel to be “straightened” so that the entire length can be visualised on one image, or a short series of images. Once a vessel has been “straightened” in this way, quantitative measurements of length and cross sectional area can be made, so that surgery or interventional treatment can be planned.
这里首先介绍在ParaView的单个rendering view中,通过调节相关参数来实现MPR的相关功能。
ParaView无法直接读取DICOM的序列,因此需要首先准备三维体数据。在ftp的TestData中已经有之前利用3d Slicer软件生成的.vtk/.vti格式的体数据,名称为YZTestData-CT.vti.
图1. 加载vtk格式的体数据后pipeline中的显示
点击File->Open选项,将YZTestData-CT.vti加载到软件中,则在左上角的Pipeline Browser中则可以看到该数据。
在绿色方框前有一个眼睛的图标,默认是灰色的。当点击该图标后,则可以使图标变亮,同时可以看到在软件中间的RenderView1窗口中看到可视化后的体数据。
体数据的呈现方式(Representation)可以分为:3D Glyphs, Outline, Points, Slice, Surface, Surface with Edges, Volume和Wireframe。这里选择Volume,即对原始体数据进行体绘制。
ParaView内置了体绘制的几种不同算法,包括Smart, Ray cast and Texture mapping, Ray cast only, Texture mapping only和GPU based,默认选项为Smart。
为了能够更好地显示体数据,可以修改体绘制后的体数据的相关属性,主要修改的是颜色传递函数(Color transfer function)和透明度传递函数(Opacity transfer function)。
点击Coloring功能项下的Edit按钮,则出现Color Map Editor界面。
在Mapping Data功能项中选择第6个图标(颜色预设),选择Grayscale。
默认的颜色传递函数是线性的:体数据中灰度的最小值,对应RGB(0,0,0);体数据中灰度的最大值,对应RGB(1,1,1);
默认的透明度传递函数也是线形的:灰度最小的透明度为0;灰度最大的透明度为1。
通过在调节界面中调节透明度传递函数,可以调节出如下图所示的界面。
图2. 调整后的颜色传递函数
当调节完相应的参数后,可以看到显示在RenderView界面中的体绘制结果。如图3所示。
由于MPR的本质是在体数据上进行任意平面的切割,形成一个Slice。ParaView提供了Slice的管道功能。
在菜单栏中选择Filters->Common->Slice,则会在Pipeline Browser中,在体数据下面增加一个Slice1的滤波器。通过调节该Slice的相关参数,即可以实现在原有体数据的基础上切出一个Slice的效果。
影响Slice的主要参数是它的Origin和Normal。Origin是该Slice的中心点,Normal是这个Slice的法向量。
如图4为修改Slice的Origin和Normal的界面。当修改完相应的参数后,需要点击界面上方的”Apply”按钮,才能按照最新的值进行切割。
在了解了在ParaView中如何进行体绘制,和如何增加Slice及调节相应的参数后,便可以先在单个View界面中模拟实现MPR的功能了。
(1)调节体数据的显示方位
这里以冠状位为例。
在RenderView1界面的左上角中有很多功能图标,选择第4个图标则为调节体数据的显示方位(通过调节Camera的方位来实现)。
在Standard下有六个图标,分别表明相机正对的那个方向。这里选第3个“+Y”图标,则为从前向后看,冠状位。当点击“+Y”图标的时候,在Camera Positions的相关参数会发生改变。相机的参数包括Camera Position, Focal Point和View Up。其中Focal Point会自动修改为体数据的中心点,View Up切换为(0,0,1)。
如图5所示为调节相机的相关参数的界面。
(2)调节Slice参数,实现MPR
在体数据的显示方位确定后。点击Slice的Properties界面中的Camera Normal按钮并点击,则Slice会沿着垂直于相机视野的方向切出一个平面,这个平面就是最终显示在RenderView界面上的切片图。