CN104732490A - 基于cuda的快速双边滤波方法 - Google Patents

基于cuda的快速双边滤波方法 Download PDF

Info

Publication number
CN104732490A
CN104732490A CN201410727796.0A CN201410727796A CN104732490A CN 104732490 A CN104732490 A CN 104732490A CN 201410727796 A CN201410727796 A CN 201410727796A CN 104732490 A CN104732490 A CN 104732490A
Authority
CN
China
Prior art keywords
cuda
thread
data
bilateral filtering
spatial domain
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
Application number
CN201410727796.0A
Other languages
English (en)
Inventor
陈强
曾炫杰
孙权森
谭海鹏
朱文斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Science and Technology
Original Assignee
Nanjing University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Science and Technology filed Critical Nanjing University of Science and Technology
Priority to CN201410727796.0A priority Critical patent/CN104732490A/zh
Publication of CN104732490A publication Critical patent/CN104732490A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

本发明公开了一种基于CUDA的快速双边滤波方法,主要解决标准双边滤波算法在运算速度上的不足。本方法将原始双边滤波算法做并行化处理,然后将图像数据从主机内存中复制到GPU的内存中,通过CUDA(Compute Unified Device Architecture)统一计算设备架构来调用GPU(Graphic Processing Unit)图形处理器进行滤波计算,对于所有像素点的计算都是并行执行的。与现有的双边滤波算法相比,本发明能够在保持双边滤波去噪性能不变的情况下,大幅提高双边滤波的计算速度,使之能够满足实时处理的要求。

Description

基于CUDA的快速双边滤波方法
技术领域
本发明涉及图形图像处理以及并行计算领域,特别是一种基于CUDA的快速双边滤波方法。
背景技术
图像传感器在工作的过程中会受到各种各样的因素影响,如图像获取图像的环境,传感元器件自身质量等等,因此,数字图像在形成的过程中会受到多种噪声的污染。这些噪声会对对图像后期处理造成很大的影响。如何在能够保持图像原本信息的同时滤除这些噪声就显得十分重要。传统的滤波器在去除噪声的同时也会对图像的边缘造成模糊。为了解决这个问题,Tomasi和Manduchi在1998年提出了双边滤波算法。与高斯滤波类似,双边滤波也采用了局部加权平均的思想,不同的是双边滤波在计算权重的过程中加入了像素值相似度这一项。因此双边滤波在去噪的过程中能够很好地保留图像的边缘信息,更加符合人眼的视觉习惯,在解决图像处理领域中的一些实际问题时取得了很好的效果,目前广泛应用在图像去噪,图像分割,图像复原,光流估计等领域。双边滤波算法通过实践证明是非常有效的,但它的计算时间较长,无法应用到很多需要实时处理的图像任务当中。如何快速实现双边滤波算法就变得十分重要。
CUDA(Compute Unified Device Architecture)统一计算设备架构,是NVIDIA公司推出的一种利用GPU(Graphic Processing Unit)图形处理器,进行通用并行计算的架构。相比较于CPU(Central Processing Unit)中央处理器,GPU专为密集型、高度并行化的计算而设计,且在浮点运算方面能力更强,这样巨大的优势使得CUDA在矩阵计算,图像视频处理,机器学习,计算机可视化等领域都有着良好的应用前景。在图像处理领域,近些年来有很多国内外很多学者都尝试利用CUDA来优化自己的算法。在医学图像方面,Anders Eklund认为GPU可以大大加速并行计算,而且价格低廉,高效节能,非常适合用于解决需要大量计算的医疗成像问题,在视频图像处理方面,Yu-Shan Pai等人利用CUDA来加速LDPC解码,最终可以实现46.52的加速比。在目前对双边滤波进行加速的研究当中都没有考虑到双边滤波算法中存在大量可以并行计算的部分以及利用CUDA在并行计算方面巨大的优势。
发明内容
本发明的目的在于提供一种基于CUDA的快速双边滤波方法,旨在解决双边滤波算法复杂度较高,无法满足图像实时处理的要求。在本方法中,根据CUDA的特性对算法进行优化,最终实现在不改变双边滤波去噪性能的情况下,大幅加速双边滤波计算速度,从而可以满足图像实时处理的要求。
本发明主要利用CUDA对双边滤波进行并行化加速,同时根据架构本身的特性对算法进行优化,最高加速比能达到75以上。
实现本发明目的的技术方案为:一种基于CUDA的快速双边滤波方法,包括以下步骤:
步骤1、计算空域高斯模板,模板大小定义为(2N+1)×(2N+1)其中N为自然数,一般取N为1、2、3。
步骤2、由CPU获取图像数据,并将数据保存在主机Host内存中;
步骤3、申请GPU内存空间,用于保存滤波计算所需的空域高斯模板、图像数据和完成滤波计算之后的图像数据;
步骤4、将Host内存中的图像数据和高斯模板数据复制到GPU的内存中;
步骤5、计算所需要的Thread线程数,然后设定计算所需的Block线程块数。
步骤6、启动CUDA多线程,对图像数据做并行卷积模板运算,卷积模板分为两个部分,空域高斯模板和值域高斯模板。并根据GPU计算特性来优化运算。
步骤7、完成滤波计算,将计算结果从GPU中复制到Host内存中。
步骤1中所述的计算空域高斯模板矩阵,其公式为
w d ( x , y , i , j ) = e ( - ( x - i ) 2 + ( y - j ) 2 2 σ d 2 )
模板矩阵的大小可以定义为3×3或者5×5,模板矩阵越大则算法的复杂度越高,消耗的时间越长。
步骤3所述的申请GPU内存空间中:
申请GPU中纹理内存用于保存计算所需的空域高斯模板,申请GPU全局内存用于图像数据。由于图像数据比较大,所以需要用全局内存来保存。而由于在卷积模板运算中,需要频繁地访问空域高斯模板中的数据,利用纹理内存中的数据可以被重复利用,纹理缓存一次预取拾取坐标对应位置附近的几个象元,提高数据的访问的访问效率。
步骤4所述的将Host内存中的图像数据和高斯模板数据复制到GPU的内存中:
对于灰度图像只需要直接调用CUDA函数完成数据的复制,对于彩色图像,由于图像数据量较大,本发明方法将三个颜色通道作为三个图像矩阵数据,利用CUDA事件流的机制,在图像数据进行复制拷贝的同时,GPU中进行计算。
步骤5所述的计算Thread和Block数中,
利用CUDA的函数来查询当前计算显卡中每一个Block中所包含的最大线程数,设其为C。设图像像素点个数为M×N,则Thread数为M×N,Block数为 M × N C .
步骤6所述的卷积模板运算,其公式为
f ( x , y ) = Σ ( i , j ) ∈ R ( m , n ) f ( i , j ) w ( x , y , i , j ) Σ ( i , j ) ∈ R ( m , n ) w ( x , y , i , j )
w(x,y,i,j)表示邻域内每个像素点的权重系数。在双边滤波中,权重系数是由值域高斯模板wr(x,y,i,j)和空域高斯模板wd(x,y,i,j)这两个部分的乘积所组成。计算公式如下
w(x,y,i,j)=wd(x,y,i,j)×wr(x,y,i,j)
w d ( x , y , i , j ) = e ( - ( x - i ) 2 + ( y - j ) 2 2 σ d 2 )
w r ( x , y , i , j ) = e ( - | | f ( x , y ) - f ( i , j ) | | 2 2 σ r 2 )
本发明中定义并行卷积运算公式如下。
f ′ = Σ i = 1 l f * G i
其中f'表示完成滤波计算后的图像数据,l表示图像数据像素点的数量,G表示卷积模板,i表示线程ID号,一个线程完成一个像素点的卷积运算。
与现有技术相比,其显著优点:并行化的优势在于一个线程完成一个像素点的计算,所有线程同时执行,大大提高了算法的执行速度,而且滤波的算法的效果也不会受到影响。
根据GPU计算特性来优化运算,算法中的数据类型全部采用单精度浮点型,同时通过通过#pragma uroll来展开算法中循环语句,减少每次循环的条件判断。
本发明采用CUDA多线程计算双边滤波方法,提高了原来的双边滤波算法的执行速度,而且由于CPU的运行限制无法使用大量的多线程进行并行计算,因此本发明能够有效地提升双边滤波处理,满足图像实时处理要求。
附图说明
图1是关于本发明的CUDA编程模型。
图2是CUDA事件流机制。
图3是算法去噪效果对比。a.表示噪声图像,PSNR为19.65dB,b.表示双边滤波算法滤波后图像,其PSNR为27.83dB,c.表示基于CUDA的快速双边滤波算法滤波后图像,其PSNR为27.83dB。
具体实施方式
下面结合附图对本发明做进一步说明。
结合图1,本发明基于CUDA的快速双边滤波方法包括以下步骤:
1.计算高斯空域模板,由于空域高斯模板不会随着像素点的变化而变换,因此可以在滤波之前完成计算,在滤波过程中只需要访问模板中的数据即可,其公式如下
w d ( x , y , i , j ) = e ( - ( x - i ) 2 + ( y - j ) 2 2 σ d 2 )
本实施案例中高斯模板的大小为3×3。
2.准备图像数据:根据图像类型读取像素值,本实施案例中选择8位的灰度图进行处理。
3.开辟存储空间:利用CUDA提供的函数,在GPU中分配内存。其中一部分需要的存储空间较大,约为图像数据大小的两倍,存储器类型为Global Memory(全局存储器),用于存储需要计算的图像数据和计算之后的图像数据。另一部分需要的空间较小,用于保存高斯空域模板,一般模板大小为(2N+1)×(2N+1)其中N为自然数,一般取N为1、2、3。存储器类型为Texture Memory(纹理存储器)。
4.分配线程数:为了让并行化算法达到最高效率,线程数与图像大小一致,一个线程处理一个像素点的计算。
5.分配Thread(线程)数和Block(线程块)数:不同计算能力的显卡每一个Block中的线程数量不同,一般Block中的最大线程数为512。利用CUDA的函数来查询当前计算显卡中每一个Block中所包含的最大线程数,设其为C。设图象数据中像素点个数为M×N,则Thread(线程)数为M×N,Block(线程块)数为Thread和Block模型如图1所示。
6.复制数据:利用CUDA提供的接口函数对步骤2中准备的数据进行复制,将图像数据和高斯空域模板拷贝到GPU内存中。如果是彩色图像,图像复制所需的时间较大,可以将三个颜色通道的数据分开复制,利用CUDA事件流机制,在复制一部分数据的同时计算另一部分的数据,提高计算效率。具体模型如图2所示
7.调用kernel(核函数)进行并行模板卷积运算:由于高斯值域模板和当前计算的像素点的像素值大小以及其周围邻域内的像素值有关,公式如下
w r ( x , y , i , j ) = e ( - | | f ( x , y ) - f ( i , j ) | | 2 2 σ r 2 )
因此每一个像素点都会重新计算一次空域高斯模板。每一个像素点完成模板卷积运算之后,再对结果做归一化处理,以方便显示图像。卷积运算公式如下。
f ( x , y ) = Σ ( i , j ) ∈ R ( m , n ) f ( i , j ) w ( x , y , i , j ) Σ ( i , j ) ∈ R ( m , n ) w ( x , y , i , j )
w(x,y,i,j)=wd(x,y,i,j)×wr(x,y,i,j)
计算中,使得每一个线程对应一个像素点的卷积运算,如线程0号计算第0个像素点,线程1号计算第1个像素点......线程n号计算第n个像素点。在线程进行计算之前,调用接口函数同步线程,使得所有的线程都在同一个时间点启动,然后每一个线程都会执行一个滤波核函数来完成一个像素点的卷积运算并存储到步骤2中所开辟的空间中。
并行化的优势在于一个线程完成一个像素点的计算,所有线程同时执行,大大提高了算法的执行速度,而且滤波的算法的效果也不会受到影响。
8.同步所有的线程,当所有的线程都完成计算之后,利用CUDA提供的接口函数,将滤波后的图像数据从GPU中复制到Host内存中,完成滤波算法。算法去噪效果与标准双边滤波一致如图3所示。其中图像噪声水平由PSNR(峰值信噪比)来评定。算法计算速度在实验环境:硬件平台PC机,Xeon E5530 CPU,16GB内存,NVIDIA FX4800 GPU。软件环境是Windows7,Visual studio 2010,CUDA5.0,下约为标准双边滤波算法的75倍,加速效果如表1所示。
表1(单位:ms)

Claims (6)

1.一种基于CUDA的快速双边滤波方法,其特征在于包括以下步骤:
步骤1、计算空域高斯模板,模板大小定义为:(2N+1)×(2N+1),其中N为自然数;
步骤2、由CPU获取图像数据,并将数据保存在主机Host内存中;
步骤3、申请GPU内存空间,用于保存实现滤波方法所需的空域高斯模板、图像数据和结果图像数据;
步骤4、将Host内存中的图像数据和高斯模板数据复制到GPU的内存中;
步骤5、计算所需要的Thread线程数,然后设定计算所需要的Block线程块数;
步骤6、启动CUDA多线程,对图像数据做并行卷积模板运算,卷积模板包括空域高斯模板和值域高斯模板;
步骤7、将步骤6的计算结果从GPU中复制到Host内存中。
2.根据权利要求1基于CUDA的快速双边滤波方法,其特征在于:步骤1中所述的计算空域高斯模板矩阵,其公式为
空域高斯模板矩阵数据在CPU中完成计算,其中x,y表示图像像素点的坐标,i,j表示空域高斯模板对应的坐标,σd表示空域高斯模板的标准差。
3.根据权利要求1基于CUDA的快速双边滤波方法,其特征在于:步骤3中所述的申请GPU内存空间,申请GPU中纹理内存用于保存计算所需的空域高斯模板,申请GPU全局内存用于保存图像数据。
4.根据权利要求1基于CUDA的快速双边滤波方法,其特征在于:步骤4中所述的将Host内存中的图像数据和高斯模板数据复制到GPU的内存中,对于灰度图像直接调用CUDA函数完成数据的复制,对于彩色图像,将三个颜色通道作为三个图像矩阵数据,利用CUDA事件流的机制,进行图像数据的复制和传输。
5.根据权利要求1基于CUDA的快速双边滤波方法,其特征在于:步骤5中所述的计算Thread线程数和Block线程块数,利用CUDA的函数来查询当前 计算显卡中每一个Block中所包含的最大线程数,设其为C,设图像像素点个数为M×N,则Thread数为M×N,Block数为
6.根据权利要求1基于CUDA的快速双边滤波方法,其特征在于:步骤6中所述的卷积模板运算,其公式为
w(x,y,i,j)表示邻域内每个像素点的权重系数,在双边滤波中,权重系数是值域高斯模板wr(x,y,i,j)和空域高斯模板wd(x,y,i,j)的乘积,计算公式如下
w(x,y,i,j)=wd(x,y,i,j)×wr(x,y,i,j)
定义并行卷积运算公式如下
其中f'表示完成滤波计算后的图像数据,l表示图像数据像素点的数量,G表示卷积模板,i表示线程ID号,一个线程完成一个像素点的卷积运算。
CN201410727796.0A 2014-12-03 2014-12-03 基于cuda的快速双边滤波方法 Pending CN104732490A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410727796.0A CN104732490A (zh) 2014-12-03 2014-12-03 基于cuda的快速双边滤波方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410727796.0A CN104732490A (zh) 2014-12-03 2014-12-03 基于cuda的快速双边滤波方法

Publications (1)

Publication Number Publication Date
CN104732490A true CN104732490A (zh) 2015-06-24

Family

ID=53456361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410727796.0A Pending CN104732490A (zh) 2014-12-03 2014-12-03 基于cuda的快速双边滤波方法

Country Status (1)

Country Link
CN (1) CN104732490A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104992421A (zh) * 2015-07-09 2015-10-21 西安电子科技大学 一种基于OpenCL的图像去噪算法的并行优化方法
CN105608684A (zh) * 2016-03-14 2016-05-25 中国科学院自动化研究所 双边数字图像滤波器的加速方法和系统
CN105787910A (zh) * 2015-12-24 2016-07-20 武汉鸿瑞达信息技术有限公司 一种人脸区域滤波方法基于异构平台的计算优化方法
CN105843590A (zh) * 2016-04-08 2016-08-10 深圳航天科技创新研究院 一种并行指令集预译码方法及系统
CN107230190A (zh) * 2017-05-23 2017-10-03 北京奇艺世纪科技有限公司 一种图像双边滤波方法和装置
CN109978876A (zh) * 2019-04-03 2019-07-05 北京环境特性研究所 一种基于快速双边滤波的烟雾识别方法和装置
CN110503189A (zh) * 2019-08-02 2019-11-26 腾讯科技(深圳)有限公司 一种数据处理方法以及装置
CN110909801A (zh) * 2019-11-26 2020-03-24 山东师范大学 基于卷积神经网络的数据分类方法、系统、介质及设备
CN111552478A (zh) * 2020-04-30 2020-08-18 上海商汤智能科技有限公司 用于生成cuda程序的设备、方法和存储介质
CN111833264A (zh) * 2020-06-15 2020-10-27 武汉科技大学 一种基于cuda的图像快速去噪方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116875A (zh) * 2013-02-05 2013-05-22 浙江大学 自适应双边滤波图像去噪方法
CN103593850A (zh) * 2013-11-26 2014-02-19 北京航空航天大学深圳研究院 一种在cuda平台上基于递归高斯滤波的sift并行化系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116875A (zh) * 2013-02-05 2013-05-22 浙江大学 自适应双边滤波图像去噪方法
CN103593850A (zh) * 2013-11-26 2014-02-19 北京航空航天大学深圳研究院 一种在cuda平台上基于递归高斯滤波的sift并行化系统及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SHI WENXUAN 等: "An Image Denoising Method Based on Multiscale Wavelet Thresholding and Bilateral Filtering", 《WUHAN UNIVERSITY JOURNAL OF NATURAL SCIENCES》 *
宋晓丽 等: "基于GPGPU的数字图像并行化预处理", 《计算机测量与控制》 *
张志强 等: "一种改进的双边滤波算法", 《中国图象图形学报》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104992421A (zh) * 2015-07-09 2015-10-21 西安电子科技大学 一种基于OpenCL的图像去噪算法的并行优化方法
CN104992421B (zh) * 2015-07-09 2018-08-17 西安电子科技大学 一种基于OpenCL的图像去噪算法的并行优化方法
CN105787910A (zh) * 2015-12-24 2016-07-20 武汉鸿瑞达信息技术有限公司 一种人脸区域滤波方法基于异构平台的计算优化方法
CN105787910B (zh) * 2015-12-24 2019-01-11 武汉鸿瑞达信息技术有限公司 一种人脸区域滤波方法基于异构平台的计算优化方法
CN105608684A (zh) * 2016-03-14 2016-05-25 中国科学院自动化研究所 双边数字图像滤波器的加速方法和系统
CN105608684B (zh) * 2016-03-14 2018-06-26 中国科学院自动化研究所 双边数字图像滤波器的加速方法和系统
CN105843590B (zh) * 2016-04-08 2019-01-11 深圳航天科技创新研究院 一种运行于cuda平台的并行指令集预译码方法及系统
CN105843590A (zh) * 2016-04-08 2016-08-10 深圳航天科技创新研究院 一种并行指令集预译码方法及系统
CN107230190A (zh) * 2017-05-23 2017-10-03 北京奇艺世纪科技有限公司 一种图像双边滤波方法和装置
CN107230190B (zh) * 2017-05-23 2020-04-21 北京奇艺世纪科技有限公司 一种图像双边滤波方法和装置
CN109978876A (zh) * 2019-04-03 2019-07-05 北京环境特性研究所 一种基于快速双边滤波的烟雾识别方法和装置
CN110503189A (zh) * 2019-08-02 2019-11-26 腾讯科技(深圳)有限公司 一种数据处理方法以及装置
CN110503189B (zh) * 2019-08-02 2021-10-08 腾讯科技(深圳)有限公司 一种数据处理方法以及装置
CN110909801A (zh) * 2019-11-26 2020-03-24 山东师范大学 基于卷积神经网络的数据分类方法、系统、介质及设备
CN111552478A (zh) * 2020-04-30 2020-08-18 上海商汤智能科技有限公司 用于生成cuda程序的设备、方法和存储介质
CN111552478B (zh) * 2020-04-30 2024-03-22 上海商汤智能科技有限公司 用于生成cuda程序的设备、方法和存储介质
CN111833264A (zh) * 2020-06-15 2020-10-27 武汉科技大学 一种基于cuda的图像快速去噪方法及系统

Similar Documents

Publication Publication Date Title
CN104732490A (zh) 基于cuda的快速双边滤波方法
US10984545B2 (en) Estimating depth for a video stream captured with a monocular rgb camera
US10600167B2 (en) Performing spatiotemporal filtering
Meng et al. Efficient image dehazing with boundary constraint and contextual regularization
Yu et al. Image denoising using trivariate shrinkage filter in the wavelet domain and joint bilateral filter in the spatial domain
DE102020108218A1 (de) Vorrichtung und Verfahren zur Konstruktion von Begrenzungsvolumenhierarchien mit reduzierter Genauigkeit
CN103501401B (zh) 面向超大噪声基于预滤波的实时视频去噪方法
CN103983334B (zh) 一种信息处理的方法及电子设备
TW200818054A (en) Tile based precision rasterization in graphics pipeline
CN108335349A (zh) 利用神经网络滤波图像数据
CN102968770A (zh) 噪声消除方法及装置
Han et al. Underwater image enhancement based on a spiral generative adversarial framework
CN104992421A (zh) 一种基于OpenCL的图像去噪算法的并行优化方法
US11638028B2 (en) Adaptive pixel sampling order for temporally dense rendering
CN104392409A (zh) 一种图像美容的加速方法
CN105791635B (zh) 基于gpu的视频增强去噪方法及装置
CN110246201B (zh) 一种基于线程级并行的铅笔画生成方法
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
Wang et al. Perception-guided multi-channel visual feature fusion for image retargeting
US20240013033A1 (en) Large scale mask optimization with convolutional fourier neural operator and litho-guided self learning
CN116385619A (zh) 对象模型渲染方法、装置、计算机设备和存储介质
CN105931207B (zh) 基于gpu加速的非局部平均滤波实时处理方法
CN113112596B (zh) 人脸几何模型提取、3d人脸重建方法、设备及存储介质
CN109087334A (zh) 基于显著语境稀疏表示的目标追踪方法
DE112021004742T5 (de) Speicherbandbreiten-Drosselung für virtuelle Maschinen

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20150624

RJ01 Rejection of invention patent application after publication