一种前景图像获得方法及装置与流程

文档序号:16214271发布日期:2018-12-08 08:09阅读:150来源:国知局
一种前景图像获得方法及装置与流程

本发明涉及视频处理技术领域,特别是涉及一种前景图像获得方法及装置。

背景技术

一个视频帧可以看作是一幅由前景图像和背景图像合成后得到的合成图像。视频帧的背景替换所研究的问题是将视频帧中的前景图像和背景图像分离开,并将分离的前景图像合成到另外一背景图像中,包括两大步骤:抠像与合成,抠像(也称为抠图)是将视频帧中的前景图像提取出来的过程,合成则是将提取出来的前景图像放置在新的背景图像中形成一个新的视频帧。抠像与合成是视频特效制作必不可少的手段,这种技术可以将演员或者主持人、主播等嵌入到虚拟环境中以实现一定的节目效果。因为绿色与蓝色与人体肤色差异较大,可以更容易的进行抠图,因此通常情况下在拍摄视频时使用纯绿色或者纯蓝色的幕布作为背景。

日常生活中常见的一个背景替换的例子是天气预报。当我们看电视时,看起来天气预报员是站在一幅气象云图前,但是实际上,天气预报员是站在蓝幕前面进行播报时拍摄得到原始视频帧,然后由编辑软件从原始视频帧中将天气预报员抠出并将其叠加合成到了气象云图上得到新的视频帧,也就是将背景图像由蓝幕替换为气象云图,从而产生了从电视上观看到的效果。

抠像和合成技术可以用合成方程来表述,合成方程如下:

c=αf+(1-α)b

其中,c,f和b分别表示合成图像、前景图像和背景图像,合成图像中每个像素点出的颜色值由前景图像对应的颜色值和背景图像对应的颜色值叠加而成。α称为掩像,每个像素点处的α值表示合成图像c中对应像素点的颜色值中前景颜色的百分比,或者表示该像素点的不透明度,α的范围是[0,1]。

鉴于上述合成方程,在rgb颜色空间中,对视频帧中的每一像素点,分别在r、g、b3个通道上建立1个方程,组成的方程组如下:

当合成图像c为灰度图像时,对c中的每个像素点对应有1个方程,3个未知量f,b和α。当合成图像c为彩色图像时,c中的每个像素点则对应有3个方程和7个未知数,除上述方程组中cr,cg,cb以外,其余均是未知量,可见抠图问题本质上是不可精确求解的问题。

通过上面的分析可以发现,背景替换的关键步骤是抠图即获得前景图像,也就是求出合成图像中每个像素点处的f,b和α。对于绿幕/蓝幕背景下的抠图方法,由于背景是纯绿色或者纯蓝色,前景图像边缘部分的像素点处的掩像值α受背景颜色的影响较大,导致在抠图时计算得到的前景图像边缘部分的像素点处的掩像值与实际值相差较大,从而使得抠出的前景图像的边缘部分残留蓝色或者绿色像素,即出现颜色溢出现象。



技术实现要素:

本发明实施例的目的在于提供一种前景图像获得方法及装置,以减少颜色溢出现象。具体技术方案如下:

为达到上述目的,本发明实施例公开了一种前景图像获得方法,所述方法包括:

获取目标视频帧;其中,所述目标视频帧为原始视频中的任一帧图像;

根据所述目标视频帧的每一像素点的第一rgb值,确定每一像素点在所述目标视频帧的背景图像中的第二rgb值,以及所述目标视频帧的背景图像的幕布类型;

根据每一像素点的第一rgb值和第二rgb值,按照与所述幕布类型对应的掩像值计算公式,获得每一像素点的掩像值;

根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值,得到所述目标视频帧的前景图像。

为达到上述目的,本发明实施例还公开了一种前景图像获得装置,所述装置包括:

获取模块,用于获取目标视频帧;其中,所述目标视频帧为原始视频中的任一帧图像;

第一确定模块,用于根据所述目标视频帧的每一像素点的第一rgb值,确定每一像素点在所述目标视频帧的背景图像中的第二rgb值,以及所述目标视频帧的背景图像的幕布类型;

第一获得模块,用于根据每一像素点的第一rgb值和第二rgb值,按照与所述幕布类型对应的掩像值计算公式,获得每一像素点的掩像值;

第二确定模块,用于根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值,得到所述目标视频帧的前景图像。

本实施例提供的前景图像获得方法及装置,根据目标视频帧的背景图像的幕布类型,有针对性的按照幕布类型所对应的掩像值计算公式,获得每一像素点的掩像值,可以有效降低背景颜色对掩像值的影响,从而减少颜色溢出现象,达到更好的抠图效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种前景图像获得方法的流程示意图;

图2中(a)为一视频帧的原始图像,(b)为该视频帧对应的引导图,(c)为视频帧对应的输入图像,(d)为该视频帧对应的输出图像;

图3中(a)表示引导图g在像素点k的邻域wk内的值,(b)表示输入图像p在像素点k的邻域wk内的值,(c)表示g·p在像素点k的邻域wk内的取值,(d)为g2在像素点k的邻域wk的取值;

图4为本发明实施例提供的一个具体实施例中调整掩像值的计算公式的函数图像;

图5中(a)、(b)为本发明实施例提供的一个具体实施例中的两组搜索方向;

图6中(a)、(b)分别为图5中(a)、(b)所示的搜索方向对应的搜索顺序;

图7为本发明实施例提供的一个具体实施例的处理流程图;

图8为本发明实施例提供的一个实验中的效果图;

图9为图8所示实验效果图所对应的原图;

图10为本发明实施例提供的一种前景图像获得装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为解决现有技术问题,本发明实施例提供了一种前景图像获得方法及装置。下面首先对本发明实施例所提供的一种前景图像获得方法进行详细说明。

需要说明的是,本实施例所提供的一种前景图像获得方法的执行主体可以为一种视频编码装置,其中,该视频编码装置可以为现有视频编码软件中的插件,或者,独立的功能软件,如直播软件,这都是合理的。并且,该视频编码装置可以应用于终端中,也可以应用于服务器中。

图1为本发明实施例提供的一种前景图像获得方法的流程示意图,该方法包括:

s101,获取目标视频帧;其中,目标视频帧为原始视频中的任一帧图像;

可以理解的,视频帧可以看作是一幅由前景图像和背景图像合成后得到的合成图像,通常前景图像为感兴趣的目标物体、背景图像为该目标物体所处的环境,例如,人物站在海边的一幅视频帧,其前景图像为人物,背景图像为海边的环境。对于绿幕或蓝幕视频,其是在绿色幕布或蓝色幕布的背景下拍摄的,因此,每一视频帧的背景图像均为纯色的绿幕或蓝幕,前景图像为所拍摄的人物等目标物体。

s102,根据目标视频帧的每一像素点的第一rgb值,确定每一像素点在目标视频帧的背景图像中的第二rgb值,以及目标视频帧的背景图像的幕布类型。

其中,幕布类型可以为绿幕、蓝幕等。像素点的rgb值为像素点在rgb颜色空间中红绿蓝三个分量的值,其中,r表示红色分量,g表示绿色分量,b表示蓝色分量。第一rgb值cb,cg,cr为目标视频帧中像素点的rgb值,第二rgb值bb,bg,br为每一像素点在背景图像中的rgb值,步骤s104中的第三rgb值fb,fg,fr为每一像素点在前景图像中的rgb值。

实际应用中,上述根据目标视频帧的每一像素点的第一rgb值,确定每一像素点在目标视频帧的背景图像中的第二rgb值的步骤,可以包括:

根据目标视频帧的每一像素点的第一rgb值,获得每一像素点的色调h分量值;其中,任一像素点的色调h分量值为根据该像素点的第一rgb值所确定的值;

根据每一像素点的色调h分量值,确定每一像素点在目标视频帧的背景图像中的第二rgb值。

具体的,上述根据每一像素点的色调h分量值,确定每一像素点在目标视频帧的背景图像中的第二rgb值的步骤,包括:

统计每一色调h分量值所对应的像素点的个数,将像素点的个数最多的色调h分量值作为目标视频帧的背景图像的色调h分量值;

根据目标视频帧的背景图像的色调h分量值,判断目标视频帧的背景图像是否为绿幕或蓝幕;

在目标视频帧的背景图像为绿幕的情况下,将目标视频帧的第一类像素点的第一rgb值的平均值确定为每一像素点在目标视频帧的背景图像中的第二rgb值,其中,第一类像素点为色调h分量值与绿色对应的色调值之差的绝对值小于第一预设阈值的像素点;

在目标视频帧的背景图像为蓝幕的情况下,将目标视频帧的第二类像素点的第一rgb值的平均值确定为每一像素点在目标视频帧的背景图像中的第二rgb值,其中,第二类像素点为色调h分量值与蓝色对应的色调值之差的绝对值小于第二预设阈值的像素点。

例如,将目标视频帧从rgb颜色空间转换到hsv颜色空间,hsv是一种十分直观的颜色空间,这个颜色空间中颜色的参数分别是:色调(h),饱和度(s),明度(v)。色调h用角度度量,取值范围为0-360,从红色开始按逆时针方向计算,红色为0、绿色为120、蓝色为360;饱和度s表示颜色接近光谱色的程度,通常取值范围为0%-100%,取值越大表示颜色越饱和;明度v通常取值范围为0%(黑)-100%(白)。这里采用hsv颜色空间来估计背景颜色是因为hsv对用户来说是一种直观的颜色模型,h分量可以很好的描述颜色信息,当一像素点对应的色调h分量值取值为120左右时可以判定该像素点为绿色,当色调h分量值取值为240左右时可以判定该像素点为蓝色。图像由rgb颜色空间到hsv颜色空间的转换公式如下,其中r,g,b分别表示图像中一像素点在rgb颜色空间中r、g、b三个分量值,h,s,v分别表示该像素点在hsv颜色空间中h、s、v三个通道的值:

v=max(r,g,b)

ifh<0thenh=h+360

另外,还可以将目标视频帧由rgb颜色空间转换到其它的颜色空间以获得每一像素点的色调h分量值,如hsl颜色空间,具体的转换过程可以参照现有技术的方法,在此不做赘述。

在将目标视频帧从rgb颜色空间转换到hsv颜色空间后,再统计目标视频帧的所有像素点在色调h分量上的直方图,如前面所述,色调h的取值范围在0-360,统计直方图是指统计目标视频帧的所有像素点的色调h分量值在0-360每个值上的取值个数,然后取个数最多的那个色调h分量作为背景图像的色调h分量值,比如色调h分量值为120的像素点的个数最多,那么就可以认为背景图像的色调h分量值为120。这样做是合理的,因为对于背景图像为绿幕或蓝幕的合成图像,其绿色像素点或蓝色像素点占图像中所有像素点的比例较高且色调h分量值的取值非常集中,利用这一特性可将取值最多的色调h分量值估计为背景图像的色调h分量值。

当获得背景图像的色调h分量值后,可以判断背景图像是蓝幕还是绿幕,具体的按照以下方式进行判断:

判断目标视频帧的背景图像的色调h分量值与绿色对应的色调h分量值之差的绝对值是否小于第一预设阈值,如果是,表示目标视频帧图像的背景图像为绿幕;

否则,判断目标视频帧图像的背景图像的色调h分量值与蓝色对应的色调h分量值之差的绝对值是否小于第二预设阈值,如果是,表示目标视频帧图像的背景图像为蓝幕。

例如,绿色对应的色调h分量值可以取值为120,如果|hb-120|<th1,则表示背景图像为绿幕;其中,hb表示背景图像的色调h分量值,th1表示第一预设阈值;

蓝色对应的色调h分量值可以取值为240,如果|hb-240|<th2,则表示背景图像为蓝幕;其中,hb表示背景图像的色调h分量值,th2表示第一预设阈值。

需要说明的是,判断目标视频帧的背景图像是否为绿幕或蓝幕,可以根据目标视频帧的背景图像的色调h分量值来判断,也可以根据其它的判断标准来判断,如目标视频帧中像素点个数最多的第一rgb值所对应的颜色作为背景图像的颜色,然后根据背景图像的颜色来判断背景图像是否为绿幕或蓝幕,本实施例对此不做限定。

第一预设阈值与第二预设阈值可以相同也可以不同,都是合理的。在一种优选实施例中th1、th2可以相同并且取值为40。

需要说明的是,本实施例仅针对背景图像为绿幕或蓝幕的视频帧获取前景图像,如果判断出目标视频帧的背景图像既不是蓝幕也不是绿幕,则结束对目标视频帧的处理流程。

如果判断出背景图像为绿幕,则取目标视频帧中的第一类像素点,然后分别计算第一类像素点的第一rgb值在r、g、b三个分量的平均值,作为每一像素点在背景图像的第二rgb值bb,bg,br;

如果判断出背景图像为蓝幕,则取目标视频帧中的第二类像素点,然后分别计算第二类像素点的第一rgb值在r、g、b三个分量的平均值,作为每一像素点在背景图像的第二rgb值bb,bg,br。

可见,本实施例中利用hsv颜色空间自动检测目标视频帧的背景颜色信息,无需任何人工交互,对原始视频的每一帧都自动检测背景颜色,因此即使某些视频帧的背景受光照影响动态变化,也可以取得良好的抠图效果。

s103,根据每一像素点的第一rgb值和第二rgb值,按照与幕布类型对应的掩像值计算公式,获得每一像素点的掩像值。

在得到目标视频帧的背景图像的信息后,下一步需要获得每一像素点的掩像值。

实际应用中,为了使获得的掩像值更加准确,可以针对背景图像为绿幕或蓝幕使用不同的方式来获得掩像值。具体的,在幕布类型为绿幕或蓝幕时,上述根据每一像素点的第一rgb值和第二rgb值,按照与所述幕布类型对应的掩像值计算公式,获得每一像素点的掩像值的步骤,可以包括:

在目标视频帧的背景图像为绿幕的情况下,根据以下掩像值计算公式计算所述目标视频帧中每一像素点的掩像值:

在目标视频帧的背景图像为蓝幕的情况下,根据以下掩像值计算公式计算目标视频帧中每一像素点的掩像值:

其中,α表示目标视频帧中像素点的掩像值,cb,cg,cr分别表示该像素点的第一rgb值的b、g、r分量值,bb,bg,br分别表示该像素点在目标视频帧的背景图像中的第二rgb值的b、g、r分量值。

对于绿幕背景图像,bg>bb,bg>br,对于蓝幕背景图像,bb>bg,因此上述两个掩像值计算公式的分母不为零。可以理解的,对于背景图像为绿幕或蓝幕两种情况,使用不同的计算公式计算掩像值,计算结果更为准确,并且计算量较小,可以对视频进行实时处理,因此本实施例提供的方案可以应用到直播场景中。

实际应用中,还可以针对绿幕和蓝幕进行相同的处理来获得每一像素点的掩像值,例如,先粗略估计每一像素点的掩像值,然后对估计的掩像值进行细化,得到更精细的掩像值。具体的,上述根据每一像素点的第一rgb值和第二rgb值,获得每一像素点的掩像值的步骤,可以包括:

根据每一像素点的第一rgb值和第二rgb值,获得每一像素点的初始掩像值,其中,任一像素点的初始掩像值为根据该像素点的第一rgb值和第二rgb值所确定的值;

采用导向图滤波技术,利用引导图对输入图像进行滤波得到输出图像,根据输出图像获得目标视频帧中每一像素点的掩像值,其中,输入图像为根据目标视频帧中像素点的初始掩像值确定的,引导图为根据目标视频帧中像素点的灰度值确定的,任一像素点的灰度值为根据该像素点的第一rgb值所确定的;

实际应用中,可以针对每一像素点,根据该像素点的第一rgb值和第二rgb值,获得目标视频帧的rgb值与背景图像的rgb值在该像素点处的差异值,并根据差异值,获得目标视频帧图像中该像素点的初始掩像值。

具体的,可以根据第一rgb值与第二rgb值的之差的绝对值来计算差异值,在一种较佳的实现方式中,可以根据以下计算公式计算目标视频帧图像的rgb值与背景图像的rgb值在该像素点处的差异值d:

d=(cr-br)2+(cg-bg)2+(cb-bb)2

其中,cb,cg,cr分别表示目标视频帧中该像素点的第一rgb值的b、g、r分量值,bb,bg,br分别表示该像素点在目标视频帧的背景图像中的第二rgb值的b、g、r分量值。

可以理解的,差异值较小表示第一rgb值与第二rgb值比较接近,即该像素点为背景图像的可能性较大,差异值较大表示第一rgb值与第二rgb值的差别较大,则该像素点为前景图像的可能性较大,因此,可以根据以下计算公式计算目标视频帧中该像素点的初始掩像值α1:

其中,th2,th2分别为第三预设阈值和第四预设阈值,d为差异值。

本实施例中,第三预设阈值th1可以取400,第四预设阈值th2可以取3600,当然这两个预设阈值也可以根据经验或实际需求设置为其他数值,本实施例对此不做限定。

在得到每一像素点的初始掩像值后,再对其进行导向图滤波,以得到精细的掩像值。具体的,可以根据以下计算公式计算目标视频帧中每一像素点的掩像值:

αk=qk/255

qk=akgk+bk

其中,αk表示像素点k的掩像值,qk表示像素点k在输出图像q中对应的值,gk为像素点k在引导图g中对应的值,wk表示以像素点k为中心、由预设数量的像素点组成的邻域,|wk|表示邻域wk内像素点的个数,gi表示邻域wk内的第i个像素点在引导图g中对应的值,pi表示邻域wk内的第i个像素点在输入图像p中对应的值,ε为预设常数,ak,bk为变量。

本领域技术人员可以理解的是,在进行导向图滤波之前需要先将目标视频帧转化为灰度图像,例如可以将目标视频帧由rgb颜色空间转换到ycbcr颜色空间,其中y表示明亮度,也就是灰度值;而cb和cr表示的是色度,分别用来描述影像色彩及饱和度。将图像从rgb颜色空间转换到到ycbcr颜色空间的转换关系如下,其中r,g,b分别表示图像中各个像素点在rgb颜色空间中r、g、b三个分量值,y,cb,cr分别表示图像中各个像素点在ycbcr颜色空间中y、cb、cr三个通道的值:

本领域技术人员可以理解的是,只取y通道的数据就可以得到彩色图像对应的灰度图。

导向图滤波是一种图像滤波技术,通过一张引导图g,对输入图像p进行滤波处理,使得最后的输出图像大体上与输入图像p相似,而纹理部分与引导图g相似。假设输出图像为q,为了使得输入图像p与输出图像q尽可能相似,可以用公式描述为:min|q-p|2(1);为了使输出图像q的纹理和引导图g尽可能相似,可以用公式描述为:对于等式(2),两边对等式取定积分,从而得到公式:q=ag+b(3)。

本实施例中,将目标视频帧对应的灰度图作为引导图,将各个像素点的初始掩像值作为输入图像p,通过引导图g对输入图像p进行导向图滤波,以得到精细化的掩像值,为了方便显示与计算,本实施例将初始掩像值α1乘以255后的值作为输入图像p的灰度值。示例性的,参见图2,为清楚展示视频帧,(a)示出了一视频帧的原始图像;(c)表示初始掩像值,即根据(a)所示视频帧中像素点的初始掩像值确定的输入图像p,注意为了便于显示这里的初始掩像值为α1×255;(b)表示(a)所示视频帧对应的灰度图,即根据该视频帧中像素点的灰度值确定的引导图g。引导图g和输入图像p都是单通道图像。公式(3)只是一个局部线性模型,因此两个系数a,b其实是与位置有关的变量。为了确定a,b的值,考虑一个小窗口wk,使得该窗口内的像素点同时满足上面的公式(1)和公式(2),可以将公式(3)式带入公式(1),同时为了防止计算得到的掩像值过大,添加一个惩罚项到公式(1)中,得到的公式为:

对公式(4)中两个参数ak,bk分别求偏导数得到:

进而可以解得:

本实施例中邻域wk的半径可以为20,即以像素点k为中心、上下左右各延长20个像素点的正方形区域,即41×41的正方形区域,如果某些方向超出了图像边缘则该方向上可以只取到图像边缘。ε可以取100。求出ak,bk即可以根据公式(3)得到qk,对所有像素点按照上述方法求解即可得到输出图像q,如图2中(d)所示,(d)为(a)所示视频帧对应的输出图像,表示滤波后的掩像值。需要注意的是,这时还需要将掩像值除以255,使其范围恢复0至1之间。

下面举例说明利用引导图对输入图像进行滤波得到输出图像,并根据输出图像获得目标视频帧中每一像素点的掩像值的过程。

令半径为1,即wk为3乘3的正方形,如图3所示,每个方格表示一个像点素,方格0为待滤波的像素点k,方格0-8构成了3×3的邻域wk,方格中括号内的数字表示该像素点的灰度值,也就是ycbcr颜色空间中的y值,(a)表示引导图g在像素点k的邻域wk内的值,(b)表示输入图像p在像素点k的邻域wk内的值,(c)表示g·p在像素点k的邻域wk内的取值,计算方法为g、p对应位置的像素点的值相乘,(d)为g2在像素点k的邻域wk的取值,计算方法为g中每个像素点的值的平方。

为(c)中邻域wk内所有像素点的值的均值,计算结果为3985,为(a)中邻域wk内所有像素点的值的均值,计算结果为55.4,为(b)中邻域wk内所有像素点的值的均值,计算结果为71.2,为(d)中邻域wk内所有像素点的值的均值,计算结果为3104,则可以得到ak,bk:

至此,可以得到像素点k在输出图像q中对应的值qk:

qk=akgk+bk=0.3×56+54.58≈71

可见,对于像素点k,在输入图像p中的初始掩像值70经过导向图滤波变成了输出图像q中的掩像值71。对所有像素点均按照上述方式计算即可以得到每一像素点在输出图像q中对应的值。qk即为滤波之后的像素点k的掩像值,将qk值除以255使其归一化到[0,1]之间,即得到像素点k的掩像值。

实际应用中,目标视频帧中不可避免的出现噪点和杂质,也就是噪声,为了消除噪点和杂质的干扰,还可以对计算得到的掩像值进行调整。具体的,可以根据以下计算公式调整目标视频帧中每一像素点的掩像值:

其中,α′为调整后的目标视频帧中像素点的掩像值,α为调整前的目标视频帧中该像素点的掩像值。

图4为计算α′的公式所对应的函数图像,可以看出经过这样的调整,较小的掩像值变得更小,较大的掩像值变得更大,好处是:由于一般情况下噪声处求得的掩像值小于0.5,前景处求得的掩像值大于0.5,这样做可以使得噪声处的掩像值变得更小,而前景的掩像值变得更大,从而减小噪声对最终合成的影响,提高前景提取的准确度。

s104,根据每一像素点的掩像值,确定每一像素点在目标视频帧的前景图像中的第三rgb值,得到目标视频帧的前景图像。

在得到每一像素点的掩像值后,根据像素点的掩像值、第一rgb值、第二rgb值,可以得到像素点的第三rgb值,从而的到目标视频帧的前景图像。

可以理解的,掩像值的取值范围为[0,1],其中,当掩像值为0时表示目标视频帧中该像素点的颜色值中前景颜色的百分比为0,即该像素点的第一rgb值等于第二rgb值,也即该像素点的第三rgb值fb,fg,fr均为0;当掩像值为1时表示目标视频帧中该像素点的颜色值中前景颜色的百分比为100%,即该像素点的第一rgb值等于第三rgb值,fb=cb,fg=cg,fr=cr。而当掩像值大于0且小于1时,表示像素点可能处于前景图像的边缘。

实际上,当掩像值特别小时,如果直接使用合成方程来求解第三rgb值,将会造成较大的误差,此时可以直接令fb,fg,fr均为0,这样做是因为掩像值很小,fb,fg,fr的取值不会对抠图的结果造成影响。

因此,在一种实现方式中,上述根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值的步骤,可以包括:

针对每一像素点,当该像素点的掩像值小于第三预设阈值时,将该像素点在目标视频帧图像的前景图像中的第三rgb值的r、g、b三个分量值均设置为零,第三预设阈值为小于1的值;

当该像素点的掩像值大于等于所述第三预设阈值且小于1时,或者当该像素点的掩像值等于1时,根据以下计算公式计算该像素点在目标视频帧的前景图像中的第三rgb值:

并且

其中,fb,fg,fr分别表示像素点在目标视频帧的前景图像中的第三rgb值的b、g、r分量值。

可以理解的,当像素点的掩像值等于1时,根据上述计算公式可知,该像素点的第三rgb值等于该像素点的第一rgb值。由于像素点的rgb值的取值范围为[0,255],在使用合成方程求得fr,fg,fb后,还需要进一步将fr,fg,fb的取值限制在[0,255]之间。本实施例中第三预设阈值可以为0.04,当然也可以按照经验和实际需求对第三预设阈值进行取值,本实施例对此不做限定。

进一步的,当像素点的掩像值大于等于第三预设阈值且小于1时,在计算得到该像素点在目标视频帧的前景图像中的第三rgb值之后,本实施例提供的方法还可以包括:

在目标视频帧的背景图像为绿幕的情况下,将第三rgb值中的g分量值调整为第三rgb值中的b分量值和r分量值的平均值;

在目标视频帧的背景图像为蓝幕的情况下,将第三rgb值中的b分量值调整为第三rgb值中的g分量值。

可以理解的,掩像值大于等于第三预设阈值且小于1,表示像素点处于前景图像的边缘,而处于前景图像的边缘的像素点在抠图时容易发生颜色溢出现象。因此为了解决前景图像边缘的颜色溢出问题,对于掩像值大于等于第三预设阈值且小于1的像素点,需要对其第三rgb值中的b分量或g分量进行调整。具体的,当背景图像为绿幕时,令该像素点的fg=(fb+fr)/2;当背景图像为蓝幕时,令该像素点的fb=fg。

可见,针对现有技术中存在的颜色溢出现象,本实施例在掩像值大于等于第三预设阈值且小于1的情况下,在求得像素点的第三rgb值fr,fg,fb之后,又针对背景图像为绿幕或蓝幕两种情况,对第三rgb值fr,fg,fb进行调整,这样可以有效减少颜色溢出现象,提高对于头发丝等细小物体的抠图效果,并且计算量较小,可以对视频进行实时处理,因此,本实施例提供的方案可以应用到直播场景中。

在另一种实现方式中,上述根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值的步骤,可以包括:

针对每一像素点,当该像素点的掩像值小于等于第四预设阈值时,将该像素点在目标视频帧的前景图像中的第三rgb值的r、g、b三个分量值均设置为零;

当该像素点的掩像值大于等于第五预设阈值时,将该像素点在目标视频帧的前景图像中的第三rgb值设置为该像素点的第一rgb值;其中,第五预设阈值大于第四预设阈值;

当该像素点的掩像值大于第四预设阈值且小于第五预设阈值时,根据第三类像素点的第一rgb值,确定该像素点在目标视频帧的前景图像中的第三rgb值,其中,第三类像素点为目标视频帧中掩像值大于等于第五预设阈值的像素点。

可以理解的是,在求得每一像素点的掩像值后,可以直接利用合成方程计算每一像素点在前景图像中的第三rgb值。但是由于掩像值的求解过程中存在误差,直接利用合成方程求解第三rgb值会造成一定的错误。为了减少颜色溢出现象,可以采用邻域搜索的方法确定第三rgb值。邻域搜索的思想是对于不确定的像素点的第三rgb值,根据其预设范围内的能够确定的像素点的第三rgb值估计得到。

首先,可以理解的,对于掩像值小于等于第四预设阈值,以及掩像值大于等于第五预设阈值的像素点,这些像素点不处于前景图像的边缘部分,其第三rgb值对抠图结果影响不大。因此,对于掩像值小于等于第四预设阈值的像素点,可以直接将该像素点的第三rgb值的r、g、b三个分量值均设置为零;对于掩像值大于等于第五预设阈值的像素点,可以直接将该像素点的第三rgb值设置为该像素点的第一rgb值。

其中,第四预设阈值可以取接近于0或等于0的值,如0、10/255、20/255等,第五预设阈值可以取接近于1或等于1的值,如1、250/255、245/255等,第四预设阈值和第五预设阈值的取值可以根据经验和实际需求进行设定。

对于掩像值大于第四预设阈值且小于第五预设阈值的像素点,即第五类像素点,由于其处于前景图像的边缘部分,因此根据第三类像素点的第一rgb值,可以较为准确的估计这些像素点的第三rgb值。

实际应用中,可以从第三类像素点中确定目标像素点,将目标像素点的第一rgb值确定为该像素点在目标视频帧的前景图像中的第三rgb值。例如,可以将距离该像素点最近的第三类像素点确定为目标像素点。

在一种较佳的实施方式中,可以以该像素点为起始点,按照预设的搜索方向和步长遍历该像素点以外的像素点,将搜索到的第一个满足预设停止搜索条件的像素点确定为目标像素点,其中,所述预设的停止搜索条件为:属于第三类像素点且所对应的第一rgb值使得dr,dg,db三者绝对值之和小于第六预设阈值,其中,

dr=αc'r+(1-α)br-c″r

dg=αc'g+(1-α)bg-c”g

db=αc'b+(1-α)bb-c″b

c'b,c'g,c'r分别表示目标像素点的第一rgb值的b、g、r分量值,α为该像素点的掩像值,c″bb,c”g,c″rr分别为该像素点的第一rgb值的b、g、r分量值。

例如,图5示出了两组搜索方向,如图中粗线箭头所示,x和y轴互相垂直,其中,(a)示出了第一组方向为沿x、y轴正方向及反方向共四个方向,(b)示出了第二组为x轴正方向顺时针依次旋转45°、135°、225°以及315°四个方向。

对于各个第五类像素点,依次使用两组搜索方向进行搜索,即对第一个第五类像素点使用第一组时,对第二个第五类像素点使用第二组,对第三个第五类像素点使用第一组,对第四个像素点第五类使用第二组,如此交替使用,这样交替使用两组搜索方向可以增加搜索的多样性,减少在一组方向上一直搜索却搜索不到造成的错误。每次搜索时,可以依次按顺时针方向在四个方向进行搜索,搜索步长可以设置为1,即四个方向每次增加一个像素点进行搜索。参见图6,图6中(a)、(b)分别为图5中(a)、(b)所示的搜索方向对应的搜索顺序,图中每个正方形表示一个像素点,标号为a的正方形表示待确定第三rgb值的第五类像素点,图中数字表示搜索次序,即每增加一个步长需要沿四个方向均搜索一遍。

需要说明的是,在针对当前像素点a进行搜索的过程中,当某方向到达图像边缘时,可以停止该方向的搜索,而在其它方向上继续以上述方式进行搜索。当搜索到的某一像素点a’满足预设的停止搜索条件时,则可以停止针对当前像素点a的搜索,此时,将像素点a’作为目标像素点,令像素点a的第三rgb值等于像素点a’的第一rgb值,即fr=c'r,fg=c'g,fb=g'b。

进一步的,在确定所有像素点在目标视频帧的前景图像中的第三rgb值之后,还可以根据以下公式对每一第五类像素点在所述目标视频帧的前景图像中的第三rgb值进行滤波处理:

其中,第五类像素点为目标视频帧中掩像值大于第四预设阈值且小于第五预设阈值的像素点,fr',fg',fb'分别为滤波处理后的第五类像素点k'在目标视频帧的前景图像中的第三rgb值,wk'表示以该第五类像素点k'为中心、由预设数量的像素点组成的邻域,αi表示邻域wk'中包含的第i个像素点的掩像值,分别为滤波处理前的第i个像素点在目标视频帧的前景图像中的第三rgb值。

可以理解的,对于第五类像素点,其第三rgb值直接使用目标像素点的第一rgb值,这种方式可能存在错误。因此,可以采用权值滤波的方式减少第五类像素点的第三rgb值的错误,从而有效减少颜色溢出现象,提高对于头发丝等细小物体的抠图效果。

例如,对于待滤波的第五类像素点k',设其邻域wk'的半径为2,即第五类像素点k'的上下、左右各2个像素点范围内的所有像素点均属于邻域wk',即邻域wk'包含25个像素点。利用这25个像素点的第三rgb值按照上述公式对第五类像素点k'进行滤波处理,可以得到像素点k'的更为准确的第三rgb值。

实际应用中,得到了目标视频帧的前景图像后,还可以对目标视频帧的背景图像进行替换,即将前景图像与其它的背景图像进行合成,得到背景替换后的视频帧。

具体的,在步骤s104根据每一像素点的掩像值,确定该像素点在目标视频帧的前景图像中的第三rgb值的步骤之后,该方法还可以包括:

获得预设的替换目标视频帧的背景图像的第二背景图像,并获得第二背景图像的每一像素点的第四rgb值;

根据目标视频帧的每一像素点的掩像值、第三rgb值、第二背景图像的每一像素点的第四rgb值,确定背景替换后的合成图像的每一像素点的rgb值,实现目标视频帧的背景替换。

具体的,可以将目标视频帧的每一像素点的掩像值、第三rgb值、第二背景图像的每一像素点的第四rgb值代入合成方程,计算得到背景替换后的合成图像的每一像素点的rgb值。其中,第二背景图像可以为预设视频中的一帧图像,也可以为预设的一幅图像,在此不做限定。

实际应用中,可能会发生第二背景图像与目标视频帧的尺寸不相同的情况,在这种情况下,上述获得第二背景图像的每一像素点的第四rgb值的步骤,可以包括:

判断第二背景视频的尺寸是否与目标视频帧的尺寸相同;

如果是,获得第二背景图像的每一像素点的第四rgb值;

否则,将第二背景图像缩放至与目标视频帧的尺寸相同,再获得缩放后的第二背景图像的每一像素点的第四rgb值。

可以理解的,如果第二背景图像与目标视频帧的尺寸不同,那么在进行背景替换时会发生错误,因此需要调整第二背景图像的尺寸,使其与目标视频帧的尺寸一致。具体的,可以利用图像缩放技术将第二背景图像缩放至与目标视频帧的尺寸一致,常用的缩放算法有双线性插值和双三次插值等。

由以上可见,本发明实施例提供的方案中,本实施例提供的前景图像获得方法及装置,根据目标视频帧的背景图像的幕布类型,有针对性的按照幕布类型所对应的掩像值计算公式,获得每一像素点的掩像值,可以有效降低背景颜色对掩像值的影响,从而减少了颜色溢出现象,达到了更好的抠图效果。

下面以一个具体实施例对本发明实施例提供的方案进行说明。如图7所示的处理流程图,将原始绿幕/蓝幕视频和替换绿幕/蓝幕背景的背景视频作为输入,最终输出为合成视频,可以理解的,为了实现对原始绿幕/蓝幕视频的所有每一帧图像均进行背景替换,背景视频的帧数应当大于或者等于原始绿幕/蓝幕视频的帧数,当然,如果背景视频的帧数小于原始绿幕/蓝幕视频的帧数,也可以将多帧原始绿幕/蓝幕视频帧使用同一背景视频帧进行替换。本方案中对原始绿幕/蓝幕视频的每一帧均采用相同的处理方法。

首先获得原始绿幕/蓝幕视频中的第i帧原始图像,对第i帧原始图像的背景颜色进行提取,确定每一像素点在背景图像中的第二rgb值。具体的,可以获得hsv颜色空间中原始图像的所有像素点在色调h分量上的直方图,从而估计出背景图像的色调h分量值hb;基于背景图像的色调h分量值hb,可以判断背景图像为绿幕或蓝幕;当判断出背景图像既不是绿幕也不是蓝幕时,结束当前视频帧的处理流程,进行下一帧原始图像的处理。当判断出背景图像为绿幕或蓝幕时,可以分别针对绿幕和蓝幕进行背景抠图,得到前景图像。

在进行第i帧原始图像的处理时,可以同时获得背景视频中的第i帧背景图像,并对该第i帧背景图像进行处理,例如若第i帧背景图像的尺寸与第i帧原始图像的尺寸不一致,则需要缩放第i帧背景图像使其尺寸与绿幕/蓝幕图像的尺寸相同,然后将第i帧原始图像的前景图像与背景视频中的第i帧背景图像进行图像合成。对每一帧原始图像均按照上述方法进行背景替换,然后按照原始视频中视频帧的顺序,输出背景替换后的合成图像所组成的合成视频。

下面通过实验说明本发明实施例的有效性。如图8所示,(a)表示原始绿幕视频中的一帧图像a,(b)表示新的背景图片a’,本实验的目的是将图像a中的绿色背景替换成a’。(c)(d)(e)表示使用现有技术的方法进行背景替换的结果图,(f)(g)(h)表示使用本发明实施例提供的方法进行背景替换的结果图:其中,(c)(f)表示像素点的掩像值的结果图,这里为了方便显示,将掩像值乘以了255,纯白色对应255,纯黑色对应0;(d)(g)表示获得的前景图像,由于现有技术的方法可以使用原始图像作为前景图像,所以(d)实质上就是原始的图像a;(e)(h)表示最终替换背景图像后的合成结果。

由(c)(f)的对比可知,本发明实施例提供的方法所获得的像素点的掩像值过渡平滑,并且在头发丝等细节处也获得了较好的处理结果。由(d)(g)的对比可知,现有技术直接使用原始图像作为前景图像,而本发明实施例提供的方法获得的前景图像的信息较为准确,虽然在某些区域,例如图像右上角像素点对应的前景图像的信息存在错误,但是由于此处的掩像值较小,不影响最终的合成结果。由(e)(h)的对比可知,现有技术的方法有明显的绿色背景残留,即存在明显的颜色溢出现象,而本发明实施例提供的方法可以有效减少颜色溢出现象,使得合成图像的前景边缘过渡十分自然。

为了清楚的展示本发明实施例提供的方案相对于现有技术具有更好的处理结果,本发明实施例还提供了图8中(a)~(h)的原图,如图9所示,图9中的(a)~(h)分别与图8中的(a)~(h)相对应。

与上述的前景图像获得方法相对应,本发明实施例还提供了一种前景图像获得装置。与图1所示的方法实施例相对应,图10为本发明实施例提供的一种前景图像获得装置的结构示意图,该装置可以包括:

获取模块101,用于获取目标视频帧;其中,所述目标视频帧为原始视频中的任一帧图像;

第一确定模块102,用于根据所述目标视频帧的每一像素点的第一rgb值,确定每一像素点在所述目标视频帧的背景图像中的第二rgb值,以及所述目标视频帧的背景图像的幕布类型;

第一获得模块103,用于根据每一像素点的第一rgb值和第二rgb值,按照与所述幕布类型对应的掩像值计算公式,获得每一像素点的掩像值;

第二确定模块104,用于根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值,得到所述目标视频帧的前景图像。

由以上可见,本发明实施例提供的方案中,对本实施例提供的前景图像获得方法及装置,根据目标视频帧的背景图像的幕布类型,有针对性的按照幕布类型所对应的掩像值计算公式,获得每一像素点的掩像值,可以有效降低背景颜色对掩像值的影响,从而减少了颜色溢出现象,达到了更好的抠图效果。

具体的,所述幕布类型可以为绿幕或蓝幕;

相应的,所述第一获得模块103,可以用于:

在所述目标视频帧的背景图像的幕布类型为绿幕的情况下,根据以下掩像值计算公式计算所述目标视频帧中每一像素点的掩像值:

在所述目标视频帧的背景图像的幕布类型为蓝幕的情况下,根据以下掩像值计算公式计算所述目标视频帧中每一像素点的掩像值:

其中,α表示所述目标视频帧中像素点的掩像值,cb,cg,cr分别表示该像素点的第一rgb值的b、g、r分量值,bb,bg,br分别表示该像素点在所述目标视频帧的背景图像中的第二rgb值的b、g、r分量值。

具体的,所述第二确定模块104,可以用于:

针对每一像素点,当该像素点的掩像值小于第三预设阈值时,将该像素点在所述目标视频帧图像的前景图像中的第三rgb值的r、g、b三个分量值均设置为零,第三预设阈值为小于1的值;当该像素点的掩像值大于等于所述第三预设阈值且小于1时,或者当该像素点的掩像值等于1时,根据以下计算公式计算该像素点在所述目标视频帧的前景图像中的第三rgb值:

并且

其中,fb,fg,fr分别表示像素点在所述目标视频帧的前景图像中的第三rgb值的b、g、r分量值。

具体的,所述装置还可以包括:

第一调整模块,用于对掩像值大于等于所述第三预设阈值且小于1的像素点,在计算得到该像素点在所述目标视频帧的前景图像中的第三rgb值之后,在所述目标视频帧的背景图像为绿幕的情况下,将所述第三rgb值中的g分量值调整为所述第三rgb值中的b分量值和r分量值的平均值;在所述目标视频帧的背景图像为蓝幕的情况下,将所述第三rgb值中的b分量值调整为所述第三rgb值中的g分量值。

具体的,所述第一确定模块102,可以包括:

第一获得子模块,用于根据所述目标视频帧的每一像素点的第一rgb值,获得每一像素点的色调h分量值;其中,任一像素点的色调h分量值为根据该像素点的第一rgb值所确定的值;

确定子模块,用于根据每一像素点的色调h分量值,确定每一像素点在所述目标视频帧的背景图像中的第二rgb值。

具体的,所述确定子模块,可以包括:

统计单元,用于统计每一色调h分量值所对应的像素点的个数,将像素点的个数最多的色调h分量值作为所述目标视频帧的背景图像的色调h分量值;

判断单元,用于根据所述目标视频帧的背景图像的色调h分量值,判断所述目标视频帧的背景图像是否为绿幕或蓝幕;

第一确定单元,用于在所述判断单元判断出所述目标视频帧的背景图像为绿幕的情况下,将所述目标视频帧的第一类像素点的第一rgb值的平均值确定为每一像素点在所述目标视频帧的背景图像中的第二rgb值,其中,所述第一类像素点为色调h分量值与绿色对应的色调值之差的绝对值小于第一预设阈值的像素点;

第二确定单元,用于在所述判断单元判断出所述目标视频帧的背景图像为蓝幕的情况下,将所述目标视频帧的第二类像素点的第一rgb值的平均值确定为每一像素点在所述目标视频帧的背景图像中的第二rgb值,其中,所述第二类像素点为色调h分量值与蓝色对应的色调值之差的绝对值小于第二预设阈值的像素点。

具体的,所述装置还可以包括:

第二调整模块,用于在所述第二确定模块104根据每一像素点的掩像值,确定每一像素点在所述目标视频帧的前景图像中的第三rgb值之前,根据以下计算公式,调整所述目标视频帧中每一像素点的掩像值:

其中,α′为调整后的所述目标视频帧中像素点的掩像值,α为调整前的所述目标视频帧中该像素点的掩像值。

具体的,所述装置还可以包括:

第二获得模块,用于在所述第二确定模块104根据每一像素点的掩像值,确定该像素点在所述目标视频帧的前景图像中的第三rgb值之后,获得预设的替换所述目标视频帧的背景图像的第二背景图像,并获得所述第二背景图像的每一像素点的第四rgb值;

替换模块,用于根据所述目标视频帧的每一像素点的掩像值、第三rgb值、所述第二背景图像的每一像素点的第四rgb值,确定背景替换后的合成图像的每一像素点的rgb值,实现所述目标视频帧的背景替换。

具体的,所述第二获得模块,可以包括:

第二判断子模块,用于判断所述第二背景视频的尺寸是否与所述目标视频帧的尺寸相同;如果是,触发第二获得子模块;否则,触发第三获得子模块;

所述第二获得子模块,用于获得所述第二背景图像的每一像素点的第四rgb值;

所述第三获得子模块,用于将所述第二背景图像缩放至与所述目标视频帧的尺寸相同,再获得缩放后的所述第二背景图像的每一像素点的第四rgb值。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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