1. 引言
自十五世纪中期Leonardo Da Vinci用图像描述了投入流动液体中的细小沙粒和木屑的运动情况以来 [1] ,流场成为应用得最广泛、研究得最深入的矢量场之一,流可视化的实验室研究变得越来越精确,微粒的大小和分布得到更严格的控制,摄影技术的发展也使得我们对流体在各种情况下的运动情况有了更多的了解。最近计算流体力学(computational fluid dynamics)应运而生,其研究结果以仿真的形式扩展了我们研究流的动态行为的能力。而流可视化技术则成为流体力学研究的一项重要工具,并在气象分析(天气预报)、航空动力学、海洋学、工业流程分析、爆轰数据模拟、水利工程中的数字流域建设等许多领域中起到很重要的作用。与其他动力系统相比,流体可视化得到了业界更多的关注和研究。在国际上有专门的期刊——The Journal of Flow Visualization and Image Processing来登载流体可视化的相关研究成果。近年来,多种关于流场的简化表示方法被提出,几乎成了IEEE Visualization、ACM Siggraph、Eurograph等国际会议上的一个热点,流体可视化的最新研究成果一般都在这些会议上发表。
2. 基本概念
流体运动是一种典型的非刚性运动,由于大多数流体(如空气、水等)都是透明的,因而其运动模式对于人眼来讲是很难看出的。流体运动图像计算问题即是针对这种特殊图像的运动矢量计算和分析问题。这里主要关心的不仅仅是运动矢量计算和测量的精度和可靠性,而且包括运动矢量的空间分布、亮度模式、运动形式、运动规律等,其分析结果通常以2-D或3-D空间中的速度矢量集的形式来表示。在实验中,可以采用在流体中添加一些其它材料、加热或者引入某些光学方法来辅助研究。而从数学角度,我们知道有经典的流体运动模型——雷诺平均(Navier-Stokes)通过时间和来描述流体的运动模式,但是这一非线性偏微分方程却很难在实际应用中求解,即使采用一些现代的数值解法,也需要用实验数据进行修正才能与实际情况对应起来。
为便于描述,首先给出如下术语的定义 [2] [3] :
定义1. 流线(Streamline):流体的运动会形成一个速度场,与该速度场每一点的瞬时速度都相切的线,可以给出同一时刻不同质点的运动方向。流线上的点符合关于机械能量守恒的Bernoulli规律,流线上点的曲率大小与其法线方向的压力变化有关,于是可以利用流线的曲率计算压力梯度的幅度。
定义2. 脉线(Streakline):从场中某一固定位置投放染料,经过一段时间形成的一条有色线。研究者们经常通过添加染色剂来观察脉线的模式,从而可以设计一些改进措施来减小阻力(drag),大多数阻力都是由运动物体后产生的漩涡引起的,改进的目标是使流体通过运动物体之后流速减慢而不形成漩涡。脉线有利于检测流场中的不连续点,通常线上突然被分离开超常大距离的点都很容易被看到并被进一步用于检测涡流(vortices)、漩涡(eddies)或是流体中的其他变化。
定义3. 时线(等时线) (Timeline):一系列相同流体质点在不同瞬时组成的曲线,在实验中可在某一时刻在流体中垂直于流动方向释放一系列线状介质,通过这些介质的运动变化显示流体的运动,这些介质的运动轨迹称为时线,可用于观察流场畸变、收敛、扩散等特性。
定义4. 迹线(Pathline):一特定质点在场中随时间变化形成的轨迹,需要多个时间点的位置数据来描述。在平稳流中,迹线与流线是重合的,因而迹线的计算一般是针对瞬时变化的流,需要考虑第四维数据参量——时间,这使得迹线的计算较之流线复杂得多,但对于流的时域分析更有帮助。
定义5. 平稳流(定常流、稳定流) (Steady Flow):不随时间变化的流场,其脉线、迹线及流线是重合的。
定义6. 粒子平流(Particle Advection):根据流场计算粒子的运动情况。
定义7. 涡流(Vorticity):流体运动形成的速度域呈回旋状态,即在给定每一点的速度大小和方向角的情况下,速度矢量会盘绕在某一中心形成螺旋状。
3. 相关工作
目前,流可视化的主要研究机构有:美国国家宇航局Ames研究所和计算机科学与工程应用研究所主要针对计算流体力学数据进行研究;奥地利维也纳科技大学、德国柏林大学和意大利航空研究中心主要研究动力学系统产生的流场数据可视化;美国佛罗里达州立大学、美国加州大学、荷兰埃因霍温大学、加拿大西蒙非沙等大学主要从事基础理论研究;国内主要从事理论研究的单位有清华大学、上海交通大学、浙江大学、中科院CAD开放实验室、国防科技大学等;中国工程物理研究院、中国船舶科学研究中心、中国空气动力研究与发展中心等单位结合具体应用背景进行流场可视化的应用研究。
流可视化的算法很多,依据矢量数据的映射方式不同,一般可以分为三大类。
3.1. 几何方法
第一大类是几何方法,主要包括点图标法和矢量线法。
¨ 点图标法:这是一种最简单直观的矢量数据映射方法,直接显示流中各点的速度矢量构成的“速度场”,优点是易实现、速度快,最常用的显示元素是箭头、椎体、有向线段等,所有这些点图标常被称作刺状体(hedgehog, glyph) [3] 。在二维矢量场中,箭头可以较好地反映出矢量大小和方向信息,但是需注意放大后使箭头不能相互覆盖;在三维矢量场中,普通箭头方法容易产生二义性,为克服这一点人们设计了一些特别的箭头,如有阴影的箭头、不透明有一定粗细的三维多边形等。这类方法的缺点是箭头疏密难以把握,而且难以揭示数据的内在连续性和某些结构特征。
¨ 矢量线法:源于实验型流场可视化技术,通常被认为是对矢量场局部细节的中等程度抽象,包括流线、时线、脉线、迹线 [3] 。流线是用于稳定流场的最主要方法,其他方法一般用于非稳定流场,流线的计算可以采用基于流函数的构造方法或者像Euler方法、Euler修正法、二阶Runge-Kutta法、四阶Runge-Kutta法等数值积分方法 [4] [5] ;而迹线、时线和脉线均可通过求解迹线方程求解。与点图标法相比,矢量线能表示场的连续性,绘制效果较好,但是绘制质量依赖于初始点的选取。为充分利用图形学中的光强、色调、消隐和透视投影所提供的三维信息,还可将矢量线扩展为矢量管、矢量带或者矢量面等,而且这些方法可以可直观地显示流的一些特性,如可以用不同颜色、不同宽窄/粗细的色带/管子描述流场的速度的大小,而用色带/管子的走向描述速度的方向。近年来出现了一种被称为“流球”的流可视化技术。这一技术通过计算每一点对周围一个球形区域的贡献来获得一个流场的曲面表示,其中的可视化元素既可以是一小段曲面,也可以是一段圆管。脉线也可以用来描述流场的粒子运动情况,可以用脉线描述流场中粒子的发射起点和运动轨迹。还可以用动画来演示粒子在流体中的运动,称为“粒子动画” [6] [7] 。
几何方法 [6] [8] 生成三维场的可视化图像是离散的,而且使用者不得不自己决定箭头、流线或粒子的起点位置。颜色编码法在几何方法中起着非常重要的作用,对于标量场数据,比如温度、压力、密度等,可以通过在标量值和亚瑟之间建立一一映射关系,用颜色值的变化显示标量值的变化。
3.2. 纹理法
第二大类是纹理法 [8] ,纹理是色彩按一定方式排列组成的图案,兼具形状和色彩属性,纹理映射在图像空间进行,可连续生成具有高分辨率的细致图形。纹理映射技术是计算机图形学最常用的技术之一,利用纹理的灰度相关性来反映流体的运动特性。此类方法提供了流场的全局密集表示,可以很好地描绘流场的细节。典型方法有点噪声、线性卷积和IBFV等硬件加速算法。
¨ 点噪声(spot noise)方法:Van Wijk将纹理引入流可视化 [2] ,他提出的点噪声(spot noise)方法中根据局部流的方向对周围数据点的取向进行调整,并通过在流的方向上绘制一些椭圆形的纹理“斑点”来实现流的可视化,并通过变换和分布控制来反映矢量场的特性。
¨ 线积分卷积法(Line Integral Convolution,简称LIC):在基于纹理的方法中,以Cabral和Leedom提出的线积分卷积法(Line Integral Convolution,简称LIC) [8] 最为典型,该方法对噪声纹理滤波卷积运算生成具有一定方向特征的纹理,即使在矢量方向变化很大的区域也能揭示出矢量的方向,可以较好地表达出矢量场的细节,卷积后的图像具有像素分辨率的连续性,描述流数据场的信息非常丰富,但该方法只考虑了沿速度方向那条折线段上的像素点对该点的作用,没有考虑与速度垂直方向上邻近点的影响,因而高频噪声较大。 这两种方法都可以在一个动态系统中产生对流体动力学特性的整体显示。其他还有少数与纹理相关但又不能简单归为以上的技术,如纹理溅射(Texture Splats)。有很多研究者对LIC算法进行了改进和扩展,提出了像加速LIC、并行计算LIC、曲线网格上的LIC (LIC on curvilinear grids)、三角化表面的LIC (LIC on triangulated surfaces)、多重频LIC (multi-frequency LIC)、有向LIC (oriented LIC)、增强 LIC、染色LIC (dyed LIC)、体素LIC (volume LIC)、超LIC (Hyper LIC)等 [8] 。另外,还有人引入间接像素纹理选择、加/减纹理混合技术等加速其积分和卷积速度;引入非线性扩散滤波来增强原始的低通滤波的效果;加入纹理映射来处理一些时变的、时变的流,用迹线代替流线作为积分线等。由于普通线性卷积生成的纹理偏暗,对比度太差,于是出现了许多纹理增强算法,如直方图均一化、双重卷积、二维高通滤波、偏微分、特征增强、属性映射、特殊区域增加权重等。
¨ 硬件加速算法:具体来说就是在通用计算图形处理硬件的基础上进行编程。由于纹理法与GPU (Graphics Processing Units)所支持的纹理操作紧密结合,许多技术都应用GPU加速实现实时绘制。Jobard 等采用间接像素纹理选择技术设计了一种有效的显示管,Weiskopf等开发了像素纹理单元表征三维时变矢量场的潜力;Van Wijk在纹理平流技术和基于GPU的硬件加速的基础上提出了一种 IBFV (Image Based Flow Visualization) [2] 流场绘制技术,该方法通过向前的投影网格映射实现噪声纹理的流动,并形成新的帧图像,再结合连续帧图像的比例混合实现了流场体绘制;IBFV已被扩展运用到三维曲面矢量场和三维矢量场的可视化;UFLIC (Unsteady Flow LIC)是Shen和Kao提出的一种基于粒子模型的硬件加速算法,并采用二维高通滤波来增强纹理质量,并有效避免粒子连续采样卷积导致的值扩散;随后Liu和Moorhead提出了利用迹线提出了一种新的粒子管理机制AUFLIC (Accelerated UFLIC),极大的加速了算法性能;他们的方法可以顺利过渡到VAUFLIC,G. S. Li给出了这一算法的GPU实现 [8] 。
这里还涉及动态纹理,动态纹理可以看作是二维静态图像纹理在三维时空维的扩展.动态纹理现象并不陌生,我们常发现这些特殊的图像特殊的图像序列如水波纹、气体和烟雾的运动,涡流等。计算机图形学和机器视觉都涉及动态纹理的研究,前者侧重于视频编缉和人造视频方法的研究,后者侧重于运动特征的识别和视频理解等。
相对于其他流场可视化方法,纹理法是一种有效的、多样化的矢量可视化方法,运用非常广泛,而且有许多拓展和优化,它可以致密地表征整个流场,可以表征特定的纹理特征和动态流场,而且没有初始点选取的问题,因而获得了更多的关注,但是这类方法计算复杂度高,因而研究者们在提高算法速度方面开展了许多研究工作,尤其是将纹理法从二维向三维扩展之后,这一问题更为突出。此外,研究者们关注比较多的问题还有:从稳定的矢量场到时变场的扩展、矢量场的大小和其他标量的显示、以及与矢量线技术的结合等。
3.3. 特征法
特征可视化一直是矢量可视化研究的一个热点,所谓特征具有两种含义:一种是指流场中有意义的形状、(拓扑或特征)结构、变化和现象,如涡流、激波等;另一种指分离出来的用户感兴趣的区域。特征可视化就是通过对场中这些特征重点可视化,减少可视化数据映射的数据量,却保持一定的准确性,有助于忽略许多冗余或不感兴趣的数据。
特征法主要有以下求解思路 [9] :
¨ 直接映射,并不抽取特征,而是在直接显示原始数据的过程中通过选择合适的映射技术将特征表现出来。
¨ 特征识别,提取特征数据并识别出用户感兴趣的部分。
¨ 拓扑结构分析法,流场拓扑结构分析理论最早由Helman和Hesselink提出,以临界点理论为基础,认为一个矢量场的拓扑由临界点和连接临界点的积分曲线和积分曲面组成,更一般的矢量场结构分类法由Chong等归纳,临界点在矢量场中即为矢量为零的点,需要计算其位置并分类,具体算法由Globus等设计;最近著名的科学可视化软件Tecplot360已加入了三维数据网格的结合特征抽取功能,标志着流场拓扑结构特征的抽取盒可视化已经达到实用化阶段。
¨ 时变流场的跟踪技术,特征结构可视化主要用于时变流场,一般是寻找、跟踪涡流、涡度等值面、激波等结构特征,然后进行事件检测和结果的可视化显示。Silver和Zabusky等提出了识别、量化和跟踪的方法,采用图像处理、形态学方法从标量、矢量场中提取不定型区域,用质量、重心、极值、体积、温度、压力等对特征量化,并将特征状态划分为产生、延续、消亡、分解和合并,并依据一定的匹配准则在相邻时间片之间建立特征对应关系,实现特征的跟踪与显示,K. L. Ma等针对非结构化网格上三维激波的探测提出了基于Mach数、基于密度梯度及基于方向导数的方法并比较了他们的优缺点和适用范围。
另外,还可选取用户感兴趣的作为特征,Walsum和Post提出了一种自动抽取用户感兴趣区域的技术,先用逻辑表达方式将用户感兴趣的区域定义出来,然后选择出那些满足用户要求的网格点。
自90年代以来,特征可视化在三个方面取得了进展:第一,Helman和Hesselink提出的一阶奇点(简单临界点)识别方法被扩展到了高阶奇点,实现了非线性向量场拓扑的可视化。这一进展把自动抽取特征的范围扩大到了场中较精细的结构,如缓慢弱小的漩涡等,并可定量地描述特征属性,为发展基于选择的特征可视化创造了条件。第二,提出了通过对标量场做向量化处理,增强及抽取标量场拓扑结构的方法。这一进展改变了此前多利用构建等值面提取标量场特征所带来的不够精确和难以选择的缺点,将标量场的特征抽取纳入到向量场特征可视化的统一处理构架。第三,提出了时变可视化的概念和处理时变场可视化的方法,其中Silver和Zabusky给出了时变场可视化的通用框架和算法,并将特征抽取和量化作为跟踪显示对象演变过程的主要部分。这表明带有属性量化功能的特征可视化已可以应用于四维的时变场,并成为当前处理时变场可视化的主要方法。
特征法从大量数据集中抽取仅仅包含特定信息的可视化方法,利用高度抽象的实体描述数据的特征,典型方法以拓扑结构分析法和针对时变场的特定结构抽取为主。单纯的拓扑结构分析法虽然可以把握流场中的本质信息,不过由于高度抽象,往往需要和其他映射方法结合使用 [8] 。
4. 方法描述
张量投票针对的是震荡波形式的气流的可视化,采用的可视化元素是曲面。算法的计算流程如图1所示,输入是流的密度场(density field),首先密度场的局部极值点被检测出来(这一步通过局部极值搜索来实现),然后应用张量投票对密度场进行处理,处理后的张量数据作为极值曲面提取的输入,最后提取出的极值曲面即为最后结果 [10] 。
5. 实验结果示例
流可视化算法的实验数据选取的是Blunt fln实验数据,输入数据如图2(a)、图2(b)所示,其中图2(a)为处于一个平面上的直鳍,流的走向用箭头表示;图2(b)为矢量形式的速度场;图2(c)为计算得出的速度场,显示了四个不同时间的照片,因为两侧是对称的,所以只显示一面 [10] 。
6. 结束语
如何有效地可视化一个数据,依赖于可视化的目标是用于浏览还是细节分析、展示,另外还与数据类型有关。可视化的最终目的是增强用户对数据的认知能力,这要求数据可视化充分展示有效的结果。现有的方法虽然有三大类,但还是以点噪声法和线性卷积法为主流,很多方法都是在这两种方法基础上的改进。可以说,致密的二维和曲面矢量场的可视化已经取得很大进展,利用现有的硬件加速,普遍都能达到实时绘制能力,但绘制质量控制问题解决的不是很好,整体图像的流线清晰度不够。
综合现有工作分析,流可视化未来研究方向有:
1) 纹理法在提高算法速度方面虽然开展了许多研究工作,但由于数据量极大,还没有达到理想的状态,尤其是将纹理法从二维向三维扩展之后,这一问题更为突出。此外,研究者们关注比较多的问题还有:从稳定的矢量场到时变场的扩展、矢量场的大小和其他标量的显示、以及与矢量线技术的结合等。

Figure 1. The flowchart of flow visualization
图1. 流可视化计算流程
(a) (b)
(c)
Figure 2. Blunt fln data and its velocity field. (a) Blunt fin; (b) Velocity field; (c) Computed velocity field
图2. 输入的Blunt fin实验数据及计算的速度场。(a) Blunt fin;(b) 速度场;(c) 计算的速度场
2) 由于流可视化的应用主要集中在航空、水利、气象等领域,因而总体来说,研究的机构受限,国内对流场可视化的研究还比较少,其研究成果距离量化分析的程度还很远。由于可视化结果的好坏与人类的视觉特性和感知特性直接相关,国外已有一些研究者在量化评估方面做了一些理论分析工作 [3] ,但还未成系统,而且各种因素的综合考虑需进一步深入研究。
3) 智能优化与数据挖掘,将人工智能技术应用到科学和工程领域的数据交互分析是当前的一个研究热点 [3] ,但该领域此前的相关研究大多集中于生物和医学数据可视化方面,针对复杂流场的研究还非常少见。原因之一是流场数据的规律比较复杂,流体力学也是一门比较深奥的学科,给智能优化算法研究设立了较高的门槛。从已有资料分析,国外对于智能可视化研究目前还处于标量场的阶段,没有考虑到数据特征和拓扑。
4) 在复杂流场分析中,常规的单一方法已经无法满足实际应用的需求。于是多种可视化方法的结合成为一个有前途的解决思路。
5) 可视化的最终目的是增强用户对数据的认知能力,而且与工程应用密切相关,因而有效提高流可视化技术对工程数据的理解与分析具有极其重要的意义。在这方面特征法体现得比较充分,在未来的研究中,最好能开发出更一般的,使用户能够根据不同的应用领域和用途来表示特征、选择特征的方法。
6) GPU对可视化的发展作用不可小觑,越来越为复杂的可视化映射过程提高有效支撑。如何利用最新的硬件优化可视化绘制过程是一个长期的研究方向。
7) 尽管体绘制技术适用于标量场的可视化,但是也可通过动态绘制推广到流可视化领域,已有人用光线投影法来模拟湍流气体的流动和虚拟烟雾,3D纹理映射技术在全球气象模型中也获得了应用。这些推广使得在同一画面上绘制由向量与标量组成的混合场成为可能。如何将两者结合得更好并将其中标量数据的变化与运动区分开来是一个值得进一步改善的问题。