图片处理的方法、装置、计算机设备及存储介质与流程

文档序号:14269227阅读:158来源:国知局

本申请涉及计算机处理技术领域,特别是涉及一种图片处理的方法、装置、计算机设备及存储介质。



背景技术:

随着图片处理技术的发展,人们对图片质量的要求越来越高。为了节约带宽,一般在网络上传送的图片是经过压缩后的分辨率比较低的图片,当获取到这样的图片后,为了提高图片的清晰度,需要使用插值算法对图片进行超分辨率处理,图片超分辨率是指由一幅低分辨率图像或图像序列恢复出高分辨率图像。

传统的插值算法复杂度高,不能满足用户对图片实时性显示的要求。



技术实现要素:

基于此,有必要针对上述问题,提出一种图片处理效果佳且能够满足实时性显示要求的一种图片处理的方法、装置、计算机设备及存储介质。

一种图片处理的方法,所述方法包括:

获取待处理图像;

将所述待处理图像进行切分得到多个子图像块;

计算每个子图像块对应的模块梯度值;

根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;

将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

一种图片处理的装置,所述装置包括:

获取模块,用于获取待处理图像;

切分模块,用于将所述待处理图像进行切分得到多个子图像块;

模块梯度值计算模块,用于计算每个子图像块对应的模块梯度值;

处理模块,用于根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;

拼接模块,用于将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:获取待处理图像;将所述待处理图像进行切分得到多个子图像块;计算每个子图像块对应的模块梯度值;根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:获取待处理图像;将所述待处理图像进行切分得到多个子图像块;计算每个子图像块对应的模块梯度值;根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

上述图片处理的方法、装置、计算机设备及存储介质,通过将图像分为多个子图像块,计算每个子图像块对应的模块梯度值,然后根据模块梯度值将子图像块进行分类,不同模块类对应不同的图像处理算法,模块类所对应的模块梯度值范围中包含的模块梯度越大,对应的图像处理算法处理得到的子图像块的清晰度越高。模块梯度值反应了对应子图像块的复杂度,模块梯度值越大,说明该子图像块中的细节越多,相应地需要处理效果更好的图像处理算法,而处理效果越好的图像处理算法相应的处理速度越慢,所以针对不同模块类的子图像块采用不同的图像处理算法有利于保证处理效果的同时满足用户实时性的显示需求。

附图说明

图1为一个实施例中图片处理的方法的应用环境图;

图2为一个实施例中图片处理的方法流程图;

图3为一个实施例中采用卷积神经网络算法和双三次插值算法分别对不同子图像块处理的方法示意图;

图4为一个实施例中采用与第一模块类对应的第一图像处理算法对子图像块进行超分辨率处理的方法流程图;

图5为一个实施例中图像超分辨处理模型的结构示意图;

图6为一个实施例中将待处理图像进行切分得到多个子图像块的方法流程图;

图7为另一个实施例中图片处理的方法流程图;

图8为一个实施例中图片处理的方法流程示意图;

图9为又一个实施例中图片处理的方法流程图;

图10为再一个实施例中图片处理的方法流程图;

图11为一个实施例中图片处理的装置的结构框图;

图12为一个实施例中处理模块的结构框图;

图13为另一个实施例中图片处理的装置的结构框图;

图14为又一个实施例中图片处理的装置的结构框图;

图15为再一个实施例中图片处理的装置的结构框图;

图16为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中图片处理的方法的应用环境图。参照图1,该图片处理的方法应用于图片处理的系统。该图片处理的系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。具体地,终端110获取服务器120下发的待处理图像,将待处理图像进行切分得到多个子图像块,计算每个子图像块对应的模块梯度值,根据模块梯度值将子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对子图像块进行超分辨率处理,模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高,将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

如图2所示,在一个实施例中,提供了一种图片处理的方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该图片处理的方法具体包括如下步骤:

步骤s202,获取待处理图像。

其中,待处理图像是指需要进行超分辨率处理的图片。为了节省带宽,一般在网络上传输的图片都是经过压缩后的低分辨率的图像,终端接收到服务器发送的图像后,为了满足用户对图像清晰度的显示要求,需要将获取到的图像进行超分辨率处理,超分辨率处理是指将一幅低分辨率图像或图像序列恢复出高分辨率图像。

步骤s204,将待处理图像进行切分得到多个子图像块。

其中,子图像块是指划分得到的待处理图像的子区域。具体地,按照预设的规则将待处理图像进行切分得到多个子图像块。在一个实施例中,可以针对图像不同位置切分得到多个不同大小的子图像块,比如,由于图像边缘的细节较多,针对图像边缘可以切分较小的子图像块,而图像中间区域的细节较少,可以切分为较大的子图像块。在另一个实施例中,将待处理图像按照预设的分块数切分为大小规格相同的多个子图像块。图像尺寸是以长度和宽度的乘积来表示的,其中,长度和宽度是以像素为单位的,比如,对于100x100的图像,分为100个子图像块,每个子图像块为10x10。

步骤s206,计算每个子图像块对应的模块梯度值。

其中,模块梯度值是指子图像块所对应的梯度值,等于子图像块中每个像素的像素梯度值之和。比如,假设一个子图像块中包含有1000个像素,那么该子图像块的模块梯度就等于这1000个像素的像素梯度值之和。模块梯度值反映了子图像块中图像的复杂度,模块梯度值越大,说明该子图像块包含的细节越多,比如,图像边缘的梯度值往往比较大。在一个实施例中,为了快速地计算待处理图像中每个像素的像素梯度值,在将待处理图像进行切分得到多个子图像块之前,将待处理图像送入拉普拉斯滤波器,计算得到每个像素的像素梯度值。在另一个实施例中,也可以在切分得到多个子图像块之后,计算子图像块中每个像素的像素梯度值,然后计算得到子图像块对应的模块梯度值。

步骤s208,根据模块梯度值将子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对子图像块进行超分辨率处理,模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高。

其中,预先根据模块梯度值分为多个模块类,组成模块类集合。模块类集合中包含有多个模块类,且每个模块类对应有相应的模块梯度值范围。不同的模块类对应不同的模块梯度值范围,且每个模块类对应的模块梯度值范围不重合,即一个模块梯度值只可能匹配到一个模块类。

不同的模块类对应不同的图像处理算法,图像处理算法用于对子图像块进行超分辨处理。模块类对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高。不同图像处理算法处理得到的子图像块的清晰度不同,一般来说,处理效果越好的图像处理算法,相应的处理速度越慢。为了既能够保证用户对清晰度的要求,又能满足实时性显示的要求,将多个图像处理算法结合起来使用,对于模块梯度大的子图像块,其包含的细节较多,而人们在观看图片时,由于视野有限,往往更加关注细节突出的局部,所以对应细节较多的子图像块(即模块梯度值较大的子图像块),采用清晰度较高的图像处理算法,而对于细节较少的子图像块,则采用清晰度较低的图像处理算法,由于清晰度较高的图像处理算法的处理速度较慢,而清晰度较低的图像处理算法的速度比较快,采用结合处理的方式,既可以满足用户对清晰度的要求,又能满足实时性显示的要求。

在一个实施例中,可以预先根据模块梯度值将子图像块分为三个模块类。比如,将模块梯度值在(0,60]范围内的子图像块作为第一模块类,将模块梯度值在(60,80]范围内子图像块作为第二模块类,将模块梯度值在(80,+∞)范围内的子图像块作为第三模块类。其中,第一模块类对应的图像处理算法为双平方插值算法,第二模块类对应的图像处理算法为双三次插值算法,第三模块类对应的图像处理算法为卷积神经网络算法。其中,在清晰度方面,卷积神经网络算法的处理效果优于双三次插值算法的处理效果,双三次插值算法的处理效果优于双平方插值算法。在处理速度方面,双平方插值算法最快,双三次插值算法次之,卷积神经网络算法最慢。根据子图像块的模块梯度值进行分类后,分别采用对应的图像处理算法对相应的子图像块进行处理,通过将三种图像处理算法结合,既可以满足用户对局部清晰度的要求,又能满足实时性显示的要求。

步骤s210,将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

其中,目标图像是指处理得到的高分辨率的图像。将各个子图像块分别采用对应的图像处理算法进行超分辨率处理后,得到的子图像块为高分辨率子图像块,将各个子图像块按照切分前的位置进行拼接,即将切分得到的子图像块按照原来所在的位置进行拼接,得到完整的处理后的高分辨率图像。在一个实施例中,为了使得拼接后的图像更自然,还需要对各个子图像块的拼接处进行羽化处理,使其平滑过渡。

上述图片处理的方法,通过将图像分为多个子图像块,计算每个子图像块对应的模块梯度值,然后根据模块梯度值将子图像块进行分类,不同模块类对应不同的图像处理算法,模块类所对应的模块梯度值范围中包含的模块梯度越大,对应的图像处理算法处理得到的子图像块的清晰度越高。模块梯度值反应了对应子图像块的复杂度,模块梯度值越大,说明该子图像块中的细节越多,相应地需要处理效果更好的图像处理算法,而处理效果越好的图像处理算法相应的处理速度越慢,所以针对不同模块类的子图像块采用不同的图像处理算法有利于保证处理效果的同时满足用户实时性的显示需求。

在一个实施例中,根据模块梯度值将子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对子图像块进行超分辨率处理,模块类集合中各个模块类分别对应不同的模块梯度值范围的步骤包括:当子图像块的模块梯度值大于预设梯度值时,则将子图像块分类到第一模块类,采用与第一模块类对应的第一图像处理算法对子图像块进行超分辨率处理;当子图像块的模块梯度值不大于预设梯度值时,则将子图像块分类到第二模块类,采用与第二模块类对应的第二图像处理算法对子图像块进行超分辨处理,其中,第一图像处理算法处理得到的清晰度比第二图像处理算法处理得到的清晰度高。

其中,可以预先根据模块梯度值将子图像块分为二个模块类,即第一模块类和第二模块类。将模块梯度值大于预设梯度值的子图像块分类到第一模块类,将模块梯度值不大于预设梯度值的子图像块分类到第二模块类。第一模块类对应第一图像处理算法,第二模块类对应第二图像处理算法,且第一图像处理算法处理得到的清晰度优于第二图像处理算法处理得到的清晰度,但是,第一图像处理算法的处理速度小于第二图像处理算法的处理速度。

在一个实施例中,第一图像处理算法为卷积神经网络算法,第二图像处理算法为双三次插值算法。

其中,卷积神经网络算法是一种深度学习的超分辨率技术,通过采用卷积神经网络算法建立图像超分辨率处理模型。通过图像超分辨率处理模型来对图像进行超分辨率处理,具体地,将子图像块输入训练好的图像超分辨率处理模型,输出处理后的超分辨率子图像块。图像超分辨率处理模型的建立可以使用vdsr(verydeepsuper-resolution,深度超分辨率)、fsrcnn(fastsuper-resolutionconvolutionalneuralnetworks快速超分辨率卷积神经网络)等深度学习模型。该卷积神经网络算法比一般的传统的插值算法(比如,双三次插值算法)的处理效果更佳,但是由于需要大量的卷积运算所以一般比较费时,如果单独使用该方法无法满足实时性的要求。双三次插值算法是一种可以快速进行插值的方法,但是其处理效果不如卷积神经网络算法。通过将两者结合可以既保证处理效果又保证实时性。对于细节较多的局部使用卷积神经网络处理,保证足够多的细节,不会降低用户感官体验,而对于细节较少的局部,可以使用双三次插值(bicubic)算法,保证速度较快,保证实时性。如图3所示,为一个实施例中,采用卷积神经网络算法和双三次插值算法分别对不同子图像块处理的方法示意图。

如图4所示,在一个实施例中,采用与第一模块类对应的第一图像处理算法对子图像块进行超分辨率处理的步骤包括:

步骤s208a,将子图像块进行双三次插值得到目标子图像块。

其中,与第一模块类对应的第一图像处理算法为卷积神经网络算法。在使用图像超分辨率处理模型对子图像块处理之前,首先,对子图像块进行预处理,具体地,对子图像块先进行双三次插值放大,放大到所需尺寸,得到一个模糊的高分辨率图块,即目标子图像块。

步骤s208b,将目标子图像块作为已训练的图像超分辨率处理模型的输入,获取输出的处理后的目标子图像块,图像超分辨率处理模型是采用卷积神经网络算法训练得到的。

具体地,图像超分辨率处理模型用于对输入的目标子图像块进行超分辨率处理。其中,图像超分辨率处理模型是采用卷积神经网络算法得到。为了能够对子图像块进行更好的超分辨率处理,在一个实施例中,提出了一种处理速度更快的图像超分辨率处理模型。如图5所示,该图像超分辨率处理模型分为八层,其中,最后一层包含一层卷积层,除最后一层外,其他7层每层包含一层卷积层和激活函数层。该图像超分辨率处理模型的输入为进行双三次插值得到的目标子图像块。其中,经卷积层处理后得到的是特征图(featuremap),第2到7层交替使用1x1,3x3的卷积层,保持特征图尺寸不变(即不损失分辨率)的前提下大幅增加非线性特性,有利于减少运算量。激活函数层可以采用relu(rectifiedlinearunits,修正线性单元)激活函数。

在一个实施例中,在获取待处理图像的步骤之后还包括:计算待处理图像中每个像素对应的像素梯度值;计算每个子图像块对应的模块梯度值的步骤包括:根据每个子图像块包含的像素对应的像素梯度值计算得到每个子图像块的模块梯度值。

其中,在获取待处理图像的步骤之后,计算待处理图像中每个像素对应的像素梯度值。像素梯度值的计算有多种算法,通过像素梯度值的计算可以用来检查边缘。因为边缘的细节较多,对应的像素梯度值比较大。为了能够更快速地计算得到待处理图像中每个像素对应的像素梯度值,在一个实施例中,将待处理图像送入拉普拉斯滤波器,通过拉普拉斯滤波器来计算得到每个像素的像素梯度值。由于子图像块是由一个个像素组成的,所以在计算得到每个像素的像素值后,获取每个子图像块包含的像素,然后将同一子图像块中的像素梯度值进行累加得到模块梯度值。模块梯度值反映了该子图像块中图像的复杂度,模块梯度值越大,说明子图像块包含的细节越多。

在一个实施例中,计算待处理图像中每个像素对应的像素梯度值的步骤包括:获取待处理图像中每个像素的像素值和位置坐标;根据每个像素的像素值和位置坐标进行微分计算得到每个像素对应的像素梯度值。

其中,待处理图像是由一个个像素构成的。每个像素都对应有相应的像素值和位置坐标。在获取到待处理图像中每个像素的像素值和位置坐标后,就可以根据像素的像素值和位置坐标进行微分计算得到每个像素对应的像素梯度值。在一个实施例中,假设i是图像像素的值,(i,j)为像素的坐标。像素梯度值可以表示为:g(x,y)=dx(i,j)+dy(ij);dx(i,j)=i(i+1,j)-i(i,j);dy(i,j)=i(i,j+1)-i(i,j)。在另一实施例中,像素梯度值还可以采用中值差分计算得到:dx(i,j)=[i(i+1,j)-i(i-1,j)]/2;dy(i,j)=[i(i,j+1)-i(i,j-1)]/2。

如图6所示,在一个实施例中,将待处理图像进行切分得到多个子图像块的步骤s204包括:

步骤s204a,获取待处理图像的尺寸,获取当前处理设备的cpu核数。

其中,待处理图像的尺寸是指待处理图像的分辨率,一般表示为长度和宽度的乘积,以像素为单位,比如,800x600表示图像的尺寸。cpu核数是指当前处理设备的cpu核数,核数越多,同一时间可以并行计算的线程越多。

步骤s204b,根据待处理图像的尺寸和cpu核数确定分块数。

其中,对待处理图像进行分块处理的分块数是由待处理图像的尺寸和中央处理器cpu核数来确定的。待处理图像的尺寸越大相应需要切分的分块数越多,cpu核数越多,相应的分块数越多。即分块数与待处理图像的尺寸成正相关,与cpu核数也成正相关。具体地,分块数与待处理图像的尺寸以及cpu核数的具体关系可以自定义,比如,将小于600x600图像的切分为36个子图像块,将大于或等于600x600,小于1000x1000图像的切分为10*10个子图像块等。而分块数n*n中的n可以设置为cpu核数的倍数,比如,可以是2或4的倍数。举个例子,如果cpu核数为2,那么n可以为4,6,8等。

步骤s204c,根据分块数平均切分待处理图像,得到与分块数相同个数的子图像块,每个子图像块的规格大小相同。

其中,确定了分块数后,根据分块数平均切分待处理图像,得到与分块数相同个数的子图像块,即每个子图像块的规格大小相同。将待处理图像进行均分,有利于后续计算每个子图像块的模块梯度值,然后根据模块梯度值来选择相应的图像处理算法。因为基于同样大小的子图像块,有利于采用同一标准对模块梯度值进行比较,从而确定子图像块中是否包含有较多细节,然后选择合适的图像处理算法进行超分辨率处理。

如图7所示,在一个实施例中,上述图片处理的方法还包括:

步骤s212,根据cpu核数初始化线程池,线程池中包含有与cpu核数相同个数的线程。

具体地,首先进行硬件检测,获取cpu核数,根据cpu核数初始化线程池,线程池中包含有与cpu核数相同个数的线程,即一个cpu核数对应一个线程。

根据目标模块类对应的图像处理算法对子图像块进行超分辨率处理的步骤s208包括:将每个子图像块封装为一个独立的任务,从线程池中获取待启动的线程根据子图像块所属的模块类采用对应的图像处理算法对子图像块进行超分辨率处理。

其中,采用线程对子图像块处理前,需要将每个子图像块封装为一个独立的任务单元,然后送入线程池。上层sdk(softwaredevelopmentkit,软件开发工具包)可根据线程资源所处状态(即空闲、占用的状态)从线程池获取待装载线程进行超分辨率处理,多个线程可以并行执行。各个子图像块进行超分辨率完成后,各线程分别被线程池回收,作为后续其他子图像块的工作线程资源。最后,在sdk层面将各个处理后的子图像块进行拼接,得到完成的目标图像。在一个实施例中,可以采用同构计算系统并发执行相应的计算,提高相应的计算效率。

在一个实施例中,将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像的步骤s210包括:获取各个子图像块对应的位置标识,根据位置标识将各个子图像块进行拼接,得到拼接图像;对拼接图像中各个子图像块的拼接处进行平滑处理,得到目标图像。

具体地,位置标识用于唯一标识一个子图像块在原来图像中的位置。根据位置标识将各个子图像块进行拼接,然后得到拼接图像,由于拼接图像的拼接处可能会不够自然,所以还需要对各个子图像块的拼接处进行平滑处理(比如,进行羽化),然后得到目标图像。目标图像即为处理后的高分辨率的图像。

如图8所示,为一个实施例中,对图片处理的方法流程示意图。如图8所示,左边首先是输入待处理图像,然后对待处理图像进行切分得到多个子图像块,然后计算每个子图像块的模块梯度值,之后,根据模块梯度值进行分类,然后将每个子图像块封装为一个个独立的任务,交接给右边的线程池中一个待装载的线程。右边首先是检测硬件获取cpu核数,根据cpu核数初始化线程池,当线程池接收到任务后,开始调用待装载线程根据子图像块的类别采用对应的图像处理算法进行超分辨率处理计算,处理完毕后,回收线程到线程池。最后,进行子图像块的拼接,通过平滑处理得到目标图像。

如图9所示,在一个实施例中,上述图片处理的方法还包括:

步骤s203,判断待处理图像对应的需求时间是否大于预设时间阈值,若是,则进入步骤s214,若否,则进入步骤s204。

具体地,对于实时性要求高的场景,可直接在终端对图像进行超分辨率处理,而对于实时性要求不高的场景,为了减少终端的负担,可以将图像上传到服务器,指示服务器来使用上述图片处理的方法对待处理图像进行超分辨率处理,然后接收返回的处理后的目标图像。所以获取到待处理图像后,还需要进一步判断待处理图像对应的需求时间是否大于预设时间阈值(比如,30s),即判断待处理图像是否要求实时性,如果大于预设时间阈值,则可以将待处理图像发送给服务器进行超分辨率处理。如果不大于预设时间阈值,则直接在终端本地对待处理图像进行处理,进入对待处理图像进行切分得到多个子图像块的步骤。

步骤s214,将待处理图像发送给服务器,指示服务器对待处理图像进行超分辨率处理,接收服务器返回的处理后的目标图像。

具体地,在服务器中也安装了该图片处理的方法的程序,即服务器也可以执行上述图片处理的方法。为了减少终端的负担,如果待处理图像对应的需求时间大于预设时间阈值,则说明该待处理图像对实时性要求不高,可以将该待处理图像发送给服务器,服务器对待处理图像进行切分得到多个子图像块,然后计算子图像块的模块梯度值,根据模块梯度值分别采用不同的图像处理算法对子图像块进行超分辨率计算,得到处理后的子图像块,然后拼接得到目标图像。将处理得到的目标图像返回给终端。

如图10所示,在一个实施例中,提出了一种图片处理的方法,该方法包括:

步骤s1001,获取待处理图像。

步骤s1002,计算待处理图像中每个像素对应的像素梯度值。

步骤s1003,获取待处理图像的尺寸,获取当前处理设备的cpu核数。

步骤s1004,根据待处理图像的尺寸和cpu核数确定分块数。

步骤s1005,根据分块数平均切分待处理图像,得到与分块数相同个数的子图像块,每个子图像块的规格大小相同。

步骤s1006,根据每个子图像块包含的像素对应的像素梯度值计算得到每个子图像块的模块梯度值。

步骤s1007,判断子图像块的模块梯度值是否大于预设梯度值,若是,则进入步骤s1008,若否,则进入步骤s1009。

步骤s1008,将子图像块分类到第一模块类,采用与第一模块类对应的第一图像处理算法对子图像块进行超分辨率处理。

步骤s1009,将子图像块分类到第二模块类,采用与第二模块类对应的第二图像处理算法对子图像块进行超分辨处理,其中,第一图像处理算法处理得到的清晰度比第二图像处理算法处理得到的清晰度高。

步骤s1010,获取各个子图像块对应的位置标识,根据位置标识将各个子图像块进行拼接,得到拼接图像。

步骤s1011,对拼接图像中各个子图像块的拼接处进行平滑处理,得到目标图像。

在一个视频直播的应用场景中,用户通过第一终端进行视频采集,为了节省传输的带宽,首先,在第一终端将该直播视频进行压缩,比如,采用卷积运算对直播视频进行压缩处理,得到压缩后的直播视频(压缩后的直播视频降低了占用的空间,但是同时也降低了视频的质量)。然后将压缩后的直播视频发送到观看直播视频的第二终端,第二终端接收到压缩后的直播视频后,为了能够观看到清晰度(质量)比较高的视频,可以采用上述图片处理的方法实时对直播视频进行超分辨率处理得到清晰度比较高的视频。具体地,视频是由一帧帧的图片组成的,采用上述图片处理方式对一帧帧的视频图像分块,然后根据子图像块的模块梯度值,采用不同的图像处理算法对子图像块进行超分辨率处理。

在一个空间相册的应用场景中,为了节省带宽,同时也为了节省空间相册的存储空间。将压缩后的图片上传到空间相册进行存储。当用户通过终端查看空间相册中的图片时,尤其是想要放大查看图片细节时,可以采用上述图片处理的方法实时地对图片进行超分辨率处理,从而为用户实时地呈现高清的图片效果。举个例子,假设原始图片为1600x1600,将图片压缩为400x400,即压缩到了原来的25%,将压缩后的图片上传的空间相册,不仅节省了75%的带宽,而且节省了75%的存储空间。在通过终端查看空间相册中的图片时,采用上述图片处理方法对压缩图片进行超分辨率处理,使其呈现1600x1600的图片效果。这样,不仅节省了带宽,节省了存储空间,同时也不会影响到用户观看图片时的效果。

应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

如图11所示,在一个实施例中,提出了一种图片处理的装置,该装置包括:

获取模块1102,用于获取待处理图像。

切分模块1104,用于将所述待处理图像进行切分得到多个子图像块。

模块梯度值计算模块1106,用于计算每个子图像块对应的模块梯度值。

处理模块1108,用于根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高。

拼接模块1110,用于将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

如图12所示,在一个实施例中,所述处理模块1108包括:

第一处理模块1108a,用于当所述子图像块的模块梯度值大于预设梯度值时,则将所述子图像块分类到第一模块类,采用与所述第一模块类对应的第一图像处理算法对所述子图像块进行超分辨率处理。

第二处理模块1108b,用于当所述子图像块的模块梯度值不大于预设梯度值时,则将所述子图像块分类到第二模块类,采用与所述第二模块类对应的第二图像处理算法对所述子图像块进行超分辨处理,其中,所述第一图像处理算法处理得到的清晰度比第二图像处理算法处理得到的清晰度高。

在一个实施例中,所述第一图像处理算法为卷积神经网络算法,所述第二图像处理算法为双三次插值算法。

在一个实施例中,所述第一处理模块还用于将所述子图像块进行双三次插值得到目标子图像块。将所述目标子图像块作为已训练的图像超分辨率处理模型的输入,获取输出的处理后的目标子图像块,所述图像超分辨率处理模型是采用卷积神经网络算法训练得到的。

如图13所示,在一个实施例中,上述图像处理的装置还包括:

像素梯度值计算模块1103,用于计算所述待处理图像中每个像素对应的像素梯度值。

所述模块梯度值计算模块1104还用于根据每个子图像块包含的像素对应的像素梯度值计算得到每个子图像块的模块梯度值。

在一个实施例中,所述像素梯度值计算模块还用于获取所述待处理图像中每个像素的像素值和位置坐标,根据所述每个像素的像素值和位置坐标进行微分计算得到每个像素对应的像素梯度值。

在一个实施例中,所述切分模块还用于获取所述待处理图像的尺寸,获取当前处理设备的cpu核数。根据所述待处理图像的尺寸和所述cpu核数确定分块数。根据所述分块数平均切分所述待处理图像,得到与所述分块数相同个数的子图像块,每个子图像块的规格大小相同。

如图14所示,在一个实施例中,上述图片处理的装置还包括:

初始化模块1107,用于根据所述cpu核数初始化线程池,所述线程池中包含有与所述cpu核数相同个数的线程。

所述处理模块1108还用于将每个子图像块封装为一个独立的任务,从所述线程池中获取待启动的线程根据所述子图像块所属的模块类采用对应的图像处理算法对所述子图像块进行超分辨率处理。

在一个实施例中,所述拼接模块还用于获取各个子图像块对应的位置标识,根据所述位置标识将各个子图像块进行拼接,得到拼接图像。对所述拼接图像中各个子图像块的拼接处进行平滑处理,得到目标图像。

如图15所示,在一个实施例中,上述图片处理的装置还包括:

发送模块1112,用于当所述待处理图像对应的需求时间大于预设时间阈值时,则将所述待处理图像发送给服务器,指示所述服务器对所述待处理图像进行超分辨率处理。

接收模块1114,用于接收服务器返回的处理后的目标图像。

图16示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110、也可以是图1中的服务器120。如图16所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现图片处理的方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行图片处理的方法。本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的图片处理的装置可以实现为一种计算机程序的形式,计算机程序可在如图16所示的计算机设备上运行。计算机设备的存储器中可存储组成该图片处理的装置的各个程序模块,比如,图11所示的获取模块1102、切分模块1104、模块梯度值计算模块1106、处理模块1108、拼接模块1110。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的图片处理的方法中的步骤。例如,图16所示的计算机设备可以通过如图11所示的图片处理的装置中获取模块1102获取待处理图像;通过切分模块1104将所述待处理图像进行切分得到多个子图像块;通过模块梯度值计算模块1106计算每个子图像块对应的模块梯度值;通过处理模块1108根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;通过拼接模块1110将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

在一个实施例中,提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:获取待处理图像;将所述待处理图像进行切分得到多个子图像块;计算每个子图像块对应的模块梯度值;根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

在一个实施例中,所述根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围的步骤包括:当所述子图像块的模块梯度值大于预设梯度值时,则将所述子图像块分类到第一模块类,采用与所述第一模块类对应的第一图像处理算法对所述子图像块进行超分辨率处理;当所述子图像块的模块梯度值不大于预设梯度值时,则将所述子图像块分类到第二模块类,采用与所述第二模块类对应的第二图像处理算法对所述子图像块进行超分辨处理,其中,所述第一图像处理算法处理得到的清晰度比第二图像处理算法处理得到的清晰度高。

在一个实施例中,所述第一图像处理算法为卷积神经网络算法,所述第二图像处理算法为双三次插值算法。

在一个实施例中,所述采用与所述第一模块类对应的第一图像处理算法对所述子图像块进行超分辨率处理的步骤包括:将所述子图像块进行双三次插值得到目标子图像块;将所述目标子图像块作为已训练的图像超分辨率处理模型的输入,获取输出的处理后的目标子图像块,所述图像超分辨率处理模型是采用卷积神经网络算法训练得到的。

在一个实施例中,所述处理器在执行所述获取待处理图像的步骤之后,还用于执行以下步骤:计算所述待处理图像中每个像素对应的像素梯度值;所述计算每个子图像块对应的模块梯度值的步骤包括:根据每个子图像块包含的像素对应的像素梯度值计算得到每个子图像块的模块梯度值。

在一个实施例中,所述计算所述待处理图像中每个像素对应的像素梯度值的步骤包括:获取所述待处理图像中每个像素的像素值和位置坐标;根据所述每个像素的像素值和位置坐标进行微分计算得到每个像素对应的像素梯度值。

在一个实施例中,将所述待处理图像进行切分得到多个子图像块的步骤包括:获取所述待处理图像的尺寸,获取当前处理设备的cpu核数;根据所述待处理图像的尺寸和所述cpu核数确定分块数;根据所述分块数平均切分所述待处理图像,得到与所述分块数相同个数的子图像块,每个子图像块的规格大小相同。

在一个实施例中,所述处理器在执行所述计算机程序时,还用于执行以下步骤:根据所述cpu核数初始化线程池,所述线程池中包含有与所述cpu核数相同个数的线程;所述根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理的步骤包括:将每个子图像块封装为一个独立的任务,从所述线程池中获取待启动的线程根据所述子图像块所属的模块类采用对应的图像处理算法对所述子图像块进行超分辨率处理。

在一个实施例中,所述将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像的步骤包括:获取各个子图像块对应的位置标识,根据所述位置标识将各个子图像块进行拼接,得到拼接图像;对所述拼接图像中各个子图像块的拼接处进行平滑处理,得到目标图像。

在一个实施例中,所述处理器在执行所述计算机程序时,还用于执行以下步骤:当所述待处理图像对应的需求时间大于预设时间阈值时,则将所述待处理图像发送给服务器,指示所述服务器对所述待处理图像进行超分辨率处理;接收服务器返回的处理后的目标图像。

在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:获取待处理图像;将所述待处理图像进行切分得到多个子图像块;计算每个子图像块对应的模块梯度值;根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围,其中,模块类所对应的模块梯度值范围中包含的模块梯度值越大,对应的图像处理算法处理得到的子图像块的清晰度越高;将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像。

在一个实施例中,所述根据所述模块梯度值将所述子图像块分类到模块类集合中对应的目标模块类,根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理,所述模块类集合中各个模块类分别对应不同的模块梯度值范围的步骤包括:当所述子图像块的模块梯度值大于预设梯度值时,则将所述子图像块分类到第一模块类,采用与所述第一模块类对应的第一图像处理算法对所述子图像块进行超分辨率处理;当所述子图像块的模块梯度值不大于预设梯度值时,则将所述子图像块分类到第二模块类,采用与所述第二模块类对应的第二图像处理算法对所述子图像块进行超分辨处理,其中,所述第一图像处理算法处理得到的清晰度比第二图像处理算法处理得到的清晰度高。

在一个实施例中,所述第一图像处理算法为卷积神经网络算法,所述第二图像处理算法为双三次插值算法。

在一个实施例中,所述采用与所述第一模块类对应的第一图像处理算法对所述子图像块进行超分辨率处理的步骤包括:将所述子图像块进行双三次插值得到目标子图像块;将所述目标子图像块作为已训练的图像超分辨率处理模型的输入,获取输出的处理后的目标子图像块,所述图像超分辨率处理模型是采用卷积神经网络算法训练得到的。

在一个实施例中,所述处理器在执行所述获取待处理图像的步骤之后,还用于执行以下步骤:计算所述待处理图像中每个像素对应的像素梯度值;所述计算每个子图像块对应的模块梯度值的步骤包括:根据每个子图像块包含的像素对应的像素梯度值计算得到每个子图像块的模块梯度值。

在一个实施例中,所述计算所述待处理图像中每个像素对应的像素梯度值的步骤包括:获取所述待处理图像中每个像素的像素值和位置坐标;根据所述每个像素的像素值和位置坐标进行微分计算得到每个像素对应的像素梯度值。

在一个实施例中,将所述待处理图像进行切分得到多个子图像块的步骤包括:获取所述待处理图像的尺寸,获取当前处理设备的cpu核数;根据所述待处理图像的尺寸和所述cpu核数确定分块数;根据所述分块数平均切分所述待处理图像,得到与所述分块数相同个数的子图像块,每个子图像块的规格大小相同。

在一个实施例中,所述处理器在执行所述计算机程序时,还用于执行以下步骤:根据所述cpu核数初始化线程池,所述线程池中包含有与所述cpu核数相同个数的线程;所述根据目标模块类对应的图像处理算法对所述子图像块进行超分辨率处理的步骤包括:将每个子图像块封装为一个独立的任务,从所述线程池中获取待启动的线程根据所述子图像块所属的模块类采用对应的图像处理算法对所述子图像块进行超分辨率处理。

在一个实施例中,所述将处理后的各个子图像块按照切分前的位置进行拼接得到目标图像的步骤包括:获取各个子图像块对应的位置标识,根据所述位置标识将各个子图像块进行拼接,得到拼接图像;对所述拼接图像中各个子图像块的拼接处进行平滑处理,得到目标图像。

在一个实施例中,所述处理器在执行所述计算机程序时,还用于执行以下步骤:当所述待处理图像对应的需求时间大于预设时间阈值时,则将所述待处理图像发送给服务器,指示所述服务器对所述待处理图像进行超分辨率处理;接收服务器返回的处理后的目标图像。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1