掌桥专利:专业的专利平台
掌桥专利
首页

使用GPU渲染进行高性能图片杂物消除的方法和装置

文献发布时间:2023-06-19 13:46:35


使用GPU渲染进行高性能图片杂物消除的方法和装置

技术领域

本申请涉及图像处理领域技术领域,尤其涉及一种使用GPU渲染进行高性能图片杂物消除的方法和装置。

背景技术

由于移动终端应用的日益广泛,用户习惯了随时随地进行拍照留念,但拍照时,往往会遇到照片中不小心拍到了其他路人,或者其他杂物的情况,用户希望能够去掉图像中的这些意外事物。传统的实现方式,都是由用户手动绘制出一个区域,通过Opencv去寻找图片附近的像素点来填补这个区域,以达到消除区域里面事物的目的。有些算法还会辅以模糊等功能,使修补的区域更加贴合原图,不至于太过突兀。但这些方式,依然无法避免图像中出现大块突兀色块,或把图片中其他像素点错误移植过来的情况。另一方面,由于Opencv计算量庞大,对移动设备要求过高,需要较高的内存运行条件,很多中低性能配置的移动终端,无法运行这些算法,使得用户无法使用。

发明内容

本申请提供一种使用GPU渲染进行高性能图片杂物消除的方法和装置,以解决现有技术中,图像杂物消除中,消除效果差的问题。

本申请的上述目的是通过以下技术方案实现的:

本申请实施例提供一种使用GPU渲染进行高性能图片杂物消除的方法,包括:

获取并解码用户输入的原图像和杂物标记二值图,加载得到适用于OpenGL渲染的原图纹理和杂物标记二值图纹理;

对所述杂物标记二值图纹理进行向下采样,直到采样图像纹理数据中无杂物,得到多个分别对应每次采样的图像纹理,并将每次采样得到的图像纹理作为一层数据,组成图像纹理金字塔;其中,所述图像纹理金字塔最低层的图像纹理对应原图尺寸;

对所述原图纹理进行向下采样,得到尺寸与所述图像纹理金字塔最顶层尺寸相同的目标纹理,并建立所述尺寸的存储有所述目标纹理中每个像素所在块对应的原图纹理中的相似匹配块位置信息的位置纹理,和所述尺寸的存储有所述目标纹理中每个像素所在块和对应原图纹理中的相似匹配块距离信息的距离纹理;

从所述图像纹理金字塔最顶层到最底层,基于每层尺寸,执行如下循环,得到尺寸与原图纹理尺寸相同,并且基于每个像素所在块的最小距离相似匹配块信息更新后的最终目标纹理:

确定所述目标纹理中每个像素所在块在所述原图纹理中对应的距离最小的相似匹配块;

基于所述距离最小的相似匹配块信息,更新所述位置纹理和所述距离纹理;

基于更新后的所述位置纹理和所述距离纹理,更新所述目标纹理;

将所述图像纹理金字塔层数改变为当前层数的下一层,得到新的尺寸,在所述原图纹理中,对所述目标纹理重新进行向上采样,得到新尺寸的目标纹理,以及对所述位置纹理和所述距离纹理均进行向上采样,得到所述新尺寸的位置纹理和所述新尺寸的距离纹理;

根据所述循环得到的最终目标纹理,编码生成目标图像文件。

进一步的,所述对所述杂物标记二值图纹理进行向下采样,直到采样图像纹理数据中无杂物,包括:

基于所述原图纹理尺寸对所述杂物标记二值图纹理进行采样,得到图像纹理;

判断所述图像纹理中是否含有杂物;

若有,将采样尺寸减半后继续向下采样;

若无,停止采样。

进一步的,所述像素所在块为:

以该像素为中心点,半径为预设数值的区域块。

进一步的,所述建立所述尺寸的存储有所述目标纹理中每个像素所在块对应的原图纹理中的相似匹配块位置信息的位置纹理,和所述尺寸的存储有所述目标纹理中每个像素所在块和对应原图纹理中的相似匹配块距离信息的距离纹理,包括:

建立图像纹理金字塔最顶层图像纹理尺寸的位置纹理和距离纹理;

针对所述目标纹理中的每一个像素所在块随机生成一个相似匹配块;

将所述原图纹理中,对应所述目标纹理中每一个像素所在块的相似匹配块的位置信息存储至所述位置纹理中;

将所述目标纹理中,每一个像素所在块,与所述原图纹理中与该像素所在块对应的相似匹配块之间的距离信息,存储在所述距离纹理中。

进一步的,所述确定所述目标纹理中每个像素所在块在所述原图纹理中对应的距离最小的相似匹配块,包括:

定义窗口尺寸为所述目标纹理尺寸的二分之一;

以目标纹理中的每一个像素点为中心点,以所述窗口尺寸为半径,得到包括所述像素点的位置点在内的九个窗口位置点;

在所述位置纹理中对九个所述窗口位置点进行采样,得到分别与九个所述窗口位置点对应的九个相似匹配块位置点;

分别计算所述目标纹理中该像素所述在块,与所述原图纹理中所述九个所述窗口位置点和九个所述相似匹配块位置点之间的距离,确定距离最小的位置点;

确定所述距离最小的位置点在所述原图纹理中对应的块,为该像素所在块对应的所述原图纹理中距离最小的相似匹配块。

进一步的,所述确定所述目标纹理中每个像素所在块在所述原图纹理中对应的距离最小的相似匹配块,还包括:

将所述窗口尺寸减半,得到新的窗口尺寸;

基于新的窗口尺寸,重新确定最小相似匹配块。

进一步的,所述基于更新后的所述位置纹理和所述距离纹理,更新所述目标纹理,包括:

以所述目标纹理中每个目标像素为中心点,预设尺寸为半径创建计算区域;

基于所述位置纹理和所述距离纹理,获取所述计算区域内的每一个像素点的相似匹配块的位置信息和距离信息;

基于所述图像纹理数据、所述位置信息和所述距离信息对所述计算区域内的每一个像素点对应的相似匹配块位置颜色值进行加权求和,得到该目标像素位置的颜色值,并将该颜色值更新至所述目标纹理中。

进一步的,所述将所述图像纹理金字塔层数改变为当前层数的下一层,得到新的尺寸,在所述原图纹理中,对所述目标纹理重新进行向上采样,得到新尺寸的目标纹理,以及对所述位置纹理和所述距离纹理均进行向上采样,得到所述新尺寸的位置纹理和所述新尺寸的距离纹理,包括:

将所述图像纹理金字塔层数改变为当前层数的下一层,得到新尺寸;

基于所述新尺寸,通过线性过滤的方式进行向上采样,得到所述新尺寸的目标纹理;

基于所述新尺寸,通过线性过滤的方式进行向上采样,得到所述新尺寸的位置纹理;

基于所述新尺寸,和所述新尺寸的位置纹理,得到新尺寸的距离纹理。

第二方面,本申请实施例还提供一种使用GPU渲染进行高性能图片杂物消除的装置,包括:

解码加载模块,用于获取并解码用户输入的原图像和杂物标记二值图,加载得到适用于OpenGL渲染的原图纹理和杂物标记二值图纹理;

第一处理模块,用于对所述杂物标记二值图纹理进行向下采样,得到图像纹理数组,并基于所述图像纹理数组,对原图纹理采样,得到目标纹理;

第二处理模块,用于确定目标纹理中每个像素所在块在所述原图纹理中的相似匹配块,并基于相似匹配块对所述目标纹理进行更新,得到最终目标纹理;

第三处理模块,用于基于所述最终目标纹理,编码生成目标图像文件;

输出模块,用于将所述目标图像文件输出。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请的实施例提供的技术方案中,通过输入原图像和杂物标记二值图像,结合基于GPU渲染的图像修复算法,对图像中的杂物区域进行修复,达到图像杂物消除的效果,解决了现有技术中,在对图像杂物就行消除的过程中,会出现大块突兀色块、或存在把图片中其他像素点错误移植的情况,消除效果差的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种使用GPU渲染进行高性能图片杂物消除的方法的流程示意图;

图2为本申请实施例提供的一种使用GPU渲染进行高性能图片杂物消除的装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

为了解决上述问题,本申请提供一种使用GPU渲染进行高性能图片杂物消除的方法和装置,以对图像进行高性能的杂物消除,具体实现方案通过以下实施例进行详细说明。

实施例

参照图1,图1为本申请实施例提供的一种使用GPU渲染进行高性能图片杂物消除的方法的流程示意图,如图1所示,该方法至少包括以下步骤:

S101、获取并解码用户输入的原图像和杂物标记二值图,加载得到适用于OpenGL渲染的原图纹理和杂物标记二值图纹理。

具体的,首先对用户输入的原图像和杂物标记二值图像进行解码得到图像数据,并分别加载成适用于OpenGL渲染的原图纹理P和杂物标记二值图纹理M。其中,杂物标记二值图中1表示杂物区,0表示非杂物区。

S102、对所述杂物标记二值图纹理进行向下采样,直到采样图像纹理数据中无杂物,得到多个分别对应每次采样的图像纹理,并将每次采样得到的图像纹理作为一层数据,组成图像纹理金字塔;其中,所述图像纹理金字塔最低层的图像纹理对应原图尺寸。

具体的,对上述过程得到的杂物标记二值图纹理M不断进行向下采样,在采样过程中,每层图像纹理的尺寸减半,直至当前层的图像纹理数据全为0,该过程包括在每次采样后,对采样得到的结果进行判断,当采样结果中还包括杂物,则继续采样;当采样结果中没有杂物,即图像纹理数据全为0,则停止继续采样。

基于采样结果,得到图像纹理金字塔,其中记录向下采样的次数,即金字塔层数为Level,记录所有层的图像纹理数组为Ms[Level],其中Ms[0]为M,也就是说,图像纹理金字塔的最底层为Ms[0],最高层为杂物标记二值纹理M,即Ms[0],最高层为数据最后一个包含杂物的采样结果。

需要说明的是,图像纹理数组Ms表示的就是上述提到的图像纹理金字塔,为包含了Level个纹理的数组。其中,每个金字塔的一层只有一个纹理,而纹理数组就表示是整个金字塔,包含了所有层。S103、对所述原图纹理进行向下采样,得到尺寸与所述图像纹理金字塔最顶层尺寸相同的目标纹理,并建立所述尺寸的存储有所述目标纹理中每个像素所在块对应的原图纹理中的相似匹配块位置信息的位置纹理,和所述尺寸的存储有所述目标纹理中每个像素所在块和对应原图纹理中的相似匹配块距离信息的距离纹理。

具体的,从图像纹理金字塔最顶层开始,即从L=Level-1开始,定义S为Ms[L]的尺寸。对原图纹理P进行向下采样,指定尺寸为S,得到目标纹理T。需要说明的是,对于纹理中的每个像素点p0,以p0为中心点,指定块半径PR为2,组成一个5*5的块区域,定义为p0点所在块,以下提到的像素所在块均为这样,特此说明。

在得到目标纹理T后,还要生成同样尺寸为S的位置纹理O,用于记录纹理T的每个像素点所在块对应的纹理P中的相似匹配块的位置,以及生成同样尺寸为S的距离纹理D,用于记录纹理T的每个像素点所在块和对应纹理P中的相似匹配块的距离,范围是0-65535,值越小代表越相似。

需要说明的是,块与块之前的距离计算可以通过统计块内所有像素点颜色值的方差得出,其中像素点如果处于杂物标记区域Ms[L]内,则认为距离较远,具体运算方式不做赘述。

另外,在建立位置纹理和距离纹理后,还需要对位置纹理和距离纹理进行初始化,具体过程为:在OpenGL着色器程序中,遍历视口大小为S的所有像素,对每个像素点p11进行以下计算:随机生成一个位置p12作为该像素点的相似匹配块,并更新纹理O值为p12。计算纹理T中p11所在块和纹理P中p12所在块的距离d,并更新纹理D值为d。

S104、从所述图像纹理金字塔最顶层到最底层,基于每层尺寸,执行循环,得到尺寸与原图纹理尺寸相同,并且基于每个像素所在块的最小距离相似匹配块信息更新后的最终目标纹理。

具体的,S104包括S1041:确定所述目标纹理中每个像素所在块在所述原图纹理中对应的距离最小的相似匹配块。

具体的,S10411、定义窗口尺寸为所述目标纹理尺寸的二分之一。如定义窗口半径WR为尺寸S较大值的一半,即WR=max(S.width,S.height)/2。

S10412、以目标纹理中的每一个像素点为中心点,以所述窗口尺寸为半径,得到包括所述像素点的位置点在内的九个窗口位置点。

具体的,在OpenGL着色器程序中,遍历视口大小为S的所有像素,对每个像素点p21进行以下计算:

以p21为窗口中心,WR为窗口半径,计算得出中心(p21.x,p21.y)、左上(p21.x-WR,p21.y-WR)、上(p21.x,p21.y-WR)、右上(p21.x+WR,p21.y-WR)、右(p21.x+WR,p21.y)、右下(p21.x+WR,p21.y+WR)、下(p21.x,p21.y+WR)、左下(p21.x-WR,p21.y+WR)、左(p21.x-WR,p21.y),共九个位置点p2s。

S10413、在所述位置纹理中对九个所述窗口位置点进行采样,得到分别与九个所述窗口位置点对应的九个相似匹配块位置点。具体的,在位置纹理O中这九个位置点p2s进行采样并减去p2s位置点和p21的差值,得到对应相似匹配块的九个位置点为op2s。

S10414、分别计算所述目标纹理中该像素所述在块和所述原图纹理中与所述九个所述窗口位置点和九个所述相似匹配块位置点之间的距离,确定距离最小的位置点。具体的,如分别计算纹理T中p21所在块和纹理P中p2s和op2s十八个点所在块的距离,并比较得出最小距离mind和最小距离所对应的纹理P中的位置minp,确定距离最小的位置点在所述原图纹理中对应的块,为该像素所在块对应的所述原图纹理中距离最小的相似匹配块确定距离最小的相似匹配块。

进一步的,为了提到得到的距离最小的相似匹配块的准确性,在上述过成完成后,还可以再将窗口半径WR减半,即WR=WR/2。如果WR大于0,则基于新的窗口半径继续执行上述中S10411-S10415的过程,继续计算距离最小的相似匹配块从而得到更加准确的数据。

S1042、基于所述距离最小的相似匹配块信息,更新所述位置纹理和所述距离纹理。

具体的,通过上述过程,得到距离最小的相似匹配块,基于距离最小的相似匹配块信息,如该块的位置为minp,距离为mind,则更新位置纹理O值为minp,更新距离纹理D值为mind。

S1043、基于更新后的所述位置纹理和所述距离纹理,更新所述目标纹理。

具体包括:以所述目标纹理中每个目标像素为中心点,预设尺寸为半径创建计算区域;基于所述位置纹理和所述距离纹理,获取所述计算区域内的每一个像素点相似匹配块的位置信息和距离信息;基于所述图像纹理数据、位置信息和距离信息对所述计算区域内的每一个像素点对应的相似匹配块位置颜色值进行加权求和,得到该目标像素位置的颜色值,并将该颜色值更新至所述目标纹理中。

例如,在OpenGL着色器程序中,遍历视口大小为S的所有像素,对每个像素点p31进行以下计算:以p31为中心点,块半径PR为窗口半径,遍历窗口内所有像素点,对每个像素点p32所对应的相似匹配块位置颜色值进行加权求和,初始化总颜色值c3为0,总权重值w3为0,计算如下:

首先,分别在纹理O和纹理D中的p32位置进行采样得到相似块位置p33和距离d31;然后,在纹理Ms[L]中的p33位置进行采样,得到值m3,如果m3为1,则表示处于杂物区,跳过当前像素点的权重值为0;再在纹理P中的p33位置进行采样,得到颜色值c31,权重值w31由距离d31线性变换得出,距离越小,权重越大。更新c3=c3+c31*w31,更新w3=w3+w31。计算出p31位置的颜色值c32=c3/w3。最后,更新纹理T值为c32。

将所述图像纹理金字塔层数改变为当前层数的下一层,得到新的尺寸,对基于所述原图纹理,对所述目标纹理进行向上采样,得到新尺寸的目标纹理,以及对所述位置纹理和所述距离纹理均进行向上采样,得到所述新尺寸的位置纹理和所述新尺寸的距离纹理;

S1044、将所述图像纹理金字塔层数改变为当前层数的下一层,得到新的尺寸,在所述原图纹理中,对所述目标纹理重新进行向上采样,得到新尺寸的目标纹理,以及对所述位置纹理和所述距离纹理均进行向上采样,得到所述新尺寸的位置纹理和所述新尺寸的距离纹理。

在基于图像纹理金字塔顶层完成上述过程后,改变金字塔层数,具体为,使当前金字塔层L减1,即L=L-1,即取当前金字塔层的下一层,得到新的尺寸,对目标纹理T进行向上采样,重新采样得到改变金字塔层数后得到尺寸的目标纹理T,以及同样尺寸的位置纹理O和距离纹理D。

具体的,对于目标纹理T的向上采样包括:更新S为Ms[L]的尺寸,对目标纹理T通过线性过滤的方式进行向上采样,尺寸为S。

对于位置纹理O,通过线性过滤的方式进行向上采样,尺寸为S,具体过程包括:在OpenGL着色器程序中,遍历视口大小为新尺寸S的所有像素,对每个像素点p61进行以下计算:首先,通过p61除以2向下取整,得到纹理O的实际像素位置p62;然后在纹理O的p62位置进行采样,得到p63;最后计算得出纹理O向上采样后的值为p64=p63*2-(p61-p62)。

对于距离纹理D,在上述过程得到新的位置纹理后,计算目标纹理T中p61所在块和原图纹理P中p64所在块的距离d6,并更新位置纹理D值为d6。

也就是说,在基于图像纹理金字塔顶层完成更新目标纹理T后,在该目标纹理T的基础上,改变金字塔层,即取金字塔的次顶层数据,重新进行上述S1041-S1044的过程,进行循环,得到基于次顶层数据更新后的目标纹理T。

可以理解的是,在基于每一层金字塔数据采样、计算和更新得到目标纹理T后,即在更换金字塔层数之前,都要进行循环判断流程。即判断当前层是否为最低层,如果当前金字塔层级为0,即最底层,即该过程得到的目标纹理T为尺寸与原图纹理P尺寸相同,并且基于每个像素所在块的最小距离相似匹配块信息更新后的最终目标纹理,则停止循环,则输入最终纹目标理T。

另外,为了提高最终目标纹理的准确性,还可以每层完成更行目标纹理后,根据当前金字塔层数L重复L*2次S1041-S1043的过程,以保证数据准确性。

S105根据所述循环得到的最终目标纹理,编码生成目标图像文件。

具体的,在得到最终目标纹理后,读取最终目标纹理的图像数据,编码生成JPG或PNG图像文件。

本发明提供的使用GPU渲染进行高性能图片杂物消除的方法,通过输入原图像和杂物标记二值图像,结合基于GPU渲染的图像修复算法,对图像中的杂物区域进行修复,达到图像杂物消除的效果,解决现有技术中,图像杂物消除中,消除效果差的问题。

基于同一个发明构思,本申请实施例还提供一种使用GPU渲染进行高性能图片杂物消除的装置,包括:解码加载模块201、第一处理模块202、第二处理模块203、第三处理模块204和输出模块205。

解码加载模块201,用于获取并解码用户输入的原图像和杂物标记二值图,加载得到适用于OpenGL渲染的原图纹理和杂物标记二值图纹理;

第一处理模块202,用于对所述杂物标记二值图纹理进行向下采样,得到图像纹理数组,并基于所述图像纹理数组,对原图纹理采样,得到目标纹理;

第二处理模块203,用于确定目标纹理中每个像素所在块在所述原图纹理中的相似匹配块,并基于相似匹配块对所述目标纹理进行更新,得到最终目标纹理;

第三处理模块204,用于基于所述最终目标纹理,编码生成目标图像文件。

输出模块205,用于将所述目标图像文件输出。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 使用GPU渲染进行高性能图片杂物消除的方法和装置
  • 一种解决GPU渲染大图片负荷过大的方法和装置
技术分类

06120113806624