可视化管线

news2024/11/25 2:43:32

VTK中的可视化管线可用于读取或创建数据、分析和创建此数据的派生版本,并将数据写入磁盘或将其传递给渲染引擎进行显示。例如,您可以从磁盘读取一个三维数据体,对其进行处理以创建一组三角形,这些三角形通过该数据体表示一个等值曲面,然后将该几何对象写回磁盘。或者,您可以创建一组球体和圆柱体来表示原子和键,然后将其传递给渲染引擎进行显示。

VTK使用数据流方法将信息转换为图形数据。此方法涉及两种基本类型的对象。

vtkDataObject

vtkAlgorithm

数据对象表示各种类型的数据。vtkDataObject类可以看作是一个通用的数据块。具有正式结构的数据称为数据集(vtkDataSet类)。3-2显示了VTK支持的数据集对象。数据集由几何和拓扑结构(点和单元格)组成;它们还具有相关的属性数据,如标量或向量。属性数据可以与数据集的点或单元格相关联。单元格是点的拓扑组织;单元格是构成数据集的原子,用于在点之间插入信息。19-2019-21显示了VTK支持的23种最常见的单元格类型。3-3显示了VTK支持的属性数据。

算法(也称为过滤器)对数据对象进行操作以生成新的数据对象。算法和数据对象连接在一起,形成可视化管线(即数据流网络)3-4是可视化管线的描述。此图与3-5一起说明了一些重要的可视化概念。源算法通过读取(读取器对象)或构造一个或多个数据对象(过程源对象)来生成数据。过滤器接收一个或多个数据对象,并在输出时生成一个或多个数据对象。映射器(某些情况下专门道具)获取数据并将其转换为渲染引擎显示的视觉渲染。写入器可以看作是一种将数据写入文件或流的映射器。

关于可视化管线的构建,我们将在这里简要介绍几个重要问题。首先,使用各种方法构造管线拓扑:

aFilter->SetInputConnection( anotherFilter->GetOutputPort() );

它将一个过滤器的输入设置为另一个过滤器的输出。具有多个输入和输出的过滤器具有类似的方法。其次,我们必须有一种控制管线执行的机制。我们只想执行管线中使输出更新所需的部分。VTK基于每个对象的内部修改时间使用延迟评估方案(仅在请求数据时执行)。第三,管线的组装要求只有那些彼此兼容的对象才能与SetInputConnection()GetOutputPort()方法配合使用。如果数据对象类型不兼容,VTK会在运行时产生错误。最后,我们必须决定在管线执行后是缓存还是保留数据对象。由于可视化数据集通常相当大,这对于可视化工具的成功应用非常重要。VTK提供了打开和关闭数据缓存的方法、使用引用计数避免复制数据的方法,以及在整个数据集无法保存在内存中时以片段形式流式传输数据的方法。

请注意,算法和数据对象都有很多种类。16-2显示了VTK支持的六种最常见的数据对象类型。算法对象在其输入数据和输出数据的类型上有所不同,在实现的特定算法中也有所不同。

 

Figure 3–3 Data attributes associated with the points and cells of a dataset.

 

 

 

管线执行.上一节中,我们讨论了控制可视化管线执行的必要性。在本节中,我们将扩展对有关管线执行的一些关键概念的理解。如前一节所述,VTK可视化管线仅在需要数据进行计算(延迟评估)时执行。考虑这个示例,我们实例化了一个读取器对象,并要求提供如下所示的点数。

vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();

reader->SetFileName("Data\\clouds.jpeg");

auto data = reader->GetOutput();

qDebug() << data->GetNumberOfPoints();

读取器对象将从GetNumberOfPoints()方法调用返回0,尽管数据文件包含数千个点。但是,如果添加Update()方法

reader->Update();

int number = data->GetNumberOfPoints();

读取器对象将返回正确的数字。在第一个示例中,GetNumberOfPoints()方法不需要计算,对象只返回当前点的数量,即0。在第二个示例中,Update()方法强制执行管线,从而强制reader执行并读取所示文件中的数据。读取器执行后,其输出中的点数将正确设置。

通常,您不需要手动调用Update(),因为过滤器连接到可视化管线中。在这种情况下,当参与者收到渲染自身的请求时,它会将该方法转发给映射器,Update()方法会通过可视化管线自动发送。管线执行的高级视图如3-6所示。如图中所示,Render()方法通常会启动数据请求;然后通过管线向上传递该请求。根据管线的过期部分,管线中的过滤器可能会重新执行,从而使管线末端的数据更新;然后由参与者呈现最新数据。

图像处理. VTK支持一系列广泛的图像处理和体积渲染功能。在VTK中,2D(图像)3D(体积)数据都称为vtkImageDataVTK中的图像数据集是将数据排列在规则的轴对齐数组中的数据集。图像、像素地图和位图是2D图像数据集的示例;体积(二维图像的几何)是一个三维图像数据集。

图像管线中的算法总是输入和输出图像数据对象。由于数据的规则性和简单性,图像管线具有其他重要特征。体积渲染用于可视化三维vtkImageData,特殊图像查看器用于查看二维vtkImageData。图像管线中的几乎所有算法都是多线程的,并且能够将数据分块流式传输,以满足用户指定的内存限制。过滤器会自动检测系统上可用的内核和处理器数量,并在执行过程中创建该数量的线程,以及自动将数据分割为通过管线传输的片段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全栈Jmeter接口测试(六):json断言元件,jmeter参数化实现

Jmeter(12)&#xff1a;json断言元件 json断言元件介绍&#xff1a; json断言元件与响应断言元件的功能类型&#xff0c;它只针对响应正文为json数据格 式的内容进行断言功能。 添加路径&#xff1a;右击http请求——断言——json断言 如下图展示&#xff1a; json断言元件字…

JAVA毕业设计——基于SpringBoot和thymeleaf的疫情信息管理系统 (源码+数据库)

github代码地址 https://github.com/ynwynw/CoronavirusManage-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于SpringBoot及thymeleaf搭建的疫情信息管理系统 (源码数据库)034 一、系统介绍 疫情信息管理系统应当具备两种对象&#xff0c;疫情管理…

【论文精读10】MVSNet系列论文详解-PatchmatchNet

PatchmatchNet&#xff0c;论文名为&#xff1a;PatchmatchNet: Learned Multi-View Patchmatch Stereo&#xff0c;本篇论文结合了较多过往文章的优化思想和类似模块&#xff0c;因此可能要更复杂一些。 本文是MVSNet系列的第10篇&#xff0c;建议看过【论文精读1】MVSNet系列…

【嵌入式linux】修改网口MAC地址

使用带有网络功能的设备时&#xff0c;如果局域网内可能会连接很多台设备&#xff0c;为了保证网络通信正常&#xff0c;要确保每台设备的硬件MAC地址都不相同&#xff0c;一般在批量生产的时候可以根据产品序列号(sn号)固化每台设备的MAC地址&#xff0c;防止出现MAC冲突的问题…

【云原生】Prometheus PromQL讲解与实战操作

文章目录一、PromQL介绍二、四种指标类型1&#xff09;counter&#xff08;计数器&#xff09;2&#xff09;gauge &#xff08;仪表类型&#xff09;3&#xff09;Histogram&#xff08;直方图类型&#xff09; 和 Summary&#xff08;摘要类型&#xff09;三、表达式四种数据…

8Manage PMO:多项目管理工作经验分享

在现代企业日常项目管理中&#xff0c;同时开展不同业务项目可说已经是“家常便饭”&#xff0c;项目经理手上开展多个项目&#xff0c;便需要兼顾各项目的人力资源、进度、问题、风险等。而在这种情况下&#xff0c;面对多项目管理该如何有效进行管理&#xff0c;有没有多项目…

换天空的几个方式技巧

1.魔棒工具 现将图层复制一层&#xff0c;用魔棒工具选中被复制的一层图中的天空将他删除。&#xff08;如果天空有一些未选中的位置&#xff0c;那么我们按住shift用鼠标去点击需要删除的位置他就会一起选中&#xff09; 这个就是我们删除之后的效果。 然后我们打开一张需要加…

体验了一下火爆全球的 ChatGPT,我震惊了

这几天&#xff0c;要说编程圈最热的话题&#xff0c;莫过于OpenAI的ChatGPT&#xff0c;写小说&#xff0c;写代码&#xff0c;找BUG&#xff0c;写论文&#xff0c;画漫画&#xff0c;谱曲……简直没有它干不了的事。 趁着下班时间&#xff0c;我也光速注册体验了一下&#…

VS Code 1.74 发布!

欢迎来到 VS Code 11月更新&#xff0c;此版本更新包括自定义资源管理器自动显示、隐藏活动栏和面板徽章、合并编辑器撤消/重做、管理不安全的存储库、Go to Definition on return、远程隧道等等&#xff0c;让我们一起看看完整更新吧&#xff01; 自定义资源管理器自动显示 引…

Linux Centos离线地图开发

相关教程&#xff1a; 1、如何搭建离线地图开发环境 视频教程 2、下载离线地图数据(金字塔瓦片数据&#xff09; 视频教程 3、下载离线地图地形数据库&#xff08;实现地表高低起伏&#xff09; 4、添加离线地图数据到本地服务器 &#xff08;含3D&#xff09; 视频…

NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询

文章目录NamedParameterJdbcTemplate —— SqlParameterSource实现具名参数查询一、数据库准备二、java Bean实体类准备三、要执行的SQL语句四、定义业务接口service五、定义一个SqlParameterSource实现具名参数的实体类六、定义controller接口七、业务实现&#xff08;1&#…

基于java+springboot+mybatis+vue+mysql的疫苗接种管理系统

项目介绍 该系统的应用可以减少工作人员的劳动强度&#xff0c;提高工作效率与管理水平&#xff0c;具有很大的价值。它可以使疫苗接种管理系统上操作简单&#xff0c;成功率高&#xff0c;使网上疫苗接种管理系统的管理向一个更高层次前进。 本系统尝试使用springboot在网上…

动态规划及马尔可夫特性最佳调度策略(Matlab完整代码实现)

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 1 概述 2 Matlab代码实现 3 写在最后 1 概述 动态规划是一种机器学习方法&#xff0c;它利用环境、计算资源和马尔可夫特性等知识来创建在环境中最佳执行的策略。有了这项强大的技术&#…

存储器层次结构

实际的软件开发过程中&#xff0c;常会遇到服务端请求响应时间长&#xff0c;吞吐率不够。 分析对应问题时&#xff0c;你肯定听过“主要瓶颈不在CPU&#xff0c;而在I/O”&#xff0c;存储很重要。 1 存储器的层次结构 存储器系统是通过各种不同方法和设备&#xff0c;一层层…

人肝HepG2细胞膜

人肝HepG2细胞膜 主要组成&#xff1a;细胞膜组分&#xff08;真核或原代细胞&#xff09;、高分子内核材料、功能因子 制备方法&#xff1a;薄膜包覆法 粒径控制&#xff1a;100-150 nm 平均电位&#xff1a;~ -20 mV 包载因子&#xff1a;影像分子、免疫分子等功能因子 包装…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09; 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f;目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给单…

论文投稿指南——中文核心期刊推荐(机械、仪表工业3)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

pikachu靶场-3 跨站请求伪造(CSRF)

跨站请求伪造&#xff08;CSRF&#xff09; Cross-site request forgery简称为”CSRF“ 在CSRF的攻击场景中攻击者会伪造一个请求&#xff08;这个请求一般是一个链接&#xff09; 然后欺骗目标用户进行点击&#xff0c;用户一旦点击了这个请求&#xff0c;整个攻击也就完成…

Java基于springboot+vue+elementUI某高校学院资产管理系统

项目介绍 独立学院资产管理系统主要设计的用户范围是&#xff1a;注册用户、管理员。每一个角色在系统中即可看作是不同的子系统&#xff0c;其所拥有的功能权限是不一致的。系统架构包括后台数据库的建立和维护以及应用程序。系统的主要功能模块主要有登录功能模块&#xff0c…

01_01_Go语言基础知识

01_01_Go语言基础知识定义变量内建变量类型强制类型转换常量与枚举要点总结条件语句if 举例switch 举例for 循环函数指针数组定义变量 使用 var 关键字 使用 var 关键字, 可以放在函数内, 或直接放在包内均可 // 定义 a, b, c 三个变量 类型都是 bool 变量可以不赋初始值 v…