您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于GPU的小波变换

基于GPU的小波变换

来源:意榕旅游网
第27卷第8期 文章编号:1006—9348(2010)08—0231一o4 计算机仿真 2010年8月 基于GPU的小波变换 周 侃,阎文丽,甘斌,郝佳新 (中国人民63961,北京100012) 摘要:针对图形处理器研究问题,其中图形海量数据集的分析与处理,多用小波变换方法。但计算量大,难以适应实时性要 求。近年来图形处理器的性能大幅提高,其深度流水线和并行运算机制提高,为解决实时计算问题提供了良好的平台。在 研究小波变换矩阵形式及GPU编程模型的基础上,提出了一种关于GPU的小波变换方法,利用数组与纹理之间的对应关 系实现小波变换,将离散的数据点映射到纹理,将小波变换的计算影射为高维矩阵与向量间的乘积形式,并通过渲染到纹理 的形式取得中间结果。方法充分发挥了GPU流水线的并行性优势,实验表明方法可有效减少计算时问,从而达到实时绘制 的要求。 关键词:图形处理器;小波变换;通用计算 中图分类号:TP391 文献标识码:B Wavelet Analysis Based on GPU ZHOU Kan,YAN Wen—li,GAN Bin,HA0 Jia—xin (63961 Unit,PI A,Beijing 100012,China) ABSTRACT:Wavelet Analysis has been brought into wide use in large scale data processing,but it can not fit the demand of real—time simulation because the quantity of computing is vast.In recent years,the capability of GPU is improved greatly,the parallel pipeline processor and programmability of GPU provide a solution to this question.We present a method for wavelet analysis based on GPU and matrix arithmetic of wavelet,which uses the matrix and tex— ture to complete the computation,transforms the data to texture,transforms the wavelet analysis to product of the ma— tix and vectror,and uses the rending to get the results of computation.The method takes advantage of GPU pipeline, and the results of experiment indicate that the method reduces the time of calculation effectively,SO that it achieves the demand of real~time render. KEYWORDS:GPU;Wavelet analysis;General purpose computation 1 引言 小波理论是2O世纪8O年代后期发展起来的数学分支, 序力不从心,难以满足实时计算的要求。近年来图形处理器 (GPU)的性能飞速发展,以GeForee 8800系列显卡为例,其 拥有128个流处理器,核心频率达612MHz,流处理器速度达 到了1.50GHz,可以每秒处理336亿个具有纹理的三角形 (Textured Triangle),而GPU的可编程性也越来越好,这使得 近年来基于GPU的通用计算(General Purpose GPU,GPGPU) 是目前国际公认的最新的空问(时间)一频率分析工具,由于 其“自适应性”和“数学显微镜性质”而成为许多学科共同关 注的焦点。由于它同时具有时域和频域的良好局部化性质, 所以可以随着信号不同频率成分在时空域采用疏密自动调 节的窗口分析信号特征,借助于小波分析,可以检测和提取 多源、多尺度、海量的空间数据集的基本特征,广泛应用于信 应运而生,它指的是利用GPU来实现一般意义上的计算,而 不单纯是绘制¨l 。GPU用于通用计算的优势主要体现在 l其高并行性的流水线结构上,通常情况下,GPU拥有4条顶 点流水线和8条像素流水线可以对大量的计算进行并行处 理,再加上GPU硬件内部实现了一些计算指令,所以GPU在 众多计算工作中效率超过CPU(如在向量计算方面效率为 CPU的十倍)。 号处理…、图像处理 、三维地形分析 等方面。 但由于对大规模数据(例如:大规模DEM数据)进行小 波变换的计算量庞大,这使得基于串行方式运行的CPU程 基金项目:国家863高技术计划项目资助(2006AA01Z319) 收稿日期:2009—05—14修回日期:2009—07—02 本文在研究GPU编程模型和小波变换矩阵形式的基础 上,提出了一种基于GPU的小波变换方法,将离散小波变换 一231— 映射到纹理光栅化,充分发挥了GPU的并行性,有效提高了 表示这种范围。 大规模数据小波变换的效率。 6)计算的输出范围=顶点坐标 光栅器产生片段,这些片段经过处理后变成输出像素。 2 GPU通用计算编程模型 输入顶点和顶点程序决定了应该生成哪些像素,因此顶点坐 在GPU流水线中,顶点着色器(Vertex Shader)被用于控 标控制了计算的输出范围。 制渲染管线中的顶点几何变换,所以能够胜任各种几何计 算。而片段着色器(Fragment Shader)被用于控制像素颜色 3小波变换矩阵形式 和纹理映射等,所以具有较大容量的纹理空间,其对纹理数 由于GPU是流处理器,需要将小波变换过程分割成一 一 1J O 据的操作可以广泛用于各种通用计算,如二维、三维、四维向 系列核心模块来处理作为纹理的数据流,而小波变换的矩阵 凡 量的加、减、乘、乘加、内积、最小值和最大值、取反、外积等, 形式可以天然地与纹理操作吻合,成为简单有效的核心模 ~ 1j O 它也是GPU用于通用计算的主要途径。GPU通用计算的实 块。利用多分辨率分析(MRA)理论,可以构造离散小波基 . .rL 质其实是绘制的过程,以下介绍GPU通用计算的编程模型: 计算框架,并计算出不同小波基的滤波器系数,以bi一 一 Ojor  3.3小 1)CPU数组=GPU纹理 波为例,可以得到其低通滤波器系数和高通滤波器系数: .rl rL 任何CPU上使用的数组都可以用GPU上的纹理来代 {h }={0.0469,一0.1406,一0.1094,0.7031,0.7031,一 7 1 ]●J 1j  替,并通过片段着色器对其进行处理。 一0.1094,一0.1406,0.0469} 2)CPU内循环=GPU片段程序 {g }={0,0,0.6369,一1.9107,1.9107,一0.6369,0,一 0 ¨  在CPU上用循环语句(如f0r循环)来操作数组中的元 0} 素,而在GPU片段程序中也可以编写相似的指令来处理 由离散小波分解公式可知: ~O 1J 纹理。 7 [k]=∑h[n] n+2 ] 一 O 3)反馈:渲染到纹理 (1) n 0 在CPU上得到计算结果是方便的,因为它的存储器可 这里将低通滤波器的下标写到中括号里。式(1)是一个 一 0 以在程序中的任何地方进行读写,而GPU为了实现计算反 迭代过程,给定一个初始序列{cj},就可以计算出{cj一 }, 馈,必须使用渲染到纹理把片段程序的结果写入存储器。 {cj一 },…,由于通常的迭代是递增过程,所以将式(1)写成 4)计算的调用=几何体光栅化 7 GPU通用计算的实质是绘制的过程,所以为了调用计 如下形式:c,=+I[ ]=∑ [n]n 0  [n+2|j}] 算,只需要绘制几何体。 假设对输入信号 t)进行整数点采样,得到序列:{..・ 5)计算的输入范围=纹理坐标 [0] 1] 2],… n一1],…},令初始迭代序列c。[k]:, 任何计算都有一个输入范围。GPU以纹理坐标的形式 [k],(k Z),于是小波变换公式可以写成如下的矩阵形式: -●● cj+ [0] ci[O] cj+ [1] cj[1] (2) ●●● cj[n一1] 令低通变换矩阵P为: P= (3) =(…,cj[O],cj[1],…,ci[n一1],…) 于是Mallat低通分解公式可写成如下矩阵形式: + =PcJ,( =0,1,…,L一1) 表示小波分解的次数,同理,得到高通变换矩阵为: —--——232---—— …g[0]g[1] 0 0 … g[7]0]g[1] 0 0 … … 0 ・ (4) …Q= … g[7]0 … g[o]g[1]…gE7]・ =(…,Col, [1],…, [n一1],…) 重构出原始信号的每一行。这个过程正好是二维小波分解 矩阵形式的逆过程。 r Co=f {q=p ..,( =1,2,…, ) (5) =Q 一・ 二维小波分解矩阵形式如图1所示:提取原始数据的每 一行分别与高通滤波器系数矩阵、低通滤波器系数矩阵相 乘,得到结果后之后再提取每一列继续和两个滤波器系数矩 阵相乘,最后得到小波分解的四个低频系数矩阵。 图1二维小波分解矩阵形式 二维小波重构也可以得到相应的矩阵形式。在一维小 波变换中,由双尺度方程可以及g =(一1) h 一 的关系可 以得到: ∑hk=0 :0 … … 一 0 尸r尸+Q Q= =E k=0 E h:0 … … … 0 (6) 其中E为单位阵,在上式两边同乘信号C ,得到: 一。=(P P+Q Q) 一。=prP 一 +Q Q 一。 再由式(5)可知: 一1=P G,+Q D, (7) 利用式(7)可以得到二维小波重构的矩阵方法(如图2 所示):首先分别提取低频分量和三个高频分量矩阵的每一 列,分别与相应的矩阵(P 和Q )相乘,之后相加,在得到的 结果中提取每一行,分别与相应的矩阵相乘之后相加,便可 图2二维小波重构矩阵形式 4基于GPU的小波变换实现 利用GPU处理海量数据的小波变换的好处是很明显 的,由式(2)可以看出,以n×n的二维离散小波变换分解为 例,进行一次小波变换相当于利用高通滤波器和低通滤波器 对数据块进行行方向与列方向一共4次滤波,相当于2n 次 两个n维向量的张量积,也相当于大约2n 次乘法和2n 次 加法,这些高密集度的计算在CPU上是利用顺序执行的循 环语句运行的,而对于流水线结构的GPU而言,将并行处理 作为向量的纹理中的每个纹素,也就是说在一个时钟周期处 理多个纹理元素,因此大大加快了计算速度。另外,显卡内 存接口为256位(以GeForceFX为例),大于CPU的32位接 口,所以计算带宽要明显大于CPU。最后当绘制时,由于计 算数据已在显存中,减少了内存与显存的传输(这种传输相 对较慢),节省了CPU资源,从而可以使CPU有空做更多的 控制操作。 基于GPU的小波变换方式,利用小波变换的矩阵化方 法将小波变换的计算影射为一个高维矩阵与向量间的乘积 形式,而中间结果为一些向量,利用数组与纹理之间的的对 应关系实现小波变换。小波分解时的基本思想如下: 首先将式(5)中的向量影射到纹理,自然想到GPU的一 维纹理,但由于GPU上的一维纹理长度是有限的,最长为 4096,所以最多只能实现一个4096长度的向量,另外,由于 作为计算结果的向量需要被渲染,而GPU在生成相同片段 个数的前提下,渲染二维纹理比渲染一维纹理快的多。所 以,可以将一维向量映射到二维纹理上进行处理,为了进一 步降低内部表示数据的大小,将连续的4个向量中的元素压 缩为一个RGBA纹理元素,如图3所示。 ...——233...—— 兰!I竺 l! l竺 l!!l! l! l!!l竺!l兰!l! ! ! f q R G B A 加,对得到的两个矩阵继续提取每一行,再次计算矩阵和P 、 R G B A Q 的乘法并将结果相加,最后得到重构出的原始信号。 鹾盎 图3将向量表示为二维纹理 5 实验结果 利用小波变换的CPU方法和GPU方法对不同大小的数 据块进行分解和重构(实验平台:CPU:Intel Core 2 Duo E4500 2.2GH,内存:1GB DDR2 800,显卡:8600GT 512MB显 存),两种方法所用时问如图4所示。 而对于式(5)中的滤波器系数矩阵,则可以先将矩阵拆 成n个向量,对于每个向量再利用上边的二维纹理的形式来 存储。 对于式(2)的矩阵与向量之间乘积运算,可以先将其转 化为n次两个向量的乘积,而对于作为纹理的向量间的乘 积,则利用绘制双重纹理,首先把渲染区域设置为与表示向 量的二维纹理同样的屏幕尺寸,然后将纹理赋给一个覆盖整 个屏幕(渲染区域)的方块,顶点到达光栅化阶段时,光栅器 为每个向量元素(纹理)生成一个片段,每个片段在经过片段 程序时,可将两个向量元素取回并作乘法运算,然后将结果 写回到渲染目标。下面以n×n二维离散小波分解为例,将 该方法分为如下几个步骤: 1)利用事先求得的对称小波滤波器组系数{h }和{g } 构造出相应的两个滤波器系数矩阵P和Q(如式(3)、(4)的 形式),对于矩阵中的每一行,都将其作为一张二维纹理进行 保存,另外将待变换的数据(n×n)的每一行每一列分别保存 为二维纹理。 2)创建一张新的纹理用来保存计算结果。 3)设置绘制区域大小为n×n个像素,并且绘制一个1: 1全屏幕矩形。 4)对二维数据进行行方向上的低通滤波,即将P的第一 行所对应的二维纹理和二维数据的第一行所对应的二维纹 理作为双重纹理赋予矩形,令双重纹理计算方式为乘法。利 用渲染到纹理取回渲染结果,对于每次得到的结果纹理的各 像素灰度值相加,得到最终结果。 5)对于P的每一行,执行步骤4的计算,将得到的n/2 个最终结果,将这些结果按顺序排列,便得到了二维数据第 一行的低通滤波下采样结果。 6)同理,对二维数据的每一行进行步骤4)、步骤5)的计 算,得到二维数据经过行方向上低通滤波下采样结果。 7)利用与步骤3)、4)、5)、6)相同的方式,将Q与二维数 据进行双重纹理计算,可以得到二维数据经过行方向上高通 滤波下采样结果。 8)将得到的行方向上低通和高通滤波下采样结果按列 划分为二维纹理,利用低通滤波器和高通滤波器对其进行滤 波,利用步骤1)~7),最终得到数据块小波变换后的4幅系 数子图。 重构与分解的原理是一致的,首先将已知的低频小波系 数矩阵和三个高频小波系数矩阵进行按列的提取,并且利用 双重纹理计算这四个矩阵和P。。’、Q 的乘法,之后将结果相 ...——234...—— g 莒 图4 CPU和GPU小波变换运算时间比较 从实验数据可以看出,GPU的计算时间要远小于CPU 的计算时间,并且CPU的运算时间随着数据量的增长急剧 增加,而GPU的耗时增长较少,从耗时比可以看出,随着计 算量的增大,GPU表现出更优越的性能。 参考文献: [1]张仁辉,杜民.小波分析在信号去噪中的应用[J].计算机仿 真,2005,22(8):69—72. [2]李云,刘学诚.小波变换在图像处理中的应用[J].计算机仿 真,2008,25(6):195—197. [3] 常占强,吴立新.用离散小波变换对格网DEM数据压缩中的 关键技术[J].系统仿真学报,2008,20(15):3955—3962. [4] Wu Enhua,Liu Youquan.Eme ng technology about GPGPU 『C].Proceedings of the 2008 IEEE Asia Paciifc Conference.Ma— cao。China.2008.618—622. [5]J Owens,D Luebke,N Govindaraju,M Harirs.A survey ofgener- al—purpose computation on graphics hardware[J].Computer Graphics Forum,2007,26(1):8O一1 13. [作者简介] 周侃(1983一),男(汉族),吉林春市人,硕 士研究生,助理工程师,主要研究领域为多媒体与 虚拟现实。 阎文丽(1972一),女(汉族),山西省清徐县人,硕 士研究生,高级工程师,主要研究领域为系统仿真。 甘斌(1979一),男(汉族),江西九江市人,硕士研究生,工程师, 主要研究领域为系统仿真。 郝佳新(1980一),男(汉族),河北三河市人,硕士研究生,工程师, 主要研究领域为系统仿真。 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务