我有一个关于vtk浓度vtk 三维数据可视化化的问题,只知道网格中心点的浓度,怎么进行vtk颜色映射

日 9:30 ~ 日 17:00
主办方不在线
活动已结束
付费活动,请选择票种
2791 人浏览
发现你感兴趣的活动,结交你聊得来的朋友!
微信“扫一扫”
优活动 更精彩!
ID:ihuodongxing
活动票种...
活动内容...
一、时间:2014年8月30日星期六(9:30-17:00)
二、地点:超算四楼孔子厅
三、主办:&深圳先进技术学院
四、培训老师:
张晓东:2010年加入先进院,参与医学图像处理、数字手术导航相关课题研发。工作中主要使用ITK与VTK进行开发,对VTK和ITK有较深入的了解,在CSDN发表多篇VTK相关博文。
罗火灵:2009年中旬开始接触VTK和ITK,主要从事医学图像处理方面的课题开发,2011年6月就职先进院,在使用VTK及ITK的过程中录制了《一起学习VTK》和《一起学习ITK》系列视频。
更多详情请访问东灵工作室:
五、费用:免费
六、要求:
1、自带笔记本,活动场地提供有线网络和WIFI网络,建议自带排插和网线;
2、操作系统建议用Windows
7,开发环境:Visual Studio 2008或更高版本(演示时以Visual Studio
2008为准,所以建议使用VS2008。
3、需要提前下载的材料:
七、报名条件:
&&要求:在医学图像处理方面想有所提高的人,需周六全天参加培训。
活动交流群号:
九、参加须知:
&1、活动需提前报名,邮件确认之后,方可参加,谢绝空降;
&2、活动场地不提供午餐和晚餐,参加者可以去学校饭堂就餐或自行解决。
&&3、如有任何问题,可加QQ联系,或在学院公众账号下留言。
深圳先进技术学院
2014年8月27日
关注深圳先进技术学院官方微信,了解更多培训信息:
公众号:深圳先进技术学院
培训大纲:
第章从零开始学习
如何获取源码
的编译安装
编译的准备工作
编译的详细步骤
创建一个简单的程序
的几个常用命令
一个简单的工程
第章的基本概念
一个稍微复杂的程序
三维场景的基本要素
坐标系统及空间变换
可视化管线
运行时类型识别
第章基本数据结构
可视化数据的基本特点
数据对象和数据集
非线性单元
不同类型的数据集
数据的存储与表达
数据对象的表达
第章数据的读写
场景的导入与导出
第章图像处理
图像数据结构
图像基本操作
图像信息的访问与修改
图像像素值访问与修改
图像类型转换
图像颜色映射
直方图统计
图像重采样
图像二值化
拉普拉斯算子
各向异性滤波
快速傅里叶变换
第章图形处理
数据生成与显示
数据的创建
基本的图形操作
法向量计算
封闭性检测
连通区域分析
多分辨率处理
等值面提取
第章体绘制
体绘制管线
纹理映射体绘制
不透明度传输函数
梯度不透明度函数
颜色传输函数
光照与阴影
不规则网格数据体绘制技术
第章交互与
事件回调函数
交互器样式
第章基于的应用程序
基于的应用程序
用来管理工程
用来管理与工程
环境变量的加载
基于的应用程序
基于单文档的应用程序
扩展——基于的图像重采样程序
基于对话框的应用程序
第章自定义
与智能指针
实现一个基本的类
管线机制分析
分享到微信
活动标签...
最近参与...
136****2626
您还可能感兴趣...
您有任何问题,在这里提问!
全部讨论...
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
微信扫一扫,分享才精彩
分享此活动到→
微信朋友圈!
活动行帐号登录
用合作网站帐号登录
地址:北京市西城区新街口外大街28号|
版权所有:北京艾科创意信息技术有限公司|
京ICP证150180号|京ICP备号-2|京公网安备65
活动行 v3.9.9.3&&
All Rights Reserved.
关注 活动行 微信服务号
点击菜单 - 高级 - 推广合作
页面正在加载中,请耐心等待...在vtk中颜色映射是可视化技术中最常用的,是根据属性值来对物体进行着色,将颜色查找表中的颜色映射到点或单元的属性值上,绘制时就可以用这些颜色值来绘制点和单元了。
接下来编写一个梯形实例来体现颜色映射算法,写代码前我们需要做如下准备:
首先要介绍的是vtkDataSet这个类,vtkDataSet是所以数据集的父类,这里谈的可视化也都是对vtkDataSet数据对象进行的可视化,当然了,vtkPolyData、vtkImageData等子类也同样适用。
属性数据可以被表示为标量、张量、矢量、法向量等形式。vtk中包括点属性数据和单元属性数据,每个属性数据都分别和vtkDataSet数据相关联。可以用vtkDataArray 的子类来存储,vtkFloatArray等。
讲了这么多属性数据的概念就是为了创建属性数据为颜色映射做准备,通常可以按这个顺序进行创建:创建数组-&分配大小-&与数据集关联。
可视化多边形
多边形数据由点、线、三角形、三角带、多边形等基本单元构成(vtkPolyData),大部分过滤器都可以对这些数据进行处理。有些过滤器(比如vtkDecimatePro 和vtkTubeFilter)仅仅处理这种类型数据的一部分(三角网格和线)。
首先构造多边形数据,可以通过创建vtkPoints和vtkCellArrays的对象来存储点和单元,然后构造多边形数据,最后进行映射。颜色查找表
我们可以手动创建一个颜色查找表,如果没有创造的话,贴心的vtk会自动为我们生成一个默认的颜色查找表,颜色查找表中允许我们自由设定颜色值。vtkLookupTable可以帮助我们来完成这个工作,同时,设定了颜色数量时,SetTabValue()方法可以将颜色值插入到指定的位置。另外,SetScalarRange()告诉我们采取什么方法映射,标量值大于最大值的将被归为最大值,标量值小于最小值的将被归为最小,因为颜色索引是根据属性的最值建立的。
准备工作做完了,下面直接贴代码,相应的注释跟在代码后面。
#include &vtkActor.h&
#include &vtkCamera.h&
#include &vtkConeSource.h&
#include &vtkCellArray.h&
#include &vtkFloatArray.h&
#include &vtkPointData.h&
#include &vtkPoints.h&
#include &vtkPolyData.h&
#include &vtkPolyDataMapper.h&
#include &vtkRenderWindow.h&
#include &vtkRenderWindowInteractor.h&
#include &vtkRenderer.h&
#include &vtkLookupTable.h&
int main()
//梯形的顶点坐标
static float x[8][3]={{0,0,0}, {4,0,0}, {4,4,0}, {0,4,0},
{1,1,1}, {3,1,1}, {3,3,1}, {1,3,1}};
//4个顶点构成一个单元,一共6个单元
static vtkIdType y[6][4]={{0,1,2,3}, {4,5,6,7}, {0,1,5,4},
{1,2,6,5}, {2,3,7,6}, {3,0,4,7}};
vtkPoints *points = vtkPoints::New();
for(i=0;i&8;i++)
points-&InsertPoint(i,x[i]);
vtkCellArray *polys = vtkCellArray::New();
for(i=0;i&6;i++)
polys-&InsertNextCell(4,y[i]);
//存储标量值
vtkFloatArray *scalars = vtkFloatArray::New();
for(i=0;i&8;i++)
scalars-&InsertTuple1(i,i);
//构建多边形数据
vtkPolyData *cube = vtkPolyData::New();
cube-&SetPoints(points);
//设定单元的组成方式
cube-&SetPolys(polys);
cube-&GetPointData()-&SetScalars(scalars);
//定义颜色映射表
vtkLookupTable *pColorTable=vtkLookupTable::New();
pColorTable-&SetNumberOfColors(6);
pColorTable-&SetTableValue(0,1.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(1,0.0,1.0,1.0,1.0);
pColorTable-&SetTableValue(2,1.0,1.0,1.0,1.0);
pColorTable-&SetTableValue(3,1.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(4,0.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(5,1.0,1.0,0.0,1.0);
pColorTable-&Build();
//数据映射
vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New();
cubeMapper-&SetInput(cube);
cubeMapper-&SetScalarRange(0,7);
cubeMapper-&SetLookupTable(pColorTable);
vtkActor *cubeActor = vtkActor::New();
cubeActor-&SetMapper(cubeMapper);
vtkCamera *camera = vtkCamera::New();
camera-&SetPosition(1,1,1);
camera-&SetFocalPoint(0,0,0);
vtkRenderer *renderer = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin-&AddRenderer(renderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren-&SetRenderWindow(renWin);
renderer-&AddActor(cubeActor);
renderer-&SetActiveCamera(camera);
renderer-&ResetCamera();
renderer-&SetBackground(1,1,1);
renWin-&SetSize(400,400);
renWin-&Render();
iren-&Start();
points-&Delete();
polys-&Delete();
scalars-&Delete();
cube-&Delete();
cubeMapper-&Delete();
cubeActor-&Delete();
camera-&Delete();
renderer-&Delete();
renWin-&Delete();
iren-&Delete();
pColorTable-&Delete();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7189次
排名:千里之外
(1)(2)(3)(1)(1)(1)VTK 一个面向对象的可视化类库_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VTK 一个面向对象的可视化类库
|0|0|文档简介
总评分4.0|
浏览量2128738
&&VTK 一个面向对象的可视化类库
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于VTK的点云可视化-论文
下载积分:3000
内容提示:基于VTK的点云可视化-论文
文档格式:PDF|
浏览次数:10|
上传日期: 13:38:21|
文档星级:
该用户还上传了这些文档
基于VTK的点云可视化-论文
官方公共微信VTK入门(二)--颜色映射 - schao501917的博客
- _韦德1946娱乐(唯一)官方网站|
vtk图形可视化
在vtk中颜色映射是可视化技术中最常用的,是根据属性值来对物体进行着色,将颜色查找表中的颜色映射到点或单元的属性值上,绘制时就可以用这些颜色值来绘制点和单元了。
接下来编写一个梯形实例来体现颜色映射算法,写代码前我们需要做如下准备:
首先要介绍的是vtkDataSet这个类,vtkDataSet是所以数据集的父类,这里谈的可视化也都是对vtkDataSet数据对象进行的可视化,当然了,vtkPolyData、vtkImageData等子类也同样适用。
属性数据可以被表示为标量、张量、矢量、法向量等形式。vtk中包括点属性数据和单元属性数据,每个属性数据都分别和vtkDataSet数据相关联。可以用vtkDataArray 的子类来存储,vtkFloatArray等。
讲了这么多属性数据的概念就是为了创建属性数据为颜色映射做准备,通常可以按这个顺序进行创建:创建数组-&分配大小-&与数据集关联。
可视化多边形
多边形数据由点、线、三角形、三角带、多边形等基本单元构成(vtkPolyData),大部分过滤器都可以对这些数据进行处理。有些过滤器(比如vtkDecimatePro 和vtkTubeFilter)仅仅处理这种类型数据的一部分(三角网格和线)。
首先构造多边形数据,可以通过创建vtkPoints和vtkCellArrays的对象来存储点和单元,然后构造多边形数据,最后进行映射。颜色查找表
我们可以手动创建一个颜色查找表,如果没有创造的话,贴心的vtk会自动为我们生成一个默认的颜色查找表,颜色查找表中允许我们自由设定颜色值。vtkLookupTable可以帮助我们来完成这个工作,同时,设定了颜色数量时,SetTabValue()方法可以将颜色值插入到指定的位置。另外,SetScalarRange()告诉我们采取什么方法映射,标量值大于最大值的将被归为最大值,标量值小于最小值的将被归为最小,因为颜色索引是根据属性的最值建立的。
准备工作做完了,下面直接贴代码,相应的注释跟在代码后面。
#include &vtkActor.h&
#include &vtkCamera.h&
#include &vtkConeSource.h&
#include &vtkCellArray.h&
#include &vtkFloatArray.h&
#include &vtkPointData.h&
#include &vtkPoints.h&
#include &vtkPolyData.h&
#include &vtkPolyDataMapper.h&
#include &vtkRenderWindow.h&
#include &vtkRenderWindowInteractor.h&
#include &vtkRenderer.h&
#include &vtkLookupTable.h&
int main()
//梯形的顶点坐标
static float x[8][3]={{0,0,0}, {4,0,0}, {4,4,0}, {0,4,0},
{1,1,1}, {3,1,1}, {3,3,1}, {1,3,1}};
//4个顶点构成一个单元,一共6个单元
static vtkIdType y[6][4]={{0,1,2,3}, {4,5,6,7}, {0,1,5,4},
{1,2,6,5}, {2,3,7,6}, {3,0,4,7}};
vtkPoints *points = vtkPoints::New();
for(i=0;i&8;i++)
points-&InsertPoint(i,x[i]);
vtkCellArray *polys = vtkCellArray::New();
for(i=0;i&6;i++)
polys-&InsertNextCell(4,y[i]);
//存储标量值
vtkFloatArray *scalars = vtkFloatArray::New();
for(i=0;i&8;i++)
scalars-&InsertTuple1(i,i);
//构建多边形数据
vtkPolyData *cube = vtkPolyData::New();
cube-&SetPoints(points);
//设定单元的组成方式
cube-&SetPolys(polys);
cube-&GetPointData()-&SetScalars(scalars);
//定义颜色映射表
vtkLookupTable *pColorTable=vtkLookupTable::New();
pColorTable-&SetNumberOfColors(6);
pColorTable-&SetTableValue(0,1.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(1,0.0,1.0,1.0,1.0);
pColorTable-&SetTableValue(2,1.0,1.0,1.0,1.0);
pColorTable-&SetTableValue(3,1.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(4,0.0,0.0,1.0,1.0);
pColorTable-&SetTableValue(5,1.0,1.0,0.0,1.0);
pColorTable-&Build();
//数据映射
vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New();
cubeMapper-&SetInput(cube);
cubeMapper-&SetScalarRange(0,7);
cubeMapper-&SetLookupTable(pColorTable);
vtkActor *cubeActor = vtkActor::New();
cubeActor-&SetMapper(cubeMapper);
vtkCamera *camera = vtkCamera::New();
camera-&SetPosition(1,1,1);
camera-&SetFocalPoint(0,0,0);
vtkRenderer *renderer = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin-&AddRenderer(renderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren-&SetRenderWindow(renWin);
renderer-&AddActor(cubeActor);
renderer-&SetActiveCamera(camera);
renderer-&ResetCamera();
renderer-&SetBackground(1,1,1);
renWin-&SetSize(400,400);
renWin-&Render();
iren-&Start();
points-&Delete();
polys-&Delete();
scalars-&Delete();
cube-&Delete();
cubeMapper-&Delete();
cubeActor-&Delete();
camera-&Delete();
renderer-&Delete();
renWin-&Delete();
iren-&Delete();
pColorTable-&Delete();
参考知识库
* 以上用户言论只代表其个人,不代表CSDN网站的或立场
访问:7189次
排名:千里之外
(1)(2)(3)(1)(1)(1)

我要回帖

更多关于 映射网格 的文章

 

随机推荐