(流体力学专业论文)河口水动力数值计算数据处理技术研究.pdf_第1页
(流体力学专业论文)河口水动力数值计算数据处理技术研究.pdf_第2页
(流体力学专业论文)河口水动力数值计算数据处理技术研究.pdf_第3页
(流体力学专业论文)河口水动力数值计算数据处理技术研究.pdf_第4页
(流体力学专业论文)河口水动力数值计算数据处理技术研究.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河口水动力数值计算数据处理技术研究 专业:流体力学 硕士生:胡如根 指导老师:包芸副教授 摘要 数值模拟产生了巨大的数据,研究人员必须对这些数据进行仔细的分析理 解,以便洞察计算结果和发现问题,从而加深对被研究对象的认识与理解。研究 河口水动力的数值模拟数据的直观形象的可视化技术,开发生动的模拟过程和模 拟结果的图形显示的专用软件,有利于减少我们科研人员的重复冗余的劳动,提 高工作效率,也将扩大水动力数值模拟的使用范围,促进水动力的数值模拟朝着 实用化、智能化的方向发展。 本论文在简单介绍了河口水动力数值模拟计算和科学计算之后,主要以河口 水动力数据处理软件设计为中心,介绍了数据处理的理论、算法设计和软件系统 架构。论文中着重介绍了等值线的绘制以及图像处理相关技术,如多媒体文件格 式、v f w 编程和a t lc o m 编程知识。数据处理方法的程序化是本文的关键环 节,文中最后详细介绍了软件系统的各个功能模块的设计和实现,并且在实际应 用中不断改进和优化。 关键字;等值线,v i d e o f o r w i n d o w s ( v f w ) ,可视化,水动力计算 2 s t u d yo fd a t ap r o c e s s i n gt e c h n o l o g y i nf i r t hh y d r o d y n a m i c sn u m e r i c a ls i m u l a t i o n a b s t r a c t n u m e r i c a ls i m u l a t i o nm a yp r o d u c eam a s so fd a t a ,t h e nt h er e s e a r c h e r sm u s t h a v ed i s s e c t i v ea n a l y s i so v e rs u c hd a t ai no r d e rt og e tac l e a ru n d e r s t a n do ft h ed a t a r e s u l ta n dt h e nm a k e s o m ec o n c l u s i o n s ,i nt h i sw a y t h e yc a nh a v ed e e p e r u n d e r s t a n d o v e rt h ei n v e s t i g a t e do b j e c t t h es t u d yo fi n t u i t i o n i s t i ca n dv i s u a l i z e dv i s u a l i z a t i o n t e c h n o l o g ya b o u tt h ed a t a o ff i r t hh y d r o d y n a m i c sn u m e r i c a ls i m u l a t i o n ,a n d d e v e l o p m e n to fs p e c i a ls o f t w a r eu s e dt ot r a c ks i m u l a t i o np r o c e s sa n dd i s p l a yt h e s i m u l a t i o nr e s u l tw i l lg r e a t l yr e d u c e 山er e s e a r c h e r s r e p e a t e dr e d u n d a n tw o r k s o i n c r e a s ew o r k i n ge f f i c i e n c y i tm a ya l s oe x t e n dt h eu s a g eo fh y d r o d y n a m i c sn u m e r i c a l s i m u l a t i o n a n dl e a di tt o1 - u nt oam o r ea n dm o r ep r a c t i c a li n t e l l e c t u a l i z e dw a v t h i st h e s i sh a sab r i e fi n t r o d u c eo v e rf i r t h h y d r o d y n a m i c sn u m e r i c a l s i m u l a t i o n ,t h e ni tf o e l l so nt h es o f t w a r ed e s i g no fh y d r o d y n a m i c sd a t ap r o c e s s , c e n t e r e dw i t ht h i sf o c u s ,i tp r e s e n t st h et h e s i so fd a t ap r o c e s s ,p r o g r a m m i n g a l g o r i t h m i ca n ds o m ei m p o r t a n to fi m a g ep r o c e s s i n gt e c h n o l o g ys u c ha st h ef o r m a to f p o p u l a rm e d i af i l e v i d e of o rw i n d o w sa n dp r o g r a m m i n gw i t ha t lc o m t h e p r o c e d u r a l i z a t i o no fd a t ap r o c e s sm e t h o di st h ek e yp r o c e s so ft h i st h e s i s ,t h i st h e s i s a l s od e t a i l e d l yi n t r o d u c e st h ed e s i g na n di m p l e m e n to fm a i nf u n c t i o n a lm o d u l e s ,a n d t h ep r o g r a m m ei sc o n t i n u o u s l yi m p r o v e da n do p t i m i z e dd u r i n gi t su s a g e k e yw o r d s :c o n t o u r sl i n e ,v i d e o f o r w i n d o w s ( v f w ) ,v i s u a l i z a t i o n h y d r o d y n a m i c sc o m p u t a t i o n 3 第一章绪论 1 1 研究背景和意义 数值模拟带来了浩如烟海的数据,研究人员必须对这些数据进行仔细的分析 理解。以便洞察计算结果和发现问题,从而加深对被研究对象的认识与理解。然 而,仅靠人脑加工分析这些数据非常困难,或者对应研究人员来说这是一个十分 繁琐而又费时的过程,是一种难以承受的重负,有时甚至不可能。因为,随着科 学计算的深入和细化,各种数据不断涌现,有时甚至呈爆炸性增长,许多情况下 远远超出了入脑的分析能力。 本文针对河口水动力数值模拟的具体特点和分析数据的要求,研究河口水动 力的数值模拟数据的直观形象的可视化技术,开发生动的模拟过程和模拟结果的 图形显示的专用软件,以扩大水动力数值模拟的使用范围,促进水动力的数值模 拟真朝着实用化、智能化的方向发展;同时软件中将一系列有规律的数据后处 理操作计算机程序化,减少我们科研人员的重复冗余的劳动,提高工作效率。 1 2 论文工作的主要内容 本论文针对河口水动力计算数据的特点,对数据处理方法进行分析和总结, 主要以水动力计算的数据为基础,应用v i s u a lb a s i c6 0 ,v i s u a lc + + 6 0 作为可视 化编程工具,采用s u r f e r ,开源图像处理软件包f r e e l m a g e ,v f w 等技术实现数据 的可视化。 通过调研及查阅文献,针对河口水动力计算数据及其处理方法的特点和实际 要求,本论文主要包括以下几方面的内容: 1 河口水动力计算,主要论述了河口水动力计算的原理,方法。 2 数据处理方法的总结,主要对现有的各种科学计算可视化处理方法进行 总结、分析,为以后软件设计提供思路。 3 介绍软件开发所用到的各种技术。 4 软件的开发:开发研制相应的应用程序模块,并最终形成较为完整的数 据处理系统。 5 实例的应用与验证、软件的改进和完善:对现有的数据处理进行处理, 与实际相结合,验证该软件的实用性、友好性等,并针对应用中出现的问题,对 该软件系统进一步的改进与完善。 1 3 论文研究思路 针对河口水动力数据处理方法的特点和实际要求,将可视化编程方法用于数 据处理程序的设计,而数据处理方法的程序化是本文的关键环节,为此,设计本 论文的研究思路为: 1 河口水动力计算数据量大,为对数据进行系统的管理和调用,进将计算 的数据处理存入到文本数据文件中,根据实际需要,确定数据文件的格式。 2 在数据处理方法基本原理上,开发相应的程序模块。 3 为了实现数据的可视化,直观的反映计算结果,需要形成一些图件,如 平面等值线,矢量图,渲染图等。为了提高软件应用程序开发效率和水平,需要 最大限度的利用各种开发工具的特长。本次开发中利用了v i s u a lb a s i c 和现有软 件s u r f e r 之间的接口进行编程,这样既可以充分发挥v i s u a lb a s i c 功能强大、开 发效率高等优点,又充分利用了s u r f e r 卓越的绘图能力,缩短了软件开发周期。 通过分析s u r e r 所需要的数据格式,首先开发了数据转换功能,然后在 v i s u a l b a s i c 下将现有软件调入,用转换后的数据进行绘图。 基于上述研究思路,河口水动力数据处理流程框架图如图所示: 接口技术 _ | _ + 土 三三) 图1 - 1 数据处理流程框架 第二章数据处理方法和基本原理 河口水动力数据处理的核心是计算数据的可视化,为了实现计算数据的可视 化,我们要研究相应的符合我们要求的可视化图形算法以及实现方法,为我们的 软件设计提供直接的理论基础。本章在简单地介绍了科学计算可视化的发展和应 用后,针对河口水动力计算数据的独有的特点,详细地介绍了计算数据的预处 理一一格网化数据,并且就二维平面数据场可视化如等值线图的绘制原理和算法 等进行了详细介绍。 2 1 科学计算可视化 随着计算机技术的发展,特别是计算机图形学和数字图像处理的发展,二十 世纪八十年代未出现的科学计算可视化很好的解决了这个问题。科学计算可视化 使人与数据,人与人之间实现图像通信,对计算过程实现引导与控制并观察其影 响,极大地提高了科学计算数据处理的速度和质量,使科研人员摆脱了分析处理 大量数据的苦恼。 2 1 1 科学计算可视化概述 绘图在海洋研究中有着广泛的应用,是业务和科研中必不可少的一种手段。 它可以形象、直观地把各种实际形式场、预报场以及诊断物理量场表示出来,并 且可以对它作出各种各样的统计分析,从中发现一些很有用的信息以及规律。绘 图工作如果仍由人工完成,不仅劳动强度很大,也不利于提高工作效率。 近几十年来,由于计算机技术的空前进步,计算机容量、速度急剧提高,再 加上流体力学数值计算技术的发展,为计算复杂流场提供了可能。计算结果的不 断增加,使得整理、分析和加工计算数据越来越繁琐,另一方面,由于物理问题 及几何边界的复杂性,以及计算流体力学发展水平的限制,使得复杂流场的计算 不可能一次完成,而需要大量的调试和试算过程,减少调试过程及试算次数将有 助于缩短研究周期。解决这些问题的最有效方法是采用计算结果可视化技术。八 十年代中期,计算机图形学、大规模集成电路技术和计算机网络技术突飞猛进地 7 发展,为计算流体力学可视化的形成与发展创造了条件。 科学计算可视化( v i s u a l i z a t i o ni ns c i e n t i f i cc o m p u t a t i o n ,v i s c ) 是对计算及数 据进行探索,以获得对数据的理解与洞察,把计算中所涉及的和所产生的数字信 息转变为直观、以图形或者图像信息表示的随时间和空间变化的物理现象或物理 量,同时还提供视觉交互手段。直观地讲,科学计算可视化是研究如何把科学数 据,无论是通过计算还是测量获得的数据,还是从卫星传送回来的图像,以及医 学图像转换成可视地能帮助科学家理解地计算方法。简言之,科学计算可视化是 运用计算机图形学和图像处理技术,将科学计算过程中及计算结果的数据转换为 图形及图像在计算机屏幕上显示出来并进行交互处理地理论、方法和技术。 科学计算可视化可在三个层次上实现,对应于三种处理方式: 1 事后式,把数据计算过程和图形显示过程分为两个阶段完成,其间 发生交互作用。这是目前普遍采用的一种方式。 2 跟踪式,数据计算进程和图形显示过程混为一体,图形显示实时进 行,以便研究者能够及时了解计算情况,决定是否需要中断计算计 算。 3 驾驭式,它不仅要求实时显示计算结果,还要提供必要的手段使研 究者能够实时的控制计算进程,如在计算过程中增加或组合网格, 修改计算参数等,这种方式对计算机硬件、软件和算法的要求都较 高,而且还要求软件开发者具有广泛的知识及较高的编程技巧,该 方式目前在国外也处于研究开发阶段。 为了实现这三个层次的功能,科学计算可视化所涉及的主要技术有: a 标量、矢量和张量场的可视化; b 数据场和流场的动态图形显示; c 多参量数据场的可视化; d 模拟和计算过程的交互控制与引导; e 面向图形的程序设计环境; f 高性能分布式计算环境; g 图形生成和图像处理的并行算法: h 图形生成和图像处理的特殊硬件结构; 8 i 图像传输的宽带网络协议; j ,虚拟显示技术在科学计算可视化中的应用。 近年来,科学计算可视化的理论和方法日趋成熟并得到了广泛的应用,涉及 自然科学及工程技术的各个领域。它能帮助研究人员理解计算与实验所获得的大 量数据,并能通过人机交互达到控制计算过程、改进计算结果的目的。 2 1 2 科学计算可视化的应用 可视化已成为近年来计算机界最引人注目、发展最快的领域之一,涌现了大 批可视化产品,主要包括通用科学计算可视化软件系统和专用科学计算可视化软 件系统,在可视化通用软件系统中,比较著名的有s t a x d e n tc o m p u t e r 公司的 a v s ( a p p l i c a t i o nv i s u a l i z a t i o ne n v i r o m e n t ) ,s g i 公司开发的i r i s “:e x p l o r e r 以及 t a r a v i s u a l 公司开发的a p e ( a n i m a t i o n p r o d u c t i o n e n v i r o m e n t ) 。专用的科学计算 可视化软件系统很多,针对不同的应用领域,产生了各自的可视化软件,如气象 数据可视化t r i t o n 、大气及流体可视化软件p a t h f i n d e r 、分布式虚拟风洞v w n 等产品,国内在科学可视化的研究和应用上也取得了一定的成效,主要有中科院 自动化所国家模式识别实验室医学图像处理分析研究小组设计开发的v i s u a l i z e r 可视化系统,他主要是为了实现对医学图像的处理、分析和可视化设计的综合性 系统;浙江大学c a d & c g 国家重点实验室开发的g i v e ( g e n e r a li n t e r a t i v e e n v i r o n m e n t ) 通用交互式可视化软件,它作为一个研究和开发可视化应用的软 件工作平台,涉及到可视化用户界面、自动代码的生成、具体可视化算法、分布 式图形处理、交互式图形学等多方面的研究工作。 计算机图形图像处理能力的提高,使驾驭式计算得到了广泛的应用,提高了 计算的效率。人工智能在可视化方面的应用,可增强可视分析的能力,大大减轻 分析工作的劳动强度。n a s a 与s t a n f o r d 大学正合作开发能从流场中自动识别和 抽取关键特征的专家系统。 虽然许多可视化技术和方法可以应用于不同领域中,但某一领域中可视化的 实现与这一领域中的特点还是紧密相联系的,如反映具体物理现象及过程的图形 图像,满足具体分析要求的可视化手段、工具。也正因为如此,才需要有众多的 针对特定研究领域的专用可视化工具。 9 计算流体力学一直是可视化应用研究的一个重要领域。1 9 8 5 年美国n a s a a m e s 研究中心就开发了p l o t 3 d 、s u r f 和g a s 系统软件,用于计算空气动力 学仿真软件n a s 的后处理,p l o t 3 d 将计算结果转换成振动波,压力分布及质 点跟踪的图形图像,s u r f 进一步对明暗、颜色等进行处理增强图像,最终由 g a s 生成动画,直观显示所描述的物理过程。人们曾使用它发现了航天飞机主 发动机热气复合管中存在的高压和高湍流。 2 1 3 科学计算可视化的过程 在科学研究领域,研究的主要目的是理解自然的本质。科学家要达到这个目 的,要经过从观察自然现象到模拟自然想象并分析模拟结果的过程。在分析实验 结果的过程中,可视化是一个十分重要的辅助手段。可视化的过程可进一步细化 为以下四个步骤: ( 1 ) 过滤:对原始数据进行预处理,可以转换数据形式、滤掉噪声、抽取 感兴趣的数据等: ( 2 ) 映射:将过滤得到的数据映射为几何元素,常见的几何元素有:点、 线、面图元、三维体图元和更高维的特征图标等; ( 3 ) 绘制:几何元素绘制,得到结果图象; ( 4 ) 反馈:显示图象,并分析得到的可视结果; 可视化的上述四个步骤是一个周而复始的循环迭代的过程。由于研究人员并 不知道原始数据集中那些部分对分析更重要,得靠实践探索,因此整个分析过程 是一个反复求精的过程。 2 2 数据预处理 在水动力计算中其网格划分是根据实际地形和计算需要划分的,并不是沿规 则格网分布的,这样的数据我们可以称为任意离散点数据,在数据的可视化过程 中,这种计算数据不能直接用于可视化,而是要转化可视化所需要的特定的数据 格式,因此需要进行数据预处理。数据可视化其中重要得一线就是等值线的绘制, 对等值线的追踪是基于单元格的网格序列化法,因此,对离散点数据也要对它进 行网格化处理,因此这一节里主要是为绘制等值线服务的数据预处理一一格网化 i o 数据。 格网化数据是把以x y z 数据文件格式表示的、通常是不规则分布的原始数 据点,经过数学处理,构筑一个规则的空间矩形网格的过程。原始数据的不规则 分布,造成缺失数据的“空洞”,格网化则用钋推或内插的算法填充了这些“空 洞”。大多数情况下,采用加权平均插值算法,即所有其它参数相等的条件下, 愈靠近结点( 计算出的规则点) 的数据( 原始数据点) ,对计算该结点的z 值贡 献愈大。 z 2 1 规则格网数据格式 规则格网数据的分布是按一定规律分布的,所以他的坐标值是隐含的,在 文件头部需要给出格网的范围、行数、列数、行间距、列间距,而在文件中只要 按一定规则给出数据的属性值即可。这个规则是事先约定的,在s u r f e r 中对规则 格网数据的读写是以行为基准,即先存( 或读) 第一行的第一列的属性,然后是第 一行的第- - y u 一次类推。 s u r f e r 中规则格网的数据格式如下: 数据类型f 2 】 x m i n 】【y m i n 】【x m a x 】 y m a x 【n 】【m 【d x 】【d y 】 v o , o j 【v o , l 】【v u , 2 】【v o , 。3 【v o 口2 】【v 0 n 一1 】 【v 1 0 】 v 2 ,o 】、 、 、。 、 、 v o 】、 【v m 2 , 0 】 、 【v 。1 ,0 】【v m 1 n 1 1 其中x m i n 、x m a x 为x 方向上的最小值和最大值,y m i n 、y m a x 为y 方向上 的最小值和最大值,n 为列数,m 为行数,d x 为列问距,d y 为行间距v 为格网 数据在第i + l 行,j 十1 列的属性值。 如果想要查看s u f e r 产生的g r d 文件的数据,在格网化数据的时候,选择保 存为a s c i i 格式的文件,然后用写字本打开即可。 2 2 2 离散点数据的拟合格网化 所谓离散点数据的拟合处理是根据目前离散点数据的坐标以及属性信息,在 空间拟合出一属性曲面,作为原曲面的近似,然后用拟合后的曲面的等值线做为 原曲面的等值线近似。若想在拟合后曲面上抽取等值线信息,仍然要以网格为基 础按规则格网数据等值线生成的方法对等值线进行追踪。 设在x - - y 平面有一个已知的数据点集 ( x i ,y i ,v i ) ,其中i = 1 ,2 ,n ,以 x i 的最小值做为区域的左边界,以x i 的最大值做为区域的右边界,以y i 的最小值 做为区域的下边界,以y t 的最大值作为区域的上边界,这样取得一个矩形区域。 在这个区域上分别在x 方向和y 方向上按一定的间距进行矩形格网的划分,一般 格网的密度要根据各种时间情况来确定,设( a ,b ) 为某个网格点,现以双二次多项 式 f ( x ,y ) = c l + c 2 x + c 3 y + c 4 x y + c s x 。+ c 6 y 2 做为拟合函数,介绍曲面的拟合方式。 这里c 1 、c 2 、c 3 、c 4 、c 5 、c 6 是和( a ,b ) 有关的待定系数,现在我们用 加权最小二乘法确定这些待定系数,然后拟合出属性值v 。对于权系数的选择, 一般是按下面的公式: = 五j 忐 这里的小数q 是个正数,是为了防止点( x ,y ) 太靠近( a ,b ) 会产生溢出而设置。若要 求c 1 、c 2 、c 3 、c 4 、c 5 、c 6 ,设一函数: q = ( ,( 薯,y ;) 一k ) 2 彬 要是o 达到最小,必须使o q o c 。= 0 , i ;1 ,2 ,3 j l ,由此得: a q a c , ,2 罗( , ,咒) 一k ) 彬z 0 _ , o q o c z 一2 艺( , ,y 】) 一) 噬t 。o o q o c j ;2 艺( ,“,咒) 一k ) 彬y ,= o o q o c 4 = 2 ( , ,儿) 一k ) 彬y i = o o q 0 c s ;2 ( ,( 毛,咒) _ ) 彬x z i 2 ;o o q o c 6 2 ( ,“,咒) 一k ) 彬y 。2 ;o 这里记矩阵c 为: ( c ”c 2 、c 3 、c 4 、c 5 、c 6 ) 7 矩阵v 的转置矩阵为: 蓦彬k 蓦喇薯骞喇致善n 噬k t y ,善n 喇蕾2 砉彬k y 。2 矩阵e 为: 善彬再彤薯善彬y z 善彬蕾y :善彬玉2善彬m 2 善彬气善眠2善讳咒善彬而2y f 善彬3荟彬再m 2 善彬) ,tw i x i y i 善彬m 2 善矸y ,2 善彬五2 只著彬疗 蓍彬蕾炸善暇薯2 m 茎h 儿2 善彬鼍2 ) ,r 2 善彬而3 咒善讳仁y r 3 善2 善彬宵蓍彬鼍2 y ,荟彬焉3 咒善彤置4 善磁蕾2 y ,2 善彬弘2 善w 囊y t 2 善联y 1 3 善讳y f 3 善彬2 y :2 善暇,t 4 方程的矩阵向量形式为:e c = v 解矩阵方程,得到系数c 1 、c 2 、c 3 、c a 、c 5 、c 6 矩然后把各个网格点上的 坐标代入,算出网格点上的属性值的模拟值,得到规则格网数据。 1 3 2 2 3 离散点数据的插值格网 插值的任务就是根据己知观测点,为物理量建一个简单连续的解析模型,以 便能够根据该模型预知或推测该物理量在非观测点处的特性。插值的方法很多, 最常用的是距离加权法。 和上一小节讨论的问题相同,在x y 平面有一个己知的数据点集 ( 。y ,v i ) ) , 其中i = l ,2 ,n ,同拟合一样,先对区域进行矩形网格的划分。对网格上的 点p ( a ,b ) ,这n 个点到p 的距离为r l ,r 2 ,r 。,p 点的属性值受这1 1 个点的影响, 各个点对点p 的影响程度和它们到点p 的距离成反比。我们令尺;,;( i = 1 n ) , 则点p 处的属性值为:= 兰孑,我们对网格进行从左向右,从下到上的遍 历,求出每一个网格点的属性值,最后就完成了从离散点到规则格网数据的变换。 2 3 二维平面数据场的可视化方法 二维数据场是科学计算可视化处理的最简单的一类数据场,二维数据场是在 某一平面上的一些离散数据,可看成定义在某一平面上的一维标量函数 f - - f ( x ,y ) 。二维数据场可视化的方法主要有颜色映射法、等值线、立体图法和层 次分割法等,这些方法的原理都比较简单。 2 3 1 等值线生成的研究方法 用计算机生成等值线其实就是利用已知数据点通过插值得出我们关心的属 性值的位置,然后把它们变换成图。在等值线分析中,一般我们这样描述那些已 知的数据点:p ( x ,y ,v a l u e ) ,其中x 为点的x 坐标健,y 为点的y 坐标值,v a l u e 为这一点的属性值。 等值线生成程序的理论基础是计算机图形学的空间插值理论,其基本假设 是:空间位置上越靠近的点,越有可能具有相似的特征值;而距离越远的点,其 特征值相似的可能性越小。并认为这些特征值的空间变化是平滑的,且服从某种 分布概率和统计稳定性关系。对于不同的应用,这种分布概率和统计上的稳定性 关系是不同的,因此相应等值线生成算法也各不相同。一般来说,原始数据在采 1 4 集时的采样频率要满足采样定理,即相邻采样点之间的属性值在空间上服从均匀 分布,所以通用的等值线生成程序中等值点的判断是基于线性插值原理。 在可视化技术中常采用的等值线抽取方法有两种:网格序列法和网格无关 法。网格序列法的基本思想是将原始数据构成网络,按网格单元的排列次序,逐 一处理每一单元,寻找每一单元内相应的等值线段,在处理完所有单元后,就自 然生成了该网格中的全部等值线。网格无关法通过给定等值线的起始点,或先求 出起始点,利用该点附近的局部几何性质,计算该等值线的下一点,然后利用已 经求出的新点,重复计算下一点,直至到达区域边界,或回到原起始点。网格无 关法不能充分利用所有的原始数据,精确度较低。 下面详细说明等值线生成算法的主要步骤如下: 第一步:逐个计算每一个网格单元与等值线的交点; 怎么知道在单元的每一棱边是否存在等值点昵? 根据空间插值理论,主要看 构成棱边的两数据点的属性值和待求等值线的属性值之间的关系。如果一个数据 点的属性值大于待确定的属性值,而另一个数据点的属性值小于待确定等值线的 属性值,则必存在等值点。 设棱边为p l p 2 ,p l 的属性为p 1 v a l u e ,点p 2 的属性为p 2 v a l u e ,待求等值 点的属性为v a l u e ,如果- ;( p 1 v a l u e - v a l u e ) 4 ( p 2 v a t u e - v a l u e ) o ,则棱边p l p 2 上没有等值点。还有一 种情况是( p 1 v a l u e - v a l u e ) ( i 2 v a l u e - v a l u e ) = 0 ,在这种情况下,等值线会通过点 p 1 或p 2 ,即等值线通过网格交点,这样的点叫奇点。奇点会增加程序处理的困 难,因此,在本程序中,对这样的等僵点做了一些小小的移动,移动的距离是区 域范围的万分之一。这样,既不会影响等值线的绘制,又可避免因此而在等值线 追踪时带来的许多麻烦。 对于规则网格数据每个矩形单元的棱边都是垂直或平行的,如果垂直棱边 p l p 2 上存在等值点,则所求等值点的坐标为: x 。p 1 x : y = p 1 y + ( v a l u e p 1 v a l u e ) 。( p 2 y p 1 y ) ( p 2 v a l u e p 1 v a l u e ) ; 如果平行棱边p l p 2 上存在等值点,那么所求等值点坐标为: x = p 1 x + ( v a l u e p 1 v a l u c ) 4 ( p 2 y p 1 y ) ( p 2 v a l u e p 1 v a l u e ) ; 1 s y = p 2 y : 第二步连接该单元内等值线的交点,生成该单元内的等值线线段; 网格单元与等值线的交点计算完后在在单元内连线,连线情况见图2 - 1 ,。 ( c ) 图2 - 1 单元内等值线连接情况 在图( d ) 的情况下,实际上存在着两种连接方式的二义情况,不可能判断哪 种连接情况是正确的。为了避免这种二义性情况,可采用单元剖分法,算法的基 本思想是利用对角线将矩形单元分成四个三角形单元,求出中心点的函数值,等 值线的抽取直接在三角单元中进行。三角单元中至多只包含一条等值线,从而避 免了二义性问题,但处理单元数目增加了四倍。 + 一 +园函 因圆 因函函因 图2 - 2 剖分法连接情况 上 第三步由一系列单元内的等值线线段构成该网格中的等值线; 等值点虽然它们的属性值是相同的,但他们却有可能属于同一条分支等值 1 6 线,也可能属于不同的分支等值线。什么是分支等值线呢? 对于属性值为v a l u e 的等值线,在拓扑关系上可以表现为一条或数条相离的曲线,这样曲线就称为分 支等值线,如图,这些分支等值线有的等值点全部在区域内部,这时它表现为一 个闭合的线,称为闭合等值线。如果这些分支等值线的起点和终点落在待处理区 域的边界上,这时它在图上表现为一条不闭合的线,称为不闭合等值线或边界等 值线。那么怎么把它们一一绘制处理呢? 这就用到了前面讨论过得网格序列法。 将等值点连成一条条等值线的过程也叫等值线的追踪。 图2 - 3 分支等值线图 2 3 2 颜色蛱射方法 可视化系统中,常用颜色表示数据场中数据值的大小,即在数据与颜色之间 建立一个映射关系,把不同的数据映射为不同的颜色。在绘制图形时,根据场中 的数据确定点或图元的颜色,从而以颜色来反映数据场中的数据及其变化。 可视化系统处理的数据一般为离散网格数据,网格之间的数据采用插值的方 法计算。可视化系统的绘制模块一般不直接插值计算网格间的数据,而是利用计 算机硬件提供的功能直接对颜色的r g b 基色值进行插值计算,这样有助于提高 1 7 绘制速度。但也由此引起了误差。由于大部分颜色映射模型都采用非线性的映射, 对颜色的线性插值实际上是对数据的非线性插值,从而造成误差,导致完全错误 的颜色。实践中可采用颜色表方式来解决这一问题。由于颜色表索引与数据问是 完全线性的映射关系,因而不会引起插值误差。 2 3 3 向量场可视化方法 所渭标量,是指只有大小而没有方向的量,比如长度、质量等;向量,也叫 矢量,是既有大小也有方向的量,如力、速度等。向量场的可视化可以简化为标 量,这种方法不是直接对向量进行可视化处理,而是将其转换为能够反映其物理 本质的标量数据,然后对标量数据可视化。例如,向量的大小,单位体积中粒子 的密度、等。这些标量的可视化可采用常规的可视化技术:等值面抽取、体绘制 等等。另外一种更常用的向量场的可视化方法是一一箭头表示方法。 箭头表示方法可以同时表示出向量的大小和方向信息,其方法是在向量场 中有限的离散点上显示带有箭头的有向线段,用线段的长度表示向量的大小,用 箭头表示其方向。这种方法适用于2 d 向量场。对于二维平面上的三维向量,也 可用箭头来表示,箭头可指向显示表面或由显示表面指出。也可用这种方法表示 定义在体中的3 d 向量,还可采用光照处理或深度显示以增加真实感。可用向量 的颜色表示另一标量信息或另一个变量。关于3 d 可视化技术这罩不作介绍。 1 8 第三章软件系统所应用的技术 前面一章里主要讲述了数据处理的理论方法。在这一章里主要从计算机软件 设计的角度出发,介绍软件设计方面用到的技术,只要是面向对象的程序设计和 a t cc o m 组件编程,最后详细介绍了图像处理编程相关知识。 3 1 面向对象的程序设计 面向对象的程序设计1 0 0 p ) 是继承和发展了结构化程序设计而产生的一种 新的程序设计思想,它是一种模仿人类建立现实世界模型的方法( 包括概括、分 类、抽象和归纳1 进行软件开发的思想体系。它运用面向对象的观点来描述显示 世界,然后用计算机语言来描述并处理该问题。这种描述和处理是通过类与对象 实现的,是对现实问题的高度概括、分类和抽象。面向对象的程序设计的基本特 点有;抽象、封装、继承和多态。他们同时也是面向对象方法的四种对象化属性。 面向对象设计所拥有得数据抽象和信息隐蔽等机理以及面向对象语言的继 承性、封装性、多态性等特性为软件开发提供了理想得模块化机制和比较理想得 软件可重用成分。当遵照面向对象方法学得思想进行程序设计时,主要按以下步 骤进行: 1 面向对象钓分析( o o a o b j e c to r i e n t e d a n a l y s i s ) ,它的任务是了解问题 域内该问题所涉及的对象、对象间的关系和作用( 即操作) ,然后构造该 问题的对象模型,力争这个“模型”能真实地反映出所要解决的“实质 问题”。在这一过程中,抽象是最本质、最重要得方法。针对不同的问题 性质选择不同的抽象层次,过简和过繁都会影响到对问题的本质属性的 了解和解决。 2 面向对象的设计( o o d - - o b j e c t o r i e n t e dd e s i g n ) ,即设计软件的对象模 型。它的一般过程为: ( a ) 定义对象的属性及描述。根据所应用的面向对象软件开发环境的功 能强弱不等,在对问题的对象模型的分析基础上,可能要对它进行 一定的改造,但应以最少改变原问题域内的对象模型为原则。 1 9 ( b ) 在软件系统内设计各个对象、对象间的关系( 如层次关系、继承关 系等) 。 ( c ) 定义对象间的通信方式( 如消息模式) 。 ( d ) 确定每个对象的状态。 总之是设计各个对象“应做些什么”。 3 面向对象的实现。所谓实现是指软件功能的实现。包括:每个对象的内 部功能的实现:确立对象哪一些处理能力应在哪些类中进行描述;确定 并实现系统的界面、输出的形式及其它控制机理等。总之是实现在面向 对象的设计阶段所规定的各个对象所应完成的任务。 当在某一个系统中有机的贯彻及实现一个完整的面向对象的程序设计环境 时,还必须考虑到以上三个各阶段的衔接关系及其它一些支撑工具。不同的系统 可以采用不同的方案和规范。下图是一种面向对象的软件开发模式。 问 题 域 问题+ 嵩 斗焉 十兹争卜程序 图3 - 1 面向对象软件开发模式的一个实例 3 2 创建a t l c o m 组件 c o m 是构造二进制兼容软件组件的规范,即c o m 不是编程语言、代码库 或编译器,而是个二进制规范,可以建立能够相互通信的组件,不管这些组件用 什么编程语言和工具建立,c o m 可以让你专心开发应用程序,让编译器制造商 去建立编译的组件。由于组件是自给自足的,很容易替换。这种思想很精彩,因 2 0 为组件可以一次编写,到处使用,然后可以只更新或替换这个组件而纠正或改进 该组件的功能。 按照c o m 的标准可以使不同语言工具写成的组件协同工作和通信,系统开 发中的每一个基本模型或者基本方法均可以作为一个组件单元进行模块开发,这 中模式增加了组件代码的可重复利用性,节约了软件开发的人力资源,同时也便 于开发后的代码维护和软件系统的升级。 以下这些概念是c o m 的基础: 接口对象用来公开其功能的机制。 接口是对象向外界公开其功能的方法。在c o m 中,接口是指向由对 象实现的函数的指针表( 类似于c + + v t a b l e ) 。该表表示接口及其指向的函 数是该接口的方法。对象可以公开它所选择的任意多个接口。每个接口都 基于基本的c o m 接口 u n k n o w n 。i u n k n o w n 的方法允许定位到由该对象 公开的其他接口。 i u n k n o w n 一作为所有其他接口之基础的基本接口。它通过c o m 实现对 引用计数和接口查询机制的运行。 - 引用计数一对象( 严格地说是接口) 用来决定它何时不再被使用并因此 可以自由地移除自身的技术。 o u e r y i n t e r f a c e 一用于查询对象的给定接v i 的方法。 封送处理一使对象能够跨越线程、进程和网络边界使用并允许其具有位 置独立性的机制。 聚合一一种使一个对象可以利用其他对象的方法。 趟m 一- - a c t i v e x t e m p l a t e l i b r a r y ,是m i c r o s o f t 在1 9 9 5 年推出了一种全新 的c o m 开发工具。使用a t 能够快速地开发出高效、简洁的代码,创建轻量 级的,自包含的,可复用的二进制代码,不用任何附加的运行时d l l s 支持,同 时对c o m 组件的开发提供最大限度的代码自动生成以及可视化支持。目前, a t l 已经成为m i c r o s o f t 标准开发工具中的一个重要成员,日益受到c + + 开发 人员的重视,越来越多的程序员已经走进或正在走进c o m 的编程世界 在用a t l 技术时,我们不用去敲入或关心那些模板中的尖括弧。因为a t l 本身带有a t l 对象向导。对象向导产生大量基于a t l 模板类缺省的对象实现 代码( 即框架代码) 。这些缺省的对象类型如附表一所列。a r l 对象向导允许任 何人快速建立c o m 对象并且在分分钟之内让它运行起来,不用去考虑c o m 或a t l 的细节问题。 下面是创建图像处理组件( i m g p r o ) 的过程: 第一步:打丌m i c r o s o f tv i s u a lc + + 创建a t l c o m 工程,在工程建立的向导过 程中选择m f c 支持。 第二步:在项目工程中选择类视图,添加a r lo b j e c t 对象,向导如图3 2 ,向 导完成后,在i m g p r o i d l 文件中自动加入了类接口声明代码,同样地 在类接口中加入,对象的接口函数,并且在c p i e d e a l 中加入实现接口 代码,并且编译工程。 图3 2 添加p i c d e a l 对象 第三步:打开v i s u a lb a s l i c 建立v b 测试工程,添加对i m g p r o 库的引用,并且 建立i m p r o 库中需要测试对象的实例,编写程序显现对该组件的测试 即可。 3 3 图像处理相关技术 3 3 1 设备无关位图( d i b ) d i b 是d e v i c e i n d e p e n d e n t b i t m a p ( 设备无关位图1 的缩写,它自带颜色信息, 因此调色板管理非常容易。任何运行w i n d o w s 的计算机都可以处理d i b 它通常 以b m p 文件的形式被保存在磁盘中。 1 、b m p 文件中d i b 的结构 b m p ( b i t m a p f i l e ) 图形文件是:w i n d o w s 采用的图形文件格式,在w i n d o w s 环境下运行的所有图象处理软件都支持b m p 图象文件格式。w i n d o w s 系统内部 各图像绘制操作都是以b m p 为基础的。 b m p 文件由文件头、位图信息头、颜色信息和图形数据四部分组成,如图 3 - 3 。文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信 息;位图信息头包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图 像是否压缩、图像所用的颜色数等信息。颜色信息包含图像所用到的颜色表,显 示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个 像素用2 4 个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。 文件中的数据块表示图像的相应的像素值。需要注意的是:图像的像素值在文件 中的存放顺序为从左到右,从下到上,也就是说,在b m p 文件中首先存放的是 图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则 是按照先左边后右边的的顺序存储的;另外一个需要注意的是:文件存储图像的 每一行像素值时,如果存储该行像素值节数为4 的倍数,爱口正常存储,否则,需 要在后端补o ,凑足4 的倍数。 b f l y p e = ”b m ” b f s i z e b f r e s e r v e d l b f r e s e r v e d 2 b f o f f b i t s b i s i z e b j w 讨l h b i h e i g h t b i p l a n e s b i b i t c o u n t b i c o m p r e s s i o n b i s i z e l m a g e b i x p e l s p e r m e t e r b i y p e l s p e r m e t e r b i c i r u s e d b i c l r l m p o r t a n t 位图文件头 位图信息头 调色板 d i b 图像数据 单色d i b 有2 个表项 1 6 色d i b 有1 6 个表项 2 5 6 色d i b 有2 5 6 个表项 真彩色d i b 没有调色板 每个表项长度为4 字节( 3 2 位) 像素按照每行每列的顺序排列 每一行的字节数必须是4 的倍数 图3 - 3b

温馨提示

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

评论

0/150

提交评论