科学计算可视化

2024-09-28

科学计算可视化(共7篇)

科学计算可视化 篇1

早在20世纪80年代, 科学计算产生了大量的数据, 但限于技术的发展, 很多数据得不到有效的处理, 严重影响了科学技术的交流与发展。1987年2月, 美国国家科学基金会在华盛顿召开的图形图像专题研讨会上, 首次提出了ViSC (VisualizationinScientificComputing) , 研究者们在分析计算机生成的数据的同时, 还能了解在计算处理过程中数据的变化趋势。

1 ViSC的意义

ViSC是指将科学计算过程中产生的信息 (包括数据及计算结果) 转化为图形或图像的形式, 并进行交互处理的理论、方法和技术。ViSC将大量看似没多大联系的离散数据以图形图像的形式直观地显示出来, 亦即将人无法直接观察的数据转变为人可以接受的视觉信息, 使观察者能够准确快速地发现隐藏在数据背后的一些规律, ViSC已成为科学家或者研究人员手中极为有效的工具。

2 ViSC的技术特点

可视化的研究主要分为两大部分, 一是可视化工具, 二是可视化应用。

2.1 Vi SC的过程

在分析从自然现象到模型的建立过程, 可视化是一种十分重要的辅助手段。可视化过程的步骤可分为四个部分, 即为“过滤—映射—绘制—反馈”。

2.2 Vi SC处理方式

ViSC分为三个方面:三维数据场的可视化、工程设计可视化和虚拟环境。这三个方面分别对应三种处理方式:跟踪 (Tracking) 、事后处理 (Postprocessing) 和驾驭 (Steering) 。

3 ViSC常用方法

ViSC实现从复杂的多维数据中产生图像, 主要研究将离散的数据转换为图形信息的理论、方法以及应用系统的构成, 目前比较流行的技术有等值线、面绘制、体绘制和流场显示。下面主要对等值线方法和体绘制方法进行研究讨论。

3.1 等值线法

等值线法是二维平面数据场的可视化方法, 其绘制步骤可分成以下三点:首先对每个网格单元与等值线的交点进行计算;然后用线段连接该单元内等值线的交点;最后由上述线段集合构成该网格中的等值线。

网格单元与等值线的交点计算主要计算每个单元边与等值线的交点, 可用顶点判定法, 还有边上插值的方法计算。设定等值线的值为Ft, 如果FiFt, 则记顶点为‘+’。如果单元网格四个顶点都是‘-’或者‘+’, 那么该网格单元内没有等值线;否则对两个顶点分别为‘-’‘+’的单元边利用插值函数计算等值线的交点, 连线情况如图3-1所示。

3.2 体绘制法

体绘制法是遍历整个数据场, 对数据场进行重新采样和对采样结果进行合成。体绘制算法分成两大类:光线追踪法 (Ray-Tracking) 和投影成像法 (Project-Imaging) 。

光线追踪法是一种真实地显示物体的方法, 该方法由Appel在1968年提出。它沿着到达视点的光线的反方向跟踪, 经过屏幕上每一个象素, 找出与视线相交的物体表面点P0, 并继续跟踪, 找出影响P0点光强的所有光源, 从而算出P0点上精确的光线强度。绘制流程图如图3-2所示。投影成像法是将物体的所有体素的影响投影到成像面上, 然后根据体素影响在各个像素上的迭加顺序, 通过一定的合成方法, 实现各像素的颜色。

主要绘制步骤如下可分成“体元遍历—体元分解—投影与合成”三个步骤。

通过对等值线法和体绘制法的深入研究, 可以得出图像的绘制速度只要是在于算法设计的选择和机子的硬性要求。

4 展望

总的来说, ViSC是一门新的研究学科, 它的应用领域广泛, 包括能源勘测、自然科学、金融和商业等。但作为一个全新的学科, 还需在基于虚拟现实环境的科学计算可视化技术的应用等方面做进一步的研究。

参考文献

[1]辛凤凡, 郭雯雯.基于网格的科学计算可视化[J].科技与生活, 2010.

[2]应用基础研究园地.科学计算[J].安徽科技, 2000.

科学计算可视化 篇2

可视化仿真(Visual Simulation)是计算机可视化技术和系统建模技术相结合后形成的一种新型仿真技术,一般可视化仿真包含三个重要的环节,即仿真计算过程可视化、仿真结果可视化、仿真建模过程的可视化[1]。将解析数字计算的结果转换为能够显示图形和图像的形式是可视化仿真的重要内容。科学计算可视化即指运用计算机图形学技术和图像处理技术,将通过科学计算或者数据采集获得的数据(如有限元分析数据、医学数据等)转换为图像的过程[2]。为了开发通用的数值模拟程序可视化软件,需要对各种不同类型、不同格式的数值模拟结果数据进行管理并进行二维及三维图形可视化[3]。为了提高可视化效率,良好的数据组织、结构和管理十分必要,而采用什么样的数据场格式来描述这些复杂类型的数据场,是数据场预处理的重要研究内容之一[4]。

Silo是一个用于读/写各种科学数据至二进制磁盘文件的API函数库,Silo产生的文件及其中的数据可以在完全独立开发的应用中进行共享和交换,且这些应用可运行在不同的计算平台上。Silo格式文件对于处理种类繁多的海量数据有着独特的优势。同时,Silo格式文件促进了科学数据可视化工具的发展。其中,VisIt就是对Silo格式文件支持较好的科学数据可视化工具之一。本文在开发数值模拟可视化软件中,将蒙特卡罗粒子模拟(MCNP)、时域有限差分方法(FDTD)、流体力学(Fluent)[5]等应用程序的结果数据通过Silo格式文件进行存储和管理,并在VisIt中实现了可视化。

1 Silo及VisIt简介

VisIt是美国劳伦斯利佛莫尔国家实验室(LLNL)开发的一个开放源码的、独立于平台的、分布、并行的科学数据可视化工具,可用于二维及三维结构或非结构数据的可视化,对标量、矢量及张量场具有丰富的可视化功能。VisIt具有强大而丰富的图形用户界面(GUI),可读取多种流行的数据文件格式,如Hdf5,Silo,Curve,txt,Bov等,并可通过插件的编制实现更多格式文件的读取。通过VisIt可进行曲线、网格、等值线(面)、彩色云图及矢量场等多种形式的绘制。通过鼠标可对可视化对象进行实时的移动、缩放和旋转,加之其算子操作(如切割、镜像等)和动画显示功能,可对可视化结果进行全方位的观察和分析。

VisIt支持的格式中,Silo格式文件以其易读、易写且有并行化功能等优势得以普遍应用。Silo是VisIt支持较好的一种基于PDB的文件格式,通过Silo库进行读/写和管理。Silo库支持点网格、结构网格、非结构网格、块结构AMR网格、CSG网格及定义在这些网格上的标量、矢量数据场和材料数据,Silo库可分为两个主要的部分:一个是上层的应用程序接口,一个是下层的I/O驱动器。Silo支持多重驱动器,最常用的是HDF5和PDB驱动器,且这两种驱动器具有读/写功能,而驱动器netcdf和Taurus仅有只读功能。Silo结构模型如图1所示。

使用VisIt命令可查看Silo文件的结构及数据,在命令窗口中输入:

VisIt -silex sample.silo

即可通过树形结构查看文件sample.silo的内部结构及数据情况。

2 Silo常用函数及文件的读/写

本文所开发的数值模拟可视化软件所处理的结果数据包括网格变量数据、曲线数据以及附加在网格上的标量、矢量数据等。Silo库提供了特定的函数,可以在Silo文件中添加这些数据。Silo文件可通过C语言及Fortran语言编写。本文在Visual C++ 2005下对Silo库函数进行了应用,首先下载了silo-4.6.1 安装文件并进行了正确配置。在文件目录silo-4.6.1/SiloWindows/MSVC8中打开SiloWindows.sln工程文件,编译生成库文件silo.dll和silo.lib,之后将该两文件加入到新建工程中,即可使用Silo库函数创建Silo文件并进行数据的添加。之后,即可通过VisIt对Silo文件进行读取和可视化。

2.1 网格、曲线及变量数据的添加

添加矩形网格及点网格使用如下函数:

DBPutQuadmesh(file,"mesh1",coordnames,coordinates,dimensions,2,DB_FLOAT,DB_COLLINEAR,NULL); /*文件指针,网格变量名,坐标轴名,坐标变量组名,每维上的节点数,维数,数据类型,坐标数组类型,可选项*/

DBPutPointmesh (file,pointname,ndims,coordinates,4,DB_FLOAT,NULL);/*文件指针,点网格变量名,维数,点的坐标,点数,数据类型,可选项*/

曲线数据的添加使用如下函数:

DBPutCurve (file,curvename,xval,yval,DB_FLOAT,4,NULL);/*文件指针,曲线名,x坐标数组,y坐标数组,数据类型,组成曲线的点数,可选项*/

网格标量变量的添加使用如下函数:

DBPutPointvar1 (file,pointvalname,pointname,var,4,DB_FLOAT,NULL);/*文件指针,点变量名,点网格名,变量数组,点数,数据类型,可选项*/

云图的可视化方法是用明暗相间的彩色图表示流场的分布情况[6]。二维及三维网格变量的彩色云图在VisIt中的可视化效果如图3、图4所示。

点网格及其上的矢量变量的添加使用如下函数:

DBPutPointmesh (file,pointname,ndims,coordinates,10,DB_FLOAT,NULL);/*文件指针,点网格名,维数,点的坐标,点的个数,数据类型,可选项*/

DBPutPointvar(file,"defvars",pointname,3,defs,10,DB_FLOAT,NULL); /*文件指针,矢量变量名,点网格名,一个矢量变量由三个方向的值合成,变量数组,点的个数,数据类型,可选项*/

Silo文件还可通过函数添加各维的坐标名称及单位,进一步增强了可视化效果。

2.2 Silo文件的读/写

写Silo文件时首先创建文件及所需目录,之后即可添加网格、材料数据及与网格相关联的物理变量。读文件时通过API函数可以从打开的Silo文件中返回C语言形式的数据结构,从而得到所需的数据。头文件Silo.h提供了可靠的返回调用函数。

3 Silo文件的并行处理

科学计算规模的不断增长使得对科学数据的管理也趋于采用并行处理技术[7]。Silo的并行处理功能使它在大规模科学计算领域的应用日益广泛。Silo可以有效地进行并行取决于它的两个特殊性能:在一个文件中可以分别创建不同的命名空间(工作目录);一个多重块对象可以将多个Silo文件集成。因此并行应用可以容易地将处理器分为N组并为每个群组写一个单独的Silo文件。当所有的处理器在各个群组的Silo文件目录中都建立了独立的对象时,有一个处理器被指派写多重块对象,可将不同处理器的独立Silo文件集成起来。Silo文件的并行原理如图4所示。

4 数值模拟程序结果数据的管理和可视化

本文处理的数值模拟程序有FDTD,MCNP,Fluent等,这些程序结果文件类型各异,格式多样,要想在统一的软件平台下进行管理和可视化,首先需要将VisIt不能直接读取的结果数据文件改写成VisIt支持的格式。因此选用将结果数据写为Silo格式文件进行统一管理。为了将结果数据写为VisIt支持的Silo格式文件,首先要研究数值仿真程序的结果文件,提取需要可视化的数据并将其读入数组,之后才能将其存储为Silo文件,并在VisIt中进行可视化。

FDTD程序的输出有两个变量,一个为时间数据,一个为电场数据。若要绘制电场随时间的变化曲线,只需将该两列数据读入数组,使用DBPutCurve函数即可将数据写成Silo文件,所得Silo文件在VisIt中的可视化效果如图5所示。MCNP程序需要可视化其能通量及粒子通量随时间的变化。但程序的输出文件既包括说明文字,也包括输入参数等信息,输出结果数据文件只是其中的一部分。为了提取其中的输出信息,本文通过关键字查询[8],首先找到输出数据说明文字中的关键字,将其后列出的数据读出,再将该数据写入Silo文件,即可在VisIt中得到正确的可视化。粒子能通量可视化如图6所示。

在Fluent程序中,需要对粒子的场分布进行可视化,此时需要进行点网格及与各点网格关联的矢量变量的添加[9]。添加矢量变量时,只需给出该点3个坐标轴方向的值,即可得到矢量的大小和方向[10]。Fluent中的部分粒子场数据在VisIt中的可视化如图7所示,可通过VisIt的矢量绘制属性对矢量数、箭矢的外观等进行设置,还可将多个变量在同一张图中进行叠加显示,使可视化分析更加直观,如图8所示。

在数值模拟中,有时需要每隔一定的时间输出一个结果数据,此时就需对这些随时间变化的结果数据进行动态可视化,以观察结果随时间的变化情况,从而依据可视化结果调整计算参数,得到不同条件下的模拟数据。可将这些相关联的数据写为若干Silo文件,并对其分组,则在VisIt中,可对该组Silo文件每隔一定的时间显示一个文件,从而实现结果的动态显示,得到完整的随时间变化的可视化结果。图9为不同时刻压力变量的彩色云图,通过类似这样多幅的彩色云图顺次播放,就可以看出压力的大小随时间的动态变化情况。

5 结 语

本文介绍了Silo文件在科学计算结果数据的管理及可视化中的应用,通过编程将数值模拟程序的结果数据进行提取后写为Silo文件格式,并在VisIt中进行读取和可视化。结果表明:Silo文件在VisIt中可得到较好的可视化效果。不同格式的数据写为Silo文件后,结构清晰,易读、易写,并可在VisIt中进行三维模型、网格、等值线、彩色云图、矢量等多方面的可视化和数据分析,还可进行算子运算和动画显示,不仅提高了科学计算可视化效率,而且为数值模拟的参数优化提供了直观的依据;同时,Silo的并行处理能力对于大规模科学计算中的数据管理和可视化也有着良好的应用前景。

摘要:在某数值模拟可视化软件研制中,为了对不同类型的数值模拟结果进行统一管理和可视化,采用Silo格式文件管理数值结果,并将其应用于可视化工具VisIt中。对MCNP,FDTD,Fluent等数值模拟程序计算结果中的曲线、网格及相关联的标量、矢量等数据进行提取,写为Silo格式文件,并给出了其在VisIt中的可视化效果。结果表明:不同类型的数值模拟结果数据可通过Silo格式文件进行综合管理,并可在VisIt中得到高效的可视化。

关键词:Silo,数据管理,可视化软件,并行处理

参考文献

[1]曾鑫.可视化仿真技术设计与实现[J].黑龙江科技信息,2008(36):84-85.

[2]刘涛,张群会.科学计算可视化与数据可视化的比较研究[J].科技广场,2008(10):239-240.

[3]谢春,马兰,彭颖红.有限元计算结果的可视化处理[J].计算机辅助设计与图形学学报,2000,12(2):81-84.

[4]徐平均.科学计算可视化中数据场的封装与预处理技术研究[D].北京:中国工程物理研究院,2006.

[5]刘永军,李宏男,林皋.有限元计算结果可视化显示[J].大连理工大学学报,2002,42(6):728-731.

[6]吕珍,姜曼松,楼明珠.流场数据可视化的实现方法[J].中国水运,2007(4):145-147.

[7]周海芳,杨学军,刘衡竹,等.科学计算可视化并行处理建模及其数据并行技术研究[J].系统仿真学报,2006(Z1):308-311.

[8]高俊波,栾翠菊,王晓峰.新的关键字提取算法研究[J].计算机工程与设计,2008,29(3):765-767.

[9]朱宽宁,梁艳萍.电磁场有限元后处理中矢量场的可视化[J].电机与控制学报,2002(4):39-42.

科学计算可视化 篇3

关键词:可视化,后勤管理,评价

在信息时代, 后勤信息和物质、能量一样, 作为一种重要的后勤保障资源, 已成为后勤建设的基础要素, 是可视化后勤科学管控的对象, 是制约后勤保障力生成和提高的关键。因此, 后勤信息资源的及时更新和有效利用, 是实现后勤建设跨越式发展的关键。

后勤信息的初始来源包括后勤指挥体系、后勤保障部队、后勤保障装备、作战系统, 以及后勤教学科研机构等。战时后勤源信息主要来源于战场。从活动领域和运动环境看, 可分为:电磁频谱信息、计算机网络信息和心理信息。未来数字化战场的电磁频谱信息将覆盖从超长波、长波到紫外光波以及声波在内的全部电磁频谱。关于计算机网络信息, 战场计算机网络将使战场空间透明度增大, 使战斗与后勤保障人员能及时、真实地看到战场景况, 使战场信息更加实时传递。心理信息是指参战人员、情报机构、新闻媒体等行为主体和机构的认识、情绪及意志等信息。

根据信息学的一般理论, 结合后勤可视化建设, 从后勤信息资源开发利用、数字技术应用、信息人才队伍以及数字化的贡献等方面提出后勤可视化水平的指标体系。

1 网络信息资源拥有率 (NIRC)

网络信息资源拥有率衡量数据库化、网络化信息资源量占信息资源总量的比重。

undefined

网络数据库信息资源量为网络上传递的信息资源, 信息资源总量指可视化后勤信息系统存储的信息总量。

2 后勤信息资源的可利用指数 (LIRA)

undefined可获取系数Hi

式中可获取系数Hi, 表示不同的信息提供服务方式在实践、空间以及保密等方面受限制程度系数的倒数。为简化计算, 可以运用共享信息资源量与自用信息资源量之比、保密信息资源量与非保密信息资源量之比, 来近似反映后勤信息资源的可利用程度。

3 数字化装备拥有率 (DLER)

undefined

数字化装备量指可视化后勤信息系统通过自动识别技术能识别的装备量, 后勤装备总量指后勤c4系统拥有的装备总量。

4 人均带宽拥有量 (PLOC)

undefined

光缆长度总量指可视化后勤信息系统中的光缆长度, 后勤人员总实力指后勤c4系统中的光缆长度。

5 后勤信息工作者比重 (ILR)

undefined

后勤信息劳动者指后勤c4系统中包括科研院所等直接从事信息技术开发以及网络中心、自动化工作站等从事信息服务的所有人员。

信息劳动者总量指可视化后勤信息系统中的人员。

6 网络使用率 (NFR)

undefined

后勤网络用户总量指可视化后勤信息系统中需要用到网络的工作人员, 后勤人员总实力指可视化后勤信息系统中所有工作人员。

7 电子办公率 (EFR)

undefined

办公业务量以业务总类划分, 同时考察工作时长。

总体而言, 我军数字化条件下可视化后勤建设的指导思想是:认真贯彻落实军委新时期军事战略方针, 依托国家和军队的信息基础设施, 坚持立足现有条件, 以关键数字技术开发和信息人才培养为重点, 在整个军事信息化水平逐步提高的基础上, 谋求可视化后勤建设的跨越式发展, 不断提高可视化后勤的整体水平。

参考文献

[1]赵燕.数字化条件下后勤建设研究[M].北京:解放军出版社, 2004.

科学计算可视化 篇4

一、设置问题情境,让判断思维可视化

设置问题情境,是小学科学探究中常见的做法,通常是老师做一个实验,引发出一种“出乎意料”的科学现象,让学生做出初步的解释或判断。为了彰显学生的思维动态,问题情境都是基于学生的一定经验,这样,学生的判断就有了自己的认 知 “根据”。老师在了解了学生“可视化”思维动向的基础上,进行教学策略的调整和改进,以便更好地服务于学生的探究。

比如《浮力》一课,老师设置的问题情境是:将木块、塑料板、 泡沫、石块、铁块、苹果等物体逐一放到水里,让学生一个个看它们或沉或浮。然后,老师问: “为什么这些物体有的上浮,有的下沉呢?”学生的回答多是“木块、泡沫等轻,所以上浮”;“石块、苹果等重,所以下沉”。 (暂且不探讨比重问题) 老师再问: “这轻和重是谁跟谁比较的呀?” 学生答:“木块跟石块比,木块轻,泡沫跟苹果比,泡沫轻……” 可见,学生思维的关注点是这些材料之间轻重的比较,却不曾想到这些材料与水比较轻重。或者说,学生只对这些材料感兴趣, 他们只想在这些材料本身求解沉浮的秘密,并不曾想到与所处环境 (水) 进行对比和思考。由此可见,学生判断性思维的局限和不足主要表现在思维的孤立性, 即只会在问题或现象本身求解, 不能结合情境中相互作用的因素进行分析研究。

面对学生的这种思维倾向, 老师需要跟进设置的问题情境表现在两个方面:一是出示一块大木块和一块小石子,很明显大木块比小石子要重得多,把它们依次放入水里,大木块依然上浮, 小石子还是下沉。从而把学生的思维引到“相同体积物体的轻重进行比较”,也就是“比重”。这样的比较才是科学的。另一个需要跟进的问题情境是:将水里放入并溶解一些盐,然后再将原先的苹果放进盐水里,苹果上浮。 “为什么水里的苹果下沉,盐水里的苹果上浮?”两相对比,学生自然会将思维聚焦在“液体”上, 于是很容易想到这些物体与液体比较,重的下沉,轻的上浮。从而将学生原先只进行材料之间轻重的对比转化为每一种材料与水的比较,而且是相同体积的材料与水比较轻重。这才是揭示沉浮秘密的核心问题所在。

二、设置材料情境,让联想思维可视化

思考一个问题,学生通常会由此及彼想到一些相关联的事物, 并在此基础上进行有机的梳理和整合,形成对这一问题的观点和认识。这种思维就是联想思维。 科学教学中的联想思维,通常是基于学生的已有认知,也就是充分利用学生已有认知经验的基础上,进行新的探索和研究。这种探究性学习,由于有了一定的经验积累,当学生面对新领域的探索时,会自然联想到已有的学习认知和经验,于是就会依据已有的知识经验进行思维的判断、分析和信息处理,从而一次次展开对未知领域的求知和探索。

比如苏教版《简单电路》一课, 由于学生在生活中有了一些粗浅的认识和经验,老师只要将导线、 小灯泡、电池等材料分发到每个小组,学生联想到曾经的记忆和生活场景,就会想到连亮小灯泡。 至于怎么连,学生以前并未做过, 也不明白其中的道理。他们只会结合生活中的经验和认识,不断尝试各种连接方法。这期间,老师要做的就是指导学生随时画出每一次尝试的连接方法。待学生终于连亮小灯泡后,要求学生将自己尝试连接的各种电路图 (画图) 进行比较,分析并归纳出连亮小灯泡的正确方法。由于有了一定的经验和认识,学生就有了尝试的种种可能和动力。这一情境的设置,使学生能够充分利用生活经验,大胆尝试,积极探索, 试用的方法和途径很多,思维也很活跃,完全打开了思路,激活了思维。但问题是学生虽然最后连亮了小灯泡,但却不知小灯泡为什么亮?即使老师作了一定的讲解和描述,但电流怎么流经小灯泡的,学生还是一头雾水。这时老师可以将电池和小灯泡剖开, 让学生看到里面的结构,这时不需要老师讲解,学生就会理出个头绪,很容易明白电流的流动过程,从而弄清楚电路连接的本质和规律。由此可见,对于学生的联想思维,老师要注意的是,不仅要关注联想得来的“做”,更要从“做”中抽出事物的内在规律和要求。这是学习的归结点,也是学习的本质所在。

三、设置话题情境,让逻辑思维可视化

所谓话题情境,就是在教学中老师针对教材中的核心问题, 抛出一个主题,然后引导学生就这个话题展开探讨。这个话题的相关内容是学生略有知晓的,或者说有一定的生活经验和浅显认识,学生面对这个话题会有所谈论和认识。设置这样的情境,要注意认知的逻辑性和层次性,也就是说,话题不能太大,以免学生谈及此话题时会信马由缰不着边际,而应扣住问题的本质和核心点去确定话题,以使得学生的探讨沿着一根主线向问题本质深入。

比如《摩擦力》一课,关于 “摩擦力”应当呈现给学生什么样的话题?为了引发学生积极的探究心理,通常老师会以“什么叫摩擦力?”“关于摩擦力,你想了解哪些知识?”等作为学生研讨的话题。这样一来,前一个问题, 学生无从入手,或者说依靠自己原有的认知和经验,学生根本总结不出摩擦力的概念。于是,话题一出就直接把学生的思路堵死了。第二个话题太过空泛,对这个问题的想法学生有很大的随意性,想说的东西也太多,学生想弄明白的诸多问题不光凌乱无序, 而且很难切入“摩擦力”的根本问题。这样的思维活动是没有多少效果的。我们需要调整的是, 将抽象的“摩擦力概念”转化成具体的生活和实验,让学生通过具体的物象去感知和体验,再来理解和认识概念就容易多了。同时,对于一个过于宽泛的问题, 学生很难抓住要领和核心问题, 使学生对问题的设想缺乏缜密的结构、层次性和逻辑性。对此, 需要注意的是,在设置话题情境时,最关键的是选准问题的切入点,这点上的问题解决了,相关话题的知识都会迎刃而解。所以, 对于“摩擦力”这一课,可以引出“生活中哪些地方有摩擦力?” “这些摩擦力有什么不同?”这一话题。这个话题的好处在于:一是学生依照经验可以说出很多摩擦力存在的地方,可以在实践和生活中回顾并巩固自己的认知。 另外,对于“比较不同地方摩擦力的不同”,可以引发学生聚焦并探讨“有的摩擦力大,有的摩擦力小”“为什么会有摩擦力大小? 摩擦力大小与哪些因素有关呢?” 等一连串的问题追问。回过头来看看这些问题,它们不光在指向摩擦力的内涵和本质,更是以一组层层深入的逻辑关系出现的, 形成了探究摩擦力的一条逻辑主线。这才是需要我们关注的话题情境。循着这条路径展开的问题探讨才是有效的。

四、设置分析情境,让推理思维可视化

科学探究是一个手脑并用的学习过程,既有寻求“事实”真相的动手实验,也有做什么实验以及怎样实验的考量和分析。而且,从某种程度上说,“分析”是探究活动中最重要的手段和方法, 它全面融入探究活动,并为探究活动提供有力的铺垫和支撑。对问题的分析,学生惯常的思维方式是推理。设置分析情境,就是引发学生不断的推理思维,提高学生自我探究的深度和准确性。

比如 《电磁铁》一课,“影响电磁铁磁性强弱的因素有哪些?” 学生会根据实验中电磁铁磁性强弱变化的场景,很容易推导出与 “电流强度”和“线圈匝数”这两个因素有关。依据是:电磁铁具有磁性是因为通上了电,断了电就失去磁性,所以电磁铁具有磁性的关键是要有电。按照现象从无到有、从少到多、从弱到强的思路,学生自然会想到电流强磁性强。另外,一根平常的导线接上电池后是没有磁性的 (以前学生做过“简单电路”实验,通电的导线并没有磁性),只有绕成了线圈才有磁性,所以磁性肯定与线圈有关。进而推导出一根导线弯成一个线圈有磁性,弯成多个线圈磁性就会更大。由此可见, 推理是探究中的主要思维方式, 也是通向正确结论的重要保证。 但是,一般老师在上这一课时, 也就到此为止,因为教材上也只是认为电磁铁磁性强弱只与上述两个因素有关。其实,影响磁性强弱的因素远不止这两个,还有很多。学生也能想到其它可能的因素 (很多课上,学生只要有其他想法,就会被老师否定或规避掉),如若引导学生研究这些因素,无疑对训练学生深层次的推理思维是大有裨益的。比如,当老师放开让学生思考“影响电磁铁磁性强弱的因素还可能有哪些?”时,学生会以“变”的视角说出可能的影响因素。比如“与缠绕导线的粗细有关”。实验结果是:导线越粗磁性越强。那为什么会是这样呢?也就是说当线圈数和电池不变的情况下,为什么磁性变强了呢?学生就会依据 “线圈数不变,磁性增强”推导出 “流过线圈的电流增强了”。至于为什么电流增强了 (初中才学习粗导线电阻变小),不必解释,但却可以留给学生继续研究的期待, 也为中学物理学习作了一定的铺垫。还有同学认为 “与线圈里有无铁芯有关”。问其原因,学生推导的理由是“线圈里有铁芯时, 除了线圈有磁性,里面的铁芯同时被磁化也带上了磁性,所以有铁芯时磁性更强”……当然,还有“与铁芯粗细有关”“与线圈的松紧有关”等等。学生都会依据推理思维,归结出较为合理的原因和结果。这种推理性思维很合乎学生的认知需求和能力发展, 应当时时留意创造这样的思维机会,提高学生的思维品质。

科学计算可视化 篇5

关键词:危险行为,知识,图谱

危险行为又称危害健康行为, 是健康相关行为的重要组成部分, 是个体或群体在偏离个人、他人和社会的健康期望方向上表现出的一组不利于健康的行为, 通常包括不良生活方式与习惯、致病行为模式、不良疾病行为及违反社会法律、道德行为, 如吸烟、酗酒、吸毒、网络成瘾等[1,2,3]。危险行为是影响健康的重要因素, 对其开展有针对性的研究, 有利于从多角度揭示人群健康相关行为取向, 为制定人群健康行为管理策略提供科学依据。

1 资料来源与方法

1. 1资料来源选用“中国知网”与“万方数据知识平台”为文献数据来源, 检索式: “主题 = 危险行为”, 年限设定: “不限———2013年”, 文献类型: “期刊论文”。数据检索及下载结束时间为2013年12月16日。从“中国知网”获取2 647条数据, “万方”获取1 837条数据, 共计4 484条。首先剔除数据中报纸、会议论文、硕博士论文等非学术论文类信息, 然后对双数据库数据进行融合、去重, 最后通过人工筛选逐条剔除与危险行为概念不一致的学术论文, 最终获得有效数据2 345条。

1. 2方法将有效数据转化并录入软件后, 设置分析时间为1986—2013年, 时间分割为1 a, 形成27个时间片段, 其中1987年的文献内容与研究主题不符, 不列入分析。根据具体分析内容选用相应的网络节点, 分别对作者、关键词、机构进行相关分析, 设定阈值为 ( 2, 2, 20) , ( 4, 3, 20) , ( 4, 3, 20) , Top N per slice = 50。1. 3统计学处理可视化工具选用由Chen等[4,5,6,7,8,9]开发的新型可视化软件CiteSpace, 该软件在信息、医学等领域均有成功运用。数据整理和分析使用SPSS13. 0和Excel软件。

2 结果

2. 1发文量分析从危险行为领域的年度发文量来看, 总载文量呈稳步增长趋势。如图1所示, 该领域年度发文量的演进可分为3个阶段[10]。第一阶段:1986—2004年, 年发文量均在百篇以下, 增速较缓, 可以看作危险行为研究的起步阶段; 第二阶段: 2005—2007年, 该阶段年发文量自2005年突破百篇后快速上升, 可以看作危险行为研究的快速发展阶段; 第三阶段: 2008—2013年, 本阶段危险行为相关文献量呈稳步增长趋势, 年均维持在200篇以上 ( 因2013年为该年度的不完全统计值, 发文量略有下滑) , 可视为危险行为研究的成熟阶段。

2. 2高产作者及合作情况选择作者为网络节点进行分析, 共得出800个节点, 523条连线。因数据量大, 图中仅显示发文量≥5篇的作者。在所有作者中合作密切且发文量较多的有季成叶、宋逸、陶芳标, 刘伟、张孔来, 吴尊友、柔克明, 罗春燕、高根娣, 陈琳、潘晓红, 林鹏、王晔等。从整体来看, 危险行为领域研究的学者之间合作交流较为密切, 形成了复杂的合作关系网络。见图2。圆环直径大小代表该作者累计发文量的高低, 外环颜色表示文章发表所涉及的年份, 圆环之间连线粗细及颜色表示合作强度及首次合作的时间[11,12]。

由表1可知, 1986—2013年危险行为相关研究发文量排名前10的12位高产作者的发文量为14 ~25篇, 平均发文量为17.6篇; 平均初始发文年份为2002年, 其中季成叶、刘伟、吴尊友的发文量居于前三, 均超过20篇。

2. 3高频关键词及研究热点关键词是文章的精髓与核心, 为更加客观准确, 本文对部分关键词进行了归类合并, 如将HIV、获得性免疫缺陷综合征等统一归为艾滋病, 将性传播疾病归为性病等。选择关键词为网络节点进行分析, 共得出623个节点, 916条连线。如表2所示, 出现频率≥25的关键词中, “艾滋病”“学生”“青少年”“健康教育”“健康危险行为”位居前5位。这5个关键词所表征的研究领域属于危险行为相关研究的研究热点。因关键词“危险行为”为危险行为领域研究的基础词汇, 所以不纳入分析。

因数据量大, 图3中仅显示了出现频率≥25的关键词。圆环直径大小表示该关键词出现频率的高低, 外环颜色表示关键词出现的年份, 圆环之间连线的颜色为首次共现时间[13]。图中右上角最大的节点为“危险行为”, 其他高频关键词可大致分为5类[14], 第1类: 研究人群, 如“学生”“青少年”“中学生”“大学生”等; 第2类: 危险因素, 如“艾滋病”“性行为”“吸烟”“饮酒”等; 第3类: 研究方法及学科领域, 如“调查”“对比研究”“因素分析”“统计学”“流行病学”等; 第4类: 干预方式及预防措施, 如“健康教育”“行为干预”“自愿咨询检测”等; 第5类: 概念及扩展, 如“健康危险行为”“共同危险行为”等。

2. 4机构合作为深入了解各科研机构对危险行为研究的贡献程度, 选择机构为节点进行相关分析。对题录中的机构信息进行了整合, 即对高等院校及其附属机构统一按校名进行统计, 如北京大学的主要科研机构分别为北京大学公共卫生学院、北京大学法学院、北京大学中国药物依赖性研究所、北京大学医学部等; 安徽医科大学主要科研机构为安徽医科大学公共卫生学院、安徽医科大学学生处等。除高校外的科研机构, 如佛山市疾病预防控制中心、佛山市禅城区疾病预防控制中心等均未进行归并。如表3所示, 出现频次≥5的机构共27个。其中北京大学的发文量最高, 达63篇, 其次是中国疾病预防控制中心 ( 性病艾滋病预防控制中心) 27篇, 第三是安徽医科大学18篇。

为清晰呈现不同机构的贡献度及其之间的科研关系, 在各机构间科研合作的科学知识图谱中, 将高校及机构名称延伸至二级院系。由于数据量大, 图4仅显示了出现频率≥5的机构, 共计510个, 机构之间的连线66条。北京大学儿童青少年卫生研究所发文量最大, 其次是中国疾病预防控制中心性病艾滋病预防控制中心。从各机构之间的连线看, 机构间合作交流较为欠缺, 跨地域、跨区域合作十分有限。

3 讨论

随着健康管理与健康促进的深入人心, 有关健康相关行为的研究越发受到社会各界的广泛关注。危险行为作为健康相关行为的重要组成部分, 其学术研究也有了显著发展。《中国学校卫生》《中国公共卫生》等核心期刊为危险行为领域的研究提供了信息交流及成果发布的良好平台, 诸多知名学者如季成叶、吴尊友、刘伟等均发表大量相关文献, 一定程度上也推动了危险行为领域的研究进程。

本研究显示, 2005年是危险行为领域研究的转折点, 发文量增速明显。此年正值中国疾病预防控制中心儿少/学校卫生中心组织全国18个省、自治区、直辖市的相关部门开展“中国城市青少年健康相关/危险行为调查”[15], 此项调查研究大大推动了国内有关危险行为领域的研究, 为该领域的发展做出了重要贡献。近3年, 该领域发文量稳步提升, 更多学者及机构逐渐加入危险行为研究行列, 研究团队及热点也更加成熟、清晰。

以陈泽霖、吴尊友、刘伟、陶芳标、张孔来、孙江平等为代表的国内专家、学者, 较早便涉足危险行为领域的相关研究, 其中最早可追溯至陈泽霖关于幼儿危险行为的研究, 为该领域的起步做出了重要贡献。随着危险行为相关研究的不断发展, 更多学者将目光转移到此领域, 如季成叶、林鹏、罗春燕等。他们与陈琳、钟慧彦、朱晓艳等为代表的科研团体纷纷加入到危险行为领域的相关研究中, 形成了广泛的合作网络, 并共同推动了危险行为领域研究的快速发展。

同时, 随着时间的迁移, 各位专家、学者间的交流与合作也越发密切。吴尊友、刘伟等[16]通过合著《社区多资源参与的减少吸毒人群HIV感染危险行为干预模式及效果研究》, 共同形成以研究艾滋病为主题的合作团队, 并促成了所属两大团队的融合。以季成叶、吴尊友为核心的科研团队又联合陶芳标等学者直接或间接形成了更为庞大和复杂的合作网络, 共同成为危险行为领域研究的主力军。

通过对关键词共现进行图谱分析, 可找到该领域的研究热点与发展趋势。继基础词汇“危险行为”后, “艾滋病”作为一种严重威胁人类健康的危险因素出现频次最高, 不仅说明在危险行为领域诸多研究以此为研究方向, 同时也说明该疾病的发生与个体行为密切相关。“学生”及“青少年”在研究人群中出现频次最高, 成为最受关注的研究人群, 这也再次体现了国家、社会及各类科研机构对该群体的高度关注与重视。在干预方案中, 以“健康教育”出现频次最高, 表明针对危险行为的干预手段仍集中在传统的“健康教育”类方法上, 而如今比较流行的干预方式如健康管理等应用较少[17]。此外, “调查”、“对比研究”等作为危险行为的主要研究方法与途径, 出现频次也相对较高, 表明此类研究仍是该领域的常规研究方式。

值得注意的是, 与艾滋病关系紧密的主要研究人群主要为吸毒人员及青少年等社会群体, 而与在校学生密切相关的危险行为研究则主要集中在吸烟、饮酒、创伤和损伤等方面, 这也体现了危险行为的研究需与研究人群的属性划分相适应。

通过对机构合作进行分析, 进一步了解了危险行为领域的研究机构组成与分布情况。高文献产出机构多为高等院校及各地疾病预防控制中心, 说明此类机构为危险行为研究的核心机构。从地域分布来看, 北京地区发文量最高, 安徽、广东、江苏、福建、浙江、上海等东部沿海地区发文量紧随其后, 而中西部省份的文献产出则十分有限。北京等地拥有良好的经济基础和雄厚的科研实力, 反之中西部地域受经济条件等影响, 研究相对较少, 存在明显的地域差异。从合作角度来看, 机构间的合作程度显著低于作者间的合作, 各机构之间的合作十分有限且关系简单, 缺乏跨机构、跨区域的科研合作。该领域的领跑者应充分利用自身的优势, 发挥好带头作用, 扩大交流合作区域, 带动周边地区共同发展, 中西部地区学者团体应积极参与到该领域的研究中来, 从而使危险行为的研究结果惠及各地人民, 提高整体健康水平。

科学计算可视化 篇6

虚拟手术是当今的研究热点领域,随着计算机图形处理能力的不断提高,具有高精度和真实感的人体器官虚拟手术也取得了很大的进步。为构建好的肝脏体添加纹理能很大程度上提高真实感体验,对于虚拟手术平台的搭建有着重要意义。目前虚拟手术存在的主要关键点在于肝脏体的三维重建、体纹理的生成,以及手术过程中的切割显示和碰撞仿真。肝脏的三维重建以及体纹理的绘制将提供给使用者一个直观的手术环境,是研究的重点内容。翟朝亮在切割显示以及软组织碰撞变形仿真方面做了大量工作[1,2],本文在其研究基础上,利用其已经取得的成果,把重点放在肝脏体的三维重建以及软组织体纹理的合成,力求提高肝脏软组织体纹理合成的效率和质量。

体纹理的绘制一直是虚拟手术中的关键环节,目前构建三维体纹理模型的主要方法有三种:过程纹理、实时的二维纹理映射以及基于样本的三维体纹理合成。邹昆[3]等提出一种基于样图的层式体纹理合成算法,采用基于全局优化的合成框架,在预处理中生成反映样图深度方向上特征差异的特征分布图,合成时考虑3个正交方向上的邻域相似性,并利用K相关性搜索进行迭代优化,具有较高的合成质量和较快的收敛速度。严志程[4]等提出一种考虑方向场的体纹理合成新方法,在二维纹理样本中搜索邻域,采用邻域匹配逐个合成体素;在匹配二维纹理样本像素邻域和体素邻域时,考虑各体素上的方向,生成各向异性体纹理,并允许采用各向异性的二维纹理样本获得满意的合成结果,其主要缺点在于缺乏合适的加速算法,且不能满足合成更大尺寸体纹理的要求。翟朝亮[1]提出一种基于重叠体纹理贴图的方法,能够生成一些常见的三维物体纹理。其缺点在于处理结构较为复杂,四面体数目较多的模型时,计算量非常大,贴图时间很长。本文针对以上问题,提出一种基于复用计算的肝脏软组织体纹理合成方法,在合成肝脏体纹理时复用之前已合成好的部分,可以提高合成的效率与质量。技术路线图如图1所示。

2 预处理工作

2.1 肝脏的结构与纹理分析

肝小叶是肝脏的基本单元,肝小叶的立体形态一般呈六角形棱柱体,长约2 mm,宽0.1 mm,其中以中央静脉横穿长轴。本文在构建肝脏基本模型时,由于肝脏软组织纹理是研究的重点,所以只考虑肝脏体的基本构造,而忽略肝小叶和血管的组成。而肝脏的纹理具有随机特征,区域分布均匀,没有明显的周期性和结构性。Markov随机场模型认为图像中每一像素值只与其邻域像素的取值有关,通过像素的概率密度函数来定义纹理分布。因此采用Markov模型可以比较好地反映肝脏纹理的随机特性。

2.2 肝脏体的构建

对于肝脏体的构建,首先在3ds max里建立肝脏体的原型,目标是获得逼真的肝脏体模型,导出后缀为obj的模型文件,模型具有网格结构,如图2所示。由于只有表面网格构造,无法满足内部结构的显示以及后续复用工作的需要,所以先利用3D Object Conveter这款3D模型转换工具,将obj文件转换为ply文件,再导入TetGen库,该库是德国Weierstrass实验室开发的一个开源项目,可以将表面网格模型转换为四面体网格模型。四面体网格模型以ele文件和node文件形式保存。ele文件包含各个四面体四个连接顶点的索引信息,node文件则包含了各顶点的位置信息。本文构建的肝脏四面体模型总共有61 014个四面体,14 633个顶点。

2.3 体纹理的生成

在传统计算机图形学中,纹理是一种数据采样资源,一般为二维形式,通过纹理映射可以把二维纹理与三维表面的点相对应。而体纹理则是定义在三维空间,以体素为基本单元。体纹理可以很好地反映物体内部结构信息,非常适合用于虚拟肝脏手术这种需要观察物体内部结构并且对精度要求较高的场合。本文采用基于样本的体纹理合成方法,所以需要合成一个样本体纹理块。首先需要一个具有比较高精度的数据源,本文选用美国数字化可视人体数据集,其来源于美国国立医学图书馆的“可视人体计划(VHP)”,选用里面的180张彩色肝脏切片图作为数据源,其尺寸为600×630,如图3a所示。接着要对切片图进行分割提取,分离出肝脏体部分,排除其他的组织器官。在轮廓分割方法上,采用opencv编程实现,首先人工在图片上指定几个关键点,接着对几个关键点做Bezier曲线拟合,使得曲线更加光滑,如图3b所示。Bezier曲线是一种应用于二维坐标的数学曲线,它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形,随着点有规律地移动,曲线将产生皮筋伸引一样的变换,带来视觉上的冲击。分割的目标在于尽可能多地包含肝脏区域部分,尽可能少地包含其他区域部分。分割好肝脏图像后,参考文献[1]的做法,以分割图像为模版,分别在体纹理坐标的x轴和z轴方向上扩展,即先左右排列,再前后排列。其中相交的点的像素值则取平均值。这样构建的好处在于使得肝脏表面的纹理同内部纹理有所不同,增加肝脏纹理的多样性,更贴近现实中的肝脏纹理。体纹理以.vol文件形式保存,其头文件信息包含了版本号(version)、纹理数组(texName[])、纹理块尺寸(volSize)、通道数(numChannels)、每个通道位数(bytesPerChannel)等信息,如图3c所示。

3 基于复用计算的肝脏软组织体纹理合成

合成肝脏软组织体纹理是本文的主要研究内容。基于样图的纹理合成技术由于可以克服传统纹理映射方法的缺点,又避免了过程纹理合成调整参数的繁琐,目前发展很快。2001年的SIGGRAPH会议上,Efros提出一种基于块拼贴的纹理合成算法[5],通过查找误差最小路径实现各匹配块的拼贴,对一些常见纹理取得了比较好的效果,该方法影响了后期许多的研究[6,7]。总结来说,合成的基本单元可以是像素点或者像素块,基于像素点的合成利于保持纹理的局部特性,但对全局特征的把握不好,并且合成的速度比较慢。基于像素块的合成能够保持纹理的全局特征,并且合成速度提高很多,但是在块与块之间的衔接拼合上会有过渡不自然的现象。邻域的形状可以是正方形[5]或者L形[6]。目前,大多数的纹理合成方法都采用Markov模型,即纹理中任一位置的色彩只由其局部有限邻域的情况决定。而邻域搜索的效率往往是决定纹理合成效率的一个关键因素,邻域搜索由于要在样本里逐点或者逐块搜索,计算量比较大。对于肝脏体纹理合成,本文构建的肝脏体模型总共有61 014个四面体,数据量非常大,因此本文考虑采用复用计算的方法,进行基于像素块的纹理合成,复用计算适用于大尺寸的纹理合成,比较适合合成肝脏纹理这样数据量较大的场合。此外,复用计算适合合成结构性不强的纹理类型,肝脏软组织纹理属于结构性不强的纹理。本文参考了陈昕提出的二维平面的复用合成方法[8],并将其扩展至三维空间,只在合成初始区域时采用邻域搜索匹配像素块,而合成剩余区域时则复用之前的结果,以减少计算量,提高合成的效率。

3.1 初始区域的合成

算法首先合成一个初始区域,因为邻域搜索是合成计算中系统开销最大的部分,很大程度上决定了合成的速度和效率。所以本文只在合成初始区域时采用邻域搜索,而在后期合成剩余区域时则复用已合成的部分,以达到节省系统开销的目的。具体实现上,参考文献[9]的做法,先在样本体纹理块中按照块体积大小做均匀的划分,即所谓同“相位”纹理间隔排布,然后针对每个纹理块,在样本纹理块中进行邻域搜索,求出可与其拼接的纹理块的集合,匹配原则采用颜色差值的距离公式,分别计算RGB颜色的差值再取平方和的距离公式

式中:S(x,y)为颜色距离;Rx和Ry分别为两点的红色分量;Gx和Gy分别为两点的绿色分量;Bx和By分别为两点的蓝色分量。搜索出满足S(x,y)最小的前n个纹理块放入集合中,n的取值可自由调整,一般取8。接着把纹理块填入初始区域,按照xyz三个方向都间隔一个纹理块尺寸的原则进行排布,在对间隔的空白区域进行填充时,根据文献[9]的讨论,则根据当前空白区域周围分布的纹理块情况,从各自的拼接纹理块集合中进行集合的求交计算,在交集中随机选择一个纹理块。如果交集为空,则选择在各集合中出现次数最多的纹理块。

此外,为了增加纹理的随机性,本文采用一种类似文献[7]提出的经典方法,对于当前待合成空白区域,则其左边的已合成块的拼接块集合中的所有块往右位移一个单位,其他方向上的相邻纹理块也根据位置关系做类似的操作,最后再做集合的求交计算。由于均匀布块与空白区域填充可以并行进行,所以该方法可以提高合成的速度,如图4所示。对于纹理块尺寸大小和重叠区域体积的确定,文献[10]作了深入研究。主要思想是考察不同尺寸下纹理块对于样本纹理块的全局特征以及周期性的反映程度。由于肝脏纹理没有明显的周期性,本文只考察对于全局特征的反映程度。文献[10]针对黑白图像主要考察其灰度直方图,由于本文的数据源是彩色图像,所以将计算转换至RGB颜色空间,通过颜色差值来考察该尺寸下纹理块对样本全局特征的反映程度。所选纹理块尺寸不能太大,否则可匹配的纹理块数目太少,尺寸也不能太小,否则无法反映纹理的全局特征。实现上选取样本纹理体积1/4的纹理块作为划分依据。而重叠区域体积的确定,文献[10]主要考察特定宽度下对于相邻两个纹理块的区分程度,对于肝脏这种随机性比较强的纹理,不同尺寸下这种差异并不大,因此本文选取固定的重叠体积进行计算,对实验结果影响并不大。

3.2 剩余区域合成

在合成剩余部分区域时,则采用复用计算,从已合成的区域中选取合适的纹理块,填充到剩余的待合成区域。参考文献[8]的方法,将其扩展至三维空间。逐步扩大合成纹理块体积,迭代完成整个纹理合成过程。合成剩余区域时,重新计算合成纹理块的尺寸,在已合成区域选择纹理块进行填充。具体实现上,采用成倍增长的方式,每次合成时,将新的纹理块尺寸设置为已合成区域长宽高的各一半,即体积为已合成区域的1/8,当已合成区域长宽高都扩大一倍后,当前区域将被设置为新的已合成区域,并且重新计算合成纹理块的尺寸,开始新一轮的复用操作,进行下一步的合成。这种方式可以有效减小合成纹理块的数目,同时又可以利用已有的合成结果,对于提高合成速度与效率很有帮助。由于本文已经预先对纹理块尺寸做了计算,能够反映样本的全局特性,并且在初始阶段按照相位原则进行了排布,所以在复用选块操作时,只要按照相位标准随机选择块位置即可。

3.3 重叠区域缝合

在重叠区域像素的缝合上,采用类似“羽化”的缝合方法[10],即对重叠区域像素根据其到边界的距离做色彩的插值计算。公式为

C=CA*LA+CB*LB(2)

式中:C为融合计算后的色彩值;CA和CB分别表示区域A和区域B中相应位置的像素值;LA和LB为距离参数,和当前待合成像素到A区域边界及B区域边界距离有关。“羽化”的方法方便快捷,可以保持衔接的部分虚化,起到渐变的作用,从而达到自然衔接的效果。

3.4 边缘像素的处理

最后一步是处理边缘像素,在处理边缘像素时,先判断当前待合成的纹理块是否大部分处于边界外部,若在边界外部的比例小于给定的阈值,则保留该块在内部的部分,舍弃在外部的部分,若在边界外部的比例大于给定的阈值,则舍弃该块,用“羽化”方法合成剩余部分,在这里CB和LB失去意义将其舍去,设K为边界邻近的已合成块,则CA为K的边界像素值,C则与当前待合成像素到K边界的距离LA有关。公式更改为C=CA*LA。实现中,取阈值为30%,可以比较好地判断边界分布情况。

由于切割不是本文研究的主要内容,采用了翟朝亮的切割算法[1]实现对肝脏体的切割。

4 实验及结果分析

利用Visual C++和OpenGL在PC机上实现了上述算法,PC机的配置为Core 2 Duo E4700 2.6 GHz的CPU,2 Gbyte的RAM,NVIDIA GeForce GT 430显卡。所得到的肝脏效果图如图5所示。

本文方法在合成纹理上时间消耗较小,内存占用不大,可以满足虚拟手术显示的要求,统计信息见表1。

5 小结

本文提出一种合成肝脏软组织体纹理的方法,把二维的复用计算方法扩展到三维,只在初始区域进行邻域搜索,而在合成剩余区域则迭代利用之前的结果。实验结果表明该方法能够很大程度上提高合成效率,在虚拟手术实时可视化方面有一定的应用价值。

摘要:虚拟肝脏手术是虚拟手术中的重要内容之一。提出了一种虚拟肝脏建模和体纹理合成方法,通过对肝脏切片数据集的预处理,样条拟合构建虚拟肝脏模型,将基于复用计算的纹理合成扩展到三维空间,应用到构建好的肝脏体上。结果表明,该方法构建的肝脏体能够较好地模拟真实的肝脏结构,绘制的肝脏软组织体纹理具有较好的合成效率和质量,对后续虚拟肝脏手术个性化研究具有一定指导意义。

关键词:虚拟手术,体纹理合成,肝脏,复用计算

参考文献

[1]翟朝亮,陈国栋,王娜,等.基于体纹理的肝脏可视化仿真方法研究[J].电视技术,2012,36(17):169-172.

[2]阎丽霞,洪津津,石教英.虚拟手术中的模型实时绘制[J].计算机工程与应用,2001,37(7):8-10.

[3]邹昆,沃焱,张见威.基于样图的层式体纹理合成算法[J].计算机工程,2012,38(15):208-210.

[4]严志程,陈为.基于二维纹理样本的方向场引导的体纹理合成[J].计算机辅助设计与图形学学报,2008,20(9):1104-1109.

[5]EFROS A,FREEMAN W.Image quilting for texture synthesis and transfer[C]//Proc.the 28th Annual Conference on Computer Graphics and Interactive Techniques.[S.l.]:ACM Press,2001:341-346.

[6]WEI L,LEVOY M.Fast texture synthesis using tree-structured vector quantization[C]//Proc.the 27th Annual Conference on Computer Graphics and Interactive Techniques.[S.l.]:ACM Press,2000:479-488.

[7]ASHIKHMIN M.Synthesizing natural textures[C]//Proc.the2001 Symposium on Interactive 3D Graphics.[S.l.]:ACM Press,2001:217-226.

[8]陈昕,王文成.基于复用计算的大纹理实时合成[J].计算机学报,2010,33(4):768-775.

[9]陈昕,王文成.大尺寸纹理的实时合成[J].软件学报,2009(20):193-201.

科学计算可视化 篇7

计算机视觉是一门技术前沿、应用广泛和获得重要研究的学科,但计算机视觉也是门槛非常高的技术,它要求开发人员具有较高的理论基础和实践动手能力,因而对于初学者和非理工科学生学习和应用难度较大,针对这一问题,已有研究者开发了一些通用的系统和应用库,如OpenCV[1]。OpenCV是由Intel公司资助的开源计算机视觉库。它由一系列的C函数和少量C++类构成,实现了图像处理和计算机视觉方面的许多通用算法。OpenCV还可以用于对图像进行一些高级处理,例如特征检测与跟踪、运动分析、目标分割与识别以及3D重建等。OpenCV在一定程度上降低了计算机视觉的应用门槛。但是用户必须十分熟悉C/C++编程,并且需要花费大量时间熟悉OpenCV的API,大大增加了系统开发的时间周期和工作复杂度。

随着数字媒体技术的发展,计算机视觉技术被应用到数字媒体中[2],系统开发者越来越关注系统的友好性和交互性。研究者提出了一种可视化的编程方式,开发了一种无需代码编程的软件平台,如VVVV[3]。

VVVV是一个用于实时视频合成的软件平台,采用一种可视化编程方式,不仅适合程序设计者,艺术家也可以很容易使用VVVV进行创作。VVVV的主要特点如下:能够同时处理大量的对象;增加了基于DirectX的三维渲染功能;实时的物理模拟,可以模拟刚体动力学(带摩擦的碰撞检测);实时视频分析;VVVV的声音引擎能够播放绝大多数格式的音频文件以及对多个音频文件进行简单的混音;与各式各样的外部设备和协议交互的能力,比如DVD播放机、工业接口(用于照明和电气)、触摸屏、游戏设备、转盘、定位和定向传感器、MIDI设备、DMX接口、串行接口、键盘和鼠标等。VVVV的缺点是功能定位不够专业,缺乏计算机视觉处理的一些高级功能,如视频抠像,而且VVVV对一些应用的实现还不够方便,同时在可视化编程方面也显不足:操作方式过于繁琐,界面不够友好。

Harpia[10]是一个定位于计算机视觉领域的可视化编程软件,它只是针对专业人士进行计算机视觉系统的教育和培训。Harpia基于Linux平台开发,虽然已经发布了Windows平台的版本,但是安装非常繁琐,需要使用python脚本语言;此外Harpia的用户界面是采用gtk[11]开发,界面不够美观而且软件的人机交互设计也非常不友好。

本文专注于计算机视觉领域,开发出了一套新型的交互式计算机系统。本系统采用可视化编程方式封装OpenCV程序库,最大限度降低了计算机视觉系统的开发和使用门槛,使用开源库QT开发出一套美观、人性的软件界面,同时简化用户操作。该软件主要针对Windows平台用户。

1 系统构成

本文系统的结构体系如图1所示,从上到下分为三个层:可视化编程界面,多种形式的模块系统,系统的插件式结构。

1.1 可视化编程界面

我们采用了一种基于结点的可视化编程方式,力图实现编程工作的可视化,避免用户与代码的直接交互,比传统的代码编程更加友好。

图2中系统的图形用户界面基于C++开源库QT开发。用户界面的左边文件夹目录是结点列表,右边灰色区域是用户创作的工作区。工作区中圆角矩形物体就是本文所指的结点,结点的管理是基于QT的graphics-view框架[5],结点的绘制采用了QT的代理窗口技术[6]。结点两端的圆点代表端口,输入端口用蓝色表示,输出端口用红色表示。场景中一共有三种结点:只有输出端口的数据提供者,如提供文件路劲的FileLoader控件;只有输入端口的数据消费者,如显示图片的ImageDislayer控件;既有输入端口又有输出端口的数据处理者,这种结点的标题栏是绿色,如转化图片格式的CvImage2QImage控件。

用户可视化编程的工作流程是:在结点列表中选择所需的结点类型,在工作区创建结点对象;然后使用鼠标在具有相同数据类型的端口间挂接数据流,指定结点之间的数据依赖关系,从而形成一张图形化的流程图,结点是图的顶点而数据流是图的边;系统自动执行用户创建的场景图,产生相应的结果反馈给用户。

1.2 多种形式的模块系统

本系统开发了一套功能强大的模块工具箱。工具箱中的模块封装了OpenCV库中常用的算法函数,诸如导入图片、视频模块,连接摄像头模块,显示图像、视频模块,以及图像、视频分析、处理模块。基于本系统现成的工具箱,用户可以非常方便地进行图像处理、视频跟踪、轮廓提取、人脸检测等实验。

工具箱中的模块按照功能分为三种:输入模块、输出模块、处理模块[8]。他们分别对应1.1节中的数据的提供者、数据的消费者、数据的处理者。图3是系统和用户的数据交互示意图,交互流程为:用户通过输入模块将数据传给数据处理模块,处理模块将运行结果传给输出模块,输出模块将结果可视化反馈给用户。输入和输出模块支持整数、浮点数等基本数据类型,以及向量、矩阵、甚至图片文件、视频文件等数据类型。

1.3 系统的插件式结构

软件的工业化使得软件复用已经从通用类库进化到面向领域的应用框架,应用框架的重用已成为软件开发生产中最有效的重用方式之一。面对这种发展趋势,呼之欲出的便是一种全新的、开放性的、高扩展性的架构体系,即插件式架构[4]。

插件式架构的好处是把扩展功能从框架中剥离出来,降低了主系统框架的复杂度,让框架更容易实现。扩展功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布[7]。

一个通用型的计算机视觉系统,必须具有高度的开放性,方便用户开发面向应用领域的专业化系统,因此本系统采用了插件架构体系。如图4所示,系统的主程序只是一个开放的应用框架,该应用框架提供了插件的标准接口,插件以DLL文件的形式存在。用户可以调用系统开放的程序包,开发自己的输入模块、输出模块、处理模块,然后这些功能模块最终以插件的形式集成到系统的工具箱中。用户只需要把开发出的插件文件放到系统的资源目录下,在主框架运行时,插件就会被动态加载到系统中。可见本系统具有非常高的开放性和可扩展性。

2 关键技术介绍

2.1 可视化编程的数据协议

可视化编程实现了用直观的创作方式代替了繁琐的代码编写、调试工作[9]。用户无需写一行代码,即可在本系统中完成理想的功能。场景中用户直接操纵的有两类物体:结点、数据流。

数据协议定义了结点间的数据通信方式。主流的有两种方案:

方案1,采用面向过程的思想:数据流是数据的管理者,数据流负责数据的创建销毁。结点只是数据的处理者,结点的回调函数从输入端口的数据流中读取数据,最后把结果数据写到输出端口数据流中。

方案2,采用面向对象的思想,将数据的管理细节封装在结点类中,数据流的职责最大化地精简。

结点是数据的管理者。结点的每个输出端口都申请一个数据缓存区。回调函数每次执行完成以后,首先把结果数据写到输出端口缓存区,然后把缓存区的地址存放到挂接的数据流中。每次存放到数据流中的不是数据本身,而是数据缓存区的常量指针,这就保证了数据只能在其所属结点内部修改,其他模块只能读取而不能修改。

数据流是数据指针的载体而不是数据的载体。数据流中存储的不是实际的数据,而只是指向数据的常量指针。数据流对数据类型以及数据内容是透明的,数据的生命周期由所属结点管理。

OpenCV中数据主要以图像为主。在结点式编程中,结点一个输出端口可以挂接多个数据流,采用方案1, 数据流中存储数据则会产生多份相同的数据拷贝,数据流的拷贝成本和空间存储成本正比于所载数据类型大小,严重影响场景图的执行效率和整个系统的空间开销。而方案2中,数据流中存储的是数据的常量指针,在C++中任何类型的指针都只有四个字节,因为四个字节的拷贝成本和存储成本基本上可以忽略,所以本系统采用方案2。

2.2 结点的状态管理和场景执行机制

2.2.1 结点的执行机制

每个结点有若干输入、输出端口、一个回调函数。回调函数的主要功能是从输入端口获得数据,完成计算操作后将数据存放到输出端口,而结点状态管理主要是控制结点内部回调函数的执行行为。

结点内部有三种状态量:precondition,launched,exec。

1) precondition表示结点的回调函数执行的前提条件是否满足。对于数据提供者至少一个输出端口挂接了数据流,对于数据处理者至少一个输入和一个输出端口挂接了数据流,对于数据的消费者至少一个输入端口挂接了数据流。

2) launched表示结点的回调函数是否执行过,launched为true则表示回调函数已经执行成功一次,以后不再执行回调函数直到下一次launched被置为false,所以通过控制launched变量可以控制结点的回调函数是否执行。

3) exec表示结点回调函数是否执行成功,如果执行失败则返回执行错误。

图5为结点的状态管理流程图:先判断前提条件precondition是否满足,不满足直接退出,满足则继续判断launched是否为false,如果launched为false则需要执行回调函数,如果回调函数执行成功则置launched为true,最后退出函数。

2.2.2 场景执行机制

结点的状态管理是在单个结点内部进行,而场景执行是管理场景中所有结点。场景执行过程描述如下:

1) 首先判断场景中的连通分量个数。只有个数等于1的时候继续处理,连通分量大于1说明有些孤立结点还没有被挂接数据流,直接退出执行函数。

2) 判断场景图中是否有环。用户在挂接数据流的时候可能会导致环,当检测到环以后通知用户操作非法直接退出函数的执行,没有环则继续执行。

3) 对场景中所有结点进行拓扑排序,然后按照排序后的次序的依次执行结点的回调函数。由于结点之间有数据依赖性,当前驱结点的内部数据被更新以后,它的launched状态量被置为false,此时必须把它所有后继结点的launched也置为false,从而迫使后继结点更新数据。

场景的执行函数作为时钟函数轮询调用。OpenCV中的视频每秒约25帧,即每一帧有40ms的处理时间,为了保证视频数据处理操作的实时性,系统中时钟触发周期被设为10ms。这种时钟轮询机制也保证在整个创作过程中,用户对场景图的任何修改都能及时被响应。

3 结果分析

3.1 编程方式对比

使用本系统进行视频处理的效果如图6所示。场景中的所有结点构成一个连通图,结点按照拓扑排序的序列依次执行内部回调函数。数据源头WebProvider从摄像头获取视频的帧数据,输出数据有两路:一路把帧数据传给CvImage2QImage结点,转化为QImage直接显示到窗口;另一路传给CvContourExtractor结点进行轮廓提取。轮廓提取的结果图像也有两路:一路直接显示到窗口;另一路传给CvSmooth结点进行光滑处理然后显示。

如果使用传统的代码编程:程序设计者首先需要调用OpenCV的接口函数创建图像、显示窗口,程序结束设计者需要显式地销毁窗口和申请的图像资源。设计者使用OpenCV的代码直接操作的是指针,C/C++中的指针不论对于程序初学者,还是经验丰富的老手都是噩梦,野指针、悬空指针、内存泄露等指针相关问题都是程序设计中的难点。使用可视化编程方式,用户只需要在场景中动态创建、删除结点和数据流,根本不必关心结点内部的数据指针的申请和释放操作。

3.2 可视化编程的效率分析

场景中所有结点的绘制由QT管理,因为UI渲染使用单独的UI线程[5],跟主线程是并行的,所以UI的渲染并不会影响主线程的效率。

式(1)为场景的执行代价公式,其中函数f1为连通分量检测,f2为环检测,f3为拓扑排序。exect为每个结点内部的OpenCV库函数。

E=f1(n)+f2(n)+f3(n)+in(exect) (1)

f1,f2,f3三个函数都跟结点个数成正比,经测试场景的连通分量计算、环检测、拓扑排序总耗时为1ms左右,因此整个场景的执行代价近似于所有结点的回调函数时间之和,结点的回调函数执行效率由所调用的OpenCV库函数决定。

如图6视频处理示例,根据式(1),场景的执行代价公式为:

Provider是所有数据提供者的执行代价,Displayer是所有数据消费者的代价之和。经测试图6场景的一次执行代价是15ms,其中CvImage2QImage模块最耗时,该模块把OpenCV的IplImage图片转化到QImage,耗时4ms;CvContourExtractor模块进行轮廓提取,耗时1ms;CvSmooth模块进行光滑处理,耗时1ms;Provider和Displayer的代价之和为1ms。

4 结 语

本文使用QT、OpenCV等开源库,开发了一套可视化的交互式计算机视觉系统。该系统克服了传统的计算机视觉系统的编程能力、算法能力高要求的缺点,采用基于结点的可视化编程代替直接的代码编程,在注重系统本身效率的同时兼顾用户与系统的交互性,开发了一套非常友好的用户界面。此外,本系统采用插件化的方式架构,具有高度的开放性。在应用领域上,不仅适合专业人士,方便其基于本系统的接口进行代码编程,开发自己的功能插件;而且适用于不懂编程的用户,让他们能够采用可视化编程的方式创作场景,从而完成想要的功能。总之,该系统具有良好的应用前景。

摘要:计算机视觉是计算机科学中非常重要的学科,与图形图像、模式识别、计算几何、统计推断等学科密切相关。但是现有的计算机视觉系统普遍存在一个问题:涉及算法难度大且数量多,数学基础和编程能力要求高,非常不利于初学者的学习。为了解决这一问题,开发了可视化的交互式计算机视觉系统。简单地介绍整个系统的设计以及一些重要的技术,重点描述基于结点的可视化编程的原理,功能模块的整合,以及系统的插件式架构。

关键词:计算机视觉系统,交互,插件式架构,基于结点的可视化编程

参考文献

[1]Bradski G,Kaehler A,于仕琪,等.学习OpenCV[M].北京:清华出版社,2009:1-15.

[2]冯广超.数字媒体概论[M].北京:中国人民大学出版社,2004:55-56.

[3]VVVV:a multipurpose toolkit[EB/OL].http://vvvv.org/tiki-index.php.

[4]Sommerville I.软件工程[M].程成,陈霞,译.北京:机械工业出版社,2003:150-156.

[5]Blanchette J,Summerfield M.C++GUI Qt4编程[M].闫锋欣,等译.北京:电子工业出版社,2008.

[6]Ezust A,Ezust P.C++设计模式—基于QT4开源跨平台开发框架[M].李仁见,战晓明,译.北京:清华大学出版社,2007:125-128.

[7]Gamma E,Helm R,Johnson R,et al.Design Patterns[M].Addison-Wesley Professional,1995.

[8]QuartzComposer,2000-2008[EB/OL].http://developer.apple.com/graphicsimaging/quartzcomposer/.

[9]Almada A,Lopes G,Almeida A,et al.YVision:A General PurposeSoftware Composition Framework[M].

[10]Harpia:a graphic environment[EB/OL].http://s2i.das.ufsc.br/harpia.

上一篇:人脐带间充质干细胞下一篇:振动和变形