《vtk9 book》 官方web版 第1章 - 介绍

第1章 - 介绍

可视化将数字转化为图像。

可视化------《 Webster's Ninth New Collegiate Dictionary》中的定义:"2:将信息以视觉形式解释或呈现的行为或过程。"

1.1 什么是可视化?

可视化是我们日常生活的一部分。从天气图到娱乐行业令人兴奋的计算机图形,可视化的例子比比皆是。但是,什么是可视化呢?非正式地说,可视化是将数据或信息转化为图片。可视化利用了人类主要的感官器官------视觉,以及人类大脑的处理能力。其结果是一种简单而有效的传达复杂和/或大量信息的媒介。

术语

用于描述可视化的术语各不相同。科学可视化是计算机科学领域对这一领域的正式称呼,它包括用户界面、数据表示和处理算法、视觉表现以及其他感官呈现,比如声音或触觉[Mccormick87]。数据可视化是另一个用于描述可视化的短语。数据可视化通常被解释为比科学可视化更一般化,因为它涉及到超出科学和工程范畴的数据源。这些数据源包括金融、营销或商业数据。此外,数据可视化这一术语足够广泛,可以包括统计方法和其他标准数据分析技术的应用[Rosenblum94]。另一个最近出现的术语是信息可视化。该领域致力于可视化抽象信息,比如万维网上的超文本文档、计算机上的目录/文件结构或抽象数据结构[InfoVis95]。信息可视化研究者面临的一个重大挑战是开发能够有意义地组织和表示数据的坐标系统、转换方法或结构。

对可视化技术进行分类的另一种方法是检查数据存在的上下文。如果数据具有时空性质(最多三个空间坐标和时间维度),通常会使用科学可视化的方法。如果数据存在于高维空间或抽象空间中,通常会使用信息可视化的方法。这种区别很重要,因为人类感知系统对时空关系非常敏感。用这种坐标系统表示的数据本质上可以被理解,几乎不需要解释。可视化抽象数据通常需要广泛的解释。这并不是说科学可视化和信息可视化之间没有重叠------通常信息可视化过程的第一步是将抽象数据投影到时空领域,然后使用科学可视化的方法来查看结果。投影过程可能非常复杂,涉及统计图形、数据挖掘和其他技术,也可能只是选择原始数据的低维子集。

在本文中,我们使用数据可视化这一术语,而不是更具体的科学可视化或信息可视化。我们认为科学可视化对该领域的描述过于狭窄,因为可视化技术已经超出了科学领域,涉及到了商业、社会科学、人口统计学和一般信息管理的领域。我们还认为数据可视化这一术语足够广泛,可以包括信息可视化这一术语。

可视化的例子

也许最好的可视化定义是通过例子来说明。在许多情况下,可视化正在影响着人们的生活,并实现了几年前令人难以想象的壮举。其应用到现代医学就是一个最好的例子。

计算机成像技术已经成为现代医学诊断的重要工具。这些技术包括X射线计算机断层扫描(CT)和磁共振成像(MRI)。这些技术利用采样或数据获取过程来捕获有关活体患者内部解剖结构的信息。这些信息以切片平面或横断面图像的形式呈现,类似于传统的X射线照片。CT成像使用许多细小的X射线来获取数据,而MRI则结合了大型磁场和脉冲无线电波。复杂的数学技术被用来重建切片平面。通常,许多这样密集的切片被聚集在一起形成一组数据,以完成研究。

根据成像系统获取的信息,一个切片是一系列数字,代表X射线的衰减(CT)或核磁共振的弛豫(MRI)[Krestel90]。在任何给定的切片上,这些数字都排列成矩阵或正则阵列。数据量很大,以至于不可能以原始形式理解数据。然而,通过为这些数字分配灰度值,然后在计算机屏幕上显示数据,结构就会显现出来。这种结构是由人类视觉系统与数据的空间组织和我们选择的灰度值的相互作用所导致的。计算机所代表的一系列数字,在我们看来就是人体的横截面:皮肤、骨头和肌肉。当我们将这些技术扩展到三维时,甚至可以获得更令人印象深刻的结果。图像切片可以聚集成体积,然后可以处理这些体积以显示完整的解剖结构。使用现代技术,我们可以在无需干预手术的情况下观察活体患者的整个大脑、骨骼系统和血管系统。这种能力已经彻底改变了现代医学诊断,并且随着成像和可视化技术的成熟,它的重要性将会增加。

可视化的另一个日常应用是在娱乐产业中。电影和电视制片人通常使用计算机图形和可视化来创造我们在现实生活中无法访问的整个世界。在这些情况下,我们正在想象其他世界,或者我们认为存在过的过去世界。看《侏罗纪公园》和《玩具总动员》等电影很难不对霸王龙产生更深的欣赏,或者不被《玩具总动员》中英勇的巴斯光年所吸引。

变形是娱乐产业中另一种广泛使用的可视化技术。变形是将一个物体平滑地融合到另一个物体中。一个常见的应用是在两张脸之间进行变形。变形还被有效地用于展示汽车设计从一年到下一年的变化。虽然这可能看起来是一种深奥的应用,但可视化技术常常被用来呈现日常天气预报。使用等值线或轮廓线来显示温度、降雨和气压的常数区域已经成为日常天气预报中的标准工具。

可视化的早期应用主要在工程和科学界。从一开始,计算机就被用作模拟弹道轨迹、流体流动和结构力学等物理过程的工具。随着计算机模拟的规模不断增长,有必要将结果转化为图片。数据量超出了人类吸收和理解的能力。事实上,图片是如此重要,以至于早期的可视化是通过手工绘制数据来创建的。今天,我们可以利用计算机图形和计算机硬件的进步。但不管使用什么技术,可视化的应用都是相同的:显示模拟结果、实验、测量数据和幻想;并利用这些图片来交流、理解和娱乐。

1.2 为什么要进行可视化?

在今天的计算机世界中,可视化是一种必要的工具,用来理解信息的洪流。卫星、超级计算机、激光数字化系统和数字数据采集系统以惊人的速度获取、生成和传输数据。地球轨道卫星(EOS)每天传输数千兆字节的数据。激光扫描系统在15秒的扫描中生成超过50万个点[Waters91]。超级计算机模拟整个地球的天气模式[Chen93]。在1995年的前四个月,纽约证券交易所平均每天处理3.33亿笔交易[NYTimes]。如果没有可视化,大部分数据都会无人问津地保存在计算机磁盘和磁带上。可视化为我们提供了一些希望,让我们能够从数据中提取重要信息。

可视化还有另一个重要的元素:它利用了人类视觉系统的自然能力。我们的视觉系统是我们身体中复杂而强大的一部分。我们几乎在做任何事情时都会使用并依赖于它。鉴于我们的祖先生活的环境,某些感官的发展有助于他们的生存,这并不奇怪。正如我们在2D MRI扫描的例子中所描述的,视觉表现更容易处理。我们不仅拥有强大的2D视觉能力,而且我们擅长将不同的视角和其他视觉线索整合到对3D物体或图形的心理图像中。这导致了交互式可视化,我们可以操纵我们的视角。围绕物体旋转有助于更好地理解。同样,我们擅长识别图像中的时间变化。在动画中包含数百帧的情况下,我们有一种惊人的能力来识别趋势并发现快速变化的区域。

随着计算机的引入和生成大量数据的能力,可视化技术为我们充分利用发达的视觉感官提供了可能。当然,其他技术如统计分析、人工智能、数学滤波和抽样理论将在大规模数据处理中发挥作用。然而,由于可视化直接涉及视觉系统和人脑,它仍然是理解和传达数据的无与伦比的技术。

可视化也带来了显著的财务优势。在当今竞争激烈的市场中,计算机模拟与可视化相结合可以降低产品成本并缩短上市时间。产品设计的一大成本是创建和测试设计原型所需的费用和时间。当前的设计方法致力于消除这些物理原型,并用数字等价物替代它们。这种数字原型需要能够创建和操纵产品几何形状,模拟各种工作条件下的设计,开发制造技术,展示产品维护和服务程序,甚至在产品建成之前培训操作人员的能力。在每种情况下,可视化都发挥着作用。目前,计算机辅助设计系统通常用于对产品几何形状和设计制造程序进行建模。可视化使我们能够查看几何形状,并看到特殊特征,比如表面曲率。例如,有限元、有限差分和边界元技术等分析技术用于模拟产品性能;可视化用于查看结果。最近,人体工程学和人体测量学正在使用计算机技术结合可视化进行分析。三维图形和可视化被用于创建培训序列。通常这些被整合到超文本文档或万维网(WWW)页面中。图形和可视化的另一个实际用途是飞行模拟器。相比于真实飞机的飞行,这已被证明可以显著节约成本,并且是一种有效的培训方法。

1.3 成像、计算机图形和可视化

关于成像、计算机图形和可视化之间的区别存在一些混淆。我们提供以下定义。

成像,或图像处理 ,是对二维图片或图像的研究。这包括转换(如旋转、缩放、剪切)、从中提取信息、分析和增强图像的技术。

计算机图形是使用计算机创建图像的过程。这既包括二维的绘画和绘制技术,也包括更复杂的三维绘制(或渲染)技术。

可视化是探索、转换和将数据视为图像(或其他感官形式)以获得对数据的理解和洞察的过程。

基于这些定义,我们可以看到这些领域之间存在重叠。计算机图形的输出是图像,而可视化的输出通常是使用计算机图形产生的。有时可视化数据是以图像的形式存在的,或者我们希望使用计算机图形的逼真渲染技术来可视化物体几何形状。

一般来说,我们可以通过以下三种方式区分可视化与计算机图形和图像处理。

数据的维度是三维或更高。对于二维或更低维度的数据,有许多众所周知的方法;当应用于更高维度的数据时,可视化效果最佳。

可视化关注数据的转换。也就是说,信息会被反复创建和修改以增强数据的意义。

可视化是自然交互的,直接包括人在创建、转换和查看数据的过程中。

另一个观点是,可视化是一个包含探索和理解数据过程的活动。这既包括成像和计算机图形,也包括数据处理和过滤、用户界面方法、计算技术和软件设计。图1-1描述了这一过程。

正如这张图所示,我们可以看到可视化过程专注于数据。在第一步,数据从某个来源获取。接下来,数据通过各种方法进行转换,然后映射到适合呈现给用户的形式。最后,数据被渲染或显示,完成整个过程。通常情况下,随着数据被更好地理解或新模型被开发,这一过程会重复。有时,可视化的结果可以直接控制数据的生成。这经常被称为分析驾驶。分析驾驶是可视化的一个重要目标,因为它增强了整个过程的交互性。

1.4数据可视化的起源

可视化作为一门正式学科的起源可以追溯到1987年的NSF报告《科学计算中的可视化》[McCormick87]。这份报告首次提出了科学可视化这个术语。自那时起,这个领域迅速发展,一些重要的会议如IEEE可视化大会等也逐渐确立了地位。许多大型计算机图形学会议,比如ACM SIGGRAPH,也将大部分议程用于可视化技术。

当然,在1987年的报告引用[Tufte83]之前,数据可视化技术在很多年前就已存在。最早的从业者们意识到了将数据呈现为图像的价值。早期的图形数据表现是在18世纪统计图形出现时创建的。直到数字计算机的出现和计算机图形学的发展,可视化才成为一门可行的学科。

数据可视化和图形技术的未来似乎是爆炸性的。就在几十年前,数据可视化领域还不存在,计算机图形被视为计算机科学更正式学科的一个分支。随着技术的发展和计算机性能的提升,工程师、科学家和其他研究人员开始使用图形来理解和传达数据。同时,用户界面工具也在不断发展。这些因素现在已经融合到一起,我们期望计算机能够适应人类,而不是相反。因此,计算机图形和数据可视化成为了通往计算机和数据的窗口。现在,通过可视化窗口,我们可以从数据中提取信息,分析、理解和管理比以往更复杂的系统。

北卡罗来纳大学教堂山分校计算机科学Kenan教授、IEEE约翰·冯·诺伊曼奖获得者弗雷德·布鲁克斯博士用另一种方式表达了这一观点。在ACM SIGGRAPH'94颁奖典礼上,布鲁克斯博士表示,与人工智能(AI)相比,计算机图形和可视化提供了"智能增强"(IA)。除了围绕这个问题的更深层的哲学问题(例如,人类在计算机之前),这是一个务实的观察。虽然人工智能的长期目标是开发能够在某些应用中取代人类的计算机系统,但在这一领域缺乏真正的进展,这导致一些研究人员将计算机的角色视为人类的增强和助手。在这一观点下,计算机图形和可视化发挥着重要作用,因为可以说最有效的人机界面是视觉的。最近计算机性能和存储的提升只是加速了这一趋势,因为人与计算机之间的界面通常是有效应用计算机的障碍。

1.5这本书的目的

目前已经存在一些定义和描述数据可视化的文本,其中许多使用案例研究来说明技术和典型应用。有些提供了算法或可视化系统架构的高层描述。详细描述留给了学术期刊或会议论文。这些文本的不足之处在于缺乏实践可视化的方法。我们在这本书中的目标是超越描述,提供学习和应用可视化到你自己的应用领域的工具。简而言之,这本书的目的有四个。

1 详细描述可视化算法和架构。

2 演示数据可视化在各种案例研究中的应用。

3 提供应用数据可视化到现实问题的工作架构和软件设计。

4 提供打包在C++类库中的有效软件工具。我们还为解释性语言Tcl、Python和Java提供语言绑定。

综合起来,我们将文本和软件称为可视化工具包,简称VTK。我们希望你能使用这本书了解可视化的基本概念,然后将计算机代码应用到你自己的应用和数据中。

1.6 这本书不是什么

这本书的目的不是提供严格的学术论著,也不打算包含对可视化技术的详尽调查。我们的目标是搭起数据可视化的正式学科和实际应用之间的桥梁,并提供这一新兴技术的坚实技术概述。在许多情况下,我们会引导你参考包含的软件以了解实现细节。你也可以参考适当的参考资料以获取更多信息。

1.7 预期读者

我们的主要读者是创建、分析、量化和/或处理数据的计算机用户。我们假设您具有最基本的编程技能。如果您能编写简单的计算机代码来导入数据并知道如何运行计算机程序,您就可以使用本书附带的软件进行数据可视化。

在撰写本书时,我们还考虑到了初级计算机图形和可视化课程的教育工作者和学生。在更高级的课程中,本书可能不够严谨,无法作为唯一的参考资料。在这些情况下,本书将作为一本辅助教材,并且该软件非常适合作为编程项目和课堂练习的基础。

其他学科的教育工作者和学生也可能发现本书和软件是呈现结果的有价值的工具。例如,数值分析、计算机科学、商业模拟、化学、动态系统和工程模拟等课程通常需要创建大量数据的大规模编程项目。这里提供的软件工具易于学习,并且可以轻松地适应不同的数据来源。学生可以将这些软件应用到他们的工作中,以展示和分析他们的结果。

1.8 如何使用本书

您可以采取多种方法有效地使用本书。具体的方法取决于您的技能水平和目标。以下是三种可能的路径:

新手。如果您缺乏图形、可视化或面向对象原则的基本知识,那么您就是新手。如果您对面向对象原则不熟悉,请先阅读第2章;如果您对计算机图形不熟悉,请阅读第3章;如果您对可视化不熟悉,请阅读第4章。然后继续阅读第12章中的应用研究。然后您可以转到光盘并尝试一些编程示例。在熟悉基础知识并计划开发自己的应用程序之后,再深入了解算法和数据表示。

骇客。如果您习惯编写自己的代码并编辑他人的代码,那么您就是骇客。查看第3章、第4章和第12章中的示例。在这一点上,您将需要获取本书的伴随软件指南(《VTK用户指南》),或者熟悉http://www.vtk.org上的编程资源。然后从光盘中检索示例并开始练习。

研究员/教育工作者。如果您开发计算机图形和/或可视化算法,或者积极参与使用和评估这样的系统,那么您是研究员。如果您在课程中涵盖计算机图形和/或可视化的方面,那么您是教育工作者。请先阅读第2章、第3章和第4章。从文本中选择适当的算法,并检查相关的源代码。如果您希望扩展系统,我们建议您获取本书的伴随软件指南(《VTK用户指南》),或者熟悉http://www.vtk.org上的编程资源

1.9 软件考虑和示例代码

在撰写本书时,我们试图在实践和理论之间取得平衡。我们不希望本书成为用户手册,但我们希望算法的呈现与软件实现之间有很强的对应关系。(注:建议阅读由Kitware, Inc.出版的《VTK用户指南》http://www.kitware.com作为本书的伴随文本。)由于这一理念,我们采取了以下方法:

应用与设计。本书的重点是将可视化技术应用于现实世界中的问题。我们对软件设计问题给予较少关注。其中一些重要的设计问题包括:内存管理、派生新类、浅复制与深复制、单继承与多继承,以及与其他图形库的接口。软件问题在由Kitware, Inc.出版的伴随文本《VTK用户指南》中有所涵盖。

理论与实现。在可能的情况下,我们将数据可视化的理论与我们的实现分开。我们认为,如果理论部分与软件问题和术语无关,本书将作为一个参考工具。在每一章的末尾,都有独立的实现或示例部分,这些部分是与实现相关的。较早的部分是与实现无关的。

文档。本文包含了理解软件架构所必需的文档,包括对象图和简化的对象描述。更多关于对象方法和数据成员的详细文档嵌入在软件中(在.h头文件中),或者在光盘上或http://www.vtk.org上在线获取。特别是,Doxygen生成的手册页面包含了类关系、方法和其他属性的详细描述。

在本文中,我们使用了一些约定。导入的计算机代码使用等宽字体,外部程序和计算机文件也是如此。为了避免与其他C++类库冲突,VTK中的所有类名都以"vtk"前缀开头。方法与变量的区别在于方法后缀加上"()"。(其他约定列在《VTK用户指南》中。)

本文中的所有图像都是使用可视化工具包软件和包含在光盘中或http://www.vtk.org网站上的数据创建的。此外,每个图像都有源代码(有时是C++,有时是Tcl脚本)。我们决定不使用其他研究人员的图像,因为我们希望您能够使用我们提供的每个示例进行可视化练习。每个计算机生成的图像都指示了其来源文件。以.cxx结尾的文件是C++代码,以.tcl结尾的文件是Tcl脚本。希望这些示例可以成为您创建自己应用程序的起点。

要找到示例代码,您需要在三个地方之一进行搜索。标准的VTK发行版包括一个VTK/Examples目录,其中包含许多有详细文档的示例。VTK测试目录VTK/*/Testing,例如VTK/Graphics/Testing/ Tcl,包含本文中使用的一些示例代码。这些示例使用VTKData分发中的数据。最后,一个单独的软件分发,VTKTextbook分发,包含标准VTK发行版中不存在的示例和数据。VTK、VTKData和VTKTextbook分发都可以在包含的光盘和/或http://www.vtk.org网站上找到。

相关推荐
晚夜微雨问海棠呀5 小时前
长沙景区数据分析项目实现
开发语言·python·信息可视化
qq_5895681018 小时前
数据可视化echarts学习笔记
学习·信息可视化·echarts
終不似少年遊*1 天前
pyecharts
python·信息可视化·数据分析·学习笔记·pyecharts·使用技巧
程序猿000001号2 天前
探索数据可视化的利器:Matplotlib
信息可视化·matplotlib
dundunmm2 天前
数据挖掘之认识数据
人工智能·机器学习·信息可视化·数据挖掘
江南野栀子3 天前
数据可视化-1. 折线图
信息可视化·数据挖掘·数据分析
drbool3 天前
AI驱动的数据分析:利用自然语言实现数据查询到可视化呈现
人工智能·信息可视化·数据分析
m0_748256143 天前
前端图表与数据可视化 - 2024 年实战与面试重点
前端·信息可视化·面试
萧鼎3 天前
Altair: 轻松创建交互式数据可视化
信息可视化
无所谓จุ๊บ3 天前
VTK知识学习(27)- 图像基本操作(二)
学习·vtk