《二套作业的说明》PPT课件

上传人:san****019 文档编号:16510842 上传时间:2020-10-05 格式:PPT 页数:55 大小:836KB
收藏 版权申诉 举报 下载
《二套作业的说明》PPT课件_第1页
第1页 / 共55页
《二套作业的说明》PPT课件_第2页
第2页 / 共55页
《二套作业的说明》PPT课件_第3页
第3页 / 共55页
资源描述:

《《二套作业的说明》PPT课件》由会员分享,可在线阅读,更多相关《《二套作业的说明》PPT课件(55页珍藏版)》请在装配图网上搜索。

1、第二套作业的说明,1 设置颜色 vtkLookupTable的用法: (1) 设置标量的范围,vmin,vmax (2) 设置查找表项的数目,n (3) 设置每一项的颜色。 绘制时,任一标量值v,按如 下方式从查找表中取得颜色: (1) 计算等值线的间距 vd=(vmax-vmin)/(n-1),(2) 计算标量值v对应的颜色在 查找表中的索引值 i=(v-vmin)/vd 如果ivmax, i=n-1 (3) 根据索引值从查找表中获得 颜色值 例如:标量值范围是100500, 显示100,300,400,500 共4种等值线,显然把等值线的 间距设置为100是合理的, 故查找表项的数目应为5

2、, 100,300,400,500对应的 索引号为0,2,3,4,Iut1=vtkLookupTable() Iut1.SetTableRange(100,500) Iut1.SetNumberOfTableValues(5) Iut1.SetTableValue(0,0.0,0.0,1.0,1.0) Iut1.SetTableValue(2,1.0,1.0,0.0,1.0) Iut1.SetTableValue(3,0.0,1.0,0.0,1.0) Iut1.SetTableValue(4,1.0,0.0,0.0,1.0) contMapper = vtkPolyDataMapper() c

3、ontMapper.SetInput(contours.GetOutput() contMapper.SetScalarRange(100,500) contMapper.SetLookupTable(Iut1) contMapper. UseLookupTableScalarRangeOn()/Off () contActor = vtkActor() contActor.SetMapper(contMapper),2 相机的设置中为什么须添加 ren.ResetCamera()? 绘制器的 ResetCamera方法根据当前相机的位置和焦点平移并缩放相机,使得整个场景都能显示出来。 如果设

4、置完相机后看不到场景,可以调用ResetCamera。 或在窗口上按r键。,3 文件路径问题 在用vtk作可视化时要注意文件路径的设置。由于vtk是多平台的可视化系统开发库,为保证在所有系统上正确运行,文件的路径设置按照unix的规范进行。 在微软平台下,路径设置方式为: 当前路径下: ./filename.vtk 或 filename.vtk 某路径下: d:/data/envi/water/discharge.vtk,4 vtkLODActor多层次细节 每个多层次细节多层细节演员对象可以包含多个映射器对象,如demActor.AddLODMapper(demMapperlod) 当在鼠标

5、交互过程中,vtk系统根据系统的速度确定使用哪一个层次的显示。,上一节课内容回顾,6.1 拓扑重构 6.2 三角片表面几何重构 6.3 连续表面重构 6.4 体的重构,三维断层扫描数据场是最简单的三维标量场,等高线等可看成三维断层数据进行处理。三维断层重构过程分为拓扑重构和几何重构两部分。 拓扑重构采用嵌套树表示断层上轮廓线的相对位置,用分类图表示层间轮廓线的拓扑关系枚举算法列出了所有有效的分类图,采用轮廓线的相似性和相对位置等约束来排除大量无意义的分类图,以推导出正确的分类图。 几何重构有面向曲面的重构和面向体的重构。 面向曲面的重构中最常用的是三角片表面重构,对应拓扑重构的四种基本分叉,有

6、四种基本表面段的表面重构:极值点、圆柱、独立分叉和连通分叉。由于两相邻断层轮廓线间的表面重构等同于有向图G中寻找一条从(0,0)到(m-1,n-1)的路经。 利用放样技术生成具有C2连续的表面重构算法。 面向体的重构有Delaunay四面体重构和正六面体空间。,断层扫描数据广泛地存在于医学、生物、地学、环境等应用领域,是一种最简单的三维标量场。如果各断层问是相互平行的,每一断层与实体的交线就是实体在该断层上的轮廓线,也就是二维平面上一条封闭的无自交的等值线,如图61所示如原始数据是光栅图像形式,在每一断层上轮廓线表现为由连续的两相临点间线段组成的一组简单封闭的直线线段,也就是一个封闭多边形链。

7、,图6.1 实体与断层,断层数据的表面重构是从一系列断面上的轮廓线中推导出相应实体的空间几何结构 为了保证推导的正确性和唯一性,要求: 实体的边界是由二维点组成; 要求实体与平面的交是二维的。 图6.4(a)中的点P不是二维点,图6.4 (b)中实体a和c不符合与平面的交是二维的条件,只有图6.4 (b)中实体b是可接受的。,图6.4不正确的重构,表面重构过程分成两步: 拓扑重构 推导实体的拓扑表示 几何重构 建立实体的几何表示,6.1拓扑重构 拓扑重构的目的是对三维断层数据集中的每一断层上的轮廓线进行分类,确定各轮廓线所属的实体,保证几何重构的正确性,因而拓扑重构是断层数据重构的基础,当断层

8、上有多个轮廓线时,意味着会出现实体交叉,问题就更复杂了,更有必要首先进行拓扑重构。 6.1.1 分类图嵌套树 轮廓线的分类由分类图描述。分类图的每一顶点对应于一条轮廓线,其边连接的是属于相邻层的两条轮廓线如果存在一个由该分类图描述的实体,则 认为该分类图是有效的。 也就是讲,一有效的分类图对应于一满足条件的实体。 对于若干层上的一组轮廓线,通常存在多个分类图,图6.5表示了一组轮廓线和不同的分类图,当然并不是所有分类图都是有效的,在图6.5中(b)是无效的,因为在层之间其对象的边界发生相交,这意味着在对象边界点上存在非二维点,6.1.2 分类图的枚举 如前所述,对于不同层上的一组轮廓线,存在多

9、个分类图,因此拓扑重构问题的解并非唯一,每一有效的分类图都是一个解,都对应于一个实体本节介绍一个有效拓扑分类图的枚举算法,该算法基于相邻断层嵌套树的比较结果,分析一连续扫描实体各断层上轮廓线数目的变化情况,根据断层实体的基本分叉,枚举出所有可能的有效分类图根据约束性,从中选择出正确的分类图 枚举算法仅考虑具有基本连接的分类图在分类图中,所谓连接是指两相邻断层间分类图中的一个子图的连通成分,如果该连通成分是单点、单边或度数为2的连接,就被称为基本连接度数为2是指一个结点以两条边与相邻断层上两个结点相连引入基本连接是为了简化讨论,对应四种基本连接,有四类基本的对象实体:极值点、圆柱、独立分叉相连通

10、分叉,如图55所示这种分类方法被广泛地使用在表面重建中,图6.7 四种基本分叉情况,a)极值点;(b)圆柱;(c)独立分叉;(d)连通分叉,图6.12四种基本连接表面插值方式,6.2 三角片表面几何重构 几何重构的任务是在拓扑重构分类图的基础上建立对象的几何表面,要求该对象与给定的分类图对应,其断层与各给定断层轮廓线一致对象的实体表面可以看成是由相邻断层间插值表面段组合而成,根据前节推导的基本连接分类图,相应地有四种基本连接的表面插值方式,见图6.12。具体表面段还要满足一些其它的边界条件,如不自交,各断面间不相交等等。,图6.14 基本三角片构造对象表面,图6.15 有向图G,6.2.1 圆

11、柱体三角片表面,6.3 连续表面重构,图6.25 轮廓面表示,图6.27 多边形链的内部和外部,6.4 面向体的重构,本节课内容,第七讲 三维标量场等值面可视化 7.1 Cuberille表示和显示方法 7.2 Marching Cube算法 7.3 有限元等值面 7.4 VTK中三维标量场的等值面可视化,等值面是指空间中的一张曲面,在该曲面上函数F(x,y,z)的值等于某一给定值 准确地讲,是在一网格空间中,其中每一结点保存着连续三变量函数F(x,y,z)在网格单元(xi,yj,zk)上的采样值F(xi,yj,zk),对于某一给定值Ft,等值面是由所有点 SFt(x,y,z):F(x,y,z

12、) Ft 组成的一张曲面。,等值面技术在可视化中应用很广,许多标量场中的可视化问题都归纳为等值面的抽取和绘制,如: 医学图像中的三维重建; 有限元计算中的标量场分析,包括等势面、 等位面、等压面等等; 分子化学中的分子表面显示; 地质中矿藏分布的构造等 等值面的抽取和显示是可视化的一个重要方面。,第六讲介绍的断层间表面重构也可以看成是一种等值面的构造技术,它是基于各断层上提取的二维轮廓线(等值线)构造断层间的实体表面段,由所有这些各断层间的实体表面段组成对象的轮廓面(等值面)这种方法较适合于断层扫描数据且断层间等值面变化较小或大致相似,同时精度要求较低的场合,对于变化较大的标量场或标量场是由逐

13、个非正规化单元组成的情况,特别是有限元单元,这种等值面的构造方法显然是不适应的。因此,出现了以Marching Cube算法为代表的单元内的等值面直接提取方法,本讲着重介绍这方面的内容。,等值面生成的最早研究还是从医学图像的应用中开始的,由于医学图像数据是三维正交的等距网格,其网格单元可看成是正六面体单元(至少在参数空间),整个数据场就是由这种正六面体组成的,这种组成三维图像的基本正六面体单元称为体素(voxel)最早的体素被认为是由一个网格点及其附近区域组成的一个等值空间,也就是Cuberille表示,其中的等值面就由该体素的六个外表面中的一个或几个组成这样生成的等值面虽计算简单,但效果不佳

14、 Marching Cube算法的提出提供了一种精确地定义体素及其体素内等值面的生成方法,体素被定义为由相邻层之间八个网格点组成的数据单元它提供了一种更一般化的体素定义,即将等值面生成技术推广到了有限元数据的分析上,7.1 Cuberille表示和显示方法 Cuberille表示是一种适合于正交密集数据场的表示方法,主要适用在医学图像、无损探伤等三维图像的等值面抽取该表示将三维图像中的每一象素看成是空间中的一个小立方体,在该小立方体内,数据场具有相同的值,整个空间及其对象就由这类小立方体组成这类小立方体被称作Cuberille表示中的体素。Cuberille表示和显示方法就是基于这种简单的体素

15、表示。,图7.1 Cuberille中的体素,7.2 Marching Cube算法 Marching Cube算法是三维数据场等值面生成的经典算法,是体素单元内等值面抽取技术的代表。这一类算法所处理的数据一般是三维正交的数据场。,Marching Cube算法中的立方体体素与Cuberille表示中的立方体体素不同,后者仅以一个等值立方体表示一个体素值,等值面由体素的六个表面面元组成而在Marching Cube算法中,体素是一逻辑上的立方体,由相邻层上的各四个象素组成立方体上的八个顶点,如图7.2所示算法以扫描线方式逐个处理数据场中每一立方体体素,求出每一体素内包含的等值面,由此生成整个数

16、据场的等值面,图7.2 Marching Cube中的体素,7.2.1 基本算法 Marching Cube算法的基本思想是逐个处理数据场中的立方体,分类出与等值面相交的立方体,采用插值计算出等值值面与立方体边的交点 根据立方体每一顶点与等值面的相对位置,将等值面与立方体边的交点按一定方式连接生成等值面,作为等值面在该立方体内的一个逼近表示 因而,Marching Cube算法中每一单元内等值面抽取的主要计算是: 体素中由三角片逼近的等值面计算;,体素中等值面的计算 Marching Cube算法的基本假设是沿着立方体的边数据场呈连续线性变化,也就是讲,如一条边的两个顶点分别大于小于等值面的值

17、,则在该条边上必有也仅有一点是这条边与等值面的交点确定立方体体素中等值面的分布是该算法的基础 首先对立方体的八个顶点进行分类,以判定其顶点是位于等值面之外,还是位于等值面之内再根据八个顶点的状态,确定等值面的模式 顶点分类规则为 1)如立方体顶点的数据值等值面的值,则定义该顶点位于等值面之外,记为“+”; 2)如立方体顶点的数据值等值面的值,则定义该顶点位于等值面之内,记为“-”;,由于每一体素共有8个顶点,每个顶点共有2个状态,因此共有256种组合状态分析立方体体素的两种对称性: 1)如顶点状态返转,等值三角面片的拓扑结构不变也就是讲,大于等值面点与小于等值面的点是可以相互替换的; 2)旋转

18、对称性,经过适当旋转,有许多状态是一致的,如图7.3所示,图7.3 旋转对称性,这样,共总结出15种模式 (见图7.4a,b):,图7.4a 体素中的等值面模式,0,1,2,3,4,5,6,7,图7.4b 体素中的等值面模式,8,9,10,14,13,12,11,在实现时,可按照立方体顶点状态构造等值面连接模式的索引表: 可直接由立方体各顶点的状态检索出其中等值面的分布模式确定该立方体体素内的等 值面三角片连接方式。,三角片顶点计算 在确定立方体内三角片等值面分布模式后,就要计算出三角片顶点位置,根据算法的基本假设,可以直接用线性插值计算等值面与立方体边的交点X: 该算法在执行时,每次扫描其中

19、两片断层图像,构造这两层之间的立方体体素首先对立方体顶点进行分类由分类顶点建立该立方体在检索分类表中的索引下标,检索分类表中对应的等值面分布模式由线性插值计算出三角片顶点位置,将立方体边上的交点按等值面片连接模式连接成三角片或多边形。,7.2.2二义性解决方法 Marching Cube算法提供了一种较精确的等值面生成方法,但在它所提出的15种体素内等值面连接模式中存在着许多二义性的连接,如图7.5所示,图7.5二义性立方体,在立方体的一个面上,如果位于等值面内和在等值面外的顶点分别分布在对角线的两端,那么就有两种可能的连接方式,因而存在二义性,这样的面称之为二义性面包含一个以上二义性面的立方

20、体,即为二义性立方体 在上述模式中,3,6,7,l0,12,13共六种模式是二义性立方体要能正确地构造等值面,必须解决二义性立方体内的等值面连接模式,否则在等值面连接上会出现空洞等问题如在3,6两种连接上,有两种可能的连接模式(见图7.6)。 解决的方法主要有两类:采用双曲线渐近线交点来判定二义性面和采用四面体剖分。,图7.6 二义性等值面,图7.7 三维线性插值,图7.8 等值面与立方体交线的四种情况,图7.9 二义性等值面的判定,在Marching Cube基本算法的15种模式中,0,1,2,4,5,8,9,11,14不存在二义性表面,因而只有一种连接方式。3,6各存在一个二义性面,各有两

21、种可能的连接方式10,12各存在两个二义性面,也就是各有四种可能的连接方式,7存在三个二义性面,有8种可能的连接方式,l3存在6个二义性面,有64种连接方式,组合相加共有93种可能的连接方式,除去对称的和相同的方式,共有34种不同的连接,图7.10列出了其中的主要情况。,无二义面模式,只有一种连接方式,0,1,2,4,5,8,9,14,11,各一个二义性面,有两种可能的连接方式,3,6,10,12,各存在两个二义性面,也就是各有四种可能的连接方式,7,存在三个二义性面,有8种可能的连接方式,13,存在6个二义性面,有64种连接方式,7.10 二义性立方体的具体连接方式,另一种消除二义性的方法是

22、将立方体剖分成四面体处理,在四面体中生成等值面就不存在二义性问题。 可假设在四面体边上数据场呈线性变化,对于每个四面体,等值面模式只有三种情况,如图7.11所示如果顶点数据值全大于或小于等值面值,等值面与单元无交,如一点大于另三点小于等值面值,则四面体中等值面是一三角片,如二点大于二点小于等值面值,则等值面是一四边形,可由两个三角片构造 图7.11 四面体中的等值面,7.3 有限元中的等值面 在有限元分析的后置处理中,等值面抽取和显示是一个主要手段,与前述的立方体体素相比较,尽管基本思路相同,但由于有限元数据的特点,有限元中的等值面生成又有其不同之处与正规化体素相比,有限元数据有以下特点: 1

23、)单元类型不一样,常见的有限元单元类型有4结点、6结点、8结点等,且每一单元比体素要大得多,单元边也往往非直线(见图7.12); 2)输入数据不一样,其几何连通性不是隐含的,而是显式说明的,数据中包含了每一单元每一顶点的几何数据 图7.12常见的有限元单元类型,小结 等值面是三维标量场最基本的表示方法。 Cuberille表示将整个场空间划分成等值立方体体素,其中等值面由体素的外表面组成。 为了提高等值面生成的精度,体素被认为是由相邻层对应八个采样点组成。针对这种体素表示,出现了以Marching Cube算法为代表的单元内的等值面抽取方法。 两种二义性解决方法:基于线性插值假设下的渐近线交点

24、判定方法和四面体剖分后插值及等值面构造。,7.4 VTK中三维标量场的等值面可视化 以规则三维网格数据为例,VTK中的实现方法如下: (1)获取三维标量场数据 reader = vtkRectilinearGridReader() reader.SetFileName(VTK_DATA + /RectGrid.vtk) (2)生成等值面过滤器对象 iso = vtkContourFilter() (3)设置等值面值 iso.SetInput(reader.GetOutput() iso.SetValue(0,0.2) iso.SetValue(1,1.9) iso.SetValue(2,1.0

25、) iso.SetValue(3,0.5) (4)重新计算法向量 normals = vtkPolyDataNormals() normals.SetInput(iso.GetOutput() normals.SetFeatureAngle(45),(5)设置Mapper和Actor isoMapper = vtkPolyDataMapper() isoMapper.SetInput(normals.GetOutput() isoActor = vtkActor() isoActor.SetMapper(isoMapper),from vtk import * reader = vtkRect

26、ilinearGridReader() reader.SetFileName(“./RectGrid.vtk) reader.Update() 读入数据 iso = vtkContourFilter() iso.SetInput(reader.GetOutput() iso.SetValue(0,0.2) iso.SetValue(1,1.9) iso.SetValue(2,1.0) iso.SetValue(3,0.5) 构造等值面 normals = vtkPolyDataNormals() normals.SetInput(iso.GetOutput() normals.SetFeatu

27、reAngle(45) 重新计算法向 isoMapper = vtkPolyDataMapper() isoMapper.SetInput(normals.GetOutput(),isoActor = vtkActor() isoActor.SetMapper(isoMapper) ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) ren.AddActor(isoActor)

28、ren.SetBackground(1,1,1) renWin.SetSize(400,400) iren.Initialize() iren.Start() 运行,VTK提供的其它等值面类: vtkKitwareContourFilter vtkSynchronizedTemplates3D vtkMarchingContourFilter vtkMarchingCubes,为等值面设置颜色: iso = vtkMarchingContourFilter() iso.SetInput(dataGrid) iso.SetValue(0,0.5) iso.SetValue(1,1.0) iso.

29、SetValue(2,1.5) iso.SetValue(3,2.0) normals = vtkPolyDataNormals() normals.SetInput(iso.GetOutput() normals.SetFeatureAngle(45) Iut1=vtkLookupTable() 调色板 Iut1.SetTableRange(0.5,2.0) Iut1.SetNumberOfTableValues(4) Iut1.SetTableValue(0,0.0,0.0,1.0,1.0) Iut1.SetTableValue(1,0.0,1.0,1.0,1.0) Iut1.SetTab

30、leValue(2,1.0,1.0,0.0,1.0) Iut1.SetTableValue(3,0.0,1.0,0.0,1.0),isoMapper = vtkPolyDataMapper() isoMapper.SetInput(normals.GetOutput() isoMapper.SetScalarRange(0.5,2.0) isoMapper.SetLookupTable(Iut1) isoActor = vtkActor() isoActor.SetMapper(isoMapper) 运行,VTK中提供的切面类:vtkCutter reader = vtkRectilinear

31、GridReader() 读入数据 reader.SetFileName(“./RectGrid.vtk) reader.Update() cutPlane = vtkPlane() 构造面对象 cutPlane.SetOrigin(reader.GetOutput().GetCenter() 面的原点 cutPlane.SetNormal(1,0,0) 面的法向 planeCut = vtkCutter() 切面对象 planeCut.SetInput(reader.GetOutput() 待切割的数据 planeCut.SetCutFunction(cutPlane) 把面和切面对象关联

32、cutMapper = vtkDataSetMapper() cutMapper.SetInput(planeCut.GetOutput() scalars=reader.GetOutput().GetPointData().GetScalars() cutMapper.SetScalarRange(scalars.GetRange() ) cutActor = vtkActor() cutActor.SetMapper(cutMapper) 运行,下一节课内容:,第八讲 三维标量场体可视化 体绘制与面绘制的比较 体光照模型 体光线跟踪法 体单元投影法 三维扫描变换 混合绘制算法 有限元数据场的体绘制,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!