VTK系列教程一:整体架构

2023-05-16

VTK(Visualization Toolkit ),顾名思义主要用于三维计算机图形学、图像处理和可视化,VTK到底能做什么?这还得从人类的视觉系统讲起,现实世界中的物体在光照的作用下,其反射的光线进入人体视神经网络形成图像,物体、光照、视神经网络在VTK中都有对应的抽象,VTK正是利用这种抽象来模拟人类的视觉系统,将图像绘制到计算机屏幕上;那么大家都听过数字图像处理这门课,它与VTK不同,它是利用各种变换和算法来提取图像中的特征,例如,滤波、傅里叶变换、分割等;而VTK的主要功能是绘制,本系列教程就以一个完整的三维医学图像可视化软件来演示如何使用VTK。
在这里插入图片描述

VTK源码下载路径:https://vtk.org/download/

对于初学者而言,不建议一开始就直接扎到源代码中去,源码属于底层的细节,如果只关注细节,人的思维很难形成一个整体认识,而是应采用从整体到细节,再从细节到整体,两者相互验证、循序渐进地学习。
先从整体角度出发:
源码目录
良好的目录划分能够很大程度上体现软件的模块划分和软件架构:
在这里插入图片描述

类继承体系

VTK使用C++语言编写,面向对象设计思想无处不在,在VTK的用户手册中提供了VTK中类对象的继承体系,这对于初学者而言非常重要,相对于目录结构,又进一步的靠近了VTK。

https://vtk.org/documentation/

源码中的Demo

在VTK的源码和官方网站中提供了大量的示例程序和测试代码,请一定要重视这些宝贵的资源,请相信我,如果你把这些代码都看了一边,你就能够将他们组合成你自己的应用程序。

切换到细节:

当站在上帝的视角去浏览源码目录、类继承体系、Demo时,针对自己随时崩发出的想法和疑虑,请及时切换到细节中去,例如,浏览目录时,查看目录下到底有什么源文件,思考为什么要放在这里,顾名思义的去猜测一下这个源文件实现的功能;当浏览类继承体系时,去看一下类的声明与定义,请记住前面的提到的物体、光照、视网膜,看类的继承体系是否合理地对这些实体进行抽象;多运行几个demo后,就能进一步的对绘制流程有所了解,这时切换到细节,就能加深对VTK的认识。

丰富的扩展性:

这里的扩展性不仅限于利用C++封装、继承、多态特性去现实自己的“物体”,“光照”,“视网膜”;而且还实现了语言层面的扩展性,这么说吧,如果你是Web开发者,或是Python死忠,抑或是.Net,你想用自己熟悉的语言实现绘制应用,那你完全不必被VTK的C++吓跑,因为VTK已经实现了JS、Python的接口,对于C#也有开源的项目提供支持。
在这里插入图片描述
绘制Pipeline:
绘制管线就是从文件中获取或者在内存中创造数据源,然后对数据进行处理,将处理结果要么写到输出文件中,要么绘制到屏幕上,绘制引擎就是负责生成要绘制的图像;前面我们一直提到“物体”,“光照”,“视网膜”,让我们走进VTK,来看看与这些实体对应的类,以及在绘制流程中这些对象是如何相互转化的。
vtkProp:它就代表我们前面提到的“物体”,数据分为好多种类:
在这里插入图片描述
vtkFilter:对输入数据预处理,例如对图像上采样、降采样进行缩放,但这并不是必须的。
vtkAbstractMapper:将数据映射成不同形态的数据,例如将原始数据映射成彩色数据;例如将原始数据进行光线追踪生成一张二维结果图像进行显示。
vtkLight:对应我们之前提到的“光照”。
vtkCamera:对应“视网膜”。
vtkRenderer:将vtkProp(演员)在vtkLight(光照)的作用下生成一张图像显示到屏幕(视网膜),然后将结果显示到vtkRenderWindow中。
vtkRenderWindow:它提供了绘制机制,是操作系统和vtkRenderer的桥梁,因为绘制归根到底要利用操作系统提供的绘制机制。
vtkRenderWindowInteractor:上面我们实现了将图像显示到屏幕上,但还差一个最重要的功能,就是交互,也就是响应用户的鼠标、键盘的操作,这个类就是实现交互功能,就是不断的获取操作系统的消息,然后转化成VTK的事件,然后根据事件的类型进行重新绘制。
在这里插入图片描述
今天我们讲了VTK的整体架构以及学习方法,从下节开始我们通过一个例子来深入到细节去学习VTK。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VTK系列教程一:整体架构 的相关文章

  • 通俗易懂--逻辑回归算法讲解(算法+案例)

    标题 1 逻辑回归 Logistic Regression 1 1逻辑回归与线性回归的关系1 2损失函数1 3多分类问题 one vs rest 1 4逻辑回归 LR 的一些经验1 5LR的应用1 6Python代码实现 寻觅互联网 xff
  • 8: dist_train.sh: Bad substitution的解决

    问题 xff1a 解决 xff1a 用bash bash dist train span class token punctuation span sh configs span class token operator span pvt
  • pyqt 设置QPixmap透明度

    span class token comment 获得含有透明度的QPixmap span span class token comment param filePath 图片路径 opacity 透明度 0 255 越小越透明 span
  • 挂载时提升未知的文件系统类型“LVM2_member”

    问题排查 xff0c 检查是该模块是否被做成了pv span class token punctuation span root 64 localhost home span class token punctuation span spa
  • RestTemplate和Feign的区别

    文章目录 1 远程调用方法 xff08 RestTemplate和Feign xff09 1 RestTemplate简单的远程调用原型2 Feign远程调用 1 远程调用方法 xff08 RestTemplate和Feign xff09
  • PostgreSQL创建物化视图并刷新

    1 创建物化视图 视图hnqyhxv person CREATE MATERIALIZED VIEW hnqyhxv person TABLESPACE sys default as SELECT FROM E PRI PERSON WHE
  • java实现判断当前时间,是否在指定时间范围

    目录 文章目录 java实现判断当前时间 xff0c 是否在三月的最后一个星期日到十月的最后一个星期六1 问题提出2 问题解决 java实现判断当前时间 xff0c 是否在三月的最后一个星期日到十月的最后一个星期六 1 问题提出 事情是这样
  • 记一次activiti审批意见字段乱码问题

    目录 文章目录 记一次activiti审批意见字段乱码问题问题描述解决思路1 数据源连接配置问题2 检查数据库存储字段是否乱码3 查看部署环境的编码4 程序启动命令直接指定编码方式 记一次activiti审批意见字段乱码问题 问题描述 项目
  • KEIL MDK平台 S3C2440 汇编语言软件仿真

    KEIL MDK平台 S3C2440 汇编语言软件仿真 KEIL MDK平台 S3C2440 汇编语言软件仿真建立工程 xff0c 编辑汇编语言程序编译链接源程序调试博客同款例程https download csdn net downloa
  • matlab 语法_MATLAB中的语法

    matlab 语法 The syntax is the method by which the programmer give various commands to the system or the software These com
  • 什么是SSR/SSG/ISR?如何在AWS上托管它们?

    概述 在这篇文章中 xff0c 我们将讨论如何在AWS上运行SSR SSG ISR以及App Runner的魅力 内容 我们将首先分别解释传统和现代网络应用 接下来 xff0c 我们将介绍如何在AWS上托管SSR SSG ISR 传统网络应
  • 一篇让你上手mysql安装以及my.ini配置

    mysql目前已经作为我们常用的数据库了 xff0c 今天我们学习来安装一下它 1 下载 从官网上下载安装包 xff08 也可以公众号回复mysql可以获取 xff09 https dev mysql com downloads mysql
  • ESP8266型号、下载、接线、烧录等怕忘总结

    ESP8266型号 下载 接线 烧录等怕忘总结 1 不同模块参数 下载接线等 xff08 1 xff09 ESP01 xff08 2 xff09 ESP01S xff08 3 xff09 ESP07 xff08 4 xff09 ESP07S
  • github下载慢

    方法一 xff1a 从GitHub下载文件一直非常慢 xff0c 查看下载链接发现最终被指向了Amazon的服务器 xff0c 下载地址是 http github cloud s3 amazonaws com xff0c 从国内访问Amaz
  • 再次安装Arch Linux!(Vmware,KDE\Gnome桌面,EFI/BIOS引导,双系统配置)更新时间2018/11/11

    1 下载Arch Linux镜像 下载地址 xff1a https xff1a www archlinux org download 可以看到一个磁力一个种子 xff0c 任意下载一个并使用支持的下载软件进行镜像的下载 2 1 xff08
  • ozone调试

    对于keil编译的工程没法用gdb调试 xff08 我没发现方法 xff09 xff0c 那就用Ozone调试 xff0c 官网 https www segger com products development tools ozone j
  • pat1068

    对于计算机而言 xff0c 颜色不过是像素点对应的一个 24 位的数值 现给定一幅分辨率为 M N 的画 xff0c 要求你找出万绿丛中的一点红 xff0c 即有独一无二颜色的那个像素点 xff0c 并且该点的颜色与其周围 8 个相邻像素的
  • windows7系统下如何升级powershell(2.0升级到3.0版本)

    最近在使用vagrant命令时提示2 0的版本不支持需要升级powershell操作如下 查看本机powershell版本号 开始 运行 xff0c 输入powershell进入命令行窗口 在命令行中输入 PSVersionTable PS
  • python+pytesseract 中文识别

    继写了第一篇 包含验证码识别的自动化登录脚本后在一次与朋友聊天中谈到中文识别 想起Tesseract OCR是有这个包的 xff0c 然后我就搞了搞 coding 61 utf 8 from PIL import Image import
  • Codeforces1153A-Serval and Bus(数学)

    原题链接 xff1a http codeforces com contest 1153 problem A 题目原文 xff1a A Serval and Bus time limit per test 1 second memory li

随机推荐

  • tinode登录流程

    登录 交互消息 out是客户端发出 in是客户端接收 客户端发出hi消息 里面主要包括了版本 ua lang消息out span class token punctuation span span class token punctuati
  • While(true)无限循环

    while true 作为无限循环 xff0c 经常在不知道循环次数的时候使用 xff0c 并且需要在循环内使用break才会停止 run 方法中基本都会写while true 的循环 xff0c 如下 xff1a public class
  • python 判断两个字符串的相似度

    import difflib import Levenshtein def get equal rate 1 str1 str2 return difflib SequenceMatcher None str1 str2 quick rat
  • 关于wujian100 SDK中GPIO的调试问题

    学习笔记 问题一 xff1a 引脚电平不稳定问题二 xff1a 进入GPIO中断后出不来 第一次在CSDN写博客 xff0c 用来记录一些学习笔记 xff0c 小白一只 xff0c 如有不足之处望大家多多理解和指导 xff01 分享一下关于
  • 嵌入式C语言-关于if条件判断为真但不执行if块语句的问题

    关于if条件判断为真但不执行if块语句的问题 xff0c 我一直也还不是很清楚是什么原因造成的 在网上查看了一些网友的评论但回答也不是非常的准确 xff0c 或者说每个人遇到的情况都略有不同 我是在调试开发板的时候遇到两类这样的bug xf
  • UEFI模式下双系统安装并引导启动注意事项(RHLE7.9&WIN10)

    UEFI模式下双系统安装并引导启动注意事项 xff08 RHLE7 9 amp WIN10 xff09 引言新的改变资源链接注意事项 引言 就如同大佬说的一样 xff0c 知识也是需要与时俱进的 xff0c 在技术高速革新的时代 xff0c
  • WAV音频文件格式分析

    用notepad 43 43 gt gt plugins gt gt HexEditor notepad 43 43 的一个二进制编辑器插件 可以以16进制查看文件内容 打开一个波形文件如下 xff1a 所有WAV波形文件都可以套用一下一下
  • 使用 Petalinux 定制 Linux 系统

    离线编译petalinux 本文是基于Alinx FPGA开发板 xff08 AXU2CGA xff09 学习过程中踩过的坑 xff0c 以做记录 1 创建工程目录 xff1a 路径中 表示用户 home 路径 mkdir span cla
  • docker安装TensorFlow2.0 + jupyter lab。

    docker加虚拟机 xff0c 简直就是坑中埋雷 让我抱怨一下 我们开始进入主题 我的系统是ubuntu20 安装在虚拟机里 这个我就不再阐述过多了 大家都会 docker安装过程我也不多说了 xff0c 这个资料很多 那么我们直接进入主
  • Python 利用 curve_fit 进行 e 指数函数拟合

    可能对大家有参考价值的信息是 xff1a 如何用 curve fit 进行 e 指数函数拟合 xff1b 如何将拟合后的结果输出到画布上 xff1b 坐标轴 标签 图例样式的设计 xff1b 文本框内容和格式 话不多说 xff0c 直接上代
  • 简单搜索--马的走法

    描述 在一个4 5的棋盘上 xff0c 输入马的起始位置坐标 xff08 纵 横 xff09 xff0c 求马能返回初始位置的所有不同走法的总数 xff08 马走过的位置不能重复 马走 日 字 xff09 输入 多个测试数据 每组2个数 x
  • 用cephadm单节点安装ceph

    文章目录 官方文档参考安装虚拟机操作系统安装ntp lvm2配置时区安装docker安装cephadm验证 安装修改dashboard密码 安装ceph common查看可用存储添加存储验证 使用pool创建删除pool 块存储 xff08
  • Ubuntu18.04.6更新nvidia驱动后重启卡住

    这已经不是我第一次重装驱动无法重启了 xff0c 更新完驱动之后重启首先会卡在这样一个界面 xff1a 后来进行了这样的操作 xff1a 第一步 xff1a 重启Ubuntu系统开机按esc或shift xff0c 会进入启动选择页 xff
  • Springcloud--服务调度OpenFeign、RestTemplate

    一 RestTemplate RestTemplate是Spring提供的用于访问Rest服务的客户端 xff0c RestTemplate提供了多种便捷访问远程Http服务的方法 能够大大提高客户端的编写效率 1 基本使用 发送GET请求
  • AdamTechLouis's talk: Deep Learning with Knowledge Graphs

    Last week I gave a talk at Connected Data London on the approach that we have developed at Octavian to use neural networ
  • anaconda3下64位python和32位python共存

    今天需要调用一个dll动态函数库 xff0c 但是本地的python是64位的 xff0c dll是32位的 xff0c 直接调用会报错 OSError WinError 193 1 不是有效的 Win32 应用程序 python版本 xf
  • django工程-根据不同条件查询数据库数据

    https docs djangoproject com en 2 0 ref models querysets field lookups
  • 为什么有透明度gif动态图放在网页上为什么变成纯色了

    为什么有透明度gif动态图放在网页上为什么变成纯色了
  • keil突然烧录不进去了解决记录

    keil突然烧录不进去了 一直显示如下界面 解决 xff1a 1 xff0c 拔插连接电脑的仿真器 xff0c 观察设备管理器保证能够识别到此设备 xff0c 如下图 2 除了选择正确的仿真器 xff0c 下图红框一定要勾选 xff0c 我
  • VTK系列教程一:整体架构

    VTK Visualization Toolkit 顾名思义主要用于三维计算机图形学 图像处理和可视化 xff0c VTK到底能做什么 xff1f 这还得从人类的视觉系统讲起 xff0c 现实世界中的物体在光照的作用下 xff0c 其反射的