1.本申请涉及图像处理技术领域,具体涉及一种去除块效应的方法、装置和计算机可读存储介质。
背景技术:2.目前主流的视频图像/视频编解码技术均采用基于块的编码和量化方式,基于块的编码方式可以对整张图像进行划分使预测更加准确,并且有利于编码并行加速。由于图像中所有块是独立编码的,量化过程是不依赖周边块的,导致邻块与当前块的量化系数互不相关,进而使得相邻两块在边界处的像素会有不连续的情况出现,从而产生方块效应,特别是在低码率下此种现象特别明显,而人眼对此非常敏感,导致主观视觉质量变差。虽然目前一些编解码标准技术采用一些后处理方式(如:区块滤波、样本自适应补偿或自适应滤波等)对重建图像进行处理,使其更加接近原始图,但块效应现象依旧严重,特别是对于码率较低的情况。
技术实现要素:3.本申请提供一种去除块效应的方法、装置和计算机可读存储介质,能够去除块效应,提升编码质量。
4.为解决上述技术问题,本申请采用的技术方案是:提供一种去除块效应的方法,该方法包括:对获取到的当前图像进行边缘增强处理与非边缘平滑处理,生成当前待编码图像;将当前待编码图像划分为多个编码块;从多种预测模式中选取一种预测模式作为待选预测模式;判断待选预测模式是否为产生块效应的预测模式;若待选预测模式为产生块效应的预测模式,则在编码块中存在边缘时,返回从多种预测模式中选取一种预测模式作为待选预测模式的步骤,直至采用待选预测模式对编码块进行预测未产生块效应或编码块中不存在边缘;将待选预测模式记作当前预测模式,利用当前预测模式对当前待编码图像进行处理,得到编码码流。
5.为解决上述技术问题,本申请采用的另一技术方案是:提供一种图像处理装置,该图像处理装置包括互相连接的存储器和处理器,其中,存储器用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述技术方案中的去除块效应的方法。
6.为解决上述技术问题,本申请采用的另一技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述技术方案中的去除块效应的方法。
7.通过上述方案,本申请的有益效果是:在对图像进行编码之前,对当前图像进行边缘增强与非边缘平滑处理,生成当前待编码图像,通过边缘增强与非边缘平滑处理能够降低图像的边缘被破坏的可能性;在编码过程中,判断当前选取的待选预测模式是否为可能产生块效应的预测模式,如果采用待选预测模式进行预测无法产生块效应,则将该待选预测模式作为当前预测模式;如果采用待选预测模式进行预测可能产生块效应且该当前编码
块中存在边缘,则重新选择待选预测模式,直至采用待选预测模式对编码块进行预测未产生块效应或编码块中不存在边缘,结束循环时的待选预测模式即为当前预测模式;最后用当前预测模式对编码块进行处理,得到相应的编码码流;不止在编码之前进行去块效应的图像处理操作,在编码的过程中也进行了去块效应的操作,可以更好地保护边缘,改善图像中的块效应,得到主观质量更佳的图像。
附图说明
8.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:图1是本申请提供的去除块效应的方法一实施例的流程示意图;图2是本申请提供的去除块效应的方法另一实施例的流程示意图;图3是本申请提供的像素点及其周围相邻像素点的示意图;图4是本申请提供的采用时域相关性对图像进行平滑的流程示意图;图5是图4所示的实施例中步骤32的流程示意图;图6是本申请提供的图像处理装置一实施例的结构示意图;图7是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
9.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
10.请参阅图1,图1是本申请提供的去除块效应的方法一实施例的流程示意图,该方法包括:步骤11:对获取到的当前图像进行边缘增强处理与非边缘平滑处理,生成当前待编码图像。
11.为了改善块效应,在编码之前对图像进行边缘增强和非边缘平滑;由于低码率时在解码端进行滤波,可能会把真实的纹理特征平滑掉,而在编码之前对图像处理有一定的实际作用,这是由于许多自然图像是存在噪声的,特别是转码的图像,并且边缘增强可以防止在进行编码预测时边缘处被错误预测,因此本实施例提出对编码之前的图像进行边缘增强和非边缘平滑处理,即对当前图像中的边缘像素进行增强处理,对当前图像中的非边缘像素进行平滑处理,得到当前待编码图像。
12.步骤12:将当前待编码图像划分为多个编码块。
13.在获取到当前待编码图像后,可对该当前待编码图像进行分块,得到多个编码块,以便对每个编码块进行预测、量化以及编码,生成相应的码流。
14.步骤13:从多种预测模式中选取一种预测模式作为待选预测模式。
15.对于每一个编码块来说,为了进行编码,可先从预设的多种预测模式中选出一种
预测模式来进行预测,将挑选出来的预测模式记作待选预测模式,多种预测模式包括:帧内预测模式与帧间预测模式,比如:skip模式、merge模式、inter模式或intra模式。
16.步骤14:判断待选预测模式是否为产生块效应的预测模式。
17.判断利用待选预测模式对当前要进行预测的编码块(记作当前编码块)进行预测时,待选预测模式是否为产生块效应的预测模式,以便在编码的过程消除块效应。
18.步骤15:若待选预测模式为产生块效应的预测模式,则判断编码块中是否存在边缘。
19.如果判断出当前编码块中存在边缘,则返回从多种预测模式中选取一种预测模式作为待选预测模式的步骤,即返回执行步骤13,直至采用待选预测模式对编码块进行预测未产生块效应或编码块中不存在边缘。如果判断出当前编码块中不存在边缘,则表明可以采用该待选预测模式对当前编码块进行预测,执行步骤16。
20.步骤16:将待选预测模式记作当前预测模式,利用当前预测模式对当前待编码图像进行处理,得到编码码流。
21.将满足条件的待选预测模式(即采用该待选预测模式进行预测不会产生块效应,或者虽然采用该待选预测模式进行预测会产生块效应但编码块中不存在边缘)记作当前预测模式,然后利用当前预测模式对当前待编码图像进行处理,生成相应的编码码流。
22.本实施例采用的方案能够应用于图像/视频编解码领域,在对当前图像进行编码之前,对该当前图像进行边缘增强与非边缘平滑处理,生成当前待编码图像,能够降低图像的边缘被破坏的可能性;在编码过程中,判断当前选取的待选预测模式是否为产生块效应的预测模式,如果不是,则将该待选预测模式作为当前预测模式,以对当前编码块进行预测;如果待选预测模式为产生块效应的预测模式且该当前编码块中存在边缘,则需要重新选择待选预测模式,直至满足设定的条件;在编码前与编码过程中均进行了去块效应的图像处理,能够改善去除块效应的效果,进而提高图像主观质量。
23.请参阅图2,图2是本申请提供的去除块效应的方法另一实施例的流程示意图,该方法包括:步骤201:对当前图像进行滤波,得到滤波图像。
24.由于真实图像是存在噪声的,因此为了防止图像的边缘被错误预测,本实施例进行了滤波处理与增强处理,所采用的滤波方式可以为高斯滤波、均值滤波、中值滤波、双边滤波或智能模糊滤波等,下面对这些滤波方法进行介绍。
25.(a)高斯滤波以滤波模板的大小为5
×
5的高斯滤波为例,滤波模板可如下所示:(1)上式(1)中权重“41/273”与当前待滤波的像素点对应,其余权重为当前待滤波的像素周围的像素点的权重。
26.(b)均值滤波
以滤波模板的大小3
×
3的均值滤波为例,滤波表达式如下所示:(2)其中,是当前待滤波的像素点的像素值,是坐标(i,j)处的像素值。
27.(c)中值滤波中值滤波的表达式如下所示:(3)其中,是取所有像素值的中值的函数,p为图像中坐标(i,j)处滤波后的像素值,是坐标(i,j)处的像素值。
28.(d)双边滤波双边滤波的表达式如下所示:(4) (5)其中,和分别表示定义域高斯核大小(即均方差)和值域高斯核大小,(i,j)表示当前待滤波的目标像素点的坐标,(k,l)表示邻域像素点的坐标,为滤波后的像素值,i为原始像素值。
29.(e)智能模糊滤波智能模糊滤波的表达式如下所示:(6)其中,mean( )为求取均值的函数,r表示邻域半径,t是预先设置的当前像素与邻域像素的阈值差,其数值范围为[0, 255]。
[0030]
步骤202:将滤波图像与当前图像相减,得到第一残差图像,并对第一残差图像进行增强处理与滤波处理,得到第二残差图像。
[0031]
对第一残差图像进行边缘检测,得到边缘像素与非边缘像素;对边缘像素进行增
强,并采用上述的任一种滤波方法对非边缘像素进行滤波,得到第二残差图像。
[0032]
进一步地,对第一残差图像进行边缘检测,得到边缘像素点,将边缘像素点的像素值记作边缘像素值,将第一残差图像中剩余的像素值记作非边缘像素值;计算边缘像素点的邻域中所有像素点的均值,基于均值对边缘像素值进行更新,得到第二残差图像。
[0033]
在一具体的实施例中,判断边缘像素值是否大于均值;若边缘像素值大于均值,则将边缘像素值更新为边缘像素值与预设像素值的和;若边缘像素值小于均值,则将边缘像素值更新为边缘像素值与预设像素值的差。
[0034]
例如,以8邻域、预设像素值为2为例进行说明,对于检测到的边缘像素点,将边缘像素值与其周围的八个相邻像素值的均值比较;若边缘像素值大于均值,则将该边缘像素值加2;若边缘像素值小于均值,则将该边缘像素值减2。
[0035]
步骤203:基于第二残差图像与当前图像,生成当前待编码图像。
[0036]
将第二残差图像与滤波图像合并,得到当前待编码图像。
[0037]
步骤204:将当前待编码图像划分为多个编码块。
[0038]
在获取到编码块后,可采用步骤205
‑
步骤209来确定当前预测模式,以产生块效应的预测模式为skip模式为例进行说明,利用时域特征确定是否采用skip模式对当前编码块进行预测。
[0039]
步骤205:计算采用每种预测模式对编码块进行预测对应的率失真优化值,并建立预测模式与对应的率失真优化值之间的映射关系,生成映射表。
[0040]
对于每种预测模式来说,计算采用该预测模式对编码块进行预测产生的率失真优化(rate distortion optimization,rdo)值,然后建立率失真优化值与预测模式之间的映射关系,得到映射表,该映射表中预测模式按照率失真优化值从小到大的顺序排列。
[0041]
步骤206:从多种预测模式中选取一种预测模式作为待选预测模式。
[0042]
步骤206与步骤13相同,在此不再赘述。
[0043]
步骤207:判断待选预测模式是否为skip模式。
[0044]
考虑到在真实编码器中,会设置较低的目标码率或者较高的量化值,在编码过程中,许多编码块趋向于选择句法元素较少的预测模式,比如:skip模式,然而skip模式是直接用相邻块的像素值进行预测,如果边缘像素值被相邻平坦块的预测值覆盖,则造成预测不准确,导致边缘处产生块效应,因此利用时域特征来判断当前编码块是否能够采用skip模式进行预测。
[0045]
步骤208:若待选预测模式为skip模式,则对编码块进行边缘检测,以判定编码块中是否存在边缘。
[0046]
如果待选预测模式为skip模式,则表明在编码后可能出现块效应,为了确定是否能够使用skip模式进行预测,对当前编码块进行边缘检测,来确定该当前编码块中是否存在边缘,根据边缘检测结果来判定是否需要更换预测模式。具体地,若编码块中存在边缘,则返回从多种预测模式中选取一种预测模式作为待选预测模式的步骤,直至待选预测模式不为skip模式或编码块中不存在边缘。若待选预测模式不为skip模式,则将当前预测模式设置为待选预测模式。
[0047]
进一步地,边缘检测算子包括:sobel算子、canny算子或拉普拉斯算子等,下面进行具体描述。
[0048]
a.sobel算子采用如下公式来梯度值:(7)其中,|g|为坐标(x,y)的像素点的梯度值,如果|g|>t1,则表明坐标(x,y)的像素点为边缘像素点,t1为阈值,其值可以为65。
[0049]
b.canny算子利用canny算子进行边缘检测的具体步骤如下:(1)灰度化gray=0.299r+0.587g+0.114b
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)其中,gray是灰度值,r、g、b是色度空间中各分量的值。
[0050]
(2)二维高斯滤波采用如下所示的函数计算滤波模板中的高斯系数:(9)其中,k为高斯系数,是标准差。
[0051]
(3)计算梯度值和梯度方向采用如下公式计算梯度值和方向:(10)其中,m为梯度值,θ为梯度方向。
[0052]
(4)非极大值抑制对当前像素点来说,选取其周围的八个像素点,沿着当前像素点的梯度方向,比较它前后两个像素点的梯度值,然后选择中间梯度值。例如,如图3所示,c为当前像素点,g1、g2、g3、g4为相邻的像素点,d1和d2是沿着当前像素点的梯度方向上的两个亚像素点,则d1、d2的梯度值为:
(11)其中,m( )为求取梯度的函数,distance( )为求取距离的函数,w1和w2为加权系数。
[0053]
(5)双阈值的选取首先统计每个梯度值的数量,得到梯度值的直方图,将占总数量的70%及以上的某一数量对应的梯度值作为高阈值,高阈值的一半为低阈值。
[0054]
(6)边缘检测首先判断该像素点是否超过高阈值,然后在该像素点的8邻域点中寻找满足超过低阈值的像素点,再根据该像素点收集新的边缘像素点,直到整个图像边缘闭合,找完整个图像后,将非边缘点剔除,即将该像素点的灰度值设置为0。
[0055]
c.拉普拉斯算子拉普拉斯算子的计算公式如下:(12)其中,f(x,y)是当前像素点的像素值。
[0056]
步骤209:若编码块中不存在边缘,则将当前预测模式设置为待选预测模式。
[0057]
如果当前编码块中没有边缘,则表明该当前编码块中像素值变化不大,此时采用可能产生块效应的预测模式(比如:skip模式)进行预测也不会造成块效应,因此可直接将该待选预测模式记作当前预测模式。
[0058]
在另一具体的实施例中,可直接计算所有率失真优化值中的最小值,得到率失真优化最小值,并将率失真优化最小值对应的预测模式记作候选预测模式。然后判断该候选预测模式是否为skip模式,如果该候选预测模式是skip模式,则使用边缘检测算法对当前编码块进行检测,若检测到当前编码块中存在边缘,则采用所有率失真优化值中值第二小的预测模式代替skip模式,即当前预测模式为所有率失真优化值中值第二小的预测模式。
[0059]
步骤210:利用当前预测模式对当前待编码图像进行处理,得到编码码流。
[0060]
步骤210与步骤16相同,在此不再赘述。
[0061]
在其他具体的实施例中,由于当前帧与相邻前后几帧有很强的相关性,使用相邻帧中与当前帧相同位置的像素进行滤波,可使前后两帧的图像保持一定的连续性,使码率波动性降低,进一步降低块效应。
[0062]
进一步地,在编码之前采用时域相关性对当前待编码图像块进行平滑,如图4所
示,包括以下步骤:步骤31:获取与当前待编码图像相邻的多帧待编码图像,并按照时间顺序排序,生成待处理图像集。
[0063]
为了对当前待编码图像进行平滑,可获取当前待编码图像之前的相邻多帧待编码图像,然后按照时间先后顺序进行排序,得到待处理图像集,即该待处理图像集包括多帧待编码图像。
[0064]
步骤32:基于待处理图像集对当前待编码图像进行平滑处理。
[0065]
可采用图5所示的方案对当前待编码图像进行平滑处理,具体包括以下步骤:步骤321:将待处理图像集中第一帧待编码图像记作参考图像,并将参考图像的像素值存储到存储器中。
[0066]
将参考图像的所有像素值拷贝到一个临时的存储器中,以便将随后几帧图像的像素值与该存储器中对应位置的像素值进行比较,从而实现对图像的平滑。
[0067]
步骤322:将待处理图像集中除参考图像以外的待编码图像记作待更新图像,并将待更新图像的像素值与存储器中的像素值进行比较,以对待更新图像的像素值/存储器中的像素值进行更新。
[0068]
以待处理图像集包括n(n≥2)帧待编码图像为例,待更新图像即为第2~n帧待编码图像;将第i(2≤i≤n)帧待编码图像的像素值与存储器中的像素值进行比较,以对第i帧待编码图像/存储器中的像素值进行更新。
[0069]
进一步地,从待更新图像中取出一个像素值作为当前像素值;然后计算当前像素值与存储器中相应位置的像素值的差值;再判断差值是否小于预设差值;若该差值小于预设差值,则对存储器中相应位置的像素值更新;若该差值大于预设差值,则对当前像素值进行更新;重复执行上述操作,直至遍历完待更新图像中的所有像素值。
[0070]
在一具体的实施方式中,若当前像素值与存储器中相应位置的像素值的差值小于预设差值,则将存储器中相应位置的像素值更新为当前像素值;若当前像素值与存储器中相应位置的像素值的差值大于预设差值,则认为像素值变化过大,进行处理可能导致图像失真,此时将当前像素值更新为存储器中相应位置的像素值。
[0071]
在另一具体的实施方式中,先计算当前像素值与存储器中相应位置的像素值的平均值;若当前像素值与存储器中相应位置的像素值的差值小于预设差值,则将存储器中相应位置的像素值更新为平均值;若当前像素值与存储器中相应位置的像素值的差值大于预设差值,则将当前像素值更新为平均值。
[0072]
在又一具体的实施方式中,还可设置更新的区域,即对待处理图像集中的每个待编码图像进行边缘检测,得到相应的平坦区域和边缘区域;判断当前像素值是否为平坦区域的像素值;若当前像素值为平坦区域的像素值,则将当前像素值更新为存储器中相应位置的像素值。即仅在平坦区域判定是否需要替换第i帧待编码图像中的像素值,以防止产生拖影。
[0073]
在其他具体的实施方式中,还对当前像素值、当前像素值的邻域像素值以及存储器中相应位置的像素值进行滤波,得到滤波像素值;将存储器中相应位置的像素值更新为滤波像素值;或者将当前像素值更新为滤波像素值。具体地,采用六抽头滤波器对当前像素值、当前像素值的四邻域像素值以及存储器中相应位置的像素值进行滤波;例如:当前像素
值记作p,其四邻域像素值(即位于当前像素值的上侧、下侧、左侧以及右侧的像素值)记作p1、p2、p3、p4,存储器中相应位置的像素值记作p_col,则替换的像素值(即滤波像素值)p’如下所示:p’=0.3*p+0.3*p_col+0.1* p1+0.1* p2+0.1* p3+0.1* p4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)其中,滤波权重[0.3,0.3,0.1,0.1,0.1,0.1]为经验值,可以根据具体应用需要进行设置。
[0074]
可以理解地,上述采用时域相关性对图像块进行平滑的方法并不仅限于在编码之前执行,还可以在编码之后执行,比如:在对编码码流进行解码,得到相应的解码图像后,采用时域相关性对解码图像进行平滑。
[0075]
此外,还可间隔预设周期对存储器中的所有像素值进行更新,比如:间隔固定帧数对存储器中的全部像素值进行更新,以防错误的传递像素值而导致图像失真。以图像组(group of pictures,gop)为例,可将该gop中的关键帧(i帧)设置为第一帧待编码图像。可以理解地,在编码前可以根据预设的gop的大小来判断存储器更新的周期,例如:gop=50,那么存储器中的像素值每50帧全部更新一次,即预设周期为50帧;在编码后,可以根据编码前的gop来更新存储器中的像素值,但实际应用场景中是不知道gop的,所以更新的预设周期可以设置为50帧。
[0076]
本实施例提供了一种去除块效应的方法,在编码之前对图像进行边缘增强和非边缘平滑,通过边缘增强可以降低边缘被破坏的可能性;在进行边缘检测时是对图像滤波后的残差图像进行检测,排除了噪声的干扰,能够更好地区分真实纹理。而且利用时域特征确定是否采用skip模式,能在编码过程中改变编码块的编码模式,使边缘处采用skip模式编码的概率降低,降低边缘处出现块效应的概率。此外,还采用时域相关性对当前图像块进行平滑,可以使图像保持一定的连续性,进一步减少块效应。
[0077]
请参阅图6,图6是本申请提供的图像处理装置一实施例的结构示意图,图像处理装置60包括互相连接的存储器61和处理器62,存储器61用于存储计算机程序,计算机程序在被处理器62执行时,用于实现上述实施例中的去除块效应的方法。
[0078]
本方案在编码之前对图像滤波后的残差图像进行边缘增强和非边缘平滑,有效防止边缘在编码过程中被破坏;且利用时域特征确定是否采用skip模式,降低采用skip模式预测边缘的概率,保护边缘纹理;此外,使用时域相关性对图像进行滤波处理,可以使图像保持一定的连续性,进一步减少块效应。
[0079]
请参阅图7,图7是本申请提供的计算机可读存储介质一实施例的结构示意图,计算机可读存储介质70用于存储计算机程序71,计算机程序71在被处理器执行时,用于实现上述实施例中的去除块效应的方法。
[0080]
计算机可读存储介质70可以是服务端、u盘、移动硬盘、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0081]
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0082]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
[0083]
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0084]
以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。