CN105957028A - 基于OpenCL的GPU加速分片双边滤波方法 - Google Patents
基于OpenCL的GPU加速分片双边滤波方法 Download PDFInfo
- Publication number
- CN105957028A CN105957028A CN201610260467.9A CN201610260467A CN105957028A CN 105957028 A CN105957028 A CN 105957028A CN 201610260467 A CN201610260467 A CN 201610260467A CN 105957028 A CN105957028 A CN 105957028A
- Authority
- CN
- China
- Prior art keywords
- image
- burst
- spatial domain
- cache object
- opencl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000002146 bilateral effect Effects 0.000 title claims abstract description 45
- 230000001133 acceleration Effects 0.000 title abstract description 7
- 238000001914 filtration Methods 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims abstract description 7
- 238000010606 normalization Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 description 6
- 238000000151 deposition Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 241001270131 Agaricus moelleri Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000006317 isomerization reaction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20024—Filtering details
- G06T2207/20028—Bilateral filtering
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明提出了一种基于OpenCL的GPU加速分片双边滤波方法,用于解决现有分片双边滤波方法中存在的滤波效率低和通用性差的技术问题,实现步骤是:1.搭建异构架构;2.主机端读取原始图像到主机内存中,为处理后图像分配主机内存;3.主机端生成空域高斯模板;4.主机端创建缓存对象;5.写内核函数;6.主机端设置内核参数;7.主机端设置内核入列所需参数;8.主机端入列内核函数;9.设备端计算值域高斯模板;10.设备端归一化加权平均计算,将处理后图像数据写入对应缓存对象;11.获取处理后图像数据。本发明滤波效率高,通用性强,可实现对高分辨率图像的实时处理。
Description
技术领域
本发明涉及数字信号处理及异构计算技术领域,涉及一种分片双边滤波方法,具体涉及一种基于OpenCL的GPU加速分片双边滤波方法,可用于高分辨率数字图像的实时空间域滤波。
背景技术
高分辨率数字图像能够提供丰富的场景细节信息,因而成为当今医学影像、遥感遥测以及多媒体通信等应用领域的迫切需求。然而数字图像在其形成和传输的过程中很容易受到噪声的污染,这种带有噪声的数字图像不利于对图像进行分析,如何有效的滤除噪声并最大限度地保留原始图像的信息是数字图像处理领域的重要研究课题之一。
在高斯滤波、中值滤波、均值滤波和双边滤波这些传统的滤波方法,其中高斯滤波、中值滤波和均值滤波都能够有效去除图像中的噪声,但这些方法不能保护图像的边缘信息,双边滤波方法在考虑了距离权值的基础上又增加了亮度权值,双边滤波方法能够有效去除噪声且对图像的边缘信息进行了一定程度的保护。Shimodaira H.在IEEEInternational Conference on Image Processing.2013:868–871上发表了“Patch-basedbilateral 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异构开发平台和其对应的AMDGPU、或NVIDIA异构开发平台和对应的NVIDIA GPU、或AMD异构开发平台和对应的CPU,由于实验主机安装的计算设备是AMD R9 270X GPU,本实施例采用AMD异构开发平台和其对应的AMD R9 270X GPU,在AMD异构开发平台上创建上下文和命令队列,得到异构架构。
步骤2,选取8位的灰度图像作为原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的8位灰度图像数据分配主机内存。
步骤3,主机端利用高斯函数生成空域高斯模板,空域高斯模板与具体的像素值无关,只与像素的相对位置有关,对于所有像素点的计算,空域高斯模板都是固定的,所以在主机端生成空域高斯模板,高斯公式为:
其中,(x0,y0)为图像像素点的坐标,(x,y)为空域高斯模板对应的坐标,为空域高斯模板的方差。
本实施例中设置空域高斯模板大小为7×7,空域高斯模板的方差为10,将得到的高斯模板存储在主机内存中。
步骤4,主机端在上下文中创建多个缓存对象,分别用于设备端存储原始8位灰度图像、处理后8位灰度图像和空域高斯模板,原始8位灰度图像和空域高斯模板对应的缓存对象创建为只读缓存对象,处理后8位灰度图像对应的缓存对象创建为只写缓存对象,通过所述命令队列将原始8位灰度图像和空域高斯模板写入对应的缓存对象。
步骤5,利用OpenCL标准,对分片双边滤波算法进行并行化编程,将并行化后的分片双边滤波算法写成内核函数。
步骤6,在主机端将原始8位灰度图像的宽度和高度、空域高斯模板半径和多个缓存对象设置为内核函数的参数,其中原始8位灰度图像和处理后8位灰度图像对应的缓存对象参数设置在设备的全局内存中,空域高斯模板对应的缓存对象参数设置在设备的常量内存中,原始8位灰度图像的宽度和高度、空域高斯模板半径对应的参数设置在设备的私有内存中。
步骤7,在主机端设定内核函数入列所需的维度数为2,每个维度上的工作项数分别为原始8位灰度图像的宽度和高度上的像素数,每个工作组处理的工作项数设置为16×16。
步骤8,主机端通过命令队列入列内核函数。
步骤9,设备端根据主机端生成的空域高斯模板确定的搜索窗大小为7×7,搜索窗内的基于结构相似度进行计算的亮度权值作为值域高斯模板,其公式为:
其中,I(x,y)为图像像素点坐标所述的(x,y)处的灰度值,(2p+1)×(2p+1)分片邻域大小,(i,j)为片内像素点相对于片中心点(x,y)的坐标偏移。
本实施例中设置分片邻域(2p+1)×(2p+1)的大小为3×3,对搜索窗内的(x,y)的3×3邻域片与中心像素(x0,y0)的3×3邻域片做结构相似度计算,将计算结果作为值域高斯模板。
步骤10,设备端将原始图像对应的缓存对象中的数据、空域高斯模板和值域高斯模板进行归一化加权平均计算,其公式为:
其中J(x0,y0)为分片双边滤波处理后的坐标为(x0,y0)的像素值,w(x0,y0)为搜索窗,K(x0,y0)为归一化因子。
一个像素的计算在一个工作项下进行,多个工作项同时执行实现并行计算,得到处理后的图像数据J(x0,y0),并将该图像数据写入其对应的缓存对象。
步骤11,主机端读取处理后图像对应的缓存对象,得到处理后的图像数据,并将该图像数据写到主机内存。
以下结合附图和具体实施例,对本发明的技术效果作进一步详细描述:
1.实验环境:
异构平台为AMD异构开发平台,其中主机端通用CPU为Intel Xeon E5410 CPU,计算设备GPU为AMD R9 270X GPU,软件环境为Visual Studio 2013和AMD APP SDK v2.9,操作系统为Windows 7。
2.实验内容:
对输入的高分辨率8位灰度噪声图像分别用传统分片双边滤波方法和本发明方法进行滤波操作,分别对不同图像噪声水平和滤波速度进行评定,其结果分别如图2和表1所示。
参照图2,图2(a)为原始噪声图像,其PSNR为20.3643dB,图2(b)为传统分片双边滤波方法去噪后的效果图,其PSNR为27.0669dB,图2(c)为本发明方法去噪后的效果图,其PSNR为27.0669dB。
由图2可以看出,本发明方法与传统分片双边滤波方法去噪性能相同。
表1给出了本发明方法与传统分片双边滤波方法的计算时间,分片大小均为3×3,搜索窗大小为5×5和7×7。
表1不同分片双边滤波方法的计算时间(单位:ms)
由表中数据可以看出,本发明所提出的基于OpenCL的GPU加速分片双边滤波方法能实现对高分辨率图像的实时处理,且相对传统分片双边滤波方法获得了非常显著的加速效果。
Claims (6)
1.一种基于OpenCL的GPU加速分片双边滤波方法,其特征在于包括以下步骤:
(1)、在主机端通过通用CPU,选择异构计算平台和其对应的计算设备,在该异构计算平台上创建上下文,并在该上下文中创建命令队列,得到异构架构;
(2)、输入原始图像,主机端读取该原始图像数据到主机内存中,同时为处理后的图像数据分配主机内存;
(3)、主机端利用高斯函数生成空域高斯模板,并将该模板存储在主机内存中;
(4)、主机端在步骤(1)得到的上下文中创建多个缓存对象,分别用于设备端存储原始图像、处理后图像和空域高斯模板,通过所述命令队列将原始图像和空域高斯模板写入对应的缓存对象;
(5)、利用OpenCL标准,对分片双边滤波算法进行并行化编程,将并行化后的分片双边滤波算法写成内核函数;
(6)、在主机端将原始图像的宽度和高度、空域高斯模板半径和多个缓存对象设置为内核函数的参数;
(7)、在主机端设置内核函数入列所需的维度数、每个维度上的工作项数和每个工作组处理的工作项数;
(8)、主机端根据步骤(7)设置的参数,入列内核函数;
(9)、设备端根据主机端生成的空域高斯模板确定搜索窗大小,搜索窗内的基于结构相似度进行计算的亮度权值作为值域高斯模板;
(10)、设备端将原始图像对应的缓存对象中的数据、空域高斯模板和值域高斯模板进行归一化加权平均计算,得到处理后的图像数据,并将该图像数据写入其对应的缓存对象;
(11)、主机端读取处理后图像对应的缓存对象,得到处理后的图像数据,并将该图像数据写到主机内存。
2.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征在于:步骤(3)中所述的高斯函数,其表示为:
其中,(x0,y0)为图像像素点的坐标,(x,y)为空域高斯模板对应的坐标,为空域高斯模板的方差。
3.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征在于:步骤(4)中所述的多个缓存对象,其中原始图像和空域高斯模板对应的缓存对象均设定为只读缓存对象,处理后图像对应缓存对象设定为只写缓存对象。
4.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征在于:步骤(6)中所述的内核函数的参数,其中原始图像和处理后图像对应的缓存对象参数设置在设备的全局内存中,空域高斯模板对应的缓存对象参数设置在设备的常量内存中,原始图像的宽度和高度、空域高斯模板半径对应的参数设置在设备的私有内存中。
5.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征在于:步骤(9)中所述的基于结构相似度进行计算,其公式为:
其中,I(x,y)为图像像素点坐标所述的(x,y)处的灰度值,(2p+1)×(2p+1)分片邻域大小,(i,j)为片内像素点相对于片中心点(x,y)的坐标偏移。
6.根据权利要求1所述的基于OpenCL的GPU加速分片双边滤波方法,其特征在于:步骤(10)中所述的归一化加权平均计算,其公式为:
其中J(x0,y0)为分片双边滤波处理后的坐标为(x0,y0)的像素值,w(x0,y0)为搜索窗,K(x0,y0)为归一化因子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610260467.9A CN105957028A (zh) | 2016-04-25 | 2016-04-25 | 基于OpenCL的GPU加速分片双边滤波方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610260467.9A CN105957028A (zh) | 2016-04-25 | 2016-04-25 | 基于OpenCL的GPU加速分片双边滤波方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105957028A true CN105957028A (zh) | 2016-09-21 |
Family
ID=56916031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610260467.9A Pending CN105957028A (zh) | 2016-04-25 | 2016-04-25 | 基于OpenCL的GPU加速分片双边滤波方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105957028A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107194864A (zh) * | 2017-04-24 | 2017-09-22 | 中国人民解放军信息工程大学 | 基于异构平台的ct图像三维重建加速方法及其装置 |
CN107610035A (zh) * | 2017-09-11 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种处理图像的方法及系统 |
CN108345503A (zh) * | 2018-01-18 | 2018-07-31 | 杭州电子科技大学 | 基于cpu-gpu的b样条曲面并行刀轨规划方法 |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、系统及装置 |
CN115942128A (zh) * | 2022-12-12 | 2023-04-07 | 大连理工大学 | 一种基于异构平台的isp系统设计与实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778605A (zh) * | 2014-01-16 | 2014-05-07 | 天津大学 | 一种雾天图像增强方法 |
CN104992421A (zh) * | 2015-07-09 | 2015-10-21 | 西安电子科技大学 | 一种基于OpenCL的图像去噪算法的并行优化方法 |
-
2016
- 2016-04-25 CN CN201610260467.9A patent/CN105957028A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778605A (zh) * | 2014-01-16 | 2014-05-07 | 天津大学 | 一种雾天图像增强方法 |
CN104992421A (zh) * | 2015-07-09 | 2015-10-21 | 西安电子科技大学 | 一种基于OpenCL的图像去噪算法的并行优化方法 |
Non-Patent Citations (2)
Title |
---|
HISASHI SHIMODAIRA: "Patch-based bilateral filter: Algorithms and performance", 《IEEE INTERNATIONAL CONFERENCE ON IMAGE PROCESSING》 * |
王秀东: "图像去噪算法及其GPU并行化研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107194864A (zh) * | 2017-04-24 | 2017-09-22 | 中国人民解放军信息工程大学 | 基于异构平台的ct图像三维重建加速方法及其装置 |
CN107610035A (zh) * | 2017-09-11 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种处理图像的方法及系统 |
CN107610035B (zh) * | 2017-09-11 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种处理图像的方法及系统 |
CN108345503A (zh) * | 2018-01-18 | 2018-07-31 | 杭州电子科技大学 | 基于cpu-gpu的b样条曲面并行刀轨规划方法 |
CN108897630A (zh) * | 2018-06-06 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种基于OpenCL的全局内存缓存方法、系统及装置 |
CN115942128A (zh) * | 2022-12-12 | 2023-04-07 | 大连理工大学 | 一种基于异构平台的isp系统设计与实现方法 |
CN115942128B (zh) * | 2022-12-12 | 2024-04-12 | 大连理工大学 | 一种基于异构平台的isp系统设计与实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111080620B (zh) | 一种基于深度学习的道路病害检测方法 | |
CN105957028A (zh) | 基于OpenCL的GPU加速分片双边滤波方法 | |
US9053389B2 (en) | Hough transform for circles | |
DE112016005776T5 (de) | Systeme und Verfahren zum Bereitstellen eines Bild-Klassifikators | |
CN106991665B (zh) | 基于cuda图像融合并行计算的方法 | |
CN110956126B (zh) | 一种联合超分辨率重建的小目标检测方法 | |
DE102019130889A1 (de) | Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms | |
CN110781885A (zh) | 基于图像处理的文本检测方法、装置、介质及电子设备 | |
CN112149795A (zh) | 用于自监督事件学习与异常检测的神经架构 | |
CN109859178B (zh) | 一种基于fpga的红外遥感图像实时目标检测方法 | |
US20060274973A1 (en) | Method and system for parallel processing of Hough transform computations | |
US20200175654A1 (en) | Boundary-aware object removal and content fill | |
CN104732490A (zh) | 基于cuda的快速双边滤波方法 | |
CN110751620B (zh) | 估算体积和重量的方法、电子设备及计算机可读存储介质 | |
Fan et al. | Faster-than-real-time linear lane detection implementation using soc dsp tms320c6678 | |
CN106056553A (zh) | 基于紧框架特征字典的图像修复方法 | |
CN104952043B (zh) | 图像滤波方法及ct 系统 | |
CN107704797B (zh) | 基于安防视频中行人和车辆的实时检测方法和系统及设备 | |
CN105791635B (zh) | 基于gpu的视频增强去噪方法及装置 | |
CN107301646A (zh) | 基于单目视觉的无人船智能避障方法和装置 | |
CN106023147A (zh) | 一种基于gpu的线阵遥感影像dsm快速提取方法 | |
CN110246201B (zh) | 一种基于线程级并行的铅笔画生成方法 | |
CN104899840B (zh) | 一种基于cuda的引导滤波加速优化方法 | |
CN104850232A (zh) | 一种摄像头条件下获取远程手势轨迹的方法 | |
CN110427944A (zh) | 车牌检测数据的获取方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160921 |
|
WD01 | Invention patent application deemed withdrawn after publication |