基于视频的绘制七篇

2024-09-07

基于视频的绘制 篇1

在视频序列中,任意时刻获得的图像信息都是对现实场景的局部描述,只有将所有局部信息有机地结合起来,方可形成对场景的整体认识,动态全景图就是由多帧视频序列拼接形成的一个完整全景图像[1]。

最简单的图像拼接就是把一系列图像放在一起,如果图像间有互相重叠的部分,只在一幅图像中保留这部分,其他图像的则被“剪掉”,然后将这些图像按序拼在一起,最初的卫星图像大致就是这种情况[2]。近年来,人们提出了很多图像拼接的方法[4,5,6,7],各方法适用于不同的情况,但这些方法基本都是针对静态图像提出的,使用这些方法拼接含动态场景的视频序列图像主要存在两个问题:1)累积误差比较大。现有的方法基本都会事先选定参考帧图像,其他图像同参考帧配准,然后利用某种参数变换实现图像的拼接。由于图像投影会产生累积误差,这些方法会造成拼接图像扭曲和失真,图像越多,这种积累误差就越大。视频序列包含的图像帧往往很多,因此采用参考帧的方法对图像序列拼接,全景图的变形会比较严重;2)不能很好地处理视频中的动态信息。现有的方法主要针对静态场景图像的拼接,当视频序列中存在动态信息时,用现有的方法拼接的全景图像会产生“鬼影”的现象,使全景图像的某些地方比较模糊[8]。为克服这些方法的限制和影响,本文描述了一种新的方法-流形方法,实现了视频图像序列的拼接。实验证明利用这种方法拼接的全景图可最大限度的保证原图像中的细节,获得较好的分辨率,同其他方法相比,因为没有全局变量的存在,拼接后的图像与原图像相比,变形小得多。

2 流形的概念及流形拼接的原理

流形(Manifold)是现代数学中描述复杂对象的基本概念。粗略地讲,流形就是将局部简单的面片粘合起来形成整体复杂的形状[9]。在现实生活中,世界地图册是流形最直观的例子,即地球体是通过一系列相互重叠的矩形图片来进行描述的。下面针对本文中的应用,简单地描述有关二维流形的基本概念[9]:

一个二维图卡(Chart)为一个二元组(Ui,φi),其中Ui是一个开集,φi是Ui到φi(Ui)上的双射,φi(Ui)是R2中的开集,Ui称为开邻域,φi称为坐标映射,φi(Ui)称为坐标。

一个二维图册(Atlas)是一组图卡的集合{(Ui,φi)}。当Ui∩Uj≠φ时,如果φiφj-1、φjφi1-是Cr的,则称相应图卡是与Cr相容的。φiφj-1、φjφi1-是坐标φi(Ui)、φj(Uj)间的坐标变换。

一个二维流形就是一个图册,其中图卡相互间满足Cr的相容条件,图1是流形构造示意图。

一个低维流形可借助拓扑变换映射到高维空间,称为嵌入。一个空间曲面可以看成是一个二维流形在3D空间的嵌入。结合所面临的问题,覆盖住整个图像的椭圆集合就构成了图像平面的一个二维流形结构,需要重构的形状是这个二维流形在空间的嵌入。

基于流形的图像拼接方法借助于条式相机的原理。条式相机拍摄的图像为细窄条状图,当它沿着景物一侧横扫拍摄时,将所得一组条形图合成一幅大的图像。由于条式相机应用范围小,很难得到,因此一般采用普通相机代替,从采集的图像序列中每帧切割一条图像,然后对齐融合成全景图像。拼接过程如图2所示:第一帧条形图被放置在全景图中后,第二帧条形图经恰当的变形(Warp)与第一帧条形图边界相吻合,其右边界不变,左边界与第一条形图S1的右边界相匹配,第三帧条形图做与第二帧条形图不同的变形与已经变形的第二帧条形图的边界相匹配,同样S3的右边界不变而左边界与S2的右界相匹配,依次下去……,直到全景图拼接完成。由于全景图中条形图的变形只取决于相邻帧而与先前帧所做过的变形无关,保证了拼接后的全景图分辨率同原图像一样,物体的大小、形状均没有改变,而且投影后的光流方向与全景图的重构方向平行,避免了变形积累产生新图像扭曲、失真的现象。

基于同样的思路,视频图像序列可采用流形方法拼接为比单幅图像的视场大得多的全景图。将图像序列中的条形图按某种测度组成流形中的图卡,沿一定的路径将这些图卡粘合起来构成图册,即完成了视频全景图的绘制。假定Ω是一个视频序列,即一系列有序图像的集合{ψf}1N。每幅图像依序包含有图卡集ϕf1...ϕfK等,图卡是一个或几个条形图的集合,条形图必须满足以下两个条件:

1)条形图应当与光流的方向垂直;

2)将条形图进行适当的变形后拼入全景图像,变形的光流方向与图像拼接的方向平行。

这样视频序列可看作图卡的集合{ϕfi}(i是空间坐标轴X的坐标,f是时间坐标轴T的坐标)。视频场景的流形可用一系列图卡集表示。

3 视频图像序列的流形拼接过程

为将动态信息和静态信息统一对待,将视频序列看作一个时空体,以体中的时空坐标(x,y,t)表示视频帧t中的像素(x,y)。我们只需建立这样一个流形:这个流形能够穿过整个时空体,从视频的第一帧到最后一帧,视觉上不会让人感觉有任何人工的痕迹,看起来像一幅真实而完整的图像。假设流形能够切分整个时空体从而组成一个有序的平面,这个假定具有一般性,是比较容易实现的,比如相机沿某一方向平移摇摄的情况。在这个假设下,流形被2D剖面上的路径唯一定义,路径上的每一点代表了流形的一个图卡,同时路径也决定了流形的次序。流形上的每一点有两个领域,一个在它之前,一个之后,这样流形的质量仅仅依赖于局部。

3.1 图卡构建

将视频序列Ω看作图卡{ϕfi}的集合,图卡由条形图组成,条形图的宽度设置为一个像素,较宽的条形图可根据需要形成,按照流形拼接的原理,如果将视频中相对应的图卡并排按序放置就构成了一个流形,即一幅完整的全景图。以ϕ=(v,e)表示一个图卡,其中,节点v是k×n的条形图,边缘e⊆v×v为代价函数,表示两图卡间可能的变换,每个边缘有一个与之联系的变换:P:e→ℜ。假设某视频序列中两相邻帧的图卡如图3所示,第一帧中的ϕ13,第二帧中的ϕ23(在图3中以圆圈表示),如果图卡对{ϕ13,ϕ23}为两幅图像中的同一场景,拼接时可把ϕ23的下一图卡ϕ24直接放置在1ϕ3的右边。可定义某一相似测度以确定{ϕ13,ϕ23}是否是两幅图像中的同一场景。

3.2 图卡间相似测度

图卡构建后,需要定义一种测度,以确定ϕfi是否可以放在ϕlk之后构成正确的流形。图卡间的相似测度D可用下式衡量:

式(1)说明当把两图卡并排放在一起,它们与视频图像中的一部分相似,那么这对图卡就是一个有效的邻域。通过公式可得到D(.,.)的上界:

这两个位置已知,而代价接近全局最小量,因此这是一个紧致边界。根据式(2)确定的图卡的每个边缘对时空体构成切面。

3.3 全局优化

当计算边缘代价时,需要两个特别节点标志流形的开始和结束。流形拼接的目标是找到一条从第一帧到最后一帧的路径,以便得到整个视频序列的全景图像。开始节点estart以零代价将第一帧图像中的所有节点联系在一起,eend以零代价将最后一帧图像中的所有节点联系在一起,二者之间的最短路径包含了最小变形的流形。

这样,每条从estart到eend的路径与一个流形相对应,边缘权重嵌入到代价函数中,最小变形的路径可利用Dijkstra算法[11]得到。通过与{ϕfjKj}Lj=1相对应的图卡依最小代价路径按序放在一起就得到了一幅完整的全景图像,以上构建过程保证了流形拼接具有最小的视觉累积误差。

3.4 图像交叠处的颜色融合

对原图像进行高斯滤波分解得到高斯低通滤波图像系列,通过计算两层高斯滤波图像之间的差所得到的带通滤波图像层构成拉普拉斯金字塔,为此需要把低分辨率图像扩充至与高分辨率图像一样的尺寸。对被拼接图像分别进行拉普拉斯金字塔分解得LA、LB,则可以对LA、LB相应层按某种原则进行合成(比如进行样条过渡),得到融合图像金字塔LC,然后对LC再次扩展、叠加得到最终的融合(拼接)图像[12]。

4 实验结果和分析

采用普通数码摄相机Canon A610,拍摄了户外一段320×240视频图像序列,在PC机上采用Matlab编程,进行实验。图4(a)为这一视频图像序列中的三个样本。图4(b)是采用参考文献[13]的方法对此序列的前24帧拼接的结果,而图4(c)则是采用本文所描述的流形的方法对全部186帧拼接而成的全景图。当摄像机存在运动或者场景中存在移动物体的时候,使用文献[13]的方法拼接而成的全景图存在“鬼影”和场景变形的现象,而使用流形的方法得到的全景图,没有大的变形,视觉效果要好的多。

5 结论

本文针对含有动态场景的视频序列,描述了一种全景图的绘制方法-动态视频场景的流形拼接,该方法通过提取视频序列中的条形图构成图卡,选择优化路径,将相对应的图卡构成流形组成全景图。该方法可以克服景物结构和运动方式的限制以及累积误差过大的影响,较好的实现了含动态场景的视频序列的全景图绘制。

摘要:针对含动态场景的视频序列,本文提出了一种基于流形的全景图的绘制方法。该方法首先从视频序列中提取条形图,根据需要由一个或几个条形图组成图卡,利用相似测度确定图卡在流形种的次序;然后将相对应的图卡依最小代价路径按序排列在一起构成流形,完成全景图的拼接;最后利用拼接区域的相似性信息,使用基于局部金字塔的方法融合图像交叠处的颜色。实验结果表明,使用该方法得到的全景图可最大限度的保证原图像中的细节,没有严重的扭曲和变形,视觉效果比较好。

基于视频的绘制 篇2

关键词:OGRE,虚拟仪表,Overlay,虚拟座舱,虚拟现实

OGRE(Object Oriented Graphics Engine)是用C++开发的一个面向对象、扩展性强、跨平台的开源3D图形引擎,广泛应用于3D游戏设计和科学模拟领域等。开发OGRE的目的是让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用软件。作为一个开源C++类库,OGRE隐藏了底层图形函数库的所细节,提供了一组面向场景的接口,相比调用底层库,应用OGRE可以较快地开发三维应用程序,显示动态3D模型和构建场景。OGRE具有良好扩展性,插件机制让用户方便开发专用模块并集成在OGRE中[1]。众多优点使得OGRE开始广泛应用于模拟飞行类游戏和驾驶训练软件中,在这种场合中,逼真的虚拟仪表不仅提高沉浸感,也是用户获取信息的重要渠道,虚拟仪表是OGRE平台模拟驾驶类软件不可或缺的部分。

1 虚拟仪表设计

1.1 设计架构

仪表种类多样,例如飞行模拟器上有航向姿态仪表和大气系统仪表。仪表按外观种类分为盘式仪表、柱式仪表和矩形仪表等。为了保证通用性、可维护性及使用时的易于控制,设计虚拟仪表时采用开放模式[2],将单个仪表的划分为若干元素:背景、仪表底盘,度量刻度值、指针(或者数字和棒图)、文字提示和告警信号牌等,每个元素有大小、颜色、形状和外观纹理特性,这些特性可以根据需要进行修改。同类元素可以相互替换,元素可以划分为静态和动态两类,静态元素指在使用时不变化的部分,比如仪表底盘和度量刻度值;动态元素指在运行时会发生旋转或者缩放变化的元素,比如指针和棒图等,这些元素既相互关联,又充分独立。当一个应用系统包含大量仪表时,不同仪表之间共用元素,提高效率。图1是一台速度仪表建模示意图。

1.2 建模过程

仪表建模的第一步是准备仪表元素,可以用通用图像处理软件(例如Photoshop)或者专业HMI制作软件如GL studio进行。

1)制作纹理:通过数码相机拍摄或者绘图软件绘制出纹理,纹理的长宽分辨率一般与对应的仪表在窗口中占据的大小一致,并且存储为PNG格式,以保证充分的颜色信息,同时无色部分能够透明,实现不同仪表在窗口中层叠放置的视觉效果。

2)创建仪表模型:仪表模型是2D和3D皆可,因为始终面向摄像机,仪表对透视效果要求不高,应用2D模型加上纹理贴图可以在不加重三维渲染任务量的同时获得良好效果。生成的2D仪表模型按动态和静态元素整合为两个文件,分别取名panel.png和handle.png,存放到OGRE所在目录的media/meter/static和media/meter/dynamic文件夹下。

2 虚拟仪表的加载与驱动

为简明起见,改写Ogre SDK自带的Exampl Application框架来加载和驱动虚拟仪表。Ogre中的Overlay(表层)类是在三维场景之外的渲染对象的接口,可用来控制仪表。显示仪表的过程是继承类Example Application生成新的类New Example,并为后者添加新的虚拟方法setup Meter,其功能是:生成针对仪表的场景管理器Scene Manager::ov Scenemanager,添加用于仪表的视口对象Viewport:ov Viewport,将其长宽比设置为1:1,避免指针在旋转时的变形。在类Example Frame Listener的子类New Listener重写方法frame Started,以刷新指针的大小和位置,实现驱动虚拟仪表。

2.1 仪表资源加载

不仅在插件机制上,在资源管理上也体现了OGRE优秀的扩展性,采用脚本的形式管理模型(mesh文件)、骨骼、材质、纹理、粒子脚本和其他资源,这些资源分门别类放在一个名字叫media文件夹下的各个子文件夹中。仪表模型在OGRE中以资源看待[2]。加载仪表的第一步让OGRE管理器获知仪表位置在文件夹media/meter/dynamic(static)中,为此在OGRE的资源地址脚本resource.cfg中的节Popular中添加以下三项:

脚本中的meter/Panel是为材质选取的标识符,正斜杠/的作用是让多个标识符在层次上更加清晰,容易区分;technique是渲染策略,被OGRE根据硬件平台的差异而选取[3];pass是渲染通道,lighting表示是否计算光照,一般不把仪表划为三维场景范围之内,所以不计算光照,其值为off,同理不需要深度测试,depth_check项值为off;scene_blend项允许仪表与被遮盖的场景进行alpha计算;texture_unit内容指向前文所建的仪表模型。

3.2 仪表显示

New Examaple的方法setup Meter里面是仪表显示的核心代码,如下:

2.3 仪表驱动

OGRE可以通过类Overlay管理仪表,Overlay为驱动仪表提供了三组方法[4],分别是旋转(rotate和set Rotate)、平移(scroll和set Scroll)和缩放(scale和set Scale)。为了实现通过New Listener::frame Started来驱动仪表,首先为New Listener添加成员变量Overlay*m Handle,并在New Listener的构造函数中增加一个参数用来初始化m Handle,然后重写New Example::create Listener,在其中创建New Listener对象,并将成员变量New Example::m Handle1的值传递给New Listener::m Handle。

OGRE运行期间渲染每一帧之前都会调用方法frame Started,在此方法中根据飞行器实体或者汽车实体的位置变化求出速度,在方法frame Started中驱动仪表的伪代码如下:

图2是含有多个仪表的运行效果截图。

4 结论

在驾驶和飞行类模拟领域,在专业图像或者仪表工具中开发仪表模型,导入OGRE平台,通过对仪表动态元素的驱动,实现逼真的虚拟仪表,在尽量不增加渲染负担的前提下,提高了虚拟场景的沉浸感,导入和驱动仪表采用OGRE的Overlay类,使得控制仪表的灵活性较高,提高了开发效率。

参考文献

[1]邸锐.OGRE 3D游戏框架开发指南[M].北京:电子工业出版社,2010:63-65.

[2]刘凯,冯文武.虚拟仪器在VC++中的一种应用[J].计算机信息与技术,2008(07):73-74.

[3]李刚,苏丽君,张军令.OGRE技术在三维仿真场景中的应用研究[J].舰船电子工程,2009(03):92-94.

基于视频的绘制 篇3

一、Illustrator的工作区

Illustrator是Adobe公司推出的基于矢量的图形制作软件。Ai是Illustrator的专用格式,现已成为业界矢量图形的标准,矢量图其无损坏的无限放大功能更加便于作品的修改与展示,广泛应用于平面设计、图形绘制、图像处理和版面编排等诸多领域。它与兄弟软件——位图图形处理软件Photoshop有类似的界面,并能共享一些插件和功能,实现无缝连接。

图形对象的绘制是通过不同工具、不同命令以及不同面板的选项结合来完成的,所以认识Illustrator的工作区中的导航至关重要。可以看到,该窗口具有Window窗口的一些特性,如标题栏、菜单栏、工具箱、面板、【控制】面板等,其中最重要的是绘图窗口,所有图形的绘制和编辑都将在该窗口中进行,如图1所示。

菜单栏是Illustrator的一个组件,很多重要的操作都是通过该部分实现的。它包括9个菜单,在每个菜单中包含了一系列的子命令。在使用菜单中的命令时,要先选定对象,然后执行相应的命令即可。

工具箱在默认状态下嵌入在屏幕的左侧,它提供了大量具有强大功能的工具,绘图路径、编辑路径、制作图表、添加符号等操作都可以通过它来实现。

面板在默认状态下以面板组的形式出现,并嵌入在屏幕的右侧。它是Illustrator中用于管理并编辑对象的组件,在编辑图形对象时结合相应的面板可大大方便操作。【控制】面板在菜单的下方,用来显示当前所选工具,并提供用于调整对象属性的一些选项。

绘图区域是创建和编辑图形的位置。在其中可以配合使用工具、面板、菜单命令等创建和处理文件。绘图区域、工具箱、面板、【控制】面板等元素的组合称为工作区,可以针对其中要执行的任务对其进行自定。

二、Illustrator地理绘图

(一)绘制编辑图形

Illustrator中绘制工具有很多,其中主要包括线类工具、矩形工具、椭圆工具、多边形工具、钢笔工具等,使用这些工具可以绘制出各种图形。工具箱的使用与Photoshop类似,选择好要使用的工具,属性栏会显示出该工具的属性设置,通过属性的参数设置可以提高图形绘制的精确度和速度。图形创建之后,还要对其形状编辑进行精确的调整,以达到最佳效果。

(二)操作变换

对比较复杂的图形需要通过各种变换来完成,Illus?鄄trator提供了强大的变换编辑功能,主要有复制、变换、变形、路径查找、图形复合、对齐与排列等,掌握这些操作变换方法,可以更快、更好地提高绘图质量。

(三)图形描边与填充

对已绘制好的图形对象还要对其轮廓线及线内区域进行填充,调用相应画笔、颜色、符号等面板,设置其属性和参数,通过工具箱中选择工具、实时上色工具,对图形描边或面状填充等。

三、Illustrator地理绘图的应用

(一)地理示意图的绘制

绘制地理示意图总体难度不大,用绘图工具栏的直线工具、矩形(正方形)、椭圆(圆)、钢笔工具及对象变换、描边、实时上色等就能完成。如夏至日光照图的绘制(见图2)。

1.绘制经线:选择椭圆工具,按下“shift”键拖动鼠标绘制一个正圆,用黑色描边,不填充。然后使用选择工具单击正圆,调出“变换工具” →“分别变换”,设置水平缩放为66.6%,选择复制,再选择正圆,重复一次“分别变换”,将设置水平缩放为33.3%,复制,完成6条经线的绘制。

2.利用直线工具,绘制赤道和地轴,选择地轴,调出“变换工具”→“旋转”,填写旋转角度为23.5°,单击复制,完成晨线的制作。

3.使用选择工具,选择所有的线条,单击实时上色工具,选择色板库中“图案”→“基本图形—线条” 中的相应线条对夜半球区域进行填充。

4.调出画笔工具,使用“箭头—标准”库中的合适箭头,直线绘制光线,完成夏至日光照图的绘制。

(二)地理图表的绘制

在Illustrator绘图工具栏中自带有类似excle的图表工具,有柱状图、条形图、面积图、折线图、饼图、雷达图、散点图等9种图表工具,点击其中一种图表工具,页面将产生一个电子表格,只需将数据文本填入表格,系统将自动完成相应地理图表的绘制,同时可以对图表的各种属性进行相应的设置,还可以直接从外部导入数据完成图表的绘制。如导入“2002~2007年我国某特大城市郊区年平均人口迁移统计表”(2011年福建省高考文综卷3~4题题干资料),选择图形类型,绘制成条形图(如图3)。

(三)地图的绘制

用Illustrator绘制地图,一般采用先“底图描摹”,后“矢量加工”的方法进行绘制。

1.导入地理底图。选取标准的地理底图,用扫描仪扫描真彩色,分辨率为300dpi,存储为位图格式。导入该位图,然后点击菜单栏上的“实时描摹”命令,即可将选择的位图转换为矢量图,选择获得的描摹效果图并锁定,复制建立一个新图层,将实时描摹图层上描摹不准确或干扰信息删除,并在新图层上绘制、矢量加工地图。

2.地图绘制的一般顺序是先绘制线状地物,然后绘制点状符号及文字注记,最后填充面状地物。

(1)线状地物的绘制

①制作线状符号

线状地物有河流、道路、长城、各种境界等。首先需要繪制各种线状地物的符号,将非重复图案的部分作为一个元素图案单元,Illustrator软件能把所需要的任何带图案的线条画出来,如河流“■”、铁路“■”、国界线“■”、长城“■”、山脉“■”等图案单元,将这些图案单元转化为画笔笔触,方法是:选中图案单元拖拽到“画笔”工具面板中,出现新建笔刷对话框,选择画笔类型(绘制线状地物不发生变形的图案单元选择图案画笔,如国界线、长城等;会发生变形的图案单元选择艺术画笔,如河流)。在出现的对话框中输入制作线型名称,调整各项值,线型画笔制作完毕。

②绘制图内线状地物

调出线状图案画笔,使用画笔工具在图层上直接绘制。不同线状要素要分层绘制,调整各要素层之间的上下压盖关系。例如:河流、道路、铁路的上下顺序(从下到上即从底到顶)依次为河流、湖泊、乡道、县道、省道、国道、铁路、高速等(如图4)。不同线状要素设定不同的线型与笔画颜色,遵循地图基本颜色与线型设定规则,绘制时要求线条清晰,粗细均匀,比例适当。

(2)点状及文字注记的绘制

点状图形多在“符号”面板中直接使用,面板中无法找到的点状符号可以绘制成基本图形,然后选中拖拽到符号工具面板中,双击工具面板中此符号定义名称。如:省、市、县等各级行政驻地符号等。绘制时直接从符号工具面板中拖拽出所需符号到适当位置即可。

不同类别符号要分别绘制,不同符号之间不考虑图层上下压盖顺序。不同类别注记分层注记,注记之间不能压盖。Illustrator的文本处理功能强大,有特殊的排版功能,可以根据需要设定文字大小、倾斜角度、颜色等,地理插图的图中文字一般相当于宋体6号字,文字工具栏中提供6种不同的文字排列选择方式,绘制要求颜色清晰,层次分明,反差适度。

(3)面状地物的绘制

利用“钢笔”工具勾勒出面板地物的分布范围,获取面板工具中的面状符号,选中对象执行“对象”→“实时上色”→“建立”命令,将对创建的区域实时上色,选择“实时上色工具”,选择在“色板”工具面板中有大量的点、纹理、线条等面状符号的基本图形,如面状符号砾石、泥滩、波纹、灌木丛等。不同区域设置不同图形,面状地物的绘制要根据主题,分清主次,过渡自然,风格相近。

图5(甲)是一幅教材地理插图,图5(乙)用是Illus?鄄trator绘制而成的地图。首先通过图像扫描,置入Illus?鄄trator软件使用“实时临摹”工具将位图转化成矢量图。依次选择相应线状、面状、点状信息建立相应的图层,选择不同的工具在相应图层绘制。地图图层关系一般是面状放在最底层,线状在中间,点状、文字和注记在最上层。绘制完成后将底图和快速描摹图层设置为隐藏及禁止打印或導出,选中效果图,导出为”“.tif”格式文件,插入word文档再编辑。

四、Illustrator的兼容与功能整合

Illustrator支持的文件格式非常多,除了常见的一些位图图像格式外,可支持“.psd”“.jpeg”“.bmp”“.tiff”“.dwg”“.dxf” “.swf”“.png”等,它还可以导入CAD、CDR数据,如有其他数据格式可以通过转换为CAD或CDR格式,再导入到Illustrator进行编辑。实现位图与矢量图相互转换,可以大量减少绘制工作,只对其进行修改、整饰即可。地理绘图要考虑修改方便,重复使用,提高地图要素的使用效率,对地图要素进行分类,根据图层、填充颜色图案、笔画颜色、笔画粗细、符号实例、样式等方式进行区分,建立相应的模块,日后使用可直接从模板导入。同时Ai可以将文件输出为多种格式,通过Illustrator让Adobe公司的产品与其他绘图软件实现无缝连接。

参考文献

[1]黄仁涛.专题地图编辑[M].武汉:武汉大学出版社,2003.

[2]刘影.Adobe Illustrator地图编制的方法[J].城市建设理论研究,2012(02).

[3]佟凤义,刘好增,王敏.Illustrator CS5平面设计与制作标准教程[M].北京:清华大学出版社,2011.

[4] Adobe公司.Adobe Illustrator CS5中文版经典教程[M].北京:人民邮电出版社,2010.

[5]谢友根. 基于CorelDRAW的地理绘图技能突破[J].中学地理教学参考,2011(10).

基于VC++的地震剖面图的绘制 篇4

关键词:地震,剖面图,VC++

二维地震剖面包括水平剖面和偏移剖面, 目前人们常用水平剖面做平面构造图。二维地震剖面图可以用来解释地质情况, 它就像在三维地震数据体的基础上被人用刀从上向下切了一下。近来, 随着计算机的发展, VC++编程语言在各个领域的绘图方面也越来越受欢迎。

一、地震数据介绍

地震剖面数据格式主要有SEG-Y标准地震数据格式与二进制数据两种。其中, SEG-Y格式中包括卷头、道头以及数据信息, 及一切有关该数据的信息的描述;二进制文件则只有数据信息, 相当于SEG-Y格式数据去掉了卷头、道头信息。如果使用SEG-Y格式数据可以得到诸如道号、采样点数等信息, 使用二进制数据时, 必须人为合成数据的排列信息。

SEG-Y地震数据分为两种:工作站版和微机版。其中, 工作站版的数据由文件头和数据体组成。微机版和工作站版SEG-Y数据结构一样, 但是数据的存储格式不同。工作站IEEE和IBM格式与微机格式可以进行互转, 工作站版的IEEE和IBM的高字节在前、低字节在后, 即Big Endian, 微机则是低字节在前、高字节在后, 即Little Endian。IEEE和IBM的32位、16位的整型转换成微机格式:只需交换高、低位即可。IEEE格式32位浮点型与微机格式的32位浮点型相比:只要进行高、低位交换即可。IBM格式32位浮点型要转换位微机格式:需要分拆字位, 重新进行数值计算才能得到正确的微机数值。

二、地震剖面图的绘制

1. 双缓冲画图介绍

双缓冲在图形图象处理编程过程中是一种基本的技术。如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理, 那么窗体在重绘时由于过频繁的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。

双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟”的黑板, 然后在这块黑板上绘制复杂的图形, 等图形全部绘制完毕的时候, 再一次性的把内存中绘制好的图形“拷贝”到另一块黑板 (屏幕) 上。采取这种方法可以提高绘图速度, 极大的改善绘图效果。

2. 地震剖面图绘制介绍

在绘制地震剖面图之前首先准备地震数据中的数据道数、采样点数、采样间隔, 这三个数据数绘制剖面图的必备数据。

(1) 数据的归一化处理

首先统计二维地震数据中绝对值最大的值作为最大值, 然后将每个数据进行归一化。如:m_avrdata=m_data/m_max;其中m_data表示任意一个地震数据, m_max表示地震数据中的最大值, m_avrdata表示地震数据归一化后的值, 将该值作为标准值。

(2) 屏幕坐标的计算

假设显示剖面图的屏幕宽度为m_tol Width, 高度为m_tol Height, 一屏显示的道数为m_trace Num, 每道显示的采样点数为m_sample Num, 则每道的宽度对应的像素数为:m_ftrace Num=m_tol Width/m_trace Num;抽样点间隔为:m_fsamplerate=m_tol Height/m_sample Num个像素。

将归一化后的地震数据求归一化后最值m_av Max, 则第i道第j个抽样点的横坐标为X=m_ftrace Num*I+ (m_avrdata/m_av Max) *m_ftrace Num;纵坐标为Y=m_fsamplerate*j;绘图时将每道的数据用从上到下连起来, 最终便形成了我们看到的地震剖面图。

三、绘制效果图 (如图2)

四、结束语

本文通过对地震数据的格式及地震数据的基本情况介绍, 为地震剖面图的绘制打下了良好的基础;通过介绍地震剖面图的绘制原理, 最终用VC++开发工具实现了剖面图的绘制。

参考文献

[1]刘彩云, 陈忠, 熊杰.地震剖面图Wiggle曲线绘制与正振幅填充算法[J].成都理工大学学报 (自然科学版) , 2008 (.12) :1004-5422.

[2]丁艳红, 夏东岭, 李志勇, 钟俊义, 胡啸.对二维地震剖面的解释与成图方法的认识[J].石油物探.2002 (6) :1000-1441.

基于视频的绘制 篇5

随着地理信息系统技术的不断发展, GIS技术已经深入到各行各业的业务工作中, 影响和改变着人们的工作和生活方式。 目前, 开源的GIS虽然是免费的, 但是需要访问互联网。 而由于本单位的网络安全性、 资料保密性等多方面因素, 使得业务内网不能访问互联网, 造成基于互联网的GIS类地图产品不能使用。

中地数码的Map GIS10[1,2]产品提供的二次开发, 能够满足不访问互联网以及分布式用户对 于GIS的一致性 、 实时性 、 统一性的数据环境的需求。 因此, 采用Map GIS10产品作为二次开发的基础, 来实现实况填图单要素专题图 (等值线和色斑图) 的制作, 并在服务器端保存为图片文件的功能。

2 关键技术

本系统基于Map GIS10二次开发, 采用Microsoft Visual Stu dio 2010作为软件平台, 数据库为本单位建设的CIMISS系统的Oracle数据库 , 使用CIMISS系统提供的API接口直接 调取数据。 开发的网站前台使用Java Script技术, 网站后台使用C# 作为开发语言。 还用到了Ajax, JSON[3]和动态链接库等关键技术。

2.1 Java Script

Java Script是一种属于网络的 脚本语言 , 目前已被 广泛使用于Web应用开发。 基于Java Script的Web GIS二次开发, 目前均采用服务架构, Web客户端直接使用其封装好的二次开发库, 通过客户端二次开发API调用GIS服务端的服务接口实现相应的GIS功能。 其中, 客户端开发库一般都提供封装好的控件, 简便易用, 大大提高了Web GIS开发效率[2]。

2.2 Ajax

Ajax是为了创建更好 、 更快与交互 性更为强大 的Web应用程序的一种技术。 当使用Java Script向服务器端提出请求且处理响应时能不阻塞用户, 其中XMLHTTPRequest是Ajax的核心对象。 利用此对象, Java Script可以在不重新加载网页的前提下与Web服务器进行数据交换。 Ajax在浏览器和Web服务器之间采用的是异步数据传输方式, 即HTTP请求, 这样就可以不用请求整个页面, 只要从服务器端请求少量的信息即可。

2.3 JSON

JSON一般是指Java Script中的对象与数组 , 利用这两种 结构就可 以表示各 种各样复 杂的结构 。 JSON可以先把Java Script对象中一组 数据转换 成字符串 , 再在各函 数之间传 递这个字符串, 或在异步应用程序中, 可以把字符串从Web客户端传 递给服务 器端程序 。 Java Script是一种很 容易解释 的JSON字符串, 其可以表示成比 “名称/值对” 更为复杂的结构。

3 设计与实现

3.1 算法描述

本次开发的算法描述如下:

(1) 利用Ajax方法访问 后台CIMISS数据库 , 读取站号 、 经纬度、 要素数据等。

(2) 将数据库 中返回的 数据解析 成JSON标准格式 , 传入前台。

(3) 整理数据 , 将需要的要素 值存入数组中 。

(4) 根据数组 中的数据和 判断条件 , 利用Ajax方法和动态链接库在后台生成色斑图 (设置栅格, 设置边界格式, 整理站点信息, 插值法, 等值线跟踪分析, 填色, 绘制各区域的边界线)。

(5) 制作专题图 。

根据上述描述, 算法流程图如图1所示。

3.2 算法实现

3.2.1 前期数据处理

(1) 将需要查 询的日期 、 查询的气 象要素等 详细条件 , 从客户端获取后, 加以整理后, 通过Ajax方法传入后台。

(2) 通过CIMISS提供的API接口 , 根据查询 条件和查询 规则, 查出数据后, 将数据转换成JSON格式, 得出的JSON串如" [{" code" :" 53614" ," name" :" 银川基准站 " , " lon" :106.2," lat" :38.4667," temper" :" 168" ," humid" :" 84" ," press" :" 23" ," winds" :" 10" ," windd" :" 56" ," level" :" 1" ," rain" :" 0" } , { " code" :" 53704" ," name" :" 中卫 " ," lon" :105.1833," lat" :37.5333," temper" :" 159" ," humid" :" 229" ," press" :" 25" ," winds" :" 25" ," windd" :" 215" ," level" :" 1" ," rain" :" 0"}]"。

(3) 将数据返 回给前台并加 以判断 , 若返回的JSON串为空 , 程序不再 执行 , 并在网页 上显示 “数据库中 无查询资 料!” 的提示信息; 否则, 继续下一步。

(4) 根据气象 标准 , 制订色斑 图和等值 线的气象 要素色标卡。

关键代码:

3.2.2 绘制色斑图和等值线

(1) 将从CIMISS数据库中 读取的JSON串中提取需 要的要素值重新归置放入数组中, 如经度、 纬度和气象要素 (气温、 降水、 湿度等) 值, 三者缺一不可, 否则无法生成等值线和色斑图。

(2) 判断是制作 色斑图还 是等值线 。

若是色斑图, 通过Ajax服务方式, 将前台数组中的各要素值和判断条件信息传入后台, 利用已经封装好的动态链接库, 设置栅格格式, 设置边界格式, 整理站点信息, 对相邻的元素采用插值法, 进行等值线跟踪分析, 通过Sharp Map控件的GIS图层显示技术将各个分区渲染描绘, 按照色斑分区的数值信息查找相应的颜色值, 完成颜色填绘。

若是等值线, 除了最后填绘方法有所不同, 其余方法一样。 最后填绘时, 不再填色, 而是画线, 并且在线上标注相应的要素值。 若等值线闭合, 在线的中心点处绘制数值, 绘制位置由title Rect1确定 ; 否则, 在线的1/4和3/4处绘制数值, 绘制位置由title Rect2确定 。

关键代码:

(3) 在色斑图 和等值线 上绘制各 区域的边 界线 。

(4) 根据气象 要素的最 大值 、 最小值 , 自适应地 绘制色标卡, 使色标卡尽可能的短。

关键代码:

3.2.3 制作专题图

将制作的色斑图和等值线重新加工, 生成专题图。 以气温的色斑图和等值线举例, 如图2所示。

4 结语

基于视频的绘制 篇6

水泵作为通用机械, 广泛应用于国民经济的各个部门。水泵的特性曲线既是厂家产品测试的成果表达, 又是用户选择和使用水泵的依据, 对其进行快捷且准确的绘制, 在生产实际上具有重要意义。由于泵内流体的复杂性, 使得泵的扬程以及各部分效率都难以从理论上准确计算。因此, 在实际中人们都用实验的方法测出有关性能参数再绘制其特性曲线, 用以反映扬程、功率、效率与流量之间的内在联系和变化规律, 这些曲线被称为水泵的特性曲线[1]。特性曲线可以全面、直观、准确地表示泵的工作性能, 是设计制造、合理选择和正确使用水泵不可缺少的基本资料。常用的曲线拟合方法是通过观察离心泵参数之间的变化规律, 将离心泵特性曲线拟合方程假定为抛物线方程[2], 再求其拟合系数。但由于离心泵内部结构的复杂性, 各种能量损失的不确定性, 使得泵的特性曲线不可能为严格意义上的抛物线。在进行离心泵特性曲线拟合中, 试验数据表明:多项式方程比抛物线方程更能吻合实际测试的数据点。

多项式拟合法拟合精度比较高, 适用范围广[3]。在进行多项式拟合时, 通常利用最小二乘法或矩阵运算求拟合系数, 但如果手工计算, 其运算量将非常大, 特别是当测试点多时这种方法将失去其可行性。若利用计算机计算, 编程又非常繁琐, 而且需要工程设计人员懂一定的程序语言, 这在实际操作中极为不便。本文利用MATLAB软件中的polyfit多项式拟合函数[4]对离心泵特性曲线进行拟合, 操作简便, 拟合准确。即使是不懂编程的选型设计人员, 只要按照polyfit函数格式输入实际测试的数据点, 就可拟合出离心泵特性曲线方程。这种快捷准确的离心泵特性曲线绘制方法, 将有重大的应用价值。

1 利用最小二乘法拟合离心泵的特性曲线

离心泵的特性曲线H-QN-Qη-Q不是线性的, 需要用非线性函数加以拟合。以扬程-流量关系曲线为例, 设离心泵特性曲线H-Q的多项式拟合方程为式 (1) :

Η=a0+a1Q+a2Q2++anQn (1)

式中:H为泵的扬程;Q为泵的流量;ai为拟合方程待定系数。

求解系数 (a0, a1, a2, …, an) 利用最小二乘法[5,6], 首先利用实验值和拟合方程之差的平方求和得新函数F (a0, a1, a2, …, an) , 如式 (2) :

F (a0, a1, a2, , an) =i=1n (Ηi-a0-a1Qi-a2Qi2--anQin) 2=0 (2)

其次根据“通过误差平方和的最小化寻找数据的最佳函数匹配”这一原则, 函数F (a0, a1, a2, …, an) 对a0, a1, a2, …, an分别求偏微分, 并令其等于零, 整理得线性方程组如式 (3) 。

Fa0=-2i=1n (Ηi-a0-a1Qi-a2Qi2--anQin) =0 (3) Fan=-2i=1n (Ηi-a0-a1Qi-a2Qi2--anQin) =0

解方程组求出系数 (a0, a1, a2, …, an) , 得到特性曲线H-Q的拟合方程。其他的特性曲线N-Qη-Q可采用同样的方法得到。

最小二乘法虽然能够对离心泵特性曲线进行拟合, 但技术人员在利用C语言或FORTRAN进行编程时, 首先编写一个主程序, 完成读入数据和调用子程序的工作;然后依一定的方法 (如克罗特Crout消去法) 再编写求解方程组的子程序;最后将主程序与子程序链接编译, 反复调试后才能得到正确的结果。这种方法在工程应用中操作性差。

2 利用MATLAB中的polyfit函数拟合离心泵的特性曲线

MATLAB是由Math Works公司于1984年推出的一种面向科学与工程的计算软件。它将不同领域的计算用函数的形式提供给用户;用户在使用时, 只需调用相应函数就能解决实际问题。它涉及数值分析、自动控制、信号处理、图像处理、小波分析及神经元网络等十几个领域的计算和图形绘制, 功能十分强大。与其他科学计算语言 (如FORTRAN语言) 相比, 其特点是符合科技专业人员的思维方式和书写习惯, 用解释性方式工作, 人机交互性能好, 编程和调试效率高。当前已成为各国大学教学和科学研究中最常用且必不可少的工具。

离心泵特性曲线拟合方法如下。

polyfit函数是MATLAB系统提供给用户的专用多项式拟合函数, 用户只需输入相应的数据和参数就可以构造出一个与实验数据相吻合的多项式方程。该函数形式如式 (4) 所示:

a=Ρolyfit (x, y, n) (4)

式中:a为待求的多项式系数按降幂排列;x, y为实验所测数据;n为需拟合的阶数。

该函数的原理是利用已知的数据向量XY所确定的数据点, 采用最小二乘法构造出n阶多项式去逼近已知的离散数据, 实现多项式曲线的拟合。

同时MATLAB还提供二维图形绘制命令, 其格式如式 (5) 所示:

Ρoly (x, y) (5)

式中:x, y为绘制曲线横纵坐标的数据;字符串为设定曲线的线型、颜色及标记符号。

在拟合和绘制特性曲线时, 相关技术人员需:首先输入离心泵性能参数;然后利用polyfit多项式拟合函数获得各特性曲线的拟合系数;再用poly绘图命令绘制特性曲线。

3 应用实例

根据离心泵特性曲线的特征, H-QN-Qη-Q特性曲线可采用3-5次多项式来拟合。设多项式拟合方程如式 (6) :

Ν=a0+a1Q+a2Q2+a3Q33+a4Q44Η=b0+b1Q+b2Q2+b3Q33+b4Q4 (6) η=c0+c1Q+c2Q2+c3Q33+c4Q4

离心泵性能参数通过实验测得如表1所示。

把实际测试数据点按照polyfit函数格式依次输入, 运行函数即可拟合出离心泵的特性曲线。程序如下 (%表示其后的文字起解释说明作用) :

>>x=[0.616 1.483 2.551 3.241 4.069 5.523 6.320 7.345]; %流量

y1=[8.250 10.056 11.650 12.350 13.050 13.980 14.160 14.450]; %功率

y2=[19.932 19.032 17.832 16.973 15.848 13.126 11.510 9.671]; %扬程

y3=[11.675 27.725 43.625 50.423 53.613 47.127 38.726 26.625]; %效率

x1=linspace (0, 8, 100) ; p1=polyfit (x, y1, 4) %求功率-流量拟合系数

z1=polyval (p1, x1) ;plot (x, y1, 'ob', x1, z1, 'b') , hold on; %绘制功率-流量原始数据和拟合曲线

p2=polyfit (x, y2, 4) ;%求扬程-流量拟合系数

z2=polyval (p2, x1) ;plot (x, y2, 'ob', x1, z2, 'g') , hold on; %绘制扬程-流量原始数据和拟合曲线

p3=polyfit (x, y3, 4) %求效率-流量拟合系数

z3=polyval (p3, x1) ;plot (x, y3, 'ob', x1, z3, 'r') , hold on; %绘制效率-流量原始数据和拟合曲线

gtext ('η (%) -Q') ;gtext ('H (m) -Q') ; gtext ('N (kw) -Q') ; %标注特性曲线

title ('离心泵特性曲线的拟合') ;xlabel ('流量Q (m3/h) ') %标注图标

通过运行程序得到的离心泵特性曲线多项式方程拟合系数如下:

p1=-0.0020.049-0.5042.9726.603p2=0.007-0.1000.390-1.61020.813p3=0.073-1.0912.20817.1970.506

经拟合后, 得离心泵特性曲线方程为:

(1) 功率与流量关系N-Q曲线:

Ν=-0.002Q4+0.049Q3-0.504Q2+2.972Q+6.603

(2) 扬程与流量关系H-Q曲线:

Η=0.007Q4-Q3+0.390Q2-1.610Q+20.813

(3) 效率与流量关系η-Q曲线:

η=0.073Q4-1.091Q3+2.208Q2+17.197Q+0.506

根据拟合系数绘制多项式方程特性曲线如图 1 所示。将以上编程中polyfit (x, y, n) 中的4阶改为2阶, 进行特性曲线为抛物线方程的拟合, 并绘制抛物线方程特性曲线如图2所示。

由图1、图2可知:由于实测数据点大部分落在拟合为多项式方程的特性曲线上, 因此将离心泵特性曲线拟合为多项式方程比拟合为二次抛物线方程更准确。

4 结 语

采用MATLAB中的polyfit多项式拟合函数对离心泵特性曲线进行拟合, 与最小二乘法进行比较, 它省去了大量的程序编写, 一般的技术人员都可以操作, 是一种非常精确和便捷的拟合方法。该方法给设计制造、设计选型和运行管理人员提供了可靠的水泵工作特性, 保证选出的泵能够在高效区工作, 极大地提高水泵运行的经济效益。此外, 这种方法还可以用到其他领域的离散数据拟合, 拟合阶次可以根据实际情况选定。

摘要:利用最小二乘法原理, 分析了离心泵特性曲线拟合最小二乘法的算法, 其编程繁琐, 不适宜工程应用。使用MATLAB中的polyfit函数可精确拟合出离心泵特性曲线, 并进行了不同拟合阶次的比较。拟合结果表明, 多项式方程比抛物线方程更吻合特性曲线。该方法不仅精确可靠, 而且操作简便, 可为相关技术人员提供一种快捷、精确的离心泵特性曲线拟合方法, 以提高水泵运行的经济效益。

关键词:离心泵,特性曲线,polyfit函数,MATLAB

参考文献

[1]把多铎, 马太玲.水泵及水泵站[M].北京:中国水利水电出版社, 2004:47-58.

[2]方清华.离心泵能曲线的快速拟合法[J].矿山机械, 2005, 33 (2) :57, 64.

[3]李建光.矿用离心泵特性曲线拟合方法的比较[J].河北工程大学学报 (自然科学版) , 2008, 25 (1) :45-48.

[4]唐向宏, 岳恒立, 郑雪峰.MATLAB及在电子信息类课程中的应用[M].北京:电子工业出版社, 2006.

[5]商建平, 俞树荣.基于矩阵运算的离心泵性能曲线拟合方法[J].兰州石化职业技术学院学报2008, 8 (3) :14-15.

基于视频的绘制 篇7

在MATLAB中提供了绘制根轨迹的函数, 在命令行或“.m”文件中, 只要给定开环传递函数的零、极点, 就可以绘制出相应的根轨迹, 但是, 若改变零、极点就必须修改程序, 十分不方便。为此, 我们利用MATLAB中提供的可视化的图形界面开发环境Guide, 设计了针对基于开环传递函数绘制各种根轨迹的图形用户界面, 利用运行后的这个界面, 可灵活地输入各种开环传递函数的零、极点, 实现了对根轨迹的详细绘制。

启动Guide的方法通常有两种:一种是在命令行里输入guide, 然后回车;另一种是对于7.0及以上版本, 可直接用鼠标单击启动GUIDE的快捷工具“%”按钮。启动后可直接单击“OK”按钮, 默认地创建一个空白的用户图形接口窗口。接下来, 单击一下空白窗口左面的控件, 然后在空白窗口中单击一下, 将这个控件引入到空白窗口中。对引入到窗口中的控件双击, 可弹出该控件的属性窗口, 根据需要修改“String”、“Tag”等。

根据对各种开环传递函数绘制根轨迹的要求, 如下三个控件是必须的:两个“Edit Text”文本框控件 (分别接收闭环传递函数的分子、分母) ;一个“Push Button”按钮 (用于启动程序绘制根轨迹) 。当然必要的“Static Text”静态文字有助于标识各种控件的作用, 如果你能记住所表示控件的作用, 也可以不引入它们。自定义的GUI, 如图1所示。

在图1中, 分子的零点有两个, 显然为两个单重零点-1和-2;分母的极点有4个, 显然为二重极点0, 以及两个单重极点-3和-4。当然, 由于采用了符号运算, 对于这样的情形, 在输入时应按照“s^2+2*s+3”输入, 系统会自动求根, 然后进行绘制。

为了能在本GUI运行载入时显示如图1所示的根轨迹, 分子对应为“ (s+1) * (s+2) ”, 分母对应为“ (s^2* (s+3) * (s+4) ”。必须要有程序与之对应, 这个程序对应于用户图形界面初始打开的函数:

分子参数文本框的回调函数如下:

分母参数文本框的回调函数如下:

本GUI运行载入时的打开函数与按钮的回调函数基本相同, 只是在按钮的回调函数中直接使用对分子、分母文本框修改后的全局变量。

上面的函数是要自己输入的, 当然, 还有一些函数是系统自动生成的, 不必修改。单击GUI运行按钮“”, 得到与图1对应的用户图形界面, 如图2所示, 得到的相应的根轨迹如图3所示。

参考文献

[1]孙梅, 王彦良.自动控制原理及应用[M].北京:北京交通大学出版社, 2007.

[2]罗建军, 杨琦.精讲多练MATLAB[M].西安:西安交通大学出版社, 2002.

上一篇:国家管辖权论文下一篇:学期分析