基于GPU加速的非局部平均滤波实时处理方法技术

技术编号:13680048 阅读:123 留言:0更新日期:2016-09-08 07:56
本发明专利技术公开了一种基于GPU加速的非局部平均滤波实时处理方法,主要解决了非局部平均滤波算法难以满足实时性要求这一问题。本方法利用GPU卓越的多线程并行数据处理能力,使用OpenCL平台,在GPU上并行地实现图像的滤波处理。在滤波过程中,对中心图像片和相似图像片进行投影,并且利用拆分核函数、优化访存等方法有效减少了计算量和数据读取时间。与现有的非局部平均滤波方法相比,本发明专利技术能够在保证去噪性能的前提下,对VGA(分辨率为640*480)和SVGA(分辨率为600*800)图像进行实时的非局部平均滤波处理,较之传统的串行处理方法,本方法取得了最高达111倍的加速比。

【技术实现步骤摘要】

本专利技术属于图像处理
,更进一步涉及一种自然图像处理滤波
的基于图形计算单元GPU(Graphics Processing Unit)加速的非局部平均滤波实时处理方法。该方法可用于对医学、卫星遥感、工业、军事和视频多媒体等领域的数字图像进行预处理,缩短预处理时间,达到实时处理的效果。
技术介绍
作为最好的图像去噪方法之一,非局部平均滤波算法能够达到很好的去噪效果。但是由于算法复杂度高,处理时间长,所以很难在实际应用中被直接使用。自从Buades提出非局部平均的思想以来,研究者们也提出了各种各样的改进算法。随着大数据时代的到来,人们急切的想寻求一种可以加快数据处理速度的方案,此时,异构并行计算模式应运而生。GPU专为计算密集型、高度并行化的程序设计,并且在浮点计算能力方面表现超群,自然而然的,处理机制从多核处理器过渡到GPU,并广泛应用于各个领域。各行各业的人们都尝试利用这一新兴技术加速数据处理,在图像处理领域就有很多算法已经在异构平台下成功实现。华中科技大学申请的专利“一种三维超声图像非局部均值滤波方法”(专利申请号201310428718.6,公布号CN103544682A)中公布了一种三维超声图像非局部平均滤波方法。该方法将待滤波的三维图像拆分成基准块,给每个基准块指定搜索区域,然后将搜索区域中的所有与基准块大小相同的图像块作为相似块,并且计算每一相似块与基准块之间相似度,接下来以相似块的加权平均值作为基准块滤波结果,权重为相似度,最后将基准块的滤波结果进行整合得到三维超声图像最终滤波结果,该方法应用GPU加速,一定程度上缩短了滤波时间。但是该方法存在的不足之处是,在利用GPU进行非局部平均滤波的过程中,算法复杂度高导致运行时间长,GPU数据访存
没有优化导致运行时间长,有重复的数据处理过程导致运行时间长,无法满足对图像进行非局部平均滤波处理的实时性要求。
技术实现思路
本专利技术的目的在于克服上述现有技术中的不足,提出一种基于GPU(Graphics Processing Unit)加速的非局部平均滤波实时处理方法。通过对图像片进行投影,减小算法复杂度,优化访存方式,缩短访存时间,并将非局部平均滤波在GPU的实现拆分成两个内核,减少运算量。为实现上述目的,本专利技术具体实现步骤包括如下:(1)搭建环境;(1a)调用开放运算语言OpenCL提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;(1b)调用开放运算语言OpenCL提供的应用程序编程接口API依次创建上下文、创建命令队列、构建程序对象、创建2个内核对象;(2)读取待处理图像;将中央处理器CPU作为主机端读取待处理图像,将读取的待处理图像保存到中央处理器CPU的内存;(3)按照下式,计算半径为Z的一维高斯模板: W ( r ) = e - r 2 2 σ 2 ]]>其中,W(r)表示一维高斯模板W上与该模板中心点相距r处的值,W表示一维高斯模板,r表示一维高斯模板上任意点到中心点的距离,r∈(-Z,Z),∈表示属于符号,Z表示一维高斯模板的半径,e表示自然对数,σ表示高斯模板的标准差;(4)拷贝高斯模板和待处理图像;(4a)在图形计算单元GPU中申请用于保存高斯模板和待处理图像的显存;(4b)将高斯模板拷贝到显存的常量存储器中,将待处理图像拷贝到显存的全局存储器中;(5)执行第一个内核对象;(5a)给待处理图像的每一个像素点分配一个工作项;(5b)给执行第一个内核对象的每一个工作组分配256个工作项;(5c)给第一个内核对象设置4个参数,分别为:待处理图像的长度,待处理图像的宽度,拷贝进GPU显存的待处理图像和高斯模板;(5d)将图形计算单元GPU全局存储器中的待处理图像缓存到局部存储器中;(5e)从缓存到局部存储器中的待处理图像依次读取21×21个像素点,组成搜索窗;(5f)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗中心像素点为中心,大小为d×d的二维搜索窗中心图像片,d=2×Z+1,表示二维搜索窗中心图像片的边长,Z表示高斯模板的半径;(5g)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗下半部分每一个像素点为中心,大小为d×d的二维搜索窗相似图像片,d=2×Z+1,表示二维搜索窗相似图像片的边长,Z表示高斯模板的半径;(5h)按照下式,对二维搜索窗中心图像片和二维搜索窗相似图像片进行投影,得到一维搜索窗中心图像片和一维搜索窗相似图像片: I P ‾ d × 1 ( a ) = Σ x = b - Z b + Z IP d × d ( a , b ) d ]]> I S ‾ d × 1 ( i ) = Σ y = j - Z j + Z IS d 本文档来自技高网
...

【技术保护点】
一种基于GPU加速的非局部平均滤波实时处理方法,包括如下步骤:(1)搭建环境;(1a)调用开放运算语言OpenCL提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;(1b)调用开放运算语言OpenCL提供的应用程序编程接口API依次创建上下文、创建命令队列、构建程序对象、创建2个内核对象;(2)读取待处理图像;将中央处理器CPU作为主机端读取待处理图像,将读取的待处理图像保存到中央处理器CPU的内存;(3)按照下式,计算半径为Z的一维高斯模板:W(r)=e-r22σ2]]>其中,W(r)表示一维高斯模板W上与该模板中心点相距r处的值,W表示一维高斯模板,r表示一维高斯模板上任意点到中心点的距离,r∈(‑Z,Z),∈表示属于符号,Z表示一维高斯模板的半径,e表示自然对数,σ表示高斯模板的标准差;(4)拷贝高斯模板和待处理图像;(4a)在图形计算单元GPU中申请用于保存高斯模板和待处理图像的显存;(4b)将高斯模板拷贝到显存的常量存储器中,将待处理图像拷贝到显存的全局存储器中;(5)执行第一个内核对象;(5a)给待处理图像的每一个像素点分配一个工作项;(5b)给执行第一个内核对象的每一个工作组分配256个工作项;(5c)给第一个内核对象设置4个参数,分别为:待处理图像的长度,待处理图像的宽度,拷贝进GPU显存的待处理图像和高斯模板;(5d)将图形计算单元GPU全局存储器中的待处理图像缓存到局部存储器中;(5e)从缓存到局部存储器中的待处理图像依次读取21×21个像素点,组成搜索窗;(5f)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗中心像素点为中心,大小为d×d的二维搜索窗中心图像片,d=2×Z+1,Z表示高斯模板的半径;(5g)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗下半部分每一个像素点为中心,大小为d×d的二维搜索窗下半部分相似图像片,d=2×Z+1,Z表示高斯模板的半径;(5h)按照下式,对二维搜索窗中心图像片和二维搜索窗下半部分相似图像片进行投影,得到一维搜索窗中心图像片和一维搜索窗下半部分相似图像片:IP‾d×1(a)=Σx=b-Zb+ZIPd×d(a,b)d]]>IS‾d×1(i)=Σy=j-Zj+ZISd×d(i,y)d]]>其中,表示以目标像素点(a,b)为中心的二维搜索窗中心图像片IPd×d(a,b)经过投影后得到的一维搜索窗中心图像片,d=2×Z+1,Z表示高斯模板的半径,x表示二维搜索窗中心图像片IPd×d(a,b)的列序号,x∈[b‑Z,b+Z],∈表示属于符号,∑表示求和操作,表示以像素点(i,j)为中心的二维搜索窗下半部分相似图像片ISd×d(i,j)经过投影后得到的一维搜索窗下半部分相似图像片,y表示二维搜索窗下半部分相似图像片ISd×d(i,j)的列序号,y∈[j‑Z,j+Z];(5i)按照下式,计算一维搜索窗中心图像片和一维搜索窗下半部分相似图像片高斯加权的欧式距离:Temp(i,j,a,b)=||W⊗[IS‾d×1(i)-IP‾d×1(a)]||22]]>其中,Temp(i,j,a,b)表示一维搜索窗中心图像片和一维搜索窗下半部分相似图像片高斯加权的欧式距离,W表示高斯模板,表示卷积操作,表示欧氏距离操作;(5j)在图形计算单元GPU的全局存储器中创建一个数组,将高斯加权的欧氏距离保存在该数组里;(6)执行第二个内核对象;(6a)给待处理图像的每个像素点分配一个工作项;(6b)给执行第二个内核对象的每个工作组分配256个工作项;(6c)在图形计算单元GPU中申请用于存放滤波后图像的显存;(6d)给第二个内核设置4个参数:待处理图像的长度,待处理图像的宽度,拷贝进GPU缓存的待处理图像和滤波后图像;(6e)将图形计算单元GPU的全局存储器里的待处理图像缓存到局部存储器;(6f)从缓存到局部存储器中的待处理图像依次读取21×21个像素点,组成搜索窗;(6g)按照下式,计算搜索窗上像素点的权值:ω(i,j,a,b)=e-Temp(i,j,a,b)h2]]>其中,ω(i,j,a,b)表示搜索窗上像素点(i,j)的权值,e表示自然对数,h表示衰减因子,Temp(i,j,a,b)表示一维搜索窗中心图像片和一维搜索窗下半部分相似图像片高斯加权的欧氏距离;(6h)按照下式,计算搜索窗中心像素点经过非局部平均滤波后的像素值:y^(a,b)=Σ(i,j)∈Ω(a,b)ω...

【技术特征摘要】
1.一种基于GPU加速的非局部平均滤波实时处理方法,包括如下步骤:(1)搭建环境;(1a)调用开放运算语言OpenCL提供的应用程序编程接口API进行平台查询,获取该平台上可用的设备对象;(1b)调用开放运算语言OpenCL提供的应用程序编程接口API依次创建上下文、创建命令队列、构建程序对象、创建2个内核对象;(2)读取待处理图像;将中央处理器CPU作为主机端读取待处理图像,将读取的待处理图像保存到中央处理器CPU的内存;(3)按照下式,计算半径为Z的一维高斯模板: W ( r ) = e - r 2 2 σ 2 ]]>其中,W(r)表示一维高斯模板W上与该模板中心点相距r处的值,W表示一维高斯模板,r表示一维高斯模板上任意点到中心点的距离,r∈(-Z,Z),∈表示属于符号,Z表示一维高斯模板的半径,e表示自然对数,σ表示高斯模板的标准差;(4)拷贝高斯模板和待处理图像;(4a)在图形计算单元GPU中申请用于保存高斯模板和待处理图像的显存;(4b)将高斯模板拷贝到显存的常量存储器中,将待处理图像拷贝到显存的全局存储器中;(5)执行第一个内核对象;(5a)给待处理图像的每一个像素点分配一个工作项;(5b)给执行第一个内核对象的每一个工作组分配256个工作项;(5c)给第一个内核对象设置4个参数,分别为:待处理图像的长度,待处理图像的宽度,拷贝进GPU显存的待处理图像和高斯模板;(5d)将图形计算单元GPU全局存储器中的待处理图像缓存到局部存储器中;(5e)从缓存到局部存储器中的待处理图像依次读取21×21个像素点,组成搜索
\t窗;(5f)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗中心像素点为中心,大小为d×d的二维搜索窗中心图像片,d=2×Z+1,Z表示高斯模板的半径;(5g)读取缓存到局部存储器中待处理图像的一个小图像片,该小图像片是以搜索窗下半部分每一个像素点为中心,大小为d×d的二维搜索窗下半部分相似图像片,d=2×Z+1,Z表示高斯模板的半径;(5h)按照下式,对二维搜索窗中心图像片和二维搜索窗下半部分相似图像片进行投影,得到一维搜索窗中心图像片和一维搜索窗下半部分相似图像片: I P ‾ d × 1 ( a ) = Σ x = b - Z b + Z IP d × d ( a , b ) d ]]> I S ‾ d × 1 ( i ) = Σ y = j - Z j + Z IS d × d ( i , y ) d ]]>其中,表示以目标像素点(a,b)为中心的二维搜索窗中心图像片IPd×d(a,b)经过投影后得到的一维搜索窗中心图像片,d=2×Z+1,Z表示高斯模板的半径,x表示二维搜索窗中心图像片IPd×d(a,b)的列序号,x∈[b-Z,b+Z],∈表示属于符号,∑表示求和操作,表示以像素点(i,j)为中心的二维搜索窗下半部分相似图像片ISd×d(i,j)经过投影后得到的一维搜索窗下半部分相似图像片,y表示二维搜索窗下半部分相似图像片ISd×d(i,j)的列序号,y∈[j-Z,j+Z];(5i)按照下式,计算一维搜索窗中心图像片和一维搜索窗下半部分相似图像片高斯加权的欧式距离: T e m p ( i , j , a , b ) = | | W &CircleT...

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

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

1