一种基于OpenCL的图像去噪算法的并行优化方法

文档序号:9275151阅读:453来源:国知局
一种基于OpenCL的图像去噪算法的并行优化方法
【技术领域】
[0001] 本发明涉及并行计算领域,以及图像处理算法技术领域,具体是一种基于OpenCL 的图像去噪算法的并行优化方法。
【背景技术】
[0002] 图像作为人类感受和传递信息的重要载体,在人们的生活中扮演者非常重要的角 色,尤其随着计算机技术的不断发展,计算机视觉和图像处理技术越来越深入到社会生活 的各个方面,例如医疗、智能监控等。但是在图像和视频的产生、传输和处理的各个阶段, 都不可避免的引入噪声,例如敏感元器件产生的高斯噪声,光电转换产生的泊松噪声,以及 传输过程的各种噪声。图像中的噪声严重影响了图像的视觉效果,并对后续的计算机视觉 处理带来很大的干扰。另外对于夜间图像增强后的结果图也会出现大量的伪噪声,这些噪 声也不能被忽略,因此去除图像噪声的实际意义是非常重要的。然而由于图像去噪算法计 算量大,运行时间很长,不能满足实际应用中的实时处理要求,很难将算法应用到实际需求 中,因此对算法层面进行优化加速和将算法并行实现来有效降低处理时间是非常有必要 的。
[0003] 由于图像数据的特点,并行计算也逐渐应用到图像处理领域中。为了加快计算速 度,并行技术从多核处理器逐渐发展到GPU,GPU不再局限于对3D图形图形处理,在浮点运 算和并行计算等方面都有优于CPU的性能。在CPU/GPU异构系统中,多核CPU可以提供通 用的计算能力,GPU在数字图像处理并行化计算方面有明显的优势,并被广泛应用于图像处 理领域中。
[0004] 申请号为CN201410086580的中国发明专利公开了一种图像非局部均值去噪方 法,包括:获取待去噪的图像,抽取预设大小的图像块,读取图像块的RGB三个颜色分量的 空域数据组成矢量矩阵,并经过主成分分析和降维,生成降维后的残差矢量矩阵;对图像 块,根据预设的S级搜索区域,在搜索区域内根据预设的每级搜索区域的搜索步长,以图像 块的中心像素点为中心从上到下,从左到右移动预设大小的搜索窗口,得到搜索块;其中, 各级搜索区域的搜索步长依次递增;计算搜索块对应的残差矢量矩阵与像素点对应的矢量 的欧几里得距离,再根据欧几里得距离计算图像块的权重值,最后根据权重值得到图像块 中心像素点的滤波值,完成图像的去噪处理。本发明还提供对应的系统,时间复杂度较低, 去噪速度快。
[0005] 申请号为CN201210092785的中国发明专利公开了一种基于小波变换的DR图像去 噪方法,包括以下步骤:步骤一:读取待处理的图像数据;步骤二:确定小波和小波分解的 层数,计算含噪声信号的小波分解系数;步骤三:对每层系数选择一个阈值,采用改进的软 阈值对图像进行处理;步骤四:进行小波重构得到第一层Al、H1、VI、D1 ;步骤五:对第一层 H1、V1、D1进行经典硬阈值滤波;步骤六:使用滤波后的系数再次重构,得到最终的图像。本 发明提出的改进方法更加灵活,通过平滑函数与硬阈值滤波可以克服硬阈值函数和软阈值 函数的缺点,不但能够去除噪声,而且能够很好地保留图像的边缘信息,改善了图像的信噪 比,是一种较好的处理方案。

【发明内容】

[0006] 本发明的目的在于提供一种基于OpenCL的图像去噪算法的并行优化方法,在GPU 上使用OpenCL编程模型对改进后的双域滤波算法进行并行优化,在图像去噪的同时达到 实时处理效果。
[0007] 为实现上述目的,本发明提供如下技术方案:
[0008] -种基于OpenCL的图像去噪算法的并行优化方法,是指在GPU上使用OpenCL编 程模型对图像去噪算法进行并行优化,以达到实时处理效果,所述图像去噪算法为改进的 双域滤波算法,所述OpenCL编程模型采用CPU/GPU异构模式;所述方法包括以下步骤:
[0009] 步骤1、选择OpenCL平台选择设备为GPU,并创建一个上下文context ;
[0010] 步骤2、在CPU上将图像数据读取到内存中,然后将图像数据的像素值从内存拷贝 到GPU上的显存中;
[0011] 步骤3、在GPU上创建命令队列,实现函数操作与设备间的通信,之后将设备上要 完成的操作在命令队列中排队;
[0012] 步骤4、创建和构建程序对象,加载ddid. dl文件到OpenCL C内核源代码,所述 ddid. dl内核源代码中包括获取基础层的联合双边滤波和联合WLS以及细节层去噪的小波 收缩三个kernel函数;
[0013] 步骤5、创建内核和内存对象;所述内核对象包括联合双边滤波内核kernel_ xxstep、联合WLS内核kernel_wls和小波收缩内核kernel_fft,所述内存对象是指内核对 象函数中包含的参数;
[0014] 步骤6、并行执行内核函数kernel_xxstep、kernel_wls和kernel_fft对噪声图 像进行一次的联合WLS和小波收缩以及两次不同参数的联合双域滤波和小波收缩达到去 噪的效果。
[0015] 步骤7、将细节层去噪后的结果和基础层数据相加得到复原的图像,将图像从GPU 的显存中拷贝到CPU的内存中,CPU将复原后的图像进行保存。
[0016] 作为本发明进一步的方案:所述图像去噪算法全部在GPU上运行,输入数据和输 出数据在CPU和GPU之间进行拷贝。
[0017] 作为本发明进一步的方案:在GPU上最多有1024个工作项,工作项之间执行相互 独立,每个工作组包含若干个工作项,每个工作项独立处理所在工作组对应的核函数,工作 项循环完成核函数的操作。
[0018] 作为本发明进一步的方案:所述步骤4中,图像获取基础层使用的联合双边滤波 和联合WLS算法操作是分布在若干个工作组上的,然后每个工作组中的工作项对算法操作 循环执行,步骤如下:
[0019] 1)使用联合双边滤波器获取图像像素的高对比度值I,使用导向图g对噪声图像 y滤波,对噪声图像y进行联合双边滤波:
[0020]
[0021] 2)由于在对细节层进行频域收缩时需要使用导向图的频谱作为导向,因此也要对 导向图g进行双边滤波:
[0022]
[0023] 式中:%为双边滤波器的邻域,p为邻域的中心点,r为邻域的半径,kp, q为双边滤 波的内核.由以下公式i+笪犋至丨丨,
[0024]
[0025] 参数〇 3和r r分别用来调整空间域和值域方差。
[0026] 所述步骤4中,经过多次测试发现,联合双边滤波器并不能很好地平滑图像,对边 缘的保持也不是十分理想,本发明针对这一问题提出了联合WLS方法,将第一步双边滤波 的输出作为WLS算法的导向图:
[0027]
[0028]
[0029] 式中:z表示原始图像的双边滤波结果,指数a ( -般在1. 2到2. 0之间)表示图 像g的梯度的敏感程度,e是一个非常小的常数,是为了防止在平坦区域梯度为零时,被零 整除。
[0030] 作为本发明进一步的方案:所述步骤4中,细节层去噪处的小波收缩算法操作 也是分布在若干个工作组上的,然后每个工作组中的工作项对算法操作循环执行,步骤如 下:
[0031] 选择双边滤波器的核函数kp,q作为窗口函数,分别对导向图和噪声图的细节层进 行变换:
[0032]
[0033]
[0034] 变换的结果Gp,f和Sp, f是定义在窗口 Fp中频率f的函数,窗口 Fp的大小和\的大 小相同;
[0035] 将细节信号的频谱反变换回空间域: uiN丄a 4/0jM
[0036] -
^ 1
[0037] 对频谱系数距离取倒数,定义收缩因子如下:
[0038]
[0039] 式中收缩因子kp,f也是用导向谱Gp,f计算,类似双边内核kp, q,Yf用来调整值域方 差。
[0040] 作为本发明进一步的方案:所述步骤5中,将细节层去噪后的结果和基础层数据 相加得到复原的图像,包括以下步骤:
[0041]
[0042] 式中:f是基础层数据,$是细节层去噪后的数据。
[0043] 与现有技术相比,本发明的有益效果是:
[0044] (1)本发明将图像去噪算法全部在GPU上运行,并在GPU上开辟若干个个工作项, 工作项之间执行相互独立,每个工作组包含若干个工作项,每个工作项独立处理所在工作 组对应的核函数,工作项循环完成核函数的操作,并行处理提高了算法的执行效率,极大地 提高了图像去噪算法的加速比,满足了图像去噪算法的实时性。
[0045] (2)本发明针对图像去噪的双域滤波算法中,使用联合双边滤波获取基础层时会 出现边缘保持不理想的情形,使用联合WLS方法获取基础层,更好的保持了图像去噪的视 觉效果。
[0046] (3)本发明在进行OpenCL编程时,充分使用全局存储器和共享存储器,从而减少 CPU和GPU之间的数据传递,减少算法耗时。
【附图说明】
[0047] 图1是本发明算法的流程图;
[0048] 图2是本发明算法在CPU和GPU上的执行流程图;
[0049] 图3是并行规约思想示意图。
【具体实施方式】
[0050] 下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的 实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都 属于本发明保护的范围。
[0051] 请参阅图1~3,本发明实施例中,一种基于OpenCL的图像去噪算法的并行优化方 法,在GPU上使用3个kernel,kernel_xxstep主要负责使用联合双边滤波器获取图像的基 础层,kern
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1