VTK中光线投射法实现体绘制【转】

简介: VTK中光线投射法实现体绘制 1、体绘制函数VTK 为使用者提供了三种用于光线投射法的函数分别是:等值面绘制函数(vtkVolumeRayCastIsosurfaceFunction);最大密度投影函数(vtkVolumeRayCastMIPFunction);合成体绘制函数(vtkVolumeRayCastCompositeFunction)其中最常用的是合成体绘制函数,最大密度投影函数在显示血管影像方面有比较好的作用。

VTK中光线投射法实现体绘制

img_1244fb673506b897d3c2fc2782483105.jpg

1、体绘制函数
VTK 为使用者提供了三种用于光线投射法的函数分别是:
等值面绘制函数(vtkVolumeRayCastIsosurfaceFunction);
最大密度投影函数(vtkVolumeRayCastMIPFunction);
合成体绘制函数(vtkVolumeRayCastCompositeFunction)
其中最常用的是合成体绘制函数,最大密度投影函数在显示血管影像方面有比较好的作用。但是如图所看到的,MIP函数没有空间立体感,也就是不能提供深度的信息。

img_1ba70744643f0f5bd81c98fb9e5885e5.jpg

2、不透明度映射函数
不透明度映射函数是设置光线方向上的灰度值及其不透明度映射。
vtkPiecewiseFunction *opacityTransferFunction = vtkPiecewiseFunction::New();
opacityTransferFunction->AddPoint(10, 0.0);//灰度值及不透明度值
opacityTransferFunction->AddPoint(50,0.1);
opacityTransferFunction->AddPoint(200 ,0.1);
opacityTransferFunction->AddPoint(2900,0.1);
opacityTransferFunction->AddPoint(2950,0.8);
opacityTransferFunction->AddPoint(3050,1);//不透明度值为1则为完全不透明
opacityTransferFunction->ClampingOff();

3、颜色映射函数
颜色映射函数是设置灰度值与RGB颜色的映射。
vtkColorTransferFunction *colorTransferFunction = vtkColorTransferFunction::New();
colorTransferFunction->AddRGBPoint(0.0, 0.91, 0.65, 0.66); //灰度值及RGB颜色值
colorTransferFunction->AddRGBPoint(30.0, 0.91, 0.65, 0.66);
colorTransferFunction->AddRGBPoint(128.0, 0.91, 0.65, 0.66);
colorTransferFunction->AddRGBPoint(1200.0, 0.43, 0.43, 0.43);
colorTransferFunction->AddRGBPoint(1800.0, 0.43, 0.43, 0.43);
colorTransferFunction->AddRGBPoint(2950, .9, 0.0, 0.0);
colorTransferFunction->AddRGBPoint(3050, .9, 0.0, 0.0);
colorTransferFunction->ClampingOff();

4、梯度变换函数
梯度变换函数设置灰度值变换的大小与不透明度之间的映射。
vtkPiecewiseFunction *gradient=vtkPiecewiseFunction::New();
gradient->AddPoint(50,.2);//灰度值变化梯度与不透明度的关系
gradient->AddPoint(1500,.7);
gradient->AddPoint(2000,.1);
5、体数据属性设置
vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
volumeProperty->SetColor(colorTransferFunction);//载入颜色映射函数
volumeProperty->SetScalarOpacity(opacityTransferFunction);//载入不透明度映射
volumeProperty->SetGradientOpacity(gradient);//载入梯度映射
volumeProperty->ShadeOn();
volumeProperty->SetInterpolationTypeToLinear();//采用线性插值
6、光线投射函数设置及体绘制映射
本程序采用合成体绘制函数:
vtkVolumeRayCastCompositeFunction*compositeFunction=
vtkVolumeRayCastCompositeFunction::New();
vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New();
volumeMapper->SetVolumeRayCastFunction(compositeFunction);//载入体绘制方法
volumeMapper->SetInput(append->GetOutput());//载入图像数据
volumeMapper->SetSampleDistance(.5);
vtkVolume *volume = vtkVolume::New();
volume->SetMapper(volumeMapper);//设置映射
volume->SetProperty(volumeProperty);//设置属性


目录
打赏
0
0
0
0
18
分享
相关文章
|
12月前
|
python如何绘制图像
python如何绘制图像
64 0
|
7月前
Threejs创建胶囊体
这篇文章介绍了在Three.js中创建胶囊体(两端为半球形中间为圆柱形的模型)的方法,包括建立几何体、设置材质以及将其添加到场景中的步骤。
83 1
Threejs创建胶囊体
Python中绘制3D曲面图的艺术
【7月更文挑战第4天】使用Python的Matplotlib和mpl_toolkits.mplot3d库,可以轻松绘制3D曲面图。首先安装matplotlib,然后导入numpy和相关模块。通过定义函数和使用numpy的meshgrid生成数据,接着用`plot_surface`绘制曲面,可定制色彩映射、添加标签、标题、色标、透明度和阴影。通过自定义颜色映射和添加网格线,能进一步增强图形的解读性。这些技巧使3D数据可视化更具洞察力和吸引力。
175 0
OpenCV中文字的绘制与动态绘制图形讲解与实战(附Python源码)
OpenCV中文字的绘制与动态绘制图形讲解与实战(附Python源码)
248 0
R 语言绘制肖像画
R 语言绘制肖像画
130 0
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
254 0
Qt开发技术:Q3D图表开发笔记(三):Q3DSurface三维曲面图介绍、Demo以及代码详解
qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的。其中就包括华丽绚烂的三维图表,数据量不大的时候是可以使用的。前面介绍了基础的q3d散点图、柱状图,本篇介绍基础的三维曲面图。Q3DSurface类提供了渲染3D曲面图的方法。该类使开发人员能够渲染3D表面图,并通过自由旋转场景来查看它们。可以通过QSurface3DSeries控制曲面的视觉财产,例如绘制模式和着色。
python 绘图基础--如何绘制多个的子图 and 封装绘图函数(提高绘图效率)
一般来说,我们研究分析一些海温或者降水等要素的的变化规律时,通常会进行季节特征变化分析,这就需要我们绘制不同季节的空间分布图来进行分析,这就需要我们掌握子图的绘制方法。
python 绘图基础--如何绘制多个的子图 and 封装绘图函数(提高绘图效率)
分别用 VTK 体绘制和面绘制来实现医学图像三维重建
序言,VTK介绍: VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等