发明内容
有鉴于此,本发明实施例提供了一种视频通信方法及系统,以使得在网络带宽无法满足高清视频传输要求的条件下,仍然能在电视上进行高画质的视频通话。
本发明实施例的第一方面提供了一种视频通信方法,包括:
在第一终端录制包含用户头部的背景视频,将所述背景视频发送至第二终端;
在所述第一终端获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测;
在所述第一终端根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述第二终端;
在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
可选地,所述在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或匹配的背景帧之前,还包括以下步骤:
计算每一背景帧中用户的头部偏转角度,以及计算所述每一视频帧中用户的头部偏转角度;其中,所述头部偏转角度的计算在第一终端执行,或者在接收到所述背景帧和视频帧的第二终端执行。
可选地,所述计算头部偏转角度的步骤,包括:
通过人脸形变模型对所述背景帧或者视频帧中的脸型和表情进行拟合,计算得到脸部图像中的头部旋转角度。
可选地,将所述背景帧与所述脸部图像进行融合,生成最终的合成图像,包括:
通过相似变换,将所述脸部图像与背景帧中的人脸区域进行位置对齐;
根据所述人脸形变模型中的表情参数和头部旋转角度对人脸特征点进行更新,根据更新后的人脸特征点改变背景帧中的人脸区域;
将所述人脸区域与所述脸部图像进行融合,生成最终的合成图像。
可选地,所述视频通信方法还包括:
缓存所述背景视频,所述背景视频记录了用户的发型、身型、衣着以及所处的室内环境。
本发明实施例的第二方面提供了一种视频通信系统,包括:
第一终端,用于录制包含用户头部的背景视频,将所述背景视频发送至第二终端;
所述第一终端还用于,获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测;
所述第一终端还用于,根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述第二终端;
所述第二终端,用于在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
本发明实施例的第三方面提供了一种视频通信方法,包括:
在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备;
在所述终端设备获取当前用户的视频信息,并对视频信息中用户的人脸特征点进行检测;
在所述终端设备根据所述人脸特征点从所述视频信息的视频帧中对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
可选地,所述在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或匹配的背景帧之前,还包括以下步骤:
在所述终端设备计算每一背景帧中用户的头部偏转角度,以及计算所述每一视频帧中用户的头部偏转角度。
可选地,所述计算头部偏转角度的步骤,包括:
通过人脸形变模型对所述背景帧或者视频帧中的脸型和表情进行拟合,计算得到脸部图像中的头部旋转角度。
本发明实施例的第四方面提供了一种视频通信装置,包括:
录制模块,用于在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备;
检测模块,用于在所述终端设备获取当前用户的视频信息,并对视频信息中用户的人脸特征点进行检测;
处理模块,用于在所述终端设备根据所述人脸特征点从所述视频信息的视频帧中对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
本发明实施例的第五方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现第三方面中方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第三方面中方法的步骤。
在本发明实施例中,在第一终端录制包含用户头部的背景视频,将所述背景视频发送至第二终端,获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测,根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述第二终端;在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像,因此每次只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求,具有较强的易用性和实用性。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当……时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。需要说明的是,下面的实施例应用在如图1所示的视频通信系统,包括第一终端和第二终端,两位用户通过所述第一终端和第二终端实现视频通话。
实施例一
图1示出了本发明实施例一提供的视频通信方法的实现流程示意图。如图2所示,该视频通信方法具体可包括如下步骤S201至步骤S204。
步骤S201:在第一终端录制包含用户头部的背景视频,将所述背景视频发送至第二终端。
例如,两位用户A和用户B通过电视进行视频通话,摄像头位于电视机顶端。首先,每位用户需要录制一段背景视频,录制好的背景视频发送至与用户通信的另一端(称为第二终端),录制背景视频的方法举例说明如下:用户在电视前静止不动,然后缓慢的以脖颈为轴向左和向右转动头部。用户A录制好的背景视频会被传送给用户B;之后,只截取视频中用户A的脸部图像,发送给用户B,并在用户B的那一端,将用户A的背景视频与他/她的脸部图像融合,融合后的合成视频可以尽量真实地反应用户A的头部转动。同样,用户B也会录制背景视频、截取脸部图像发送给用户A,并在用户A的那一端做融合。
采用这样的方法,在已经完成背景视频的录制与传送后,每次视频通话时只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求。同时,由于背景视频只传输一次,之后会被重复使用,因此可以用比较高的码率对背景进行编码,保证背景的高质量。背景视频可以被存储,以备下次重新使用,省去了用户每次都要录制背景视频的时间。另外,可以存储多份不同时期录制的背景视频,这样的背景视频可能记录了用户的不同发型、身型、衣着、室内环境,用户可以根据喜好进行选择,使得系统实现了“扩展现实”的功能。需要指出的是,此种方法只适用与两位用户之间的视频通话,不适用于大于等于3人的视频会议场景。录制用户转动头部的背景视频,目的是为了在合成视频中更真实地反应用户的头部转动。因此,需要估计用户当前的头部转动角度,并根据这个角度在背景视频中选择合适的视频帧进行融合。
可选地,在视频录制的过程中同时在线检测人脸特征点,当人脸特征点检测失败时(用户头部旋转速度过快或角度过大),需要提示“录制失败”以及原因,并重新开始录制过程直至成功录制。需要说明的是,背景视频由发送端做人脸特征点检测,有以下作用:一、方便检测头部旋转角度,防止旋转角度过大;二、方便后续图像对齐后融合。
可选地,录制结束后可以对视频进行后处理。当用户头部旋转的速度特别慢时,生成的背景视频可能持续时间很长,导致文件尺寸过大。此时可以在不影响头部旋转流畅度的条件下,通过删减一部分视频帧来减小背景视频的时长。
本地用户录制好的背景视频会被传输给第二终端用户。由于背景视频只传输一次,因此可以使用比较高的码率提高画面质量,如使用H.264编码1080p30fps格式的视频,可以使用10Mbps以上的码率。
步骤S202:在所述第一终端获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测。
在电视机摄像头采集到的视频中,检测出二维人脸特征点的位置Mi=[Xi,Yi],i∈{1,2,…,K}。目前已经有很多成熟的人脸特征点检测算法。图3给出的是目前使用的人脸特征点检测算法可以提供的70个二维人脸特征点,包含了脸边缘(1-17)、眼眉(18-27)、鼻子(28-36)、眼睛(37-48)、嘴唇(49-68)和瞳孔(69-70)。需要说明的是,录制的背景图案以及当前视频通话录制的都要进行人脸特征点检测,便后续确定偏转角度。在融合时才能筛选出角度最为一致的背景图像,并且筛选背景图像时选择时间较为接近的,确保连贯性。
步骤S203:在所述第一终端根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述第二终端。
在检测到人脸二维特征点后,根据人脸二维特征点的位置裁剪出固定宽高比的脸部图像(如1:1),并缩放至固定的图像尺寸(如480x480),之后送入视频编码器进行编码。
前面根据人脸二维特征点的位置裁剪脸部图像,必须是矩形的图案,才能方便编码,所以存在非脸部像素。非脸部像素涂成单一颜色,能够减少带宽损耗。
由于在第二终端只有脸部数据会被使用,因此可以通过将非脸部像素全部涂成相同颜色(如黑色)的方式进一步减少无用信息,提高数据压缩比。例如,可以找到二维人脸特征点的凸包(Convex hull),然后将凸包外的像素值全部设置为零。
录制好的背景视频首先经过编码、传输到第二终端,解码后等待被使用;之后,被裁剪、缩放过的人脸视频也会被编码、传输到第二终端,解码后与背景视频进行融合。可选地,为了减少重复计算,背景视频中检测到的人脸特征点位置以及人脸视频中的人脸特征点位置,都可以被记录在视频传输流中,通过网络被传送到第二终端,加以重复利用。
头部旋转包含三种方向,分别是raw(以脖颈为轴旋转,θ)、pitch(抬低头
)和roll(以鼻子为轴旋转ω)。其中,raw旋转较普遍、且角度大、不容易通过图像变形进行模拟。因此,在录制背景视频的过程中,用户做头部raw旋转。在背景视频与脸部图像进行融合时,需要按照脸部图像中的头部raw角度,选择背景视频中有相同或类似raw角度的视频帧进行融合,增强生成视频的真实性。
可选地,在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或匹配的背景帧之前,还包括以下步骤:
计算每一背景帧中用户的头部偏转角度,以及计算所述每一视频帧中用户的头部偏转角度;其中,所述头部偏转角度的计算在第一终端执行,或者在接收到所述背景帧和视频帧的第二终端执行。所述计算头部偏转角度的步骤,包括:
通过人脸形变模型对所述背景帧或者视频帧中的脸型和表情进行拟合,计算得到脸部图像中的头部旋转角度,具体说明如下:
通过人脸二维特征点可以求出头部的旋转角度。常用的方法,如Perspective-n-Point,需要使用一张3D平均脸,通过最小化3D平均脸在图像平面的投影位置与人脸二维特征点的距离来求取头部的旋转角度。由于3D平均脸与包含表情的特定脸部图像有非常大的差距,Perspective-n-Point无法计算出精确的头部旋转角度。为了解决这一问题,使用人脸形变模型对不同的人脸形状、不同的表情进行拟合。人脸形变模型通常包含两组参数,一组参数α用来控制脸型,另一组参数β用来控制表情。通过对α、β以及平移(t)、三个头部旋转角度raw(θ)、
roll(ω)的选取,可以使得人脸形变模型生成的3D人脸在图像平面的投影点,尽量接近人脸二维特征点。公式表达如下:
其中,EM用来计算人脸形变模型生成的3D人脸在图像平面的投影点与人脸二维特征点的距离。如果使用欧几里得距离,则有:
其中
代表人脸形变模型在脸型参数为α、表情参数为β、平移t、三个头部旋转角度分别为θ、
ω的情况下,生成3D人脸的第i个特征点在图像平面上的投影位置。具体而言,
可以拆分为如下三个公式:
公式(3)使用了基于主成分分析的人脸形变模型,l
i是这个人脸形变模型生成的第i个人脸特征点的三维坐标,μ为人脸形变模型提供的平均脸,P
α与P
β分别代表与人脸形状和表情相关的主成分。公式(4)对l
i做平移与旋转变换,得到
其中t为平移向量,R为一个3×3的旋转矩阵,可以通过旋转角度θ、
ω计算出来。最后,公式(5)通过投影变换π将三维点
投影到二维平面,投影变换π的参数为固定值,可以直接从摄像头中获取。
公式(1)中,Eα和Eβ为正则项,用来规范脸型与表情参数的取值,防止人脸形变模型对人脸二维特征点的过度拟合。Eα和Eβ可以选择使用二次函数进行描述,比如:
Eα(α)=αTQaα (6)
Eβ(β)=βTQββ (7)
其中,矩阵Qa与Qβ分别为a与β对应的正则矩阵,其数值由人脸形变模型提供。
其中,公式(1)可以通过梯度下降法求解。由于上述方法考虑到了不同用户脸型以及表情的变化,因此可以得到更精确的头部转动raw角度值。
步骤S204:在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
对于背景视频的每一帧,同样可以按照公式(1)计算出raw角度。对于每张脸部图像,可以直接在背景视频中找到raw角度最相似的帧进行后续的融合:
其中,i为被选择的背景帧索引,θ
t为通过当前脸部图像计算出的头部旋转raw角度;
代表背景视频中第i帧的raw角度。
通过上述方法从背景视频中选择和视频帧中头部旋转角度相接近或者相同的视频帧。
然而,在背景视频的采集过程中,相同的raw角度可能会对应着多个背景帧,需要在这些帧中选择一个最合适的。为了保持生成视频的连贯性,需要考虑前面时刻的帧选择结果,比如,公式(8)可以改写为:
其中,it-1是前一时刻的帧选择结果,新加入的项|it-1-i|保证了选择背景帧的连贯性,λ为该项的权重值。通过上述方法,当背景视频中有多个背景帧的头部旋转角度和视频帧中头部旋转角度相同时,选取时间较为接近的背景帧。
选择好背景帧后,需要将脸部图像与背景图像融合在一起,使得最终的合成图像接近真实的用户表情以及头部旋转角度。融合过程分为三个主要步骤,
脸部图像相似变换的流程如下:
首先,通过基于相似变换的人脸特点匹配,将脸部图像与背景图像中的人脸部分进行位置对齐:
其中,S(M
i|γ)代表使用参数γ对第i个特征点做相似变换,
是背景图像中第i个人脸特征点。γ指相似形变的参数。
公式(10)将脸部图像中的二维特征点与背景图像中的二维特征点通过相似变换进行对齐。然而,由于表情的影响,这两组对应点可能存在差异,使得对齐结果不准确。由于在上一个步骤计算Raw角度的过程中,对脸部图像中的二维特征点使用人脸形变模型进行了拟合,得到了二维特征点对应的表情参数β,因此在这里,可以方便地将表情参数重置为零,去除由表情因素带来的二维特征点不匹配。具体的,可以使用公式(11)代替公式(10)来计算相似变换的参数:
在确定了相似变换参数γ后,使用这组参数对整张脸部图像做相似变换,得到变形后的脸部图像Iface。
背景图像变形的流程如下:
在背景录制的过程中,由于用户处于自然表情状态,因此背景视频中的人脸没有表情。然而,为了更好的与脸部图像融合,需要对背景图像中的人脸部分进行变形,比如,当嘴张大的时候,背景图像中的下巴部分应该做出调整。如上所述,对于背景视频中的每一帧,使用公式(1)计算头部旋转的Raw角度
同时,通过公式(1)还可以得到脸型参数为
表情参数
平移量
以及另外两个头部旋转角度
和
接下来,使用脸部图像中计算出来的表情参数β以及头部旋转角度
和ω,修改背景图像中的人脸二维特征点位置:
其中,
andω′=w
ωω+(1-wωωib,0≤wω≤1 (13)
与w
ω是权重项,使得最终合成的图像对用户pitch和roll方向的头部旋转有一定的体现,但又不至于使得画面过于扭曲失真。
在得到更新后的人脸二维特征点
后,将其作为控制点,使用图像变形方法,如MLS(Moving Least Square),改变背景图像中的脸部区域,根据更新后的人脸二维特征点
做变形,使得变形后的图像I
bk可以更好的与脸部图像融合在一起。
在最后一步中,将经过相似变换的脸部图像Iface与形变后的背景图像Ibk融合在一起。在过程(7.1)中,已经将脸部图像与背景图像的空间位置进行了对齐,接下来,还需要融合纹理(颜色值)。由于背景视频可能是较早时期录制的,背景视频的环境光与脸部图像的环境光可能存在较大差异,因此,使用简单的图像融合法(如,根据边界位置的距离对每个像素加权平均)往往得不到好的效果。Poisson Editing是一个效果非常有效的纹理融合方法,可以很好的处理环境光不匹配的问题,但Poisson Editing速度较慢,无法满足实时性的要求。使用一种金字塔式的图像融合方法,来加快Poisson Editing的融合速度,具体算法如下:
S1.求出Iface中人脸二维特征点形成的凸包,作为融合掩模(Mask)M;
S2.根据掩模M,分别在Iface与Ibk中截取出大小一致的两个矩形区域Bface、Bbk;
S3.分别对Bface与Bbk做多阶critically sampled小波变换;
S4.结合掩模M,对Bface与Bbk的低频分量使用Poisson Editing进行融合;
S5.使用Poisson Editing融合的结果作为新的低频分量,并结合Bface的高频分量做小波反变换,生成最终的融合结果。
N阶小波变换会使得图像低频分量的分辨率变为原始图像分辨率的1/2N,因此当N较大时,图像低频分量的分辨率会远远小于原始图片的分辨率,使得Poisson Editing的速度大幅增加。
在本发明实施例中,在第一终端录制包含用户头部的背景视频,将所述背景视频发送至第二终端,获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测,根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述第二终端,在所述第二终端根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像,因此每次只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求,具有较强的易用性和实用性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
还将理解的是,虽然术语“第一”、“第二”等在文本中在一些实施例中用来描述各种元素,但是这些元素不应该受到这些术语的限制。这些术语只是用来将一个元素与另一元素区分开。例如,第一终端可以被命名为第二终端,并且类似地,第二终端可以被命名为第一终端,而不背离各种所描述的实施例的范围。第一终端和第二终端都是端,但是它们不是同一端。
实施例二
图4示出了本发明实施例二提供的视频通信方法的实现流程示意图。如图4所示,该视频通信方法具体可包括如下步骤S401至步骤S403。
步骤S401:在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备。
例如,两位用户A和用户B通过电视进行视频通话,摄像头位于电视机顶端。首先,每位用户需要录制一段背景视频,录制好的背景视频发送至与用户通信的另一端(称为另一终端设备),录制背景视频的方法举例说明如下:用户在电视前静止不动,然后缓慢的以脖颈为轴向左和向右转动头部。用户A录制好的背景视频会被传送给用户B;之后,只截取视频中用户A的脸部图像,发送给用户B,并在用户B的那一端,将用户A的背景视频与他/她的脸部图像融合,融合后的合成视频可以尽量真实地反应用户A的头部转动。同样,用户B也会录制背景视频、截取脸部图像发送给用户A,并在用户A的那一端做融合。
采用这样的方法,在已经完成背景视频的录制与传送后,每次视频通话时只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求。同时,由于背景视频只传输一次,之后会被重复使用,因此可以用比较高的码率对背景进行编码,保证背景的高质量。背景视频可以被存储,以备下次重新使用,省去了用户每次都要录制背景视频的时间。另外,可以存储多份不同时期录制的背景视频,这样的背景视频可能记录了用户的不同发型、身型、衣着、室内环境,用户可以根据喜好进行选择,使得系统实现了“扩展现实”的功能。需要指出的是,此种方法只适用与两位用户之间的视频通话,不适用于大于等于3人的视频会议场景。录制用户转动头部的背景视频,目的是为了在合成视频中更真实地反应用户的头部转动。因此,需要估计用户当前的头部转动角度,并根据这个角度在背景视频中选择合适的视频帧进行融合。
可选地,在视频录制的过程中同时在线检测人脸特征点,当人脸特征点检测失败时(用户头部旋转速度过快或角度过大),需要提示“录制失败”以及原因,并重新开始录制过程直至成功录制。需要说明的是,背景视频由发送端做人脸特征点检测,有以下作用:一、方便检测头部旋转角度,防止旋转角度过大;二、方便后续图像对齐后融合。
可选地,录制结束后可以对视频进行后处理。当用户头部旋转的速度特别慢时,生成的背景视频可能持续时间很长,导致文件尺寸过大。此时可以在不影响头部旋转流畅度的条件下,通过删减一部分视频帧来减小背景视频的时长。
本地用户录制好的背景视频会被传输给另一终端设备用户。由于背景视频只传输一次,因此可以使用比较高的码率提高画面质量,如使用H.264编码1080p 30fps格式的视频,可以使用10Mbps以上的码率。
步骤S402:在所述终端设备获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测。
在电视机摄像头采集到的视频中,检测出二维人脸特征点的位置Mi=[Xi,Yi],i∈{1,2,…,K}。目前已经有很多成熟的人脸特征点检测算法。图4给出的是目前使用的人脸特征点检测算法可以提供的70个二维人脸特征点,包含了脸边缘(1-17)、眼眉(18-27)、鼻子(28-36)、眼睛(37-48)、嘴唇(49-68)和瞳孔(69-70)。需要说明的是,录制的背景图案以及当前视频通话录制的都要进行人脸特征点检测,便后续确定偏转角度。在融合时才能筛选出角度最为一致的背景图像,并且筛选背景图像时选择时间较为接近的,确保连贯性。
步骤S403:在所述终端设备根据所述人脸特征点从所述视频信息的视频帧中对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
在检测到人脸二维特征点后,根据人脸二维特征点的位置裁剪出固定宽高比的脸部图像(如1:1),并缩放至固定的图像尺寸(如480x480),之后送入视频编码器进行编码。
前面根据人脸二维特征点的位置裁剪脸部图像,必须是矩形的图案,才能方便编码,所以存在非脸部像素。非脸部像素涂成单一颜色,能够减少带宽损耗。
由于在另一终端设备只有脸部数据会被使用,因此可以通过将非脸部像素全部涂成相同颜色(如黑色)的方式进一步减少无用信息,提高数据压缩比。例如,可以找到二维人脸特征点的凸包(Convex hull),然后将凸包外的像素值全部设置为零。
录制好的背景视频首先经过编码、传输到另一终端设备,解码后等待被使用;之后,被裁剪、缩放过的人脸视频也会被编码、传输到另一终端设备,解码后与背景视频进行融合。可选地,为了减少重复计算,背景视频中检测到的人脸特征点位置以及人脸视频中的人脸特征点位置,都可以被记录在视频传输流中,通过网络被传送到另一终端设备,加以重复利用。
头部旋转包含三种方向,分别是raw(以脖颈为轴旋转,θ)、pitch(抬低头
)和roll(以鼻子为轴旋转ω)。其中,raw旋转较普遍、且角度大、不容易通过图像变形进行模拟。因此,在录制背景视频的过程中,用户做头部raw旋转。在背景视频与脸部图像进行融合时,需要按照脸部图像中的头部raw角度,选择背景视频中有相同或类似raw角度的视频帧进行融合,增强生成视频的真实性。
可选地,在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或匹配的背景帧之前,还包括以下步骤:
计算每一背景帧中用户的头部偏转角度,以及计算所述每一视频帧中用户的头部偏转角度;其中,所述头部偏转角度的计算在终端设备执行,或者在接收到所述背景帧和视频帧的另一终端设备执行。所述计算头部偏转角度的步骤,包括:
通过人脸形变模型对所述背景帧或者视频帧中的脸型和表情进行拟合,计算得到脸部图像中的头部旋转角度,具体说明如下:
通过人脸二维特征点可以求出头部的旋转角度。常用的方法,如Perspective-n-Point,需要使用一张3D平均脸,通过最小化3D平均脸在图像平面的投影位置与人脸二维特征点的距离来求取头部的旋转角度。由于3D平均脸与包含表情的特定脸部图像有非常大的差距,Perspective-n-Point无法计算出精确的头部旋转角度。为了解决这一问题,使用人脸形变模型对不同的人脸形状、不同的表情进行拟合。人脸形变模型通常包含两组参数,一组参数α用来控制脸型,另一组参数β用来控制表情。通过对α、β以及平移(t)、三个头部旋转角度raw(θ)、
roll(ω)的选取,可以使得人脸形变模型生成的3D人脸在图像平面的投影点,尽量接近人脸二维特征点。公式表达如下:
其中,EM用来计算人脸形变模型生成的3D人脸在图像平面的投影点与人脸二维特征点的距离。如果使用欧几里得距离,则有:
其中
代表人脸形变模型在脸型参数为α、表情参数为β、平移t、三个头部旋转角度分别为θ、
ω的情况下,生成3D人脸的第i个特征点在图像平面上的投影位置。具体而言,
可以拆分为如下三个公式:
公式(3)使用了基于主成分分析的人脸形变模型,l
i是这个人脸形变模型生成的第i个人脸特征点的三维坐标,μ为人脸形变模型提供的平均脸,P
α与P
β分别代表与人脸形状和表情相关的主成分。公式(4)对l
i做平移与旋转变换,得到
其中t为平移向量,R为一个3×3的旋转矩阵,可以通过旋转角度θ、
ω计算出来。最后,公式(5)通过投影变换π将三维点
投影到二维平面,投影变换π的参数为固定值,可以直接从摄像头中获取。
公式(1)中,Eα和Eβ为正则项,用来规范脸型与表情参数的取值,防止人脸形变模型对人脸二维特征点的过度拟合。Eα和Eβ可以选择使用二次函数进行描述,比如:
Eα(α)=αTQaα (6)
Eβ(β)=βTQββ (7)
其中,矩阵Qa与Qβ分别为a与β对应的正则矩阵,其数值由人脸形变模型提供。
其中,公式(1)可以通过梯度下降法求解。由于上述方法考虑到了不同用户脸型以及表情的变化,因此可以得到更精确的头部转动raw角度值。
对于背景视频的每一帧,同样可以按照公式(1)计算出raw角度。对于每张脸部图像,可以直接在背景视频中找到raw角度最相似的帧进行后续的融合:
其中,i为被选择的背景帧索引,θ
t为通过当前脸部图像计算出的头部旋转raw角度;
代表背景视频中第i帧的raw角度。
通过上述方法从背景视频中选择和视频帧中头部旋转角度相接近或者相同的视频帧。
然而,在背景视频的采集过程中,相同的raw角度可能会对应着多个背景帧,需要在这些帧中选择一个最合适的。为了保持生成视频的连贯性,需要考虑前面时刻的帧选择结果,比如,公式(8)可以改写为:
其中,it-1是前一时刻的帧选择结果,新加入的项|it-1-i|保证了选择背景帧的连贯性,λ为该项的权重值。通过上述方法,当背景视频中有多个背景帧的头部旋转角度和视频帧中头部旋转角度相同时,选取时间较为接近的背景帧。
在本发明实施例中,在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备,获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测,根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像,因此每次只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求,具有较强的易用性和实用性。
实施例三
请参考图5,其示出了本发明实施例三提供的视频通信装置的结构框图。视频通信装置50包括:录制模块51、检测模块52和处理模块53。其中,各模块的具体功能如下:
录制模块51,用于在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备;
检测模块52,用于在所述终端设备获取当前用户的视频信息,并对视频信息中用户的人脸特征点进行检测;
处理模块53,用于在所述终端设备根据所述人脸特征点从所述视频信息的视频帧中对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
可选地,视频通信装置50还包括:
计算模块,用于在所述终端设备计算每一背景帧中用户的头部偏转角度,以及计算所述每一视频帧中用户的头部偏转角度。
可选地,计算模块包括:
通过人脸形变模型对所述背景帧或者视频帧中的脸型和表情进行拟合,计算得到脸部图像中的头部旋转角度。
在本发明实施例中,在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备,获取当前用户的视频信息,并对视频信息中用户人脸的人脸特征点进行检测,根据所述人脸特征点在人脸上的位置对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像,因此每次只需要对脸部图像进行压缩和传输,保证了脸部图像的高质量,降低了对网络上行带宽的要求,具有较强的易用性和实用性。
实施例四
图6是本发明四实施例提供的终端设备的示意图,为了便于说明,仅示出了与本发明实施例相关的部分。如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如视频通信方法程序。所述处理器60执行所述计算机程序62时实现上述各个视频通信方法实施例中的步骤,例如图2所示的步骤S401至S403。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。例如,所述计算机程序62可以被分割成录制模块、检测模块和激活模块,各模块的具体功能如下:
录制模块,用于在终端设备录制包含用户头部的背景视频,将所述背景视频发送至与所述终端设备进行视频通信的另一终端设备;
检测模块,用于在所述终端设备获取当前用户的视频信息,并对视频信息中用户的人脸特征点进行检测;
处理模块,用于在所述终端设备根据所述人脸特征点从所述视频信息的视频帧中对脸部图像进行截取、压缩、并传输到所述另一终端设备,以使得在所述另一终端设备根据所述视频帧中用户的头部旋转角度从所述背景视频中选择头部旋转角度相近或相匹配的背景帧,并将所述背景帧与所述脸部图像进行融合,生成最终的合成图像。
所述终端设备6可以是桌上型计算机、笔记本、掌上电脑等计算设备。所述终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备的示例,并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。