当前位置: 首页 > 专利查询>四川大学专利>正文

基于并行运算的非下采样轮廓波变换优化方法技术

技术编号:19592993 阅读:19 留言:0更新日期:2018-11-28 04:45
本发明专利技术公开了一种基于并行运算的非下采样轮廓波变换优化方法,包括以下步骤(1)根据GPU和CPU配置情况,计算执行NSCT算法中多尺度分解与不同级别方向分解所需要启用的GPU数目和开启的CPU线程数,以及分配给每个GPU的实际计算量;(2)对NSCT分解与重构过程进行并行性分析,发现可以将图像数据移动至GPU,计算卷积,计算结果回存等过程进行并行处理;(3)使用OpenMP和CUDA并行执行NSCT分解和重构过程。本发明专利技术方法可以通过并行执行数据移动、像素级并行计算卷积等过程,显著提高NSCT运算速度,降低运行时间,提高NSCT算法的实用性。

【技术实现步骤摘要】
基于并行运算的非下采样轮廓波变换优化方法
本专利技术涉及一种图像的多尺度几何分析方法尤其涉及一种基于并行运算的非下采样轮廓波变换优化的方法,属于图像图像处理

技术介绍
随着数字图像处理技术,多尺度几何分析等方法的广泛研究,多种基于多尺度几何分析的变换方法相继发展起来。其中最具代表性的变换为Contourlet变换(轮廓波变换),该变换的优势是其基函数分布在多尺度、多方向上,用少量的变换系数就可以有效地捕捉图像的边缘轮廓,弥补了小波变换无法高效地表示图像边缘信息的缺陷。因此,Contourlet变换在图像去噪、图像融合、图像压缩、图像特征提取等方面都有了进一步地应用。但是由于Contourlet变换的过程中进行下采样,导致图像的连续性被破坏。在重构的过程中会出现Gibbs效应,并且Contourlet变换中的拉普拉斯金字塔滤波器分解过程中采用的下采样步骤也会导致图像低频频谱泄漏,在方向滤波器分解过程中的下采样步骤会导致方向频谱混叠,使得方向子带中夹杂其他噪声频谱。同时,下采样还会导致无法精确分析同尺度下方向子带之间的关系。因此Contourlet变换不具有平移不变性。为此,研究学者们提出了非下采样Contourlet变换,即NSCT(TheNonsubsampledContourletTransform)。通过引入非下采样塔式滤波器组(NonsubsampledPyramidFilterBanks,NSPFB)和非下采样方向滤波器组(NonsubsampledDirectionalFilterBanks,NSDFB)替代Contourlet变换中原有的LP和DFB环节,取消对原始图像的下采样操作,在保证原Contourlet特性的前提下获得了良好的平移不变特性。因此,NSCT在图像的多尺度几何分析领域中的优异表现使其倍受研究者关注,但在实际应用中,特别是针对高分辨率图像,NSCT需要进行多次的迭代滤波及二维卷积,导致NSCT算法的时间开销过大,难以高效地使用在实际应用中。如何提高NSCT运行效率,减少运行时间,是现今急需解决的问题。
技术实现思路
本专利技术的目的在于为解决上述问题而提供一种对NSCT的实现进行并行加速,提高计算效率减少运行时间的基于并行运算的非下采样轮廓波变换优化的方法。本专利技术所述基于并行运算的非下采样轮廓波变换优化的方法,包括如下步骤:(1)将NSCT算法的matlab源码半自动翻译转换为C++代码;(2)对步骤(1)中使用工具翻译转换得到的C++代码进行人工修正;(3)根据GPU和CPU配置情况,计算执行NSCT算法所需要启用的GPU数目和开启的CPU线程数,以及分配给每个GPU的实际计算量;(4)对NSCT分解与重构过程中的并行性分析;(5)使用OpenMP和CUDA并行执行NSCT分解过程;(6)使用OpenMP和CUDA并行执行NSCT重构过程;(7)程序调试:按照以上(1)~(6)步编写NSCT的并行程序,对不同分辨率的图像,在不同的实验硬件环境下进行对比实验。具体地,所述步骤(1)中,通过matlab2cpp工具,使用Armadillo库和OpenBLAS库,进行工具翻译,将matlab源码半自动转换为C++代码。所述步骤(2)中,对半自动转换得到的C++代码进行人工修正,包括对计算精度的调整等。所述步骤(3)中,对于多尺度分解和不同级别方向的分解所需要启用的GPU数目和开启的CPU线程数不尽相同,根据分解等级分别计算。根据GPU的计算能力不同,计算分配给每个GPU的任务量。所述步骤(4)中,对NSCT分解与重构过程中的并行性分析包括对分解过程的并行性分析和重构过程的并行性分析。对于分解过程的分析,包括:(i)多尺度分解:首先将图像数据移动至多个GPU时,由于数据要分别与非下采样低通塔式滤波器和非下采样带通塔式滤波器进行卷积,要移动至不同的GPU的数据序列之间没有相关性,这一过程可以使用OpenMP并行实现;其次,图像数据与滤波器进行卷积时,由于数据要分别与低通塔式滤波器和带通塔式滤波器进行卷积,且这两个卷积互不影响,这一过程可以分别在不同的GPU中完成,可以通过OpenMP进行CPU并行控制多个GPU并行完成计算;由于在图像中不同位置上的待分解数据与滤波器卷积后得到的结果是不同的,即图像中不同的像素点在做卷积过程中没有直接关联,这一过程可以使用CUDA并行实现,对每一个像素点的卷积过程都在GPU中开启一个线程,进行并行计算。最后,将计算结果回存时,由于不同的GPU得到的计算结果互不影响,将计算结果返回至CPU这一过程可以使用OpenMP并行实现。(ii)多方向分解:首先将图像数据移动至多个GPU时,由于数据要分别与非下采样方向滤波器组进行卷积,要移动至不同的GPU的数据序列之间没有相关性,这一过程可以使用OpenMP并行实现;其次,图像数据与滤波器进行卷积时,由于数据要分别与非下采样方向滤波器组进行卷积,且与不同的方向滤波器进行的卷积互不影响,这一过程可以分别在不同的GPU中完成,可以通过OpenMP进行CPU并行控制多个GPU并行完成计算;由于在图像中不同位置上的待分解数据与滤波器卷积后得到的结果是不同的,即图像中不同的像素点在做卷积过程中没有直接关联,这一过程可以使用CUDA并行实现,对每一个像素点的卷积过程都在GPU中开启一个线程,进行并行计算;最后,将计算结果回存时,由于不同的GPU得到的计算结果互不影响,将计算结果返回至CPU这一过程可以使用OpenMP并行实现。对于重构过程的并行性分析,由于重构过程和分解过程是相互逆过程,对于并行性的分析是相同的。所述步骤(5)中,使用OpenMP和CUDA并行执行NSCT分解过程包括:(i)使用OpenMP并行:多尺度分解时和1级或2级多方向分解时,使用#pragmaompparallelsections编译制导指令将分解时所发生的数据移动至显存、计算结果回存的过程分别分配到CPU并行区域的两组线程上;3级及以上多方向分解时,使用#pragmaompparallelforschedule(static,1)编译制导指令,使用静态调度的线程调度算法,将for循环的循环次数,即所开启的GPU数量(所开启的GPU数量不大于CPU的核数),平均分配到不同的CPU核上同时执行;(ii)使用CUDA并行:按照图像的像素行数与当前GPU的maxThreadsPerBlock(每线程块最大线程数)参数大小关系,决定是否将图像横向分块,将每个的图块或者原始图像的每一列都传入至GPU的一个线程块中,并且这一列中的每个像素点都传入该线程块中的不同线程中进行卷积计算,对于不同的图块依次串行进行上述的并行卷积计算。所述步骤(6)中,使用OpenMP和CUDA并行执行NSCT重构过程时,由于重构过程和分解过程是相互逆过程,重构并行过程原理与分解过程相同。所述步骤(7)中,对6张不同分辨率的图像,在不同的实验硬件环境下进行对比实验,分别比较传统NSCT算法和并行加速NSCT算法所需要的时间,针对不同的图像分辨率和使用的GPU的数量,并行加速最高可以提速6000%~31700%,效率得到明显提高。与现有技术相比,本专利技术的有益效果是:1.本专利技术本文档来自技高网
...

【技术保护点】
1.基于并行运算的非下采样轮廓波变换优化方法,其特征在于:包括以下步骤:(1)将NSCT算法的matlab源码通过matlab2cpp工具,使用Armadillo库和OpenBLAS库,工具翻译转换为C++代码;(2)对步骤(1)中使用工具翻译转换得到的C++代码进行人工修正,包括计算精度的修正等;(3)根据GPU和CPU配置情况,计算执行NSCT算法中多尺度分解与不同级别方向分解所需要启用的GPU数目和开启的CPU线程数,以及分配给每个GPU的实际计算量;(4)对NSCT分解与重构过程进行并行性分析;(5)使用OpenMP和CUDA并行执行NSCT分解过程;(6)使用OpenMP和CUDA并行执行NSCT重构过程。

【技术特征摘要】
1.基于并行运算的非下采样轮廓波变换优化方法,其特征在于:包括以下步骤:(1)将NSCT算法的matlab源码通过matlab2cpp工具,使用Armadillo库和OpenBLAS库,工具翻译转换为C++代码;(2)对步骤(1)中使用工具翻译转换得到的C++代码进行人工修正,包括计算精度的修正等;(3)根据GPU和CPU配置情况,计算执行NSCT算法中多尺度分解与不同级别方向分解所需要启用的GPU数目和开启的CPU线程数,以及分配给每个GPU的实际计算量;(4)对NSCT分解与重构过程进行并行性分析;(5)使用OpenMP和CUDA并行执行NSCT分解过程;(6)使用OpenMP和CUDA并行执行NSCT重构过程。2.根据权利要求1所述的基于并行运算的非下采样轮廓波变换优化方法,其特征在于:所述步骤(3)中:(i)根据已有的GPU计算能力大小,对其进行排序;(ii)若执行多尺度分解,则选取计算能力最强的两个GPU分别计算与低通塔式滤波器H0(z)和带通塔式滤波器H1(z)的卷积;(iii)若执行1级和2级方向分解,选取计算能力最强的两个GPU分别计算与第1级的方向滤波器组的U0(z)和U1(z)的卷积;(iv)若执行3级及更高级方向分解:首先确定启用GPU数量:按照计算能力排序的GPU队列;假设启用GPU数量为1,只开启计算能力最强的GPU,即队列中0号GPU,依次用1号,2号,3号……GPU的计算能力与总任务数减1得到的定值进行乘积,结果和0号GPU计算能力值比较;若小于0号GPU计算能力值,则不开启该GPU;若大于0号GPU计算能力值,则开启该GPU;接着将已开启的GPU数量与CPU核数比较,如果已开启GPU数量大于CPU核数,则只开启同CPU核数相等数量的GPU;分配给已开启GPU任务数:将已开启的GPU的队列末尾的GPU的计算能力设为1,按比例设置各个GPU的计算能力数值,若出现小数的数值则进行上取整;此时的GPU队列中各个GPU计算能力数值为整数,且最末的G...

【专利技术属性】
技术研发人员:滕奇志张耀王润涵何小海卿粼波熊淑华
申请(专利权)人:四川大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1