您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页基于GPU的快速Sobel边缘检测算法 (核心)0000

基于GPU的快速Sobel边缘检测算法 (核心)0000

来源:易妖游戏网
第36卷第1期2009年1月文章编号:1003—501X(2009)01—0008—05光电工程Opto—ElectronicEngineeringV01.36,No.1Jan.2009基于GPU的快速Sobel边缘检测算法左颢睿1,一,张启衡1,徐勇1,一,赵汝进1,2(1.中国科学院光电技术研究所,成都610209;2.中国科学院研究生院,北京100039)摘要:传统的Soble边缘检测算法的优化和实现都是针对常用处理器(CPU、DSP和FPGA等)提出的,难以应用在图像处理器(GPU)上。本文提出了一种基于NVIDIA公司CUDA架构图形处理器(GPU)的快速Sobel边缘检测算法。快速算法根据GPU的并行结构和硬件特点,采用了纹理存储技术、多点访问技术和对称计算技术三种加速技术,优化了数据存储结构,提高了数据访问效率,降低了算法复杂度。实验结果表明,快速算法充分利用了GPU的并行处理能力,在处理4096x4096分辨力的8位灰度图像时速度可达190fps,是基于CPU实现的122倍.关键词:GPU;CODA;Sobel;边缘检测中图分类号:TP391,TP911.73文献标志码:AFastSobelEdgeDetectionZUOHao.ruil’2,ZHANGAlgorithmBasedonGPUQi.hen91,XUYon91’2,ZHAORu-jinl,2ofSciences,Chengdu610209,China;(1.InstituteofOpticsandElectronics,ChineseAcademy2.GraduateSchoolofChineseAcademyofSciences,Beijing100039,China)algorithmsforoptimizationandimplementationwhichweredesignedfornotAbstract:ThetraditionalSobleedgedetectioncommonprocessorsuchfastSobelasCPU,DSPandFPGA,couldbeeffectivelyappliedonGraphicsProcessorUnit(GPU).Aedgedetectionalgorithmiswes钮tedbasedthetoonNVIDA,sGPUwhichsupportComputeUnifiedDe、,iceArchitecture(CUDA).OnintroducesthreestoragebasisoftheparallelarchitectureandhardwarecharacteristicofGPU,thefastalgorithmmethodsimprovetheimplementationperformance:TextureStoragetechnologyoptimizesthedata8A3CCSSstructure,multiplepointreducesthetechnologyimprovesthedataaccessefficiency,andsymmetrycomputationtechnologycomputationcomplex.TheexperimentresultshowsthatGPUCaneffectivelyimplementthefastCallalgorithmandprocessingspeedof8-bit4096x4096picturesbeupto190fps,whichis122times‘fasterthanCPU-basedimplementation.Keywords:GPU;CUDA;Sobel;edgedetection0引言UnifiedDevice随着GPU技术的快速发展,当前的GPU已经具有很强的并行计算能力,浮点运算能力甚至可以达同代CPU的10倍以上¨1。同时,随着Nvidia公司的CUDA(ComputeArchitecture,统一计算设备架构)结构的推出,使得GPU具有更好的可编程性,因此在诸如物理系统模拟i2剖、金融建模[4-51以及地球表面测绘№1等通用计算领域有着广泛的应用。如何充分利用GPU的并行计算特点实现一些复杂运算的快速求解,已经成为当今的热点问题之一。边缘检测能够得到丰富的图像信息,广泛应用于目标跟踪、图像压缩和机器视觉等领域。Sobel算子是一种基于梯度的边缘检测方法,检测效果较好,运算复杂度适中,在实时图像处理中常常被采用。然而收稿日期:2008-08_07I收到修改稿日期:2008一11.03基金项目:863高技术项目作者简介:左颢睿(198卜),男(汉族),四川绵阳人。博士研究生,主要从事并行计算和图像复原的研究工作.E-mail;zuohaomi@sina.com。万方数据2009年1月左颢睿等:基于GPU的快速Sobcl边缘检测算法9基于Sobel算子的边缘检测算法包含二维相关运算uJ,当图像分辨力较高时,运算量很大,如何降低算法的复杂度以及在特定硬件平台上提高算法的执行效率是当前研究的重点。文献[8】介绍了经典的算法优化方法,将二维Sobel算子分解为二个一维向量分别进行运算,降低了约1/3的运算复杂度,适合并行实现。文献【9.10】分别介绍了在FPGA和DSP上高效实现算法的方法,文献[9]在计算四方向边缘检测时可高达200Mpixel/s。这些优化和实现的方法大都针对常用处理器(CPU、DSP和FPGA等)提出的,GPU是新兴的处理平台,传统方法很难在GPU上高效运行。因此本文结合GPU的硬件结构和算法特点,从存储结构,数据访问和计算方法三个方面对经典Sobel算法进行了优化,介绍了在GPU上高效实现Soble边缘检测算法的方法。1Sobel算子经典Sobel边缘检测算子由图1所示的两个模板组成U1,一个核对应于垂直边缘,一个对应于水平边缘。对于图像中的每个点都用图l中的两个模板做相关运算,对于输入数字图像工输出图像g由下列公式得到:g。可(f一1,j+1)+2f(i,j+1)+f(i+l,_,+1)一f(i—l,歹一1)一2f(i,J一1)一f(i+l,j『一1)92可O+l,J一1)+2f(i+l,歹)+f(i+l,j+1)一f(i一1,,一1)一2f(i—l,_,一1)一f(i—l,J—1)g=Ig。I+192(1)(2)(3)式中:gl,92是垂直方向和水平方向的卷积,Sl是垂直方向算子,是是水平方向算子,1.I表示取绝对值,运算示意图如图2所示。图1Fig.1Sobel边缘检测算子SobcledgedetectionopexatorFig.2图2Sobel边缘检测算法示意图edgedetectionComputationofSoblealgorithm2用GPU实现快速边缘检测算法2.1使用纹理(Texture)类型存储图像数据Soble边缘检测算法(简称边缘检测)是基于模板运算的,在计算时要使用当前输入点的8邻域数据,并且前点与后点之间的存储访问高度相关,如果使用普通存储类型,每次访问都要重新从全局存储器(GlobalMemory)中访问所有的数据,很多点被重复读取,访问效率低;同时模板运算会产生边界问题,即模板在图像的边缘时和通常的处理方式不同,这就需要设置边界处理条件,但是额外的条件语句会大大降低并行计算效率¨】,因此需要采用一种合适的数据存储方式。纹理类型(简称纹理)是GPU定义的一种存储类型,为图像处理提供了优化,在图像处理中有广泛的应用,如图像去噪¨¨、图像卷积u卅等。纹理具有一组高速的纹理缓存(texturecache),能够保存最近访问的数据,从缓存中访问数据与访问GPU寄存器的速度相当;通过设置纹理的属性,GPU在访问纹理时能够自动进行边界条件的处理,如访问f(-1,一1)可以直接返回/(0,O)的值。因此,在边缘检测时采用纹理存储方式,可以很好的满足应用的需求,纹理的其他特性详见【l】。使用纹理非常简洁,首先使用cudaBindTextureToArray0将保存图像数据的数组绑定到一个纹理对象,然后使用tex2D()函数访问该纹理对象,就可利用纹理存储类型的特性对图像数据进行操作,需要注意的是纹理的只读特性,只能作为数据输入,不能用纹理作为输出。2.2多点访问技术万方数据10光电工程第36卷第1期从图2中可以看到,边缘检测每计算一个输出点,需要从存储器中读取9个数据。计算后这些数据就被丢弃,下一次计算需要重新从存储器中取点,很多点被重复读取,访问效率低。根据相关运算存储器的访问是层叠的特点,可以采用多点访问技术来提高数据的访问效率:GPU一次读取多个连续的数据放置在寄存器中,后点计算重复访问放置在寄存器中的前点,无须重复访问全局存储器,处理后输出多个处理结果。由于GPU从全局存储器访问一个数据需要约400~600个时钟周期,而直接从寄存器访问数据只需4个时钟周期,这就大大提高了GPU的访问效率。访问方式如图3所示。从图3可以看到,当连续计算4个输出点时,共需访问18个输入点,与原来的36个点相比,减少了50%的存储器访问。在输出图像数据时,每次生成的4个存储位置连续的8位数据(本文处理的图像数据为8位)可以看作一个32位数据,在GPU中,传输一个8位数据和传输32位数据所需时间是相同的,因此每次输出4个点比输出1个点可以减少75%的存储器访问。在垂直方向上读取多个点也有此性质,本文以行访问为例。需要注意的是每线程访问多个元素能有效提高存储访问效率,但Fig・3图3多点访问方式Multiplepointsaccessmethod是占用更多的GPU寄存器,特别在线程内部计算复杂时,会影响GPU地并行性【l】'因此在程序设计时要兼顾访问效率和并行性,在后文中有进一步讨论。2.3对称计算技术Sobel算子具有良好的对称性,如图l中算子岛所示,算子的第一列和第三列仅仅是符号相反,在每次只计算一个输出点时由于输入各点取值不同,无法利用该对称性,但是在采用图3所示的多点输入多点输出方式时,计算输出点甙f-卜2,力可以利用计算点g(i,力时得到的部分计算结果,计算图3中4个输出点的表达式如下:92(f+m,/)=f(i+m+1,J—1)+2f(f+m+1,/)+f(i+,行+1,J+1)一f(i+m—J,,/一1)一2f(i+m一1,J一1)一f(i+m一1,J一1);0≤m≤3(4)当m--0时式(4)前3项计算的结果与m=2时后3项计算结果互为相反值,m=l与m=3时也有类似性质,计算时对这些项只需计算一次。采用对称计算后,在水平方向上,每计算4个输出点可以减少2列6个数据的乘加运算。利用Sobel算子的对称性,在降低运算的复杂度的同时还减少了GPU寄存器的使表1普通计算与对称计算GPU寄存器使用数量和并发程度Table1GPUregistersandcomputationresourceusagebetweennormalcomputationandsymmetrycomputation用数量,提高了GPU的并行性。表l列出了普通运算和利用对称性运算时每线程GPU寄存器的使用情况以及系统的并发程度。从表1中可以看到,利用Sobel算子的对称性,每线程输出4个或8个数据时,可以有效降低寄存器的使用数量,GPU利用率得到提高,当每线程输出16个数据时,由于线程内部计算复杂,需要缓存的中间变量过多,寄存器使用数量并没有减少。和多点访问技术类似,使用对称处理技术每线程输出更多的点,可以进一步减少运算的次数,但是会降低GPU的并行性,因此不能无的增加每线程输出点的个数,应在4—8个间考虑。万方数据2009年1月左颢睿等:基于GPU的快速Sobel边缘检测算法1l2.4配置GPU处理核心在GPU中进行任何计算,都需要为计算配置一个处理核・I已,(Kemel),用以对要处理问题的进行划分,配置项包括问题的分块(Block)数GridDim以及每个分块内线程(Th陀ad)数BlockDim。GridDim由问题的规模和处理方式来确定,在边缘检测中,图像中的每个点都要在其邻域内进行运算,通常是以行序对点进行处理,为了寻址方便,可以把图像的行数作为GridDim,例如处理Ⅳ(行)×朋【列)M坞的图像,Ⅳ即为GridDim的值,每个Block处理1行图像数据。BlockDim可以由CUDA提供的工具CUDAOccupancy惶6—鳓娥kDi廿=“-‘:一。V。1680144八八.卅208272GPUperformanceunder……一336400DlUC^■.几IIFJ.—‘UCalculator(简称Calculator)得到,Calculator以每线程占用的寄存器数目作为输入,可以得到不同BlockDim取值下GPU的性能曲线。当采用多点访问和对称计算技术后,每次输出4个数O464Threadsperblock据,此时每线程占用23个寄存器,在不同BlockDim取值下GPU的性能曲线如图4所示。从图4可以看到,当BlockDim取值为64或320时图4不同BlockDim下GPU的性能Fig.4differentBlockDim(BlockDim应是64的整数倍‘11),GPU在理论上性能够达到最优。在实际情况中,性能受多方面因素的影响,如块切换,每线程的运算复杂度以及存储器访问延迟等,因此BlockDim应根据实验结果在多个最优值间选取。根据上述分析,图5给出了基于Sobel算子的边缘检测的处理核心的配置示意图。图5Fig.5GPU处理核心配置示意图GPUKernelconfiguration3实验结果与分析本文所采用的实验平台为IntelGF8800Core2Q6600,主频为2.4GHz,系统内存为4G,显卡采用的是GeForceUltra,显卡内存为768M,显卡的核心频率为612MHz。驱动的版本为6.14.11.6909,操作系统为WindowSXP,整个实现基于CUDASDKl.1,实验数据为不同分辨力的8位MxM灰度图像,GridDim=尬BlockDim=64。表2列出了在GPU上和CPU上执行Soble算子边缘检测的实验结果。从表2中可以得到如下结论:a)在GPU上执行边缘检测算法相比CPU有明显的加速效果。在处理4096×4096分辨力的图像时,加速比高达122倍。一方面因为GPU高度的并行架构,能够同时处理多个数据,另一方面因为边缘检测算法有良好的可分块性和对称性,可以充分利用GPU的并行架构,因此在处理类似表2不同分辨率图像边缘检测需要的时间Table2Timecostofdifferentresolutionpictures问题时采用GPU能够有效提高运算效率。b)GPU处理低分辨力图像的加速效果并不明显,对高分辨力图像效果较好。当M=256与M=-512时,万方数据光电工程第36卷第1期两者的数据量差了4倍,所需的处理时间几乎相同。这种情况随着图像分辨力的提高得到改善,当M=2048与M=4096时,处理时间基本上与处理数据量成线性关系。这是因为分辨力较低时每个线程的运算量不充分,线程切换频繁,系统调度的开销占用了较多执行时间,当分辨力较高时,每线程处理数据增多,系统调度占用的执行时间也较∥¨‘1川。因此使用GPU进行边缘检测时,在处理分辨力较高的图像(』畛4时能达到更高的性能。096)4结论通过采用纹理存储技术,多点访问技术以及对称计算技术,在GPU上实现了基于Sobel算子的边缘检测算法。对分辨力为4096×4096的图像进行处理时,速度可达190帧/秒,相比CPU实时性有很大的提高。算法实现时采用的技术具有通用性,可以应用于类似的边缘检测算子如Prewitt算子和Kirsch算子,对于其他类型算法的GPU实现也有借鉴作用。参考文献:【1】Nvidia.NVIDIA【2】2TakahiroCUDAProgrammingGuideversion1.1[EB/OL].http://www.nvidia.corr#objecffeuda_home.html,2007.11.onHarada.Real-TimeRigidBodySimulationGPUs【G]//NVIDIA.GPUGEMS3.AddisonWesleyProfessional,2007:611—632.[3】LarsNyland,MarkHarris,JanPrins.FastN-BodySimulationwithCUDA【q//NVIDIA.GPUGEMS3.AddisonWesleyProfessional,2007:677—696.【4】VictorPodlozlmyuk,MarkHarris.MonteCarlo2007—11—21.OptionPricing[EB/OL,].http://www.nvidia.com/objeeVcudahome.html,【5】VictorPodlozhnyuk,Black-Scholesoptionpricing【EB/OL].http://www.nvidia.com/object/cudahome.html,2007.04.06CUDA[G】//NVIDIA.GPUGEMS3.Addison【6】BernardDeschizeaux,Jean—YvesBlanc.ImagingEarth’sSubsurfaceUsingWesleyProfessional,2007:83l一850.【7】DavisLS.ASurveyofEdgeDetectionTechniques【J】.CGIP,1975(4):248-270.【8】托马斯・布劳恩.并行图像处理[M】.李俊山,译.西安:西安交通大学出版社,2003:29-31.【9】NataliaKazakova,MartinMargala,NelsonGSystem[c]//ProceedingsDurdle.SobelEdgeDetectionProcessorForAReal-TimeVolumeRenderingofthe2004InternationalSymposium,May23—26,2004,2:913—916.【lo】谭立勋,刘缠牢,李春燕.实时图像处翟中Sobel算子的改进叨.弹箭与制导学报,2006,26(1):291—293.TANLi-xun,LIUChan-lao,LIChun。yah.AnImprovedSobelAlgorithminReal—timeImageProcessing【J】.JournalofProjectiles,Rockets,MissilesandGuidance(S1673-9728),2006,26(1):291—293.【11】AlexanderKharlamov,VictorPodlozhnyuk.ImageDenoising[EB/OL].http://www.nvidia.com/object/cuda_home.html,2007.05一16.[12】VictorPodlozhnyuk.ImageConvolutionwithParallelReductioninCUDA[EB/OL].http://www.nvidia.eom/object/cuda_home.html,2007—01-06.CUDA[EB/OL].http://www.nvidia.com/object/cuda_home.html,2007—11.generalarithmeticexpressions【J】.JournaloftheAssociationforComputing【13】MarkHarris.Optimizing【14】RichardPBrent.TheparallelevaluationofMachinery(S0004-5411),1974,21:201—206.万方数据

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

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

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

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