当前位置: 首页 > 专利查询>山东大学专利>正文

一种基于OpenCL的图像修复方法技术

技术编号:8801508 阅读:283 留言:0更新日期:2013-06-13 06:05
一种基于OpenCL的图像修复方法,属图像自动修复技术领域,由计算机以OpenCL平台,确定待修补区域、边界、源区域,进而定义目标块和源块,求出所有源块与目标块像素的彩色信息的误差平方和SSD,CPU找出SSD最小的源块对目标块进行修补,从而完成对整个图像的修复,通过本发明专利技术提出了基于OpenCL的并行加速方法,利用GPU多核、线程之间切换非常廉价的特点,将图像修复算法中部分大量简单重复的工作并行化,大大缩短了图像处理时间,提高了对图像修复的实时性和应用范围。

【技术实现步骤摘要】

本专利技术涉及一种图像修复方法,具体涉及一种基于OpenCL (Open ComputingLanguage,开放计算语言)的GPU (Graphic Processing Unit,图形处理器)加速图像修复方法,用于对受损的图像修复或移除图像中的遮挡物。
技术介绍
图像修复是指根据图像待修补区的已知邻域信息来估算待修补区内缺损信息而进行修复的过程,其主要目的是在人眼主观系统可以接受的程度下对破损的图像进行修复,是当前计算机视觉领域的一个研究热点,在文物保护、影视特技制作、虚拟现实、多余物体移除领域有广泛的应用价值。并且,随着3D技术的日益发展,虚拟视点合成技术需要快速的图像空洞修复,对于算法的速度要求大大提升。基于纹理修复和基于非纹理修复是当前图像修复的两类基本方法。基于纹理的修复方法其算法思想是首从待修补区域的边界上选取一个像素点,同时以该点为中心,根据图像的纹理特征,选取大小合适的纹理块,然后在待修补区域周围寻找与之最近似的纹理匹配块来替代该纹理块。其代表性算法是Criminisi等人提出的算法,它借鉴了纹理生成方法中的思想来寻找样本区域并匹配复制,同时充分利用了基于结构的修复方法中的扩散方式来定义修复块的优先级,使得处在边缘附近(具有较多结构信息)的修复块具有较高的修复优先级,从而在修复纹理信息的同时对结构信息也有一定的保持。目前,Criminisi图像修复算法的工作流程是:1、确定待修补区域、边界、源区域(即除去待修补区域和边界后的图片区域)。2、以待修补区域边界上每一个点为中心,选取大小为m*m (如9*9)图像块,计算每个图像块的优先级值,优先级值有两方面构成:①修补区域内像素的置信度大小,即已知像素数占块中像素数的比例;②待修补区包含的线性结构信息能否与周围形成一个连续的线性结构,即待修补区的邻域是否是闭合的。3、沿待修补区域边界寻找优先级最高的修复块,结果即为目标块。4、在图像已知区域,遍历图像所有已知区域,选取同样大小的图像块(即源块),与目标块进行对比,比较方法为比较源块和目标块每个像素的RGB (即红绿蓝三色)值,依次做差求R值、G值、B值差值的平方和,求出块中所有像素这个平方和的总和,总和最小的块即为最佳匹配块用于修复。5、更新待修补区边界,和置信度、优先级值。6、检测是否有待修补区域,有则进行第3步,若没有待修补区域,算法结束,图片修补完成。然而,传统的基于CPU (中央处理器)的Criminisi图像修复算法往往不能最大限度的利用现有的运算资源,因为CPU平台上,运算是串行的,寻找修复块等工作需要根据图片像素数进行数十万乃至数百万次重复的计算、匹配、排序,运算时间往往浪费在等待上一个像素块的计算和匹配运算上。虽然每一次计算很快,但是众多的运算延迟累计在一起,就会导致算法耗时巨大,完全丧失了快速处理的能力。如专利号为200510012165.1,专利技术名称为《一种图像修复方法》的专利即属于此列。OpenCL全称Open Computing Language即开放计算语言。OpenCL为异构平台提供了一个编写程序,尤其是并行程序的开放的框架标准。OpenCL所支持的异构平台可由多核CPU、GPU或其他类型的处理器组成。OpenCL由两部分组成,一是用于编写内核程序(在OpenCL设备上运行的代码)的语言,二是定义并控制平台的API。OpenCL提供了基于任务和基于数据两种并行计算机制,它极大地扩展了 GPU的应用范围,使之不再局限于图形领域。本专利技术利用OpenCL优化Criminisi图像修复算法中的部分程序,利用GPU的并行计算代替CPU的串行计算,产生了巨大的加速效果。
技术实现思路
本专利技术针对目前Criminisi图像修复算法计算运行时间过长的弊端,本专利技术提出了基于OpenCL的并行加速方法,利用GPU多核、线程之间切换非常廉价的特点,将图像修复算法中部分大量简单重复的工作并行化,大大缩短了图像处理时间,提高了方法的实时性和应用范围。本专利技术的技术方案是按以下方式实现的:,由计算机来实现,计算机中的显卡配置为支持OpenCL协议的显卡(对于AMD显卡来说,从HD5800系列以上全面支持OpenCL标准)或处理器采用AM D APU (Accelerated Processing Unit,加速处理器),该方法步骤如下:1、OpenCL平台初始化,包括获取OpenCL平台,生成上下文,寻找OpenCL设备,仓Il建命令队列,创建OpenCL buffer (缓存)对象,创建程序对象,编译程序对象,生成kernel(即可以在GPU中运行的程序);2、确定待修补区域、边界、源区域(即除去待修补区域和边界后的图片区域);其中,待修补区域表示图片中破损或需要修补的地方,源区域指图片中信息完整的部分,边界指待修补区域与源区域之间的交界线;3、以待修补区域边界上每一个点为中心,选取正方形图像块(即样本块,大小依据图片纹理、精度而定),计算每个图像块的优先级值,优先级值有两方面构成:①修补区域内像素的置信度大小,即已知像素数占块中像素数的比例;②待修补区包含的线性结构信息能否与周围形成一个连续的线性结构,即待修补区的邻域是否是闭合的;以待修补区域边界上一点P为中心的图像块Fp的优先级P(P)计算公式如下:P (P) =C (P).D (P)其中,C(p)为置信度项,D(p)为数据项,定义如下:本文档来自技高网
...

【技术保护点】
一种基于OpenCL的图像修复方法,由计算机来实现,计算机中的显卡配置为支持OpenCL协议的显卡或处理器采用AMDAPU,该方法步骤如下:1)OpenCL平台初始化,包括获取OpenCL平台,生成上下文,寻找OpenCL设备,创建命令队列,创建OpenCL?buffer对象,创建程序对象,编译程序对象,生成kernel;2)确定待修补区域、边界、源区域,源区域即除去待修补区域和边界后的图片区域;其中,待修补区域表示图片中破损或需要修补的地方,源区域指图片中信息完整的部分,边界指待修补区域与源区域之间的交界线;3)以待修补区域边界上每一个点为中心,选取正方形图像块作为样本块,大小依据图片纹理、精度而定,计算每个图像块的优先级值,优先级值有两方面构成:①修补区域内像素的置信度大小,即已知像素数占块中像素数的比例;②待修补区包含的线性结构信息能否与周围形成一个连续的线性结构,即待修补区的邻域是否是闭合的;以待修补区域边界上一点p为中心的图像块ψp的优先级P(p)计算公式如下:P(p)=C(p)·D(p)其中,C(p)为置信度项,D(p)为数据项,定义如下:C(p)=Σq∈Ψp∩ΦC(q)|Ψp|D(p)=|▿Ip⊥·np|αC(p)表达式中的分子项表示样本块中非空洞像素的数量,其中:q代表图像块中的一个像素、Φ表示图片的源区域,即图片中信息完整的部分,C(q)分别表示每个符合条件的q像素的置信度值,该值表示包含一个迭代的过程,即p像素的置信度值通过计算其周围所有符合条件的q像素的置信度值而得出,分母|Ψp|表示样本块中总的像素数量,Ψp∩Φ表示既属于以p为中心的样本块,又属于图像的源区域,表示满足∈符号之后所述条件的点q;D(p)表达式中的分别表示空洞边缘上p点处的等照度线的方向与法向量,表示空洞边缘上p点处的等照度线的方向强度在边界法向上的投影强度,α为归一化因子,取值为255;4)沿待修补区域边界寻找优先级最高的图像块,并定义优先级最高的图像块为目标块;5)将原图RGB信息、目标块RGB信息及边界、待修补区、源区域标志位矩阵写入OpenCL设备的buffer,并将这些buffer中的值传入kernel;6)确定并分配workitem的数量、由workitem组成的工作组workgroup的大小;7)将每个workgroup计算需要的信息如源图RGB值、目标块RGB值映射到每个workgroup的本地内存中,完成这项工作后需将这个映射工作同步,即等待所有workgroup的映射工作完成,然后将kernel放入命令队列开始运行kernel程序,Kernel程序的内容为在源区域选取与目标块同样大小的图像块,定义为源块,源块与目标块进行对比并计算源块和目标块中 的像素的彩色信息的误差平方和SSD,比较方法为:比较源块和目标块对应像素的RGB值,依次做差,求R值、G值、B值差值的平方和,采用这种方法,在整个图片的源区域,以一个像素为步长,从上到下从左至右选取所有符合条件的块作为源块,求出上述所有源块与目标块像素的彩色信息的误差平方和SSD,这样通过遍历整个图片上的源区域,GPU最终可以将所有源块与同一目标块的图像差值并行算出;计算源块与目标块像素的彩色信息的误差平方和SSD的公式如下所示:SSD=Σ(Rp(P)-Rq(P))2+(Gp(P)-Gq(P))2+(Bp(P)-Bq(P))2其中,Rp、Gp、Bp分别表示源块内像素的RGB三原色分量的强度值,强度值范围为0?255;Rq、Gq、Bq则分别表示目标块内像素的RGB三原色分量的强度值,公式中上述字母后面括号内所加字母P代表做差的两个像素在源块和目标块中的相对位置相同;8)完成上述所有源块与目标块像素的彩色信息的误差平方和SSD的运算后,将kernel中的运算结果信息写入buffer,由CPU读出;9)CPU找出源块与目标块像素的彩色信息的误差平方和SSD最小的源块,这一源块即为最优匹配块,将最优匹配块的RGB值赋予目标块,即完成目标块的修补;由于目标块图像的修补,其边界就会发生改变,边界、置信度、优先级都应进行更新,故重新更新待修补区边界,更新边界点置信度、优先级值;10)CPU检测是否有待修补区域,有则进行第3步,若没有待修补区域则结束,图片修补完成。FDA00002980886600013.jpg,FDA00002980886600014.jpg,FDA00002980886600015.jpg...

【技术特征摘要】
1.一种基于OpenCL的图像修复方法,由计算机来实现,计算机中的显卡配置为支持OpenCL协议的显卡或处理器采用A M D A P U,该方法步骤如下: 1)OpenCL平台初始化,包括获取OpenCL平台,生成上下文,寻找OpenCL设备,仓Il建命令队列,创建OpenCL buffer对象,创建程序对象,编译程序对象,生成kernel ; 2)确定待修补区域、边界、源区域,源区域即除去待修补区域和边界后的图片区域; 其中,待修补区域表示图片中破损或需要修补的地方,源区域指图片中信息完整的部分,...

【专利技术属性】
技术研发人员:袁东风翟庆羽张海霞徐加利孙文高凯徐祥桐
申请(专利权)人:山东大学
类型:发明
国别省市:

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

1