基于OpenCL的GPU加速分片双边滤波方法技术

技术编号:13743923 阅读:103 留言:0更新日期:2016-09-23 06:39
本发明专利技术提出了一种基于OpenCL的GPU加速分片双边滤波方法,用于解决现有分片双边滤波方法中存在的滤波效率低和通用性差的技术问题,实现步骤是:1.搭建异构架构;2.主机端读取原始图像到主机内存中,为处理后图像分配主机内存;3.主机端生成空域高斯模板;4.主机端创建缓存对象;5.写内核函数;6.主机端设置内核参数;7.主机端设置内核入列所需参数;8.主机端入列内核函数;9.设备端计算值域高斯模板;10.设备端归一化加权平均计算,将处理后图像数据写入对应缓存对象;11.获取处理后图像数据。本发明专利技术滤波效率高,通用性强,可实现对高分辨率图像的实时处理。

【技术实现步骤摘要】

本专利技术涉及数字信号处理及异构计算
,涉及一种分片双边滤波方法,具体涉及一种基于OpenCL的GPU加速分片双边滤波方法,可用于高分辨率数字图像的实时空间域滤波。
技术介绍
高分辨率数字图像能够提供丰富的场景细节信息,因而成为当今医学影像、遥感遥测以及多媒体通信等应用领域的迫切需求。然而数字图像在其形成和传输的过程中很容易受到噪声的污染,这种带有噪声的数字图像不利于对图像进行分析,如何有效的滤除噪声并最大限度地保留原始图像的信息是数字图像处理领域的重要研究课题之一。在高斯滤波、中值滤波、均值滤波和双边滤波这些传统的滤波方法,其中高斯滤波、中值滤波和均值滤波都能够有效去除图像中的噪声,但这些方法不能保护图像的边缘信息,双边滤波方法在考虑了距离权值的基础上又增加了亮度权值,双边滤波方法能够有效去除噪声且对图像的边缘信息进行了一定程度的保护。Shimodaira H.在IEEE International Conference on Image Processing.2013:868–871上发表了“Patch-based bilateral filter:Algorithms and performance”的论文,文中提出了一种分片双边滤波算法,与传统双边滤波方法相比,在计算值域高斯模板时是通过度量待滤波像素邻域块与搜索窗内其它像素邻域块的结构相似度获取亮度权值,这种方法能够有效去除噪声并很好的保护了图像的边缘信息。但是,该算法计算复杂度较高,无法应用在高分辨率图像的实时处理任务中。此外,现有分片双边滤波方法只能运行在单一架构CPU上,不能在异构架构上运行,通用性差。OpenCL(Open Computing Language)是第一个面向异构系统通用目的并行编程的标准,也是一个统一的编程环境,适用于多核心处理器(CPU)、图形处理器(GPU)和现场可编程逻辑器件(FPGA)等并行处理器。与传统单一架构相比,异构架构能够更好的实现高性能并行计算,在大数据挖掘,机器学习和科学计算等领域有广阔的前景。图像处理中包含大量可以并行执行的浮点矩阵运算,可以将GPU的高度并行浮点计算能力与CPU的复杂逻辑处理与任务调度能力相结合来对图像处理进行加速。OpenCL良好的跨平台性也可以使程序运行在不同的平台上,增强了代码的可移植性与通用性。
技术实现思路
本专利技术的目的在于克服上述现有技术存在的缺陷,提供了一种基于OpenCL的GPU加速分片双边滤波方法,通过OpenCL标准下针对GPU多PE单元的计算作业划分和调度,以及存储分配优化,完成算法在异构架构下的并行加速,用于解决现有分片双边滤波方法中存在的滤波效率低和通用性差的技术问题。为实现上述目的,本专利技术采取的技术方案包括如下步骤:步骤1,在主机端通过通用CPU,选择异构计算平台和其对应的计算设备,在该异构计算平台上创建上下文,并在该上下文中创建命令队列,得到异构架构。步骤2,输入原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的图像数据分配主机内存。步骤3,主机端利用高斯函数生成空域高斯模板,并将该模板存储在主机内存中。步骤4,主机端在步骤1得到的上下文中创建多个缓存对象,分别用于设备端存储原始图像、处理后图像和空域高斯模板,通过所述命令队列将原始图像和空域高斯模板写入对应的缓存对象。步骤5,利用OpenCL标准,对分片双边滤波算法进行并行化编程,将并行化后的分片双边滤波算法写成内核函数。步骤6,在主机端将原始图像的宽度和高度、空域高斯模板半径和多个缓存对象设置为内核函数的参数。步骤7,在主机端设置内核函数入列所需的维度数、每个维度上的工作项数和每个工作组处理的工作项数。步骤8,主机端根据步骤7设置的参数,入列内核函数。步骤9,设备端根据主机端生成的空域高斯模板确定搜索窗大小,搜索窗内的基于结构相似度进行计算的亮度权值作为值域高斯模板。步骤10,设备端将原始图像对应的缓存对象中的数据、空域高斯模板和值域高斯模板进行归一化加权平均计算,得到处理后的图像数据,并将该图像数据写入其对应的缓存对象。步骤11,主机端读取处理后图像对应的缓存对象,得到处理后的图像数据,并将该图像数据写到主机内存。本专利技术与现有技术相比,具有以下优点:1、本专利技术由于对分片双边滤波方法进行了GPU加速,与现有技术中对分片双边滤波方法在单一架构CPU下计算相比,GPU对分片双边滤波方法进行了并行计算,且GPU对浮点的计算能力要远远高于CPU对浮点的计算能力,在保持分片双边滤波方法去噪能力不变的情况下,大幅提高了分片双边滤波方法的计算速度。2、本专利技术由于采用了基于OpenCL的并行编程标准对分片双边滤波方法进行并行化编程,与现有技术相比,本专利技术可以实现分片双边滤波方法在不同异构平台下都可以运行,增强了代码的可移植性与通用性。附图说明图1是本专利技术的流程框图;图2是本专利技术及现有技术的滤波效果图。具体实施方式以下结合附图和具体实施例,对本专利技术作进一步描述。参照图1,本专利技术包括以下步骤:步骤1,计算平台和其对应的计算设备,可以采用AMD异构开发平台和其对应的AMD GPU、或NVIDIA异构开发平台和对应的NVIDIA GPU、或AMD异构开发平台和对应的CPU,由于实验主机安装的计算设备是AMD R9 270X GPU,本实施例采用AMD异构开发平台和其对应的AMD R9 270X GPU,在AMD异构开发平台上创建上下文和命令队列,得到异构架构。步骤2,选取8位的灰度图像作为原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的8位灰度图像数据分配主机内存。步骤3,主机端利用高斯函数生成空域高斯模板,空域高斯模板与具体的像素值无关,只与像素的相对位置有关,对于所有像素点的计算,空域高斯模板都是固定的,所以在主机端生成空域高斯模板,高斯公式为: C g ( x , y ) = e { - ( x - x 0 ) 2 + ( y - y 0 ) 2 ) 本文档来自技高网
...

【技术保护点】
一种基于OpenCL的GPU加速分片双边滤波方法,其特征在于包括以下步骤:(1)、在主机端通过通用CPU,选择异构计算平台和其对应的计算设备,在该异构计算平台上创建上下文,并在该上下文中创建命令队列,得到异构架构;(2)、输入原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的图像数据分配主机内存;(3)、主机端利用高斯函数生成空域高斯模板,并将该模板存储在主机内存中;(4)、主机端在步骤(1)得到的上下文中创建多个缓存对象,分别用于设备端存储原始图像、处理后图像和空域高斯模板,通过所述命令队列将原始图像和空域高斯模板写入对应的缓存对象;(5)、利用OpenCL标准,对分片双边滤波算法进行并行化编程,将并行化后的分片双边滤波算法写成内核函数;(6)、在主机端将原始图像的宽度和高度、空域高斯模板半径和多个缓存对象设置为内核函数的参数;(7)、在主机端设置内核函数入列所需的维度数、每个维度上的工作项数和每个工作组处理的工作项数;(8)、主机端根据步骤(7)设置的参数,入列内核函数;(9)、设备端根据主机端生成的空域高斯模板确定搜索窗大小,搜索窗内的基于结构相似度进行计算的亮度权值作为值域高斯模板;(10)、设备端将原始图像对应的缓存对象中的数据、空域高斯模板和值域高斯模板进行归一化加权平均计算,得到处理后的图像数据,并将该图像数据写入其对应的缓存对象;(11)、主机端读取处理后图像对应的缓存对象,得到处理后的图像数据,并将该图像数据写到主机内存。...

【技术特征摘要】
1.一种基于OpenCL的GPU加速分片双边滤波方法,其特征在于包括以下步骤:(1)、在主机端通过通用CPU,选择异构计算平台和其对应的计算设备,在该异构计算平台上创建上下文,并在该上下文中创建命令队列,得到异构架构;(2)、输入原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的图像数据分配主机内存;(3)、主机端利用高斯函数生成空域高斯模板,并将该模板存储在主机内存中;(4)、主机端在步骤(1)得到的上下文中创建多个缓存对象,分别用于设备端存储原始图像、处理后图像和空域高斯模板,通过所述命令队列将原始图像和空域高斯模板写入对应的缓存对象;(5)、利用OpenCL标准,对分片双边滤波算法进行并行化编程,将并行化后的分片双边滤波算法写成内核函数;(6)、在主机端将原始图像的宽度和高度、空域高斯模板半径和多个缓存对象设置为内核函数的参数;(7)、在主机端设置内核函数入列所需的维度数、每个维度上的工作项数和每个工作组处理的工作项数;(8)、主机端根据步骤(7)设置的参数,入列内核函数;(9)、设备端根据主机端生成的空域高斯模板确定搜索窗大小,搜索窗内的基于结构相似度进行计算的亮度权值作为值域高斯模板;(10)、设备端将原始图像对应的缓存对象中的数据、空域高斯模板和值域高斯模板进行归一化加权平均计算,得到处理后的图像数据,并将该图像数据写入其对应的缓存对象;(11)、主机端读取处理后图像对应的缓存对象,得到处理后的图像数据,并将该图像数据写到主机内存。2.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征...

【专利技术属性】
技术研发人员:赖睿李吉昌杨银堂秦翰林周慧鑫王炳健
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

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

1