多分辨率特征(通用7篇)
多分辨率特征 篇1
0 引 言
目前有限元分析已被广泛地应用到产品设计过程之中[1]。CAD系统产生的模型由于要满足设计、加工等方面的需要, 往往包含一些对于有限元分析来说比较复杂的细节。为了能在精度损失允许的范围内尽量减少分析时间, 通常的做法是在有限元分析之前对CAD模型进行必要的简化处理, 如细节移除和降维。而当前的简化算法一般以几何尺寸作为简化的标准, 而不是实际的物理条件如载荷、材料属性等[2], 所以通过一般简化算法产生的简化模型往往是不准确的。因此, 为得到所要求的分析精度, 需要对简化模型进行多次变更 (可以根据分析人员的经验或者误差估计算法的指导) , 如恢复某个被移除的细节或者对某个降维产生的中面或中线进行增厚处理等[3]。这也决定了造型系统必须能够提供这些不同细节层次 (LOD) 和抽象层次 (LOA) 的分析模型。为此, Lee[4]提出了基于特征的多分辨造型技术, 以特征作为细节移除和降维的基本单位, 通过组合不同细节层次和抽象层次的特征来产生多分辨的分析模型。这里存在的一个问题是, 由于上述不同分辨的模型之间的变动往往较小, 如果对每一个分辨的模型都进行整体的重新网格化, 必然造成巨大时间耗费。因此, 如何在这些不同分辨的模型之间重用已有网格, 避免进行整个模型的重新网格生成, 就显得尤为重要。
本研究提出一种基于特征的多分辨FEM模型快速生成方法, 目标是在分析过程中能够根据分析精度的要求, 快速生成保证质量的FEM模型。本研究相关工作主要包括如下两方面:多分辨分析模型生成[5,6], 设计变动以后的基于网格重用的FEM模型快速生成[7,8,9]。
1 基本概念和方法概述
1.1 基本概念
定义1 特征:特征是指带有工程语义的几何形状, 已经被广泛地应用于产品生命周期的不同阶段, 如设计、分析、加工等。
定义2 设计特征:设计特征是指包含设计意图的几何形状, 包括实体特征、过渡特征、阵列特征等。本研究仅讨论实体特征, 并将实体特征分为两类:正实体特征和负实体特征。过渡特征和阵列特征也可以转化为实体特征。
定义3 降维:降维简单地说是用低维的边、面来代替高维的实体以节省分析的时间, 如细长的实体 (某个维度上的尺寸远大于另外两个) 可以用带截面属性的边 (中边) 代替, 薄的实体 (某个维度上的尺寸远小于另外两个) 可以用带厚度属性的面 (中面) 代替。
定义4 面对:基于面配对[10]的方法是对实体模型进行降维的一种方法。两个面F1, F2可以组成面对必须满足如下条件:①F1, F2平行;②F1, F2的法向相反;③F1, F2之间的距离小于给定阈值T。如图1中的F8与F10, F4和F2, F7与F5, F1与F5就是可以组成面对的面。中面可以通过对面对中的面进行插值或对其中一个面进行偏移得到, 如图1中粗实线标出的面。
定义5 分析特征:这里采用文献[11]中的定义, 将分析特征定义为可降维的连通子区域, 包括梁、壳、实体3种类型。梁特征由中边组成, 壳特征由中面组成。由于这里的实体特征与设计特征中的定义重叠, 以下提到的分析特征仅指梁、壳两类。
定义6 接口:“接口”概念一般用于表示不同维度的几何对象之间的接触部分[12]。由于接口两侧单元的自由度和形函数都不一样, 保证两侧单元的节点在接口处的一致性能得到更高的分析精度。这里笔者使用“接口”概念表示特征之间的接触关系, 并作为特征进行网格生成的约束。
这里使用Feature对象统一表示上述两类特征。每个Feature对象使用feature_type属性表示特征的类型;LOD属性表示特征的细节层次;LOA属性表示特征的抽象层次, 如梁、壳, 或实体;entity_list属性保存与特征相关的几何对象, 如通孔特征会有一个圆柱实体对象与其相关, 壳特征会有中面与其相关。笔者在每个几何对象与其所属的网格单元之间建立了关联, 如body对象与体单元, face对象与面单元等, 从而建立起特征对象与网格单元之间的所属关系。另外, 设计特征还包含最终B-Rep模型中属于该特征的面。
1.2 方法概述
多分辨FEM模型生成的方法框架图如图2所示。鉴于满足不同分析精度要求的零件的多分辨FEM模型均可由零件模型中的全部或部分设计特征或分析特征对应的网格模型组合而成, 笔者首先对零件模型中的所有设计特征和分析特征本身进行网格划分。然后在分析过程中, 对于给定分析精度下形成的简化模型, 通过将简化模型中所包含的所有设计特征和分析特征所对应的网格模型进行组合形成所需的FEM模型。为了保证特征网格之间的组合质量, 笔者对每个特征进行保证特征之间接触部分网格一致的网格划分。其中, 设计特征可以从CAD系统导出或利用特征识别技术从零件模型中提取。分析特征采用基于面配对的方法由设计特征映射过来。
2 特征之间的接口分类
为了保证网格的质量, 特征的网格生成以接口作为约束, 为此首先需要确定出每个特征所涉及的接口及其类型。这里对这些特征之间可能存在的接口类型进行了讨论。为引述方便, 笔者将不同特征之间相互接触的几何对象称为“引用对象”, 将“引用对象”之间的相交部分称为“接口对象”。“接口对象”是作为“引用对象”网格生成的约束。特征之间的接口分类如表1所示, 并对接口对象进行了加粗显示, 其中相互接触的两个特征由F1, F2标出。
3 带约束的特征网格生成
本节将讨论不同接口类型中涉及的几何对象之间的约束情况, 并给出一种带约束的网格生成方法。如表2所示, 根据约束对象和被约束对象的维度, 对几何对象之间的约束关系进行了分类, 并对约束对象进行了加粗显示。由于简化模型中一般不存在低维几何对象在三维实体对象内部的情况, 这里不做讨论。简化模型中出现的非流型的情况 (有些情况需要经过求交和分割处理) 基本都可以归结到这几种类型, 如三维实体边界上的约束可以归结到实体的面、边上的约束。第5类约束和第6类约束之间的不同点是:第6类约束除了要求同约束面边界上的一维剖分保持一致外, 还要求同约束面内的二维剖分一致。
本研究提出的带接口约束的网格生成方法主要基于波前法实现。选择波前法, 是因为这种方法对几何边界的适应能力强[13], 比较适合处理这里涉及的非流型模型的情况。在使用波前法进行剖分时, 二维剖分的波前是由面的边界边剖分产生的线段集合, 三维剖分的波前是由实体的边界面剖分产生的面片集合。这里主要通过约束波前来达到约束网格生成的目的, 具体处理方法如下:
(1) 对于带零维点约束的一维剖分的情况, 如果约束点的位置在被约束边的端点处, 则不用特殊处理。如果约束点的位置在被约束边的内部, 处理方法是沿着约束点将被约束边分成两部分再分别剖分。
(2) 对于带零维点约束的二维剖分的情况, 如果约束点在被约束面的边界上, 则可以归结为点对边的约束。如果约束点在被约束面的内部, 处理方法是添加一条过约束点的边, 这样就转化为第4类约束。
(3) 对于带一维边约束的一维剖分的情况, 处理方法是先对约束边进行一维剖分, 然后将被约束边沿着约束边分成几部分, 其中与约束边重合部分的单元直接从约束边拷贝。
(4) 对于带一维边约束的二维剖分的情况, 处理步骤是:①先处理二维剖分域中可能存在的低维约束的情况, 如约束边与约束边或约束边与边界边相交则产生第一类约束, 重合则产生第三类约束。②将约束边的边单元拷贝两份作为被约束的二维剖分域的波前, 并保证两份单元方向相反。如果约束边是不闭合的, 那么这些单元首尾相连组成了一个退化的内环波前。如果约束边是闭合的, 那么这些单元会组成两个绕向相反的波前环, 一个向约束边包围的内部区域推进, 另外一个向约束边的外围推进。③对于约束边重合的情况, 还需要额外的处理。如果与约束边重合的边是被约束的二维剖分域的边界, 那么删除刚才拷贝的属于该约束边的单元。如果与约束边重合的边也是约束边, 那么删除属于其中一条约束边的单元。
(5) 对于带二维面约束的二维剖分的情况。具体步骤是先对二维约束面进行边界边的剖分, 将这些边界边作为被约束面的一维约束, 这里的处理方式同第5类约束。不同之处在于, 这里不需要对约束边包围的内部区域进行剖分, 因为内部区域的面片单元需要直接从约束面拷贝, 如果约束面与被约束面法向相反还需要对这些面片的法向进行反向。所以这里只需拷贝一份约束边的边单元, 这些边单元首尾相连组成闭环, 绕向与被约束面的内环绕向一致。这样就避免了对约束边包围的内部区域进行再次剖分。
4 多分辨FEM模型生成
多分辨FEM模型是指根据不同的细节层次 (LOD) 和抽象层次 (LOA) 选择不同的特征以及对应的网格, 从而组合产生的一系列不同分辨的FEM模型。由于每个特征对应的网格在带约束的网格生成阶段已经保证了接口部分的一致性, 在这一步可以对每个特征对应的网格进行自由组合。
4.1 特征之间的重排列
在讨论具体步骤之前, 笔者先考虑下特征重排列的问题。在特征造型中, 结果实体模型的产生过程一般满足如下定义:
式中 ⨂i—布尔操作, 包括布尔加 (求两者的并集) , 使用符号U表示;布尔减 (在前一个对象中减去两个对象之间的交集) , 使用符号-表示;Fi—设计特征, 其中正特征与布尔加 (U) 对应, 负特征与布尔减 (-) 对应;Mn—应用n次布尔操作产生的最终结果模型。
如果将一对存在相交关系的正特征和负特征之间的次序进行对调, 那么最终产生的实体模型将会不同。如图3所示, 图3 (a) 是在现有模型M0的基础上添加了4个特征:F1 (平板阵列) 、F2 (圆柱通孔) 、F3 (方形凸台) 、F4 (圆柱凸台) ;在图3 (b) 中, 笔者将特征F1、F2之间的次序进行对调, 由于两者存在相交, 使得F1平板阵列特征原本应该被切除的部分没有被切除, 造成了最终的结果模型和次序对调前不一致。Lee提出的“特征有效体”概念解决了这一问题, 即无论特征的次序如何调整, 使用该方法都能得到同样的实体模型。这里笔者同样要面对特征重排列的问题, 所不同的是, 笔者的目标是尽可能地重用已有网格。针对同样的输入模型, 笔者仍然只需要对所有设计特征和分析特征进行一次网格生成, 但是通过特征次序的调整得到了与输入模型不同的FEM模型, 进一步提高了多分辨FEM模型的利用率。
4.2 多分辨FEM模型生成过程
多分辨FEM模型的生成过程与特征建模的过程类似, 定义如下:
式中 Fi′—特征对应的网格, 包括实体对应的体网格、中面对应的面网格或中线对应的边网格, 由特征的LOA属性来确定具体选择哪种网格, 由LOD属性确定特征是否参加运算;⨂i′—网格之间的布尔操作, 包括布尔加 (求两者对应网格单元的并集) ;布尔减 (在前一个对象对应的网格中移除两个对象共同拥有的网格单元) ;FEMn—应用n次上述布尔操作产生的FEM模型。
在接口确定阶段, 笔者对设计特征和分析特征之间的相交关系进行了识别, 并把特征之间的相交部分保存在相关特征的entity_list里, 而且在网格生成阶段又保证了相交部分的网格满足了相应的约束, 所以笔者在实现上述两类布尔操作时, 并不是进行网格单元的实际对比, 而是比较两个特征entity_list里几何对象的ID:布尔加 (求两个特征包含的几何对象ID的并集) , 布尔减 (在前一个特征中减去两个特征包含的几何对象ID的交集) 。当最终模型里面包含的所有几何对象ID确定以后, 最终的FEM模型也就确定了。另外, 为了支持特征重排列, 笔者在特征表示中加入creation_order属性表示特征参加布尔运算的次序。这里还存在一个问题是:由于上述特征生成网格的顺序和组合的顺序不一致, 最终产生的FEM模型在节点序号上很可能是不连续的。节点序号不连续会给后面的分析过程带来不便。所以这里还需要对FEM模型中的节点进行重新编号。
5 实验结果与分析
本研究算法采用C++语言在WinXP系统上实现, 所用内核是ACIS 19, 网格划分部分基于NETGEN开源代码。带不同接口约束的特征生成网格的结果如图4所示, 为了清楚地显示, 两个特征进行了相对偏移。从图中可以看出, 本研究给出的算法不仅很好地处理了各种非流型模型的情况, 也保证了特征之间接触部分网格的一致性。多分辨FEM模型生成的一个例子如图5所示。原始输入模型特征建模的次序是F0-F1-…F8。这里仅列出了按照特征建立的原始次序产生的多分辨FEM, 特征次序重排列以后产生的FEM模型并未列出。图的第1列是输入模型中包含的所有设计特征和分析特征生成网格的结果;图的其余3列是根据特征的不同细节层次 (LOD) 和抽象层次 (LOA) 组合产生的不同分辨的FEM模型。从上往下, FEM模型的细节层次 (LOD) 逐步降低, 每向下一层移除一个特征;从左往右, FEM模型的抽象层次 (LOA) 逐步提高, 第3列是对F3平板阵列特征进行降维处理, 第4列是对F0基座特征进行降维处理。可以看到, 通过本算法只需要进行一次网格生成, 就能组合产生分析过程中所需要的各种分辨的FEM模型, 而不需要任何额外的全局或局部网格重构操作。
此外, 有研究表明[14], 对于很多分析应用, 使用六面体网格比四面体网格能够得到更高的分析精度。虽然本研究提出的方法目前主要针对四面体网格, 但是可以变更网格生成部分, 改用基于六面体网格的生成算法, 就能得到基于六面体网格的多分辨FEM模型, 方法的整体思路不变。当然基于六面体网格的生成算法需要考虑更多复杂的情况, 如网格生成的收敛性问题等。
6 结束语
本研究提出了一种基于特征的多分辨FEM模型快速生成方法, 能快速生成分析过程中需要的各种分辨的FEM模型。该方法的主要特点在于:①仅通过对特征的网格模型进行组合生成零件的多分辨FEM模型, 而不用独立生成每一个分辨的FEM模型, 因此算法效率高;②通过对特征进行以相关接口为约束的网格划分, 有效保证了特征网格之间在接口处具有一致性。目前该方法还不能处理增加新特征或对已有特征的尺寸修改等情况, 因此未来工作将是扩展现有方法, 使其能够处理这些情况。
平面投射多分辨率软阴影绘制算法 篇2
阴影在计算机真实感图形应用中发挥着重要而独特的作用。它除了能使图形绘制效果更加逼真以外,还暗含了场景中的一些重要信息,如物体的形状与表面特征、物体之间的位置关系、遮挡物与阴影接受面的几何属性、以及光源的位置、大小、强度和形状等。然而,阴影的建模与绘制过程却相当复杂,因此如何对阴影进行建模与绘制一直是计算机真实感图形技术领域中具有挑战性的研究课题。
阴影通常可以分为两类:硬阴影和软阴影。硬阴影(Hard Shadow)是指由理想点光源(即聚光性能好的单一光源)产生的阴暗均一、边界分明的阴影,它只包含物体的本影(Umbra);软阴影(Soft shadow)则是由线、面或体光源等产生的边界柔和、有一定明暗过渡的阴影,它包括了物体的本影和半影(Penumbra)。当物体完全处于阴影中时,即在本影域内,而当物体受到部分光照时则处于半影域内。由于现实中理想的点光源是极其少见的,因此为了增强场景的真实感,大多数图形应用通常需要将阴影绘制为软阴影,并且大多数的阴影绘制算法也都是针对软阴影的绘制过程进行处理的。
OpenGL是图形硬件的软件接口,业已成为图形应用领域事实上的工业标准,它为构造高效的交互式图形应用程序提供了跨平台的技术支持。然而,在利用OpenGL提供的光照模型对场景中的三维形体进行绘制时,却不会自动产生阴影效果。这是因为OpenGL在进行绘制计算的过程中,只考虑了光源与物体之间的相互关系,而并未考虑到场景中物体之间的相互影响[1],其它主流图形库(如Direct3D)也均进行了同样的处理。所以,基于OpenGL的图形应用程序必须依照一定的算法,通过调用图形库提供的底层应用程序接口API(Application Program-ming Interface)进行阴影计算,绘制所需的阴影模型。目前,根据各类阴影生成算法所使用的实现技术的不同,阴影绘制算法又可分为扫描线算法(Scan-line Method)、平面阴影投射算法(Projection Shadows),阴影体(Shadow Volumes)算法[2,3,4]、阴影映射(Shadow Mapping)算法[5,6,7]等。各类不同的阴影绘制算法所依据的原理差异很大,在绘图质量与执行速度等方面也各有优缺点。文献[8,9]中,对目前的主流阴影绘制算法和技术进行了分析、对比和总结。
本文根据平面阴影投射算法的基本原理,借助OpenGL提供的模板缓存等技术,实现了阴影的剪裁与多平面绘制;并通过设定相关技术参数,利用图像混合处理等技术,实现了软阴影的快速合成与绘制;同时利用累加缓存等对场景进行反走样处理;最终实现了柔和多平面软阴影的多分辨率绘制。
1算法的基本原理
由于阴影是由场景中不透明物体对入射光线的遮挡而形成的,故最直接的阴影绘制算法是通过将三维空间的物体投射到平面上来产生阴影的,这一过程被称为平面阴影投射。
其基本思想由Blinn[10]率先于1988年所提出:与由视点将视景体内的物体投影到2D绘制平面上的过程相类似,该方法将光源作为视点,借助物体的模型变换矩阵与投影变换矩阵,可以将物体“压扁”投影到平面上,再用黑色涂黑平面上被“压扁”的物体,即生成物体的硬阴影(如图1所示)。
通常情况下,平面阴影投射过程可利用计算机图形硬件的加速功能来实现,因而计算速度较快。但其仅能在平面上投射阴影,故其应用受到了一定的局限。平面投射阴影算法在实际应用中还会出现另外一些问题。例如当物体位于阴影投射面下方时,会在投射面上产生假影。而当光源在物体下方时,由于模型上的每个顶点均需通过光源进行投影,还会产生反影现象。针对上述现象,文献[11]中提出一种基于平截头视景体检测的方法来克服上述问题并产生软阴影。该算法通过剪裁位于视景体外的物体来消除反影和假影。Gooch等人[12]为了提高阴影绘制的效率提出一种针对球形域光源的阴影处理技术。该技术通过上下移动投影平面形成半影区域而非通过在光源处取样的方法来达到。这种技术可以获得同轴阴影效果,避免了多次重复绘制。但当物体位于投影平面上时,运用该算法会出现生成的阴影比较大等问题。本文算法综合运用了Blinn、Heckbert及Gooch等人提出的技术,对于域光源上的每一采样点和投影平面上确定的四边形区域所构成棱锥体,通过仿射变换将截去顶端的该锥体转换为一平行六面体。显然,处于平行六面体内的物体即存在于阴影中,算法通过裁剪剔除位于六面体外的物体或部分,使之不生成阴影,从而消除了假影和反影。同时进一步利用累加缓存对由域光源上的各采样点得到的阴影像素值进行“平均化”处理,最终产生软阴影。
2平面投射硬阴影
本文软阴影绘制算法是通过混合一组硬阴影图像来实现的,因此需要首先得到该组硬阴影图像。本文方法采用Blinn平面阴影投射算法将“压扁”的物体直接投射到投影接受平面上来获得该组图像。参照图1,设任一阴影接受平面P的方程为:
其中,n为平面P的单位法向量,x为P上的任意一点。若n=(a,b,c),x=(Px,Py,Pz),则平面P的方程可表示为:
aPx+bPy+cPz+d=0
令点光源为s=(x,y,z,w),则有投影矩阵:
其中dot=ax+by+cz+dw。由计算机图形学理论可知,物体的模型变换矩阵乘以投影矩阵M,即可将物体投影到平面P上,得到被“压扁”的物体(即物体的阴影)。
在算法实现过程中,可利用OpenGL提供的模板缓存,将阴影的绘制限制在特定平面上。如图2(a)所示,圆环同时在地面与左侧墙壁上生成阴影。因此,除了在地面上生成阴影外,对于左墙壁,修改其模板值,以便后面在绘制阴影时仅对模板缓存中模板值为指定值的片元进行处理。注意,在将投影平面绘制到模板缓存中的过程中,只是修改了其在模板缓存中的值,而实际上并没有绘制出该平面,所以可以关闭深度测试和光照计算,通过忽略这些无关的计算来加快算法的执行速度。具体实施步骤如下:
3多分辨率软阴影绘制
由于现实生活中理想的点光源很少见的,因此为了提高图像的真实感,软阴影的绘制异常重要。本文在实现软阴影的绘制时,首先在光源上随机取一系列采样点,通过颜色混合处理将由多个采样点作为点光源生成的阴影进行平均,来产生软阴影;然后对场景进行反走样处理,通过多次抖动使绘制出的软阴影更加柔和、自然。算法提供了交互式参数调控手段,使用户可以根据实际需要,增加或减少采样点数,以及修改光源大小,使算法程序能够在保证一定运行速度的前提下,最终产生较理想的阴影绘制效果。
首先将光源视作面光源,通过在光源上取若干采样点,再利用OpenGL提供的颜色混合功能将由多个采样点获得的阴影进行融合处理,将正在处理的片元颜色与存储在帧缓存中的像素颜色值合并起来。图2(a)和图2(b)分别为算法生成的硬阴影与软阴影绘制效果。其中,硬阴影的光源是半径为4的球面上的1个采样点;软阴影的光源也是半径为4的球面,但在球面上的采样点数为25。算法实施的具体步骤如下:
(a) 采样点数为1的硬阴影 (b) 采样点数为25时的软阴影
在绘制软阴影时,为了增强图像的真实感,可以利用累加缓存来实现场景反走样。本文方法在将多个采样点生成的阴影图像进行平均化的同时,使用累加缓存对场景进行多次抖动累加绘制,从而柔化绘制阴影的边缘,提高了阴影绘制的质量。图像绘制的次数越多,场景中阴影的浓淡过渡就越平滑自然,当然渲染过程所消耗的时间也就越长。因此,算法设定了一个count值来控制采样点的数目,通过交互地设置不同的count值,在绘制速度和渲染质量两方面进行折中。为了使图像不出现较强的跳变,绘制过程中每次沿X和Y轴的抖动量不宜超过一个像素。而为了保证一定的绘制效率,应使所绘制的图象数目尽可能地少。经验表明,当count取值为25时,渲染效果即可满足一般图形应用中的真实感阴影绘制要求。最后,在对获得的图像进行累加时,每次利用glAccum(GL_ACCUM,1.0f/count)将颜色缓存中的值进行缩放后送至累加缓存,相当于每次渲染都仅占累加图像结果的1/25。相关处理步骤可描述为如下过程:
基于OpenGL图形库,本文用C++语言实现了上述软阴影绘制算法。算法程序运行的硬件环境为配备Intel GMA 3100处理器(512MB内存)的PC机,操作系统为WinXP。最终的阴影绘制效果如图3与图4所示,其中图3(a)为未启用反走样时的阴影绘制效果,图3(b)则是启用场景反走样后的阴影绘制效果。两图的光源大小均为16,采样点数均为25。与图2相比,采样点数同样为25的阴影,在增大了光源面积后,软阴影的绘制质量有一定的改善。绘制时间与绘制模型的大小、以及采样点数据的关系可参见表1。实验中使用的部分网格模型及其阴影制效果如图4所示。
(a) 未启用反走样处理的 软阴影绘制效果 (b) 启用反走样处理后的 软阴影绘制效果
时间单位:毫秒;V/T:顶点数/三角形数。
4结语
本文算法综合运用了Blinn、Heckbert及Gooch等人提出的平面投射阴影生成技术,结合OpenGL的模板缓存操作,通过在光源上取若干采样点,并利用图像混合实现了一种快速软阴影合成算法,算法还利用累加缓存实现了场景中阴影的反走样处理,使得到的软阴影更加柔和,更富真实感,并且能根据实际需要,通过参数设定决定绘制效率与图像质量折中,实现所需算法性能。实验表明,本文算法生成的阴影效果柔和,阴影绘制计算快速。
摘要:阴影生成技术在计算机真实感图形应用中发挥着独特而重要的作用。基于模板缓存技术、图像融合技术及反走样技术等,提出一种多分辨率多平面投射软阴影绘制方法。该方法首先通过在光源上进行离散采样,获得一组硬阴影绘制图像;再通过颜色混合和模板缓存技术对这组图像进行平均化处理,合成得到软阴影图像;最后利用累加缓存对场景进行反走样处理,使软阴影绘制效果更加自然、柔和。该方法提供了绘制精度的参数控制手段,使用户可以交互地设定生成软阴影的分辨率。
关键词:阴影绘制,投射阴影,软阴影,多分辨率,真实感图形
参考文献
[1]Shreiner D,Woo M,Neider J,et al.OpenGL programming guide:the of-ficial guide to learning OpenGL[M].4th ed.Addison-Wesley,2004.
[2]Crow F C.Shadow algorithms for computer graphics[J].ACM Comput-er Graphics,1977,11(2):242-248.
[3]Heidmann T.Real shadows,real time[M].Fremont:Iris Universe,Sili-con Graphics Inc.1991:23-31.
[4]刘列明,吴恩华.一种基于点光源的三维阴影的实时生成算法[J].软件学报,2000,11(6):785-790.
[5]Williams L.Casting curved shadows on curved surfaces[J].ACM SIG-GRPAH Computer Graphics,1978,12(3):270-274.
[6]Segal M,Korobkin C,Widenfelt R V,et al.Fast shadows and lightingeffects using texture mapping[J].ACM SIGGRPAH Computer Graph-ics,1992,26(2):249-252.
[7]薛盖超,吕伟伟,刘学慧.方差阴影图中的光渗现象消除算法[J].计算机辅助设计与图形学学报,2009,21(2):165-170.
[8]Liu Nan,Pang Ming-yong.A survey of shadow rendering algorithms:projection shadows and shadow volumes[C]//Second InternationalWorkshop on Computer Science and Engineering.IEEE Computer Soci-ety,Qingdao,2009:488-492.
[9]Liu Nan,Pang Ming-yong.Shadow mapping algorithms:a complete sur-vey[C]//International Symposium on Computer Network and Multime-dia Technology,IEEE Press,Wuhan,2009:448-452.
[10]Blinn J.Me and my(fake)shadow[J].IEEE Computer Graphics andApplications,1988,8(1):82-86.
[11]Heckbert P S,Herf M.Simulating Soft Shadows with Graphics Hardware[R].Technical Report CMU-CS-97-104,Carnegie Mellon Universi-ty,1997.
基于二代小波的曲线多分辨率表示 篇3
地理信息系统、计算机辅助设计、科学计算可视化等许多领域需要曲线的多分辨率表示, 比如地理信息数据中的道路、河流、海岸线, 以及各种勘探测量数据的等值线可视化输出等。多分辨率格式的数据可节省带宽, 减少传输时间, 实现图形数据快速分类、快速显示和设计。
小波方法由于其优越的逼近性质和压缩能力, 加上其自然的多分辨率结构成为一种很好的多分辨率表示工具[1,2]。基本想法是构造一个某函数空间的嵌套的基函数族, 使用内部层次结构有效地表示这个空间中的函数。连续函数和离散信号都可以在小波框架中被分解成多分辨率格式。对于离散情形, 信号被重复地通过低通滤波器和高通滤波器以获取粗糙分辨率数据 (从低通滤波器) 和称为小波系数的细节信息 (从高通滤波器) 。通过选择合适的小波基函数可以使得小波系数具有非常小的幅度, 从而以不同分辨率压缩数据。
传统的小波方法 (第一代小波) 通过在一个均匀网格上平移和伸缩单个函数来生成, 因而对于处理数字图像等规则采样数据效果很好, 事实上小波方法正是新的JPEG 2000图像编码标准的基础[3]。但是第一代小波对于GIS数据等非规则网格采样场合有许多局限性, 因此需要发展新的方法。本文描述了一种基于第二代小波理论的曲线多分辨率表示方法。
2、提升模式与二代小波方法
经典小波 (第一代小波) 变换依赖于傅立叶变换, 信号S通过与一对QMF进行卷积并下采样被分为粗糙分辨率数据C和细节信息D
其中高通滤波器G与低通滤波器H的冲激响应系数应满足如下关系
对变换得到的粗糙分辨率数据C按因子2下采样重复运算 (1) 和 (2) 即可依次得到由精到粗的多分辨率信号。每一级分辨率信号的样本点数为上一精度分辨率信号的一半, 因此所有分辨率信号加上各级细节信息的总样本数与原信号样本数一致。从变换过程可以看出, 初始样本总数要求扩展到2的整数次幂。
Sweldens提出通过提升模式构造第二代小波, 即从一个简单平凡的多分辨率分析出发, 通过某种更新使其得到提升, 建立一个新的更优秀的多分辨率分析[4,5]。提升模式与经典构造的主要区别是它不依赖于傅立叶变换, 其基本思想是使用估计技术和优化准则来构造小波和原始数据的逼近。所有经典小波变换都可以用提升模式实现。
首先按照一定的规则将信号S (最精细分辨率级) 的样本分为互不相交的两个序列S1和S2。最简单的方法是按其顺序分为奇偶两个序列。这实际上对应于经典构造中的下采样。然后通过两个步骤使其得到提升。显而易见两个子序列S1和S2是高度相关的, 因此在提升的第一步通过一个预测算子P用S1的样本来预测S2中每个样本点, 然后在S2中减去其预测值以减少相关。这个差值就是该分辨率的细节信息D, 这一步称为对偶提升。即
下一步就是通过一个更新算子U来构造新的对偶尺度函数以遵守原精细化关系, 从而保持低通尺度系数中的均值和高阶矩, 称为基本提升, 新的尺度系数通常由原尺度系数加上细节系数的一个线性组合得到。即
对得到的低通信号C重复上述过程, 即可得到信号S的多分辨率层次表示。
逆变换与上述过程相反, 即首先更新、其次预测、然后合并, 只要将其中的加减运算对调即可。
上述过程并不局限于等距数据, 预测可以很方便地扩展到非等距情形和多维不规则情形, 分裂算子也可以从奇偶分裂扩展到任意情形, 因而这样的小波不受应用于第一代小波的严格的平移和伸缩定律约束, 可将小波和尺度函数的构造推广到区间、有界域、曲线、曲面、加权、不规则采样点等情况, 比第一代小波具有更广泛的应用范围, 比如GIS数据的三角化网格。
3、曲线多分辨率表示
曲线的表示包括非参数表示 (又分为显式表示和隐式表示) 和参数表示。由于所有的非参数表示 (无论显式还是隐式) 与坐标轴相关, 同时非平面曲线难以用常系数的非参数化函数表示, 不便于计算和编程, 因而在曲线的构造、设计和绘制等实际工作中多采用参数表示。在曲线的规格化参数表示中, 曲线上每一点的坐标均表示为关于参数变量在[0, 1]范围内的函数表示。曲线通常由给定的一系列型值点或控制点决定。不同类型的参数曲线的调和函数通过给定的型值点或控制点产生整个参数范围内其余各点的坐标, 从而便于我们通过修改型值点或控制点的位置、切矢量等边界条件来改变曲线的形状。
假定曲线Cn的m个控制点序列为{c1n, c2n, …, cmn}, 该类曲线相应的调和函数为!F1, F2, …, Fm", 则曲线可表示为
制点序列元素为m', m'<m。实际上这可以看作是控制点序列构成的离散信号Cn到Cn-1的一个变换。对每次得到的低分辨率版本重复上述变换过程, 就可得到曲线的多分辨率表示结构。
为实现变换, 我们首先按照某种规则将Cn的控制点序列分裂为两个子序列Ccn和Cdn, 它们的元素个数分别为m'和m-m'。在对偶提升步构造一个插值多项式P, 用子序列Ccn中控制点预测子序列Cdn中各控制点的值, 然后从子序列Cdn中减去其预测值得到细节信息。在基本提升步更新子序列Ccn使得到的低分辨率版本保持均值和高阶矩, 从而保持曲线的轮廓走向。
从变换过程可以看出每一低分辨率版本加上细节系数, 其样本点总数不变, 因而可直接保存在原序列中。在信号传输过程中, 可根据需要, 从最低分辨率级开始逐级传输至所需分辨率级, 在接收端通过逆变换恢复, 从而节省带宽和传输时间。
图1给出了一个曲线多分辨率表示的实验结果的对比。该曲线采用随机分形曲线[6]生成模拟海岸线的型值点, 然后绘制出通过这些点的样条曲线。随着分析过程的不断重复, 曲线细节分辨率也随之不断增加。左边三幅图自上而下分别为给定的模拟海岸线轮廓和由此生成的分形曲线的中分辨率和高分辨率版本。右边三幅图自下而上则是模拟海岸线分形曲线经过二代小波变换获得的高、中、低三个不同分辨率级的曲线版本。
在该实例中, 我们在每一级变换中, 首先用最简单的Lazy小波变换将曲线的型值点按其顺序分为奇偶两个子序列。然后采用简单的线性预测进行对偶提升。为使小波具有一阶消失矩, 按如下公式进行基本提升:
4、结语
第二代小波不仅保留了一代小波的好的基本性质, 而且可以方便地推广到非等距采样和不规则采样等场合, 因而适用范围更广。基于二代小波的曲线多分辨率表示对于GIS数据存储和传输等具有很好的应用价值。
参考文献
[1]S.Mallat.A theory for multiresolution signal decomposition:Thewavelet representation.IEEE Transactions on Pattern Analysis andMachine Intelligence, 11 (7) :674–693, July 1989.
[2]S.G.Mallat, Multifrequency channel decompositions of imagesand wavelet models, IEEE Trans.Acoust.Speech signal process., 37 (12) , 2091-2110, 1989
[3]ISO/IEC15444-1and ITU-T Recommendation T.800, Infor-mation technology JPEG 2000 image coding system, 2002.
[4]W.Sweldens, The Lifting schema:a construction of second gen-eration wavelets, Technical Report 1995:6, Industrial MathematicsInitiative, Department of Mathematics, University of South Caroli-na, 1995
[5]W.Sweldens and P.Schroder, Building your own wavelets athome, Technical Report 1995:5, Industrial Mathematics Initiative, Department of Mathematics, University of South Carolina, 1995
多分辨率特征 篇4
目前像素级图像融合领域的研究方法常用的有线性加权平均法、小波变换法、IHS变换融合法、拉普拉斯金字塔变换法、PCA变换融合法等[3]。笔者分析了两种图像融合方法,基于塔形分解的多分辨率分析,对多聚焦图像进行融合,并比较两种图像的融合效果。
1 拉普拉斯金字塔变换
1.1 拉普拉斯金字塔的分解与重构
拉普拉斯金字塔的分解及重构包括3个步骤。一是图像的高斯金字塔分解。图像的拉普拉斯金字塔变换是建立在高斯金字塔变换基础上的。高斯金字塔是一个在尺寸上逐层减半的一组图像序列。序列中的每一级图像均为其前一级图像低通滤波后作隔行隔列降采样,即
式中,G0为源图像作为高斯金字塔的底层,Gl为第l层高斯金字塔图像;Cl和R1分别为第l层子图像的列数和行数;金字塔的总层数为N+1;ω(m,n)是一个二维分离的5×5窗口函数。
二是图像的拉普拉斯金字塔分解。将Cl内插放大,得到放大的图像Cl*,使Cl*的尺寸与Cl-1的尺寸相同,内插图像窗口表示为
式中
为整数时Cl*的尺寸与Cl-1的尺寸是相同的,但实际上二者并不相同。从上式可以看出,通过对原有像素灰度值的加权平均从而确定在原有像素间内插的新像素的灰度值。由于Cl是对Cl-1进行低通滤波得到的,即Cl是模糊化,降采样的Cl-1,所以Cl*所包含的细节信息少于Cl-1。
令
由LP0,LP1,LPl,LPN构成的金字塔即为拉普拉斯金字塔,这个计算过程相当于带通滤波,它的每一层图像是高斯金字塔本层图像与其高一层图像经放大算子放大后图像的差。因此,拉普拉斯金字塔亦可称为带通金字塔[4]。
三是由拉普拉斯金字塔重建原图像。
由式(3)可得
式(4)说明,拉普拉斯金字塔的各层图像经逐步内插放大到与下一层图像一样大,然后再相加就可精确重建原图像,这说明图像的拉普拉斯金字塔分解是原图像的完整表示[5]。
1.2 图像融合实验
图1选用两幅多聚焦图像进行融合,两幅图像为同一场景,大小为640*480,窗口大小都选为3×3,窗口选得太大会偏离中心像素太远,从而使融合效果不敏感,且计算量也会增加。实验平台MATLAB 7.0,结果见图2。
图2是先对两幅图像做三层的拉普拉斯金字塔变换,然后对应层对应点灰度取平均值,再做金字塔反变换所得融合图像。从融合图像可以看出,方法很好地保留了边缘和细节信息,几乎没有产生振铃效应,融合效果良好。
2 小波变换
2.1 小波变换的分解与重构
对于经过配准的两幅图像利用小波变换的基本过程见图3。
分解时使用的小波为bion4.2.小波分解的层数越多,融合时选择的频率范围就越多,但分解层数越多,得到的局部空间越小,系数数量按指数增加,处理的计算量越大,分解的层数不宜过多,一般取2~5层即可。利用先验知识确定所需处理的信息不在某一频段,相应的频段可以不分解[6]。
2.2 图像融合步骤
基于小波变换的图像融合具体步骤如下。一是对源图像进行预处理。图像滤波:对失真的图像直接进行融合,然后便会将图像中的噪声融入到融合图像中,这样就会影响融合图像的效果,因此需要对源图像进行滤波以消除噪声。图像配准:为了综合使用多种成像模式和多聚焦以提供全面的信息,所以笔者需要对有效的信息进行整合,使多幅源图像在空间域中的几何位置完全对应。二是对已配准的源图像进行小波分解,相当于使用一组高低通滤波器进行滤波,分别得到图像的水平高频分量、低频分量、对角分量和垂直高频分量。三是对各分解层分别进行融合处理,采取不同的融合策略,根据低频和高频分量的特点,在各自的变换域进行融合。四是对融合的小波金字塔进行二维离散小波逆变换,重建图像即可得到融合图像[7]。
2.3 图像融合实验
图4选用两幅多聚焦图像进行融合,两幅图像为同一场景,大小为640*480,窗口大小都选为3×3,窗口选得太大会偏离中心像素太远,从而使融合效果不敏感,且计算量也会增加。实验平台MATLAB 7.0,结果见图5。
在基于小波变换的图像融合中存在一个最优分解层数,且最优分解层数与融合策略是有关的。对融合图像质量的评价应从定量和定性两个方面来考虑。笔者得到的评价指标值大多数都随着分解层数的增加而增加,但从视觉上看融合图像会在某一分解层时达到一个最佳结果。
3 图像融合的评价
3.1 主观对比
对比图2和图4可以直接看出基于小波变换的融合结果要比基于金字塔拉普拉斯融合结果的效果好很多,相比之下基于小波变换的融合结果图像更清晰,目标更明确,更容易识别。
3.2 客观对比
3.2.1 多向粗糙度
1)计算图像中大小为2k×2k的活动窗口中像素的平均值,k=0,1,2,…,5。
2)对于每个像素分别计算它在垂直、水平、对角线方向上互不重叠的窗口之间的平均值差。在三个平均值差中选择能使其值最大的k值,相应的粗糙尺寸为Sc(x,y)=2k
3)整幅图像的多向粗糙度为
多向粗糙度的值越大,说明图像的细节信息越多。
3.2.2 标准差
标准差反映了图像灰度相对于灰度平均值地离散情况。
1)用G(x,y)=g表示图像中第(x,y)个像素的灰度为g,L为图像的灰度级数,图像的尺寸表示为M×N则灰度图像的均值表示为
2)设一幅图像的灰度分布为p={p(0),p(1),p(L-1)等于g的像素数与图像总的像素数的比值,且则标准偏差的定义为:
从表1和表2指标结果可以看出,基于小波变换的图像融合方法的指标最大,这也和主观评价的结果是一致的。
4 结论
小波变换融合法与金字塔图像融合法相比,具有很多优点。首先,小波变换数据的大小与图像相同,而金字塔的数据大小是图像的4/3,小波变换更为紧凑。其次,由于可以选择正交小波核,因此不同分辨率包含的信息是唯一的,而金字塔分解在两个不同的尺度之间含有冗余。再次,小波表达式提供了方向信息,而金字塔表达式未将空间方向选择性引入分解过程。最后,金字塔的重构过程可能具有不稳定性,特别是两幅图像存在明显差异区域时,而小波变换图像融合没有类似的问题。小波变换具有不同分辨率包含的信息唯一、重构过程稳定等在信号处理领域的优良特性,因此基于小波分析的融合方法正日益受到人们的重视。
参考文献
[1]郭雷,李晖晖,鲍永生.图像融合[M].北京:电子工业出版社,2008.
[2]闫敬文,屈小波.图像融合研究最新进展[J].厦门理工学院学报,2007,4(15):44-49.
[3]玉振明,高飞.基于金字塔变换的图像融合方法[J].计算机应用研究,2004,21(10):128-130.
[4]李建林,俞建成,孙胜利.基于梯度金字塔图像融合的研究[J].科学技术与工程,2007,7(22):5818-5822.
[5]黄文涛,毕笃彦,毛柏鑫,等.基于中值变换和金字塔分解的图像去噪方法[J].电子与信息学报,2004,26(11):1686-1692.
[6]刘坤,郭雷,李晖晖.一种基于静态小波变换的图像融合算法[J].计算机工程与应用,2007,43(12):59-61.
多正则化形式的超分辨率图像重建 篇5
图像超分辨率重建的任务就是从一系列或一张低分辨率图像当中恢复出高分辨率图像。低分辨率图像可以被视为经平滑或模糊后的高分辨率图像的降采样。由于同一张低分率图像可得到很多张高分率图像解,因此该问题的反过程是“病态的”。因此对于先验知识有效合理的假设可以有效地正则化这一问题。
目前较为流行的是利用学习的思想来实现单张图像超分辨率重建。该方法利用学习低分率与高分辨图像块之间的先验关系或者是通过搜寻最近邻的自然图像块来实现图像超分辨重建。William等人提出了一种基于示例学习的策略,通过马尔科夫随机场建立了低分辨与高分辨率图像块之间的关系[1]。Chang等人利用局部线性嵌入(LLE)求取K近邻点权重的方法,来求取K个最近低分辨图像块的权重,并利用该组权重乘上对应的高分辨率图像块来求得最终的高分辨率图像[2]。Yang等人利用耦合的字典,对高分辨和低分辨率图像进行稀疏表示,并假设同一图像对应的低分辨率和高分辨率在稀疏字典上的稀疏表示系数是相等的。通过这一假设来建立低分辨率与高分辨率图像块之间的关系[3,4]。Wang等人对低分率图像块的中频信息和高分辨图像块中的高频信息进行稀疏编码,利用不同模态下相同的稀疏系数这一假设来估计丢失的高频信息[5]。李民等人在Yang的基础上利用形态分量分析法(MCA)来获取低分辨率图像的纹理和结构特征,提高了图像匹配准确度,降低了训练样本的数目[6]。Wang等人提出了一种半耦合字典的学习方法。高低分辨率字典不再是严格耦合的,而是通过映射关系将低分辨率稀疏表示系数映射到高分辨空间中[7]。陈书贞等人将图像的自相似冗余信息进行稀疏编码,构建了自相似图像字典,并采取逐级放大的策略恢复出了质量较好的超分辨率图像[8]。Zhang等人提出了一种半监督学习邻域嵌入方法。该方法在计算图像块距离时,考虑了类信息的作用,使得近邻块的选取变得更加的准确[9]。
然而基于学习方法重建图像的质量很大程度上依赖于图像训练集的好坏。当图像放大倍数过大时,图像训练集很难提供足够的信息来保持高水平的重建结果,进而使得重建的图像含有伪像以及振铃效应。近些年来,人们开始逐渐关注重构与学习相结合的重建方法[10,11]。该类方法利用重构过程来使得重建的图像与低分率图像尽可能保持一致,利用学习的先验信息正则化图像超分辨重建过程。方法[10]利用局部自相似冗余信息来限制重构过程中产生的伪像以及锯齿振铃效应,然而在图像自相似信息较少时,重建图像的效果并不理想。方法[11]只考虑了图像的边缘先验,重建的图像局部细节描述并没有有效地被恢复。因此,本文在研究前人工作的基础上提出了一种基于自回归与滤波器组先验的图像超分辨重建算法。提出的算法:
1) 为了恢复图像局部的细节描述,本文利用自回归模型来正则化图像重建过程中的局部特征与细节描述,自回归模型的参数利用自然图像块训练得出。
2) 为了更好的保持重建图像的边缘,本文利用水平与垂直方向的滤波器组先验来正则化图像超分辨重建过程,与此同时本文假设图像与滤波器组响应符合学生-T分布的形式。
1 图像降质模型与重构约束项
低分辨率图像与高分辨率图像之间可以被描述为[12]
式中:Y为低分辨率输出图像,X为高分辨率输入图像,H为点扩散函数,D为降采样运算,n为加性噪声。通过式(1)我们不难得出超分辨重建过程中的约束项:
尽管我们可以通过最小化式(2)来重建出高分辨图像,但是由于该约束形式缺乏先验信息,导致重建的图像含有锯齿和振铃效应。如图1,我们将原图1(a)降采样然后在利用bicubic算法升采样作为低分辨率输入,利用式(2)对图像进行重建,得到图1(b)。从图1(b)中能够清晰地看见锯齿以及振铃效应。
因此,应当利用有效的正则化形式来对超分辨率重建解进行合理的约束。由于高分辨图像质量的好坏往往取决于重建图像的边缘和图像的局部细节的描述。所以本文利用滤波器组先验约束重建图像的边缘,进而减少振铃和锯齿效应,使得重建边缘看起来更加锐利。并且为了恢复图像局部细节描述,本文采用了自回归的正则化形式来有效地解决这一问题。
2 自回归正则化项
本文定义的自回归模型,利用局部图像块的周围像素来预测中心像素。由于当局部图像块尺寸选择过大,会导致恢复出的图像出现过于平滑的现象,所以本文利用3×3的图像块的周围8个像素来预测中心像素。本文定义局部图像块的自回归参数为w,我们通过最小化式(3)来计算出w。
式中:zi为中心像素,Z为其对应的训练集,pi为周围的8个像素组成的列向量,P为其对应的训练集。通过计算出的w可以得到自回归正则化项,其简易表述形式:
式中:Rz为提取图像块中心像素因子,Rp为提起图像块周围像素因子,。将一整幅图像训练成相同的自回归参数,会导致自回归模型估计的不准确。因此本文提出一种局部内容自适应自回归参数估计方法。
为了更准确估计自回归参数w,本节提出一种内容自适应自回归参数估计方法。1) 首先将自然图像块分割成重叠的3×3小块,构成自然图像训练集。2) 利用K-Means算法对训练集进行分类(本文分成32类),这样便将自然图像训练集分成多个子集。然后利用式(3)分别训练出对应每个子集的自回归参数w。3) 将低分率图像利用bicubic插值算法插值到输出高分辨率图像的大小,同样也分割成3×3的重叠小块。然后通过与每个对应子训练集的质心进行对比,寻找到最相似的子训练集,并标记上该3×3小块的自回归参数w。
虽然利用自回归模型可以有效的估计图像的局部细节描述,增加图像的纹理信息,但是对于图像边缘约束作用较小,因此本文利用滤波器组先验来正则化图像的边缘信息。
3 滤波器组正则化项
为了使得重建的高分辨图像的边缘更加锐利,减少振铃和锯齿效应。本节利用滤波器组先验来约束图像的边缘。我们采用的滤波器分别是[-1,1], [-1,1]T,分别对应着图像水平和垂直方向。由于自然图像与滤波器进行卷积的对数梯度分布符合重尾的形式,因此本文利用学生-T分布的对数形式来构造滤波器组正则化项[13]。滤波器组正则化项形式如下:
式中α为专家权重决定着每个滤波器响应在图像重建中所占的比例。由于自然图像多方位的性质,本文定义两个滤波器的所对应的专家参数相同且都为0.5。利用上述所定义的滤波器组正则化项,可以对图像进行整体的约束,有效地平滑图像的边缘,减少振铃以及锯齿效应,使图像边缘看起来更加锐利。
4 基于多正则化的图像超分辨问题求解表达式
本节将前几节讨论的重构约束项和正则化先验项进行整合,得到本文的多正则化的图像超分辨问题求解表达式,其对应的能量函数如下:
式中:λ1和λ2为正则化参数。本文利用梯度下降算法来求解式(6),其迭代形式:
式中:t为迭代次数,η为迭代步长。
对式(6)进行求导可以得到能量函数对应的梯度形式如下:
式中:J-1 为J的镜像反转,U代表升采样运算。
通过上述公式,总结具体的算法流程如下:
1) 首先将自然图像块分割成3×3的重叠小块,然后利用K-Means算法将其分割成32个子训练集。利用式(3)训练出每个子集的自回归参数w。与此同时,将低分辨图像利用bicubic插值方法插值到输出高分辨图像的大小,并将其分割成3×3的重叠小块,然后根据自然图像训练集,标记上每个重叠小块所对应的自回归参数。
2) 然后根据式(7)、式(8),将插值后的图像作为初始化图像,进行迭代求得高分辨图像最优解。本文迭代的次数为200次。
3) 由于在迭代的过程中图像质量在不断提升,因此自回归参数也应当有所改变。本文在每迭代20次时,重新与自然图像训练集进行对比,然后更新迭代图像每个3×3小块所对应的自回归参数。
5 实验结果与分析
本文利用六幅测试图像来验证本文算法的优势,并且与bicubic,半监督临域嵌入(CSNE)[9],稀疏字典(SR)[4],多语义稀疏字典(MSSR)[15]算法进行对比。图2给出了六幅实验图。为了定量的分析本文算法的优势,PSNR和SSIM[14]指标用来定性的分析本文算法与其他算法的差异。在实验参数的选择上,为了更好的模拟真实的图像退化降质过程,我们利用大小为5×5,方差为1的高斯模糊核对原始图像进行模糊,然后采用2倍降采样操作,生成相应的低分辨图像。本文选择的正则化参数λ1为0.6,λ2为0.02,迭代步长η为1.5。实验迭代次数为200次。
表1给出了本文六幅图像实验定量分析的对比结果。从表1中不难发现,本文算法的PSNR都要优于其他具有竞争力的算法。然而在SSIM指标结果的对比中,本文算法的Flower和Starfish的重建效果没有优于MSSR和SR算法,但是却与MSSR和SR算法十分接近。在PSNR和SSIM与其他算法的指标平均值对比中,本文算法的PSNR相比于其他算法分别增长了2.598 2 d B,2.381 8 d B,0.394 4 d B,0.184 7d B,SSIM相比其他算法分别增长了0.041 8,0.043 2,0.007,0.004 2。综上所述在PSNR和SSIM指标的对比中,本文算法优于其他算法。
在图3中给出Hat图的不同算法的视觉实验效果对比图,可以看出CSNE算法相比bicubic插值算法减少了一定的锯齿效应,但是从字母B和h中可以看出高频信息的模糊仍是不可避免的。虽然利用SR和MSSR算法重建的图像相比前两种算法显得更加清晰,但是重建的图像中仍可以看出一些伪像和锯齿效应。相比于前几种具有竞争力的算法,本文算法重建出更加清晰的图像。字母B和h显得更加锐利,没有锯齿以及振铃效应。在图4中,给出Bike图的不同算法的视觉实验效果对比图,从局部放大的区域看出,本文算法重建的图像相比于其它几种算法,明显的减少了锯齿效应,使得重建的图像更加接近于原图。
6 结 论
多分辨率特征 篇6
在Google中输入Android,可以获得14亿条以上的搜索结果,大部分是关于技术的文章、新软件的发布、市场占有的提升等振奋人心的信息。打开招聘网站,Android程序员需求与日俱增,同时薪酬也比同类开发人员高出不少。再看看身边,搭载Android系统的移动终端已经是随处可见。
(一)Android开源带来的机遇
Android平台的开源优势,无界限的应用程序、应用程序可以并行运行、应用程序可以轻松地嵌入网络。不管是给用户还是给应用程序开发人员,都带来了全新的体验。经过短短的3年多时间,Android手机的市场占有率已超过了nokia等老牌智能手机,取得了可喜的成绩。Android具有开源性,为开发者提供了良好的开发环境。同时随着Android的到来,为毕业大学生以及在IT其他行业的开发人员提供了非常好的机遇。
(二)Android开源带来的问题
Android与iphone的ios最大不同之处正在于Android是开源的、免费的,而ios则实施垄断。因此,在苹果ios开发的好处是不需要考虑手机的屏幕分辨率。这就为开发人员在带来机遇的同时带来了很多问题,怎样才能一次开发,所有的手机全部适用呢,而不必花费更多的时间去开发专门针对某个分辨率的版本。只有解决这个问题,开发出的程序才有普及的可能。
二、相关名字解释
(一)屏幕尺寸(Screen size)
屏幕尺寸是指显示器屏幕对角线的尺寸,一般用英寸来表示,可测量显示器对角线长度转换为英寸即可(1英寸=2.54厘米)。
(二)分辨率(Resolution)
分辨率就是指屏幕上的点。在同样大小的屏幕里,组成图形的点越多,点就会越小,越小就会看起来越细腻,很多屏幕看起来很粗糙,有颗粒感,就是因为点少的原因。所以数字越高越清晰。例如320*480 320就是横向排列的点,480是纵向的,因为屏幕是长方形,长就是纵向,宽是横向。
(三)屏幕密度(Density)
是指这个屏幕在单位长度上能显示的像素点数,也就是一英寸上能显示的像素点数,计算方式就是分辨率除以物理尺寸。屏幕密度能反应设备的清晰程度。
三、几种自适应屏幕的方式
分辨率的问题可以说是困扰Android开发人员的第一大难题,许多的前辈都针对这个问题作出了一些解决方案,大致分为3种:只要求全屏,不考虑变形问题;只考虑宽度缩放,上下留白,并且要求不可以发生变形;只考虑高度缩放,左右留白,并且要求不可以发生变形。
(一)只求全屏,不考虑变形
有一少部分应用程序或游戏,是不用考虑变形问题,只发生一些小小的变形是不会对用户产生影响的,但是其都有一个共同的特点,就是要求全屏显示。既然只是要求全屏显示,而不考虑变形问题,那么只要把图片等的宽度和高度分别按不同比例进行缩放,保证其充满屏幕即可。
(二)只考虑宽度缩放,上下留白,要求不变形
绝大多数的应用程序或游戏,是不允许变形的,但是还要求在屏幕上尽量的最大化,这就不能采用上面的方法了。假如要求宽度充满屏幕,那么只要高度缩放的时候也按照宽度的缩放比进行缩放即可,如播放影片的时候大部分影片的上下都有黑边,这就是所谓的上下留白了。
(三)只考虑高度缩放,左右留白,要求不变形
还有一些不允许发生变形的应用程序是要求高度充满屏幕的,同样只要在宽度缩放的时候也按照高度的缩放比进行缩放即可,在用这种方式进行缩放时,还有可能导致图片缩放后显示不全。
四、如何适配不同的屏幕
(一)屏幕分辨率和清晰度关系密切,也就是说屏幕分辨率越高,清晰度也越高,即其密度也应该越大,否则会看起来很不清楚,比如4寸的屏幕如果只有100个像素,这就像近距离看投影仪,或者看电影一样,非常模糊和不清晰。所以,Android主要是以屏幕密度来区分不同的设备:
高密度:hdpi(High dots per inch)
中等密度:mdpi(Medium dots per inch)
低密度:ldpi(Low dots per inch)
并且布局中强烈推荐使用密度无关单位dip或dp,来作为长度或者宽度的单位。
对于一般性的app应用程序,写一个布局文件在layout中,为三种密度准备图片drawable-hdpi,drawable-mdpi,drawable-ldpi,就足以应对80%的设备。
(二)采用自定义Custom View类开发
Custom View类自定义继承View
public class CustomV iew extets View{//..}
在完成View控件开发后,再修改/res/layout/main.xml
最后在主控类Activity启动时获取手机或模拟器的分辨率,并把屏幕的高度和宽度设置为当前手机的分辨率。
public class sample9_5 extends Activity{//..}
五、结语
本文介绍了android开源所带来的最大问题及解决方案,这对一个应用程序的生存周期来说是至关重要的,Android app多以dip或dp为单位,所以就必须注意不同密度上它们的对应关系。这样就更方便用dip来定义图片的长度和宽度。最后介绍如何开发自定义View,通过继承View类,来实现想要效果,方便开发。
参考文献
[1]吴亚峰,于复兴编著.Android应用开发完全手册.人民邮电出版社.
[2]关朝辉,郭荷清,高伟.基于群决策的多Agent资源管理模型.《计算机应用与软件》,2009.
多分辨率特征 篇7
非线性和冲击性负荷的投入使用,不仅给电网带来大量的高次谐波和间谐波,同时给电力系统造成明显的电压波动[1],除了影响其他用电设备的正常运行,还可能引起照明灯光的闪烁,即闪变。 国内外闪变仪测量电压波动的主要方法有平方检测法、 整流检测法和有效值检测法[2],这些方法对于稳定的单一频率成分的调幅波检测较为准确,而在处理时变的电压波动信号时,可能会带来误差。 大多数的电压闪变的检测和分析是通过准确提取电压波动信号,再对波动信号进行频谱分析得到所含的各种低频谐波分量的频率和幅值,信号的分析单纯在时域或频域展开。 Hilbert变换方法是提取波动信号包络的有效方法,但需要设计滤波器滤除高频分量,且滤波器输出的前一段数据不稳定,使得闪变包络波形很短或很不完整[3]。 小波变换法存在小波基函数不唯一的问题,合适的小波基不好选择,且硬件实现起来比较困难,计算量也较大[4-5]。 盲信号分离需要构造一个嵌入矩阵作为盲信号分离的输入信号,运用二阶盲辨识算法分离低频分量,对分离后的各个分量利用峰值比较法来确定频率,再利用包络信号构造一组超定方程求解各个频率对应的幅值,算法比较复杂[6]。
本文介绍一种基于S变换的时频分析方法,对电压闪变信号的局部特性进行时域和频域的二维联合表示。 利用S变换的时域、频域特性,分析电压闪变信号的频率-时间、幅值-时间和幅值-频率信息, 进一步通过调节高斯窗口的宽度实现其时频谱的多分辨率分析,从而对电压闪变频率、幅值和闪变起止时刻进行准确测量。 而且信号的S变换与其傅里叶谱直接相关,算法易于实现。
1多分辨率S变换
1.1 S变换原理
S变换是Stockwell于1996年提出的,是介于短时傅里叶变换和小波变换之间的一种非平稳信号分析方法,它具有局部时频分析的性质[7-8]。 S变换的时频谱分辨率与频率有关,不但有多尺度聚焦性,而且与其傅里叶谱直接相关。
对于时变信号x(t),其傅里叶变换为:
将信号x(t)乘以一个高斯窗口函数g(t),就得到信号的S变换:
由式(3)、(4)可见,高斯窗口的高度和宽度随频率而变化,克服了短时傅里叶变换窗口高度和宽度固定的缺陷。 因此,通过S变换不仅可以获得某一时刻的频率信息,还可获得在某一频率上信号的幅值信息,即S变换具有良好的时频特性[9-10]。
另外,由式(3)、(4)可知,改变参数 α 的大小可以调节高斯窗口的宽度,从而改变S变换的时频分辨率,如果频率分辨率要求高,就选取较大的 α 值, 反之亦然,从而使得S变换具有多分辨率的特性。
把(3)、(4)代入式(2),得到x(t)的S变换:
由于S(τ,f)为一个复数矩阵,因此可表示为:
其中,A(τ,f )为S矩阵的幅值矩阵,即S模矩阵; φ(τ,f )为S矩阵的相位矩阵。 A(τ,f )和 φ(τ,f )的行向量分别为信号某一采样时刻的幅值和相位随频率变化的分布,列向量分别为信号某一频率处的幅值和相位随时间变化的分布。
1.2 S变换的实现
对离散信号的S变换可以通过快速傅里叶变换(FFT)实现[11]。 对于采样信号x(kTs)(k=0,1,…,N- 1, Ts为采样时间,N为采样点数),其离散傅里叶变换为:
其中,r、m、n取值为0、1、2、…、N-1。
为方便,记x(kTs)为x(k),s为H(n),下面给出S变换的计算步骤:
a. 由式(7)对离散时间信号x(k)进行FFT得到其离散傅里叶频谱H(m);
b. 由式(9)计算对应于离散频率n的高斯函数G(m,n);
c. 根据卷积定理,由离散傅里叶频谱H(m)得到H(m+n),并计算出B(m,n)=H(m+n)G(m,n);
d. 由式(8)计算B(m,n)的反傅里叶变换得到矩阵S(n,r)对应于离散频率n的行。
e. 重复步骤b — d计算出对应于所有的离散频率的矩阵S(n,r)的所有行。
2电压闪变检测
2.1闪变信号模型
电压闪变可看成是以工频额定电压为载波信号,被0.05~35 Hz低频调幅波信号调制的结果[12],若考虑高次谐波成分,则闪变电压u(t)可表示为:
其中,f0为基波频率;mi、fi、φi为第i个调幅波的相对幅值、频率和相位;mhj、φhj为第j次谐波的相对幅值和相位。闪变测量就是要检出波动信号的调幅波,即各闪变分量的频率、幅值,以便进一步计算闪变统计量和衡量闪变的严重程度。
2.2电压闪变信号的S变换
由1.1节可知,S变换的结果包含了频率-时间、 幅值-时间和幅值-频率的信息,反映了信号的时频特征,满足了电压闪变信号的波动幅值、调制频率以及闪变起止时刻的分析要求。
图1(a)为电压波动信号的时域波形,包含基波和8 Hz的调幅波,调幅波幅值为基波的10%;图1 (b)为其S变换的三维曲线。 可见,幅值-时间(采样点)曲线反映了电压信号的时域信息,幅值-频率曲线反映了其频域信息,而频率-时间(采样点)曲线则反映了不同频率分量的起止时间。 图1中幅值为标幺值,后同。
2.2.1闪变信号幅值、频率与S矩阵之间的关系
由1.2节计算出的S矩阵的行代表频率,列代表时间,即S模矩阵的行向量为信号某一频率处的幅值随时间变化的分布,列向量为信号某一采样时刻的幅值随频率变化的分布。
因此,S矩阵的幅值-时间曲线对应于电压信号的时域采样信息,可通过对S模矩阵按列求极大值获得,则信号的时域包络为:
幅值-频率曲线反映了其频域信息,可通过对S模矩阵按行求极大值获得,则信号各频率成分所对应的幅值可由式(9)得到:
2.2.2多分辨率分析
根据不相容原理(Heisenberg不等式),采用联合的时频表示,不能同时得到理想的时间分辨率和频率分辨率,两者是一对矛盾的量。 即:对于能量有限的任意信号s(t)或窗函数h(t),其时宽和带宽的乘积总是满足下面的不等式:
其中,Th和Bh分别为时宽和带宽,Δtk和Δωk分别为时间分辨率和频率分辨率[13]。
在电压闪变检测中,为了得到闪变的幅值包络, 需要高的时间分辨率;而为了检测出调制频率,则需要高的频率分辨率,这二者是不能同时满足的。 由1.1节可知,改变参数 α 的大小可以调节高斯窗口的宽度,从而改变S变换的时频分辨率。 下面讨论 α 的大小对时域和频域分辨率的影响。
假设电压波动信号为基波叠加8.8 Hz的闪变分量,分别取 α 的值为0.15、2、50和500,分析 α 的大小对时间分辨率和频率分辨率的影响。
图2为 α 取值较小(分别取0.15和2)时所对应的信号时域、频域曲线,图3为 α 取值较大(分别取50和500)时所对应的信号时域、频域曲线。 可见,α 取值较小可以得到较好的时域波形(电压波动包络),如图2(a)、(b)所示;然而信号频率成分分辨不出,如图2(c)、(d)所示,无法检出工频和调制频率。 随着 α 的增大,对频率的分辨越来越清晰,如图3 (d)所示,当 α 取值为500时就可准确检测出50 Hz的工频以及工频附近的8.8 Hz的调制频率分量,但其时域波动无法体现,如图3(a)、(b)所示。 可见, 如果时间分辨率要求高,就选取较小的 α 值,反之, 如果频率分辨率要求高,就选取较大的 α 值。
由以上分析可知,可以通过改变窗函数的宽度实现S变换的多分辨率,即通过调节 α 的大小,来改变其时间分辨率和频率分辨率。 选取小的 α 值提高时间分辨率,获得电压闪变信号的波动幅值,选取大的 α 值提高频率分辨率得到精确的调制频率。
3仿真结果
3.1单一调制频率的电压闪变
假设电压工频信号频率为50 Hz,相对幅值为1, 采样率为500 Hz,调幅波频率为8.8 Hz,相对幅值为10 %,调幅波发生的时间为2 ~ 5 s。
图4是S模矩阵的幅值-时间曲线,即信号的时域幅值包络,反映了10%的调制波引起的电压波动, 起止时间对应第1000~2500个采样点,为提高时域分辨率,此时 α 取0.25。 图5是波动信号的频域特性曲线,为了清晰分辨出调制频率,排除工频信号的影响,这里通过对包络信号(即图4中的信号)进行S变换,S模矩阵所对应的幅值-频率曲线反映了波动信号的各频率成分(即闪变频率),由图5可见,可以明显辨识出8.8 Hz的调制频率,此时 α 取值为500。 图6是S模矩阵所对应的频率-时间曲线,可以看出8.8 Hz的频率发生的时间区间大致对应第1 000 ~ 2 500个采样点(即2 ~ 5 s),此时 α 取为30。
3.2多调制频率的电压闪变
考虑含有高次谐波时,同时包含多个调制频率的闪变信号,假设3次和5次谐波的相对幅值分别为0.1和0.05,多频闪变各参数设置如表1所示,其中调幅波幅值为标幺值。
图7是包含高次谐波的多频闪变信号曲线。 图8是S模矩阵的幅值-时间曲线,即信号的时域幅值包络,可以看出在不同的时间区间分别存在3种频率的电压波动,调制波的幅值分别为0.024、0.039和0.064。 图9是多频闪变波动信号的频域特性曲线, 为了提高频率分辨率,需要取较大的 α 值,此处 α 取500,幅值-频率曲线可以明显地分辨出3种调制频率(即闪变频率)分别为5 Hz、8.8 Hz和20 Hz。 图10是S模矩阵所对应的频率-时间曲线,可以看出各个频率发生的时间区间与表1中的起止时刻一致。
3.3调幅波幅值非平稳的闪变信号
假设幅值非平稳的调幅波信号为:
经此调幅波调制的电压波动信号如图11所示。 经S变换之后,可以得到信号的时域包络见图12,闪变信号的频域特性曲线见图13,闪变发生的起止时刻见图14。 可见,对于非平稳的调幅波信号,S变换也能准确检测:闪变频率为10 Hz,调制波幅值变化见图12,闪变发生的时间为0~2 s和4~6s。
4结论
本文介绍了一种基于S变换的时频分析方法,对电压闪变信号的局部特性进行时域和频域的二维联合表示,S变换的结果包含了频率-时间、幅值-时间和幅值-频率的信息,满足电压闪变信号中对波动幅值、调制频率以及闪变发生的起止时刻的分析要求。本文研究了S变换中时间分辨率和频率分辨率的不相容性,分析了高斯窗口的宽度对分辨率的影响,即调节α的大小可以使得S变换具有多分辨率的特性,实现了电压闪变的准确测量,仿真结果证明了算法的有效性。
摘要:提出一种基于S变换的时频分析方法,对信号的局部特性进行时域和频域的二维联合表示,S变换矩阵的行向量为信号某一频率处的幅值随时间变化的分布,列向量为信号某一采样时刻的幅值随频率变化的分布,即S变换的结果包含了频率-时间、幅值-时间和幅值-频率的信息,由此可以得到电压闪变信号的波动幅值、调制频率以及闪变发生的起止时刻。由于时频分析中时间分辨率和频率分辨率的不相容性,研究了S变换中高斯窗口的宽度对时频分辨率的影响,通过调节变换窗的参数实现了多分辨率的S变换,并给出了算法的实现步骤。仿真结果证明了所提方法的有效性。