一种移动播放端实时视频画质增强方法及系统与流程

文档序号:16885674发布日期:2019-02-15 22:37阅读:441来源:国知局
一种移动播放端实时视频画质增强方法及系统与流程

本发明涉及播放器产品,特别是一种移动播放端实时视频画质增强方法及系统。



背景技术:

随着手机等移动终端的普及,人们越来越习惯用手机等移动终端观看网络视频。人们观看视频时,视频画质主要受到下面的因素影响:1.受视频拍摄质量和后期制作的因素影响,其中包括拍摄器材的因素、拍摄环境的因素、有损的后期剪辑等;2.网络视频服务商会将原始视频(指只经拍摄和后期处理后的视频)转码成不同码率供用户选择,转码过程会对视频进行有损压缩,转码后的视频质量相比原始视频会有下降。

为了改进视频图象的质量,提升用户的播放观看体验,在播放端会对视频图像进行图像增强处理,常见的图像增强处理包括对比度调整、色彩调整、滤波、饱和度调整、细节增强、边缘增强等操作。在实际的增强处理中通常会综合上述多种算法,以达到更好的增强效果。但是图像增强算法都比较耗时,综合多种算法后,增强处理的实时性很难保证。

增强技术在对细节增强和对图像通透度上增加的同时,也会将图像本来的的画质缺陷放大。而当这种画质缺陷如果是出现在人眼敏感区域(比如字幕区域),放大后会加重观看的不适感。

通常的增强算法都是放在服务器端,处理器的性能都比较好,容易满足实时性的要求,而手机等移动终端,处理器性能比较差,如何实时完成增强和播放是一个难题。

现有技术研究情况:

(1)cn102811354b,一种视频画质增强播放方法及点播终端。该方法属于一致性增强方法,即对整帧图像采用相同的增强方案,没有考虑增强带来的不利影响。处理流程包括rgb颜色增强、亮度信号y的伽马校正、锐化处理,其中特别指出当分辨率小于1280*720时,才对视频帧进行画质增强。

(2)cn106412383a,视频图像的处理方法和装置。该图像增强方法,考虑了图像的亮度因素,当图像亮度小于预设亮度值才进行增强处理,其增强处理包括亮度增强、双边滤波降噪,主要目的是降噪,以及如何消除亮度增强对噪声的放大。该方案主要侧重于亮度因素上的考量,因素比较单一,无法达到比较好的图像质量增强效果。

(3)cn106550244a,视频图像的画质增强方法及装置。该方法采用多尺度增强方式,预先为不同类型的图像区域设置不同的增强尺度,使用时需要实时的识别图像中包含的预设类型区域(马赛克区域、直线边缘、人脸型区域),增强时对不同预设类型区域的高频信息进行相应的预设尺度增强,最终将增强后的高频信息与相应低频信息叠加得到增强后图像。该方法需要检测预设类型区域,算法复杂度比较高,实时处理的难度比较大,同时增强的时候只考虑了高频信息(细节),单一因素,增强效果相比多因素增强的综合方案要差。

(4)cn105407296a,实时视频增强方法和装置。该方法通过获取当前帧的平均亮度,判断平均亮度是否小于预设亮度阈值,决定是否需要增强。根据当前帧的平均亮度得到第一增强曲线,根据兴趣区域得到局部增强曲线,由局部增强曲线和第一增强曲线得到第二增强曲线,运用第二增强曲线对当前帧进行增强。该方法在增强的时候考虑了兴趣区域,但在增强效果上,只考虑了亮度这一因素,相比多因素增强的方案效果要差。

(5)cn104202604b,视频增强的方法和装置。该方法通过对当前帧确定反映运动状态或明暗信息的属性信息,以此来查找预设的映射关系,得到对应的增强强度控制参数,以所述控制参数对当前帧执行视频增强操作。该方法通过运动状态或者明暗信息,依此来确定不同帧,以及同一帧中的不同区域的增强强度。该方法中,采用运动状态对视频区域分类,运动状态这一因素不能和视频主观上有强的相关性,即不能根据运动的强弱判断是否应该用强的增强参数还是弱的增强参数。

(6)cn102811353b,提升视频图像清晰度的方法及系统。该方法对视频图像进行清晰度增强时,对yuv数据,利用高斯矩阵作为像素点的权重值,对每个像素点四周的预设个数的其他像素点进行纹理增强处理,以获得每个像素点进行纹理增强后的像素值,该方法不足是,对视频图像全局进行同一强度的纹理增强,没有考虑到视频图像自身的纹理信息,容易放大图像的缺陷(如噪声等),增强后的图像连续播放时会有明显的闪烁现象。

(7)cn104166967b,提升视频图像清晰度的方法。该方法通过判断图像的分辨率和显示设备的分辨率,确定是否需要对图像进行插值,当图像分辨率小于显示设备的分辨率时进行插值处理。然后对图像进行纹理增强,纹理增强的时候通过sobel算子计算纹理强度,通过纹理强度来控制纹理增强的强度,最后修改视频图像的灰度直方图,增强图像的对比度。该方案的缺点,计算出的纹理强度仅能反映纹理的强弱,不能区分图像中的噪声,更不能反映人的主观关注点,所以既不能达到好的增强效果,也不能很好的保护图像的缺陷不被放大。

(8)cn103281544b,图像和视频的亮度、颜色和对比度的联合增强。该方案提供一种方法,可以一次性执行亮度、颜色和对比度增强视频处理。该方案的缺点是采用的是一致性增强的方法,无法避免会放大图像的缺陷,增强的同时带来了观看的不适感。

(9)cn105488793a,图像显示方法以及图像处理方法。该方法通过在图像的大尺度边缘处适当的增大边缘台阶如边缘亮度台阶,得到相对锐利的边缘轮廓,增加图像感知深度,进而提高显示图像的人眼感知对比度。该方法的缺点,只对图像中的大边缘进行增强,图像中很多细节并不能得到很好的增强,考虑的因素比较单一,难以达到很好的增强效果。

(10)cn105744118a,一种给予视频帧自适应的视频增强方法及应用其的视频增强系统。该方法通过视频帧的亮度直方图,自适应的调整对比度增强参数和饱和度调整参数。该方法的缺点,对比度的调整只能提升图像的通透度,饱和度的调整改变的是图像颜色,都不能提升图像细节,增强效果不够好。

(11)cn102377913b,一种对比度实时调节的方法。该方法可以实时的调节图像的对比度,缺点是考虑的因素单一,无法达到比较好的增强效果。

(12)cn108259873a,一种梯度域视频对比度增强方法。该方法采用梯度域增强方法逐帧增强待处理视频,同时利用视频相邻帧之间的低频分量关联特性,对梯度增强的视频帧进行滤波,克服视频增强导致的闪烁问题。该方法考虑的视频增强因素比较单一,无法达到比较好的增强效果。

(13)cn105678717a,动态视频图像清晰度强化方法及装置。该方法对当前yuv数据进行归一化处理,计算归一化后的y分量的邻域模糊数据和纹理数据,使用y分量的邻域模糊数据和纹理数据进行锐化增强,最后对锐化后的y分量进行整体对比度调整,再将调整后的y分量和当前像素的uv分量转化为rgb。该方案考虑了图像增强的多个因素,缺点是,增强的同时,会对图像缺陷放大,采用的是一致性增强方案。

由此可见,图像增强技术领域虽然研究比较多,提出的方案也很多。但是现有的方案都或多或少存在一些缺点,要么是采用的单一因素图像增强,增强效果不够理想;要么是采用一致性增强的方案,增强后容易带来观看的不适感;要么采用复杂的图像内容识别,不利于工程实现和实时处理。另外,现有方案大多适用于cpu通用处理器,直接用在移动终端上难以达到好的效果。



技术实现要素:

本发明所要解决的技术问题是,针对现有技术不足,提供一种移动播放端实时视频画质增强方法及系统,综合考虑多种因素(对比度、亮度、锐化等)对图像进行增强,在增强视频图像的同时,尽量避免对图像中画质缺陷放大,保护人眼的兴趣区域,达到较好的图像画质增强效果。

为解决上述技术问题,本发明所采用的技术方案是:一种移动播放端实时视频画质增强方法,其特征在于,包括以下步骤:

1)解码视频流数据,得到rgb图像数据;

2)对rgb图像数据进行图像分区,将图像分成四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4;

3)对p1、p2、p3、p4采用不同的尺度进行细节增强处理,得到增强后的图像;

4)对增强后的图像进行对比度调整,得到调整后的图像;

5)对调整后的图像进行亮度调整,得到亮度调整后的图像。

步骤1)的具体实现过程包括:

1)解码视频流数据,将解码后的图像数据存储在图形处理器gpu访问的纹理缓存中;

2)将解码后的图像数据绑定到图像处理器gpu中着色器处理的纹理上,若解码出来的数据是yuv格式,则将yuv格式的图像数据转换到rgb格式的图像数据,转换公式为:

步骤2)的具体实现过程包括:

1)预先设置保护区域,将图像分成保护区域和非保护区域;

2)求取亮度矩阵luma:

3)将亮度矩阵中的一个像素点,作为待增强的像素点,以该待增强像素点为中心,取大小为3x3像素大小的图像块,将该图像块与sobel算子模板进行卷积运算,sobel算子模板包括水平模板gx和垂直模板gy,具体模板如下:

4)计算待增强像素的梯度值,公式如下:

5)根据预设的梯度阈值thm区分边缘区域和非边缘区域,具体操作是:如果g>thm,判定为边缘区域像素;否则,判定为非边缘区域像素,从而将图像分成四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4;m取值为0或者1,其中0表示保护区域,1表示非保护区域。

步骤3)的具体实现过程包括:

1)以当前待增强像素点为中心,选取邻域的n×n个像素,选取归一化后的n×n的高斯滤波模板,将邻域像素和高斯滤波模板做卷积,得到模糊数据psum;其中n为奇数,且n大于1;所述模糊数据psum包含r、g、b三个分量;

2)将当前待增强的像素点porg与模糊数据psum相减,得到细节数据pdiff;计算公式如下:pdiff=porg-psum;

3)对当前待增强的像素进行细节增强处理,得到增强后的像素pfix1:pfix1=porg+ratiow*(1.0-0.5*sign(pdiff))*pdiff;其中,ratiow取值范围[0.0,20.0],w取值为1,2,3,4之一;sign(x)是符号函数;

4)将细节增强后的pfix1进行对比度调整,调整之后得到像素pfix2:pfix2=pfix1+(pluma2-pluma);其中,pluma=vec3(luma,luma,luma),vec3表示3维浮点数向量;pluma2=mix(vec3(0.5,0.5,0.5),pluma,cratiow),mix函数是glsl中的内置函数;cratiow取值范围为[0.0,2.0];

5)将对比度调整后得到的像素值pfix2进行亮度调整,得到调整后的像素值pfix3:pfix3=mix(vec3(0.0,0.0,0.0),pfix2,lratio);lratio是预设的亮度调整系数。

相应地,本发明还提供了一种移动播放端实时视频画质增强系统,包括:

解码数据获取模块,用于解码视频流数据,得到rgb图像数据;

图像增强模块,用于对rgb图像数据进行图像分区,将图像分成四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4;对p1、p2、p3、p4采用不同的尺度进行细节增强处理,得到增强后的图像;对增强后的图像进行对比度调整,得到调整后的图像;对调整后的图像进行亮度调整,得到亮度调整后的图像。

还包括数据输出模块,用于输出亮度调整后的图像。

所述图像增强模块包括:

分区单元,用于对rgb图像数据进行图像分区,将图像分成四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4;

增强单元,用于对p1、p2、p3、p4采用不同的尺度进行细节增强处理,得到增强后的图像;

对比度调整单元,用于对增强后的图像进行对比度调整,得到调整后的图像;

亮度调整单元,用于对调整后的图像进行亮度调整,得到亮度调整后的图像。

与现有技术相比,本发明所具有的有益效果为:本发明综合考虑了多种因素(对比度、亮度、锐化等)对图像进行增强,在增强视频图像的同时,尽量避免对图像中画质缺陷放大,保护人眼的兴趣区域,达到了较好的图像画质增强效果;实时性好,能在播放端实时的完成视频图像增强功能,利用gpu处理,基本不增加cpu的占用率,不会带来播放卡顿和手机发热的不利影响;兼容性较好,常见的有gpu处理器并且操作系统版本支持的移动端(包括安卓和ios系统)都能实施;

附图说明

图1本发明整体处理流程图;

图2本发明解码数据获取模块;

图3本发明播放端gpu图像增强流程;

图4传统的cpu图像增强流程;

图5基于gpu的图像增强流程;

图6为本发明实验效果图;左侧为增强前的图片,右侧为增强后的效果图。

具体实施方式

本发明主要流程如图1,包括解码数据获取模块、图像增强模块和数据输出模块。

解码数据获取模块(图2),包括以下步骤:

(1)对视频码流数据进行解码,解码方式不做约定,可以是硬解码也可以是软解码;

(2)将解码后的图像数据存储在图形处理器gpu访问的纹理缓存中;

(3)将解码后的图像数据绑定到图像处理器gpu中着色器处理的纹理上,解码出来的数据通常是yuv格式,需要根据解码的方式及流程选择是否需要显示进行yuv格式到rgb格式的转换,显式格式转换(需要自己在着色器中去实现)执行步骤(4),隐式格式转换(自动完成yuv到rgb的转换)走步骤(5)。

(4)根据格式转换公式,将yuv格式转换成rgb格式;使用的转换公式如下:

(5)数据格式已经是rgb格式,不需要做格式转换,执行后续的图像增强处理。需要说明的是,解码后的数据作为纹理交由图形处理器gpu,用于opengles的着色器处理,所有的数据已经归一化为[0.0,1.0]。

图像增强模块(图3),具体步骤如下:

(1)对rgb图像数据进行图像分区,图像分区包括图像粗分区和图像精细分区两个过程。

a.图像粗分区,用户可以预先设置保护区域,将图像分成保护区域和非保护区域。保护区域是指图像中的n个矩形区域(n≥1)(比如字幕区域、logo区域等),用户可通过设置每个矩形左上角顶点topleftn(x,y)和右下角顶点downrightn(x,y)确定保护区域位置。非保护区域是指图像中除保护区域之外的其他区域。

b.图像精细分区,在图像粗分区(分为保护区域和非保护区域)的基础上,对图像进行精细分区,分为边缘区域和非边缘区域。步骤如下:

b1.求取亮度矩阵luma,求取的公式如下:

b2.在亮度矩阵中,将亮度矩阵中的一个像素点,作为待增强的像素点,以该待增强像素点为中心,取大小为3x3像素大小的图像块,将该图像块与sobel算子模板进行卷积运算,sobel算子模板包括水平模板gx和垂直模板gy,具体模板如下:

b3.计算待增强像素的梯度值,公式如下:

b4.根据预设的梯度阈值thm(m取值为0或者1,其中0表示保护区域,1表示非保护区域),thm取值范围为[0.0,1.0],用于区分边缘区域和非边缘区域,具体操作是:如果g>thm,判定为边缘区域像素;否则,判定为非边缘区域像素。

c.经过图像粗分区和图像精细分区后,将图像分成四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4。

(2)rgb图像细节增强处理,针对上述的四类区域(p1、p2、p3、p4)采用不同的尺度进行细节增强处理。具体步骤如下:

a.以当前待增强像素点为中心,选取邻域的n×n(其中n为奇数,且大于1)个像素,选取归一化后的n×n的高斯滤波模板,将邻域像素和高斯滤波模板做卷积,得到模糊数据psum(包含r、g、b三个分量)。

b.求取细节数据。将当前待增强的像素点porg与上述得到的模糊数据psum相减,得到细节数据pdiff。计算公式如下:

pdiff=porg-psum

c.细节增强处理。对当前待增强的像素进行细节增强处理,得到增强后的像素pfix1。公式如下,其中ratiow(w取值为1,2,3,4之一),取值范围[0.0,20.0],根据不同的图像分区可以预设不同的强度。

pfix1=porg+ratiow*(1.0-0.5*sign(pdiff))*pdiff

其中,sign(x)是符号函数,其功能是取某个数的符号,当x>0,sign(x)=1,当x<0,sign(x)=-1,当x=0,sign(x)=0。

(3)图像对比度调整。将细节增强后的pfix1进行对比度调整,调整之后得到像素pfix2(包含r、g、b三个分量)。具体步骤如下:

a.获取当前待增强像素的亮度值luma(步骤(1)中已经求取过亮度矩阵,单一分量),并扩展成rgb三分量的像素点pluma。公式如下:

pluma=vec3(luma,luma,luma)

注:vec3是glsl(opengles中shadinglanguage,shadinglanguage是用来在opengles中给着色器编程的语言)中的数据类型,表示3维浮点数向量。

b.对像素点pluma进行对比度调整,调整后得到像素点pluma2,公式如下,其中cratiow(w取值为1,2,3,4之一)是预设调整系数,取值范围[0.0,2.0],可以根据不同的图像分区可以预设不同的强度:

pluma2=mix(vec3(0.5,0.5,0.5),pluma,cratiow)

注:mix函数是glsl中的内置函数,mix(a,b,t)=a*(1-t)+b*t。

c.计算对比度调整之后的像素值pfix2,计算公式如下:

pfix2=pfix1+(pluma2-pluma)

(4)图像亮度调整。将对比度调整后得到的像素值pfix2进行亮度调整,得到调整后的像素值pfix3。计算公式如下,其中lratio是预设的亮度调整系数,取值范围[0.0,2.0]:

pfix3=mix(vec3(0.0,0.0,0.0),pfix2,lratio)

数据输出模块。用于将增强后的图像输出显示。

为了更好的描述整个过程,假定该方案是在android手机(系统版本大于4.0),视频解码采用硬解码的方式,硬解码采用解码到surface这种方式。

本发明示例提供了一种在移动播放端实时视频画质增强的方案,该方案综合考虑了画质增强的多个因素,可以达到比较好的增强效果,同时通过对待增强图像进行分区,有效避免了增强带来的负面效果,保护了兴趣区域的画质。另外,本方案借助移动端的图形处理器gpu,采用opengles图形编程接口,在着色器中完成图像增强的过程,可以实时的实现视频图像增强,且基本不会额外增加cpu的性能消耗。

本发明实示例中的移动播放端视频画质增强方法的步骤如下:

(1)在创建解码器的时候将surface设置给硬解码器,获取包含解码之后的解码数据的纹理;

(2)将解码图像纹理绑定到扩展纹理gl_texture_external_oes上(该扩展纹理实现了yuv到rgb的自动转化),用于opengles处理过程中片段着色器处理,纹理的数据格式是rgb格式,并且所有的数据已经归一化为[0.0,1.0]。

(3)对图像进行粗分区,用户预先设置保护区域,将图像分成保护区域和非保护区域。保护区域是指图像中的n个矩形区域(n≥1)(比如字幕区域、logo区域等,字幕区域通常位于视频的下面区域),用户可通过设置每个矩形左上角顶点topleftn(x,y)和右下角顶点downrightn(x,y)确定保护区域位置。非保护区域是指图像中除保护区域之外的其他区域。

(4)图像精细分区,在图像粗分区(分为保护区域和非保护区域)的基础上,对图像进行精细分区,分为边缘区域和非边缘区域。包含如下步骤:

1)求取亮度矩阵luma,求取的公式如下:

2)在亮度矩阵中,将亮度矩阵中的一个像素点,作为待增强的像素点,以该待增强像素点为中心,取大小为3x3像素大小的图像块,将该图像块与sobel算子模板进行卷积运算,sobel算子模板包括水平模板gx和垂直模板gy,具体模板如下:

3)计算待增强像素的梯度值,公式如下:

4)根据预设的梯度阈值thm(m取值为0或者1,其中0表示保护区域,1表示非保护区域),thm取值范围为[0.0,1.0],用于区分边缘区域和非边缘区域,具体操作是:如果g>thm,判定为边缘区域像素;否则,判定为非边缘区域像素。

5)经过图像粗分区和图像精细分区后,将图像分为四类区域:边缘区域且在保护区域内、非边缘区域且在保护区域内、边缘区域且在非保护区域内、非边缘区域且在非保护区域内,分别标记为p1、p2、p3、p4。

(5)rgb图像细节增强处理,针对上述的四类区域(p1、p2、p3、p4)采用不同的尺度进行细节增强处理。具体步骤如下:

1)以当前待增强像素点为中心,选取邻域的n×n(其中n为奇数,且大于1)个像素,选取归一化后的n×n的高斯滤波模板,将邻域像素和高斯滤波模板做卷积,得到模糊数据psum(包含r、g、b三个分量)。

2)求取细节数据。将当前待增强的像素点porg与上述得到的模糊数据psum相减,得到细节数据pdiff。计算公式如下:

pdiff=porg-psum

3)细节增强处理。对当前待增强的像素进行细节增强处理,得到增强后的像素pfix1。公式如下,其中ratiow(w取值为1,2,3,4之一),取值范围[0.0,20.0],根据不同的图像分区可以预设不同的强度。

pfix1=porg+ratiow*(1.0-0.5*sign(pdiff))*pdiff

(6)图像对比度调整。将细节增强后的pfix1进行对比度调整,调整之后得到像素pfix2。具体步骤如下:

1)获取当前待增强像素的亮度值luma(步骤(1)中已经求取过亮度矩阵),并扩展成rgb三分量的像素点pluma。公式如下:

pluma=vec3(luma,luma,luma)

注:vec3是glsl(opengles中shadinglanguage,shadinglanguage是用来在opengles中给着色器编程的语言)中的数据类型,表示3维浮点数向量。

2)对像素点pluma进行对比度调整,调整后得到像素点pluma2,公式如下,其中cratiow(w取值为1,2,3,4之一)是预设调整系数,取值范围[0.0,2.0],可以根据不同的图像分区可以预设不同的强度:

pluma2=mix(vec3(0.5,0.5,0.5),pluma,cratiow)

注:mix函数是glsl中的内置函数,mix(a,b,t)=a*(1-t)+b*t。

3)计算对比度调整之后的像素值pfix2,计算公式如下:

pfix2=pfix1+(pluma2-pluma)

(7)图像亮度调整。将对比度调整后得到的像素值pfix2进行亮度调整,得到调整后的像素值pfix3。计算公式如下,其中lratio是预设的亮度调整系数,取值范围[0.0,2.0]:

pfix3=mix(vec3(0.0,0.0,0.0),pfix2,lratio)

(8)将增强后的图像输出显示。增强后的图像数据存储在帧缓冲区中的后缓冲区中,当执行后缓冲区切换成前缓冲区时,增强后的图像就可以显示出来。

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