时间:2024-05-04
邱霁岩 凌翔 关非凡 李少杰
摘要:针对现有的离散小波变换耗时久的问题,本文利用CUDA并行计算技术,提出了一种基于GPU的离散小波变换算法实验结果表明在一张2048x2048分辨率的图像中达到了最大106.34的加速比,而,且保持了良好的效果。
[关键词]小波分析CUDAGPU图像处理
1离散小波变换简介
小波变换的原理:小波变换是指将傅里叶变换中的基进行变换,将三角函数基变换为小波基,三角函数基是无限长,小波基是有限长且衰减的。
小波变换公式如下:
其中a是尺度和τ是平移量。尺度a控制小波函数的伸缩,平移量τ控制小波函数的平移。尺度就对应于频率(反比),平移量τ对应于时间
本文选取离散小波变换。离散小波变换(DiscreteWaveletTransform)是离散化基本的小波的尺度和平移,可以用在数值分析、时频分析和图像处理中,效果显著。尤其是在图像处理领域,有着突出的表现。
本文选用的小波基是Haar小波,Haar小波为:
对于二维的图像,Haar小波变换需要先对每一°行做变换,再对每一列做变换。相当于对于每四个像素执行
2CUDA并行计算平台简介
CUDA(ComputeUnifiedDeviceArchitecture)是NVIDIA公司推出的基于通用并行计算架构的运算平台,基于该架构可以运用GPU解决复杂的计算问题。CUDA是一种附加在操作系统和C语言或C++等类程序之间的一层底层库。
GPU中的典型CUDA架构分为三层:线程、线程束和线程块。线程是GPU执行的最小单元,可以执行并行任务。线程束是32个线程的集合,可用作单指令多数据操作。线程块是多个线程的集合。只有同一块中的线程才能直接通信,例如访问同一共享内存或快速同步。网格由几个块和全局内存,常量内存和纹理内存组成,可以由其中的每个块和线程访问。
3并行小波变换算法实现
首先为每一个线程分配一个二维的id用于并行的读取数据。之后根据id值计算每个线程需要计算的区域。一共分为四个区域HH、HL、LH、LL。之后从纹理内存读取相邻的四个数据区域,根据分配到的不同区域进行不同的计算。完成计算之后,根据是线程的id写入计算结果。
4实验结果分析
本文通过对比串行的程序分析并行算法的性能。使用加速比S=T/Tp来衡量并行化性能。
通过将小波变换算法并行化后,该并行算法达到了平均65.83604的加速比。通过图像分析可知,结合CUDA技术分析可知,随着输测试图片尺寸的增加该算法并行潜能逐步提升,在测试图片尺寸为2048时,平均加速比也达到了最大值。如图1所示。
当测试图片尺寸为128时,并行后的小波变化算法平均加速比可达到15.84726。在测试图像为该尺寸的情况下,小波变换深度为3时加速比在三项测试中达到了最大值——19.04387,小波变换深度为1时加速比在三项测试中达到了最小值——11.59411。当测试图片尺寸为256时,并行后的小波变化算法平均加速比可达到42.70266。在测试图像为该尺寸的情况下,小波变换深度为1时加速比在三项测试中达到了最大值——52.49030,小波变换深度为2时加速比在三项测试中达到了最小值——34.38564。当测试图片尺寸为512时,并行后的小波变化算法平均加速比可达到73.93396。在测试图像为该尺寸的情况下,小波变换深度为3时加速比在三项测试中达到了最大值——83.92226,小波变换深度为1时加速比在三项测试中达到了最小值——60.48533。當测试图片尺寸为1024时,并行后的小波变化算法平均加速比可达到97.98950。在测试图像为该尺寸的情况下,小波变换深度为2时加速比在三项测试中达到了最大值——100.52948,小波变换深度为1时加速比在三项测试中达到了最小值——94.59800。当测试图片尺寸为2048时,并行后的小波变化算法平均加速比可达到98.70682。在测试图像为该尺寸的情况下,小波变换深度为3时加速比在三项测试中达到了最大值——103.66938,小波变换深度为1时加速比在三项测试中达到了最小值——86.10547。
5结束语
本文介绍了一种将小波域图像处理移植到CUDA技术的方法,在GPU并行平台,上实现了对离散小波变换的并行化加速,克服了小波变换耗时的缺点,这对将来小波图像处理具有非常重要的意义。
参考文献
[1]陈思斯。多贝西小波密度泛函的瓦尼尔函数并行计算研究[D].湘潭大学,2018.
[2]丁志恒。不同标度多贝西小波密度泛函并行计算与片段法应用分析[D].湘潭大学,2018.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!