修改视频通话数据的制作方法

文档序号:11456202阅读:262来源:国知局
修改视频通话数据的制造方法与工艺



背景技术:

基于分组的通信系统允许诸如个人计算机之类的设备的用户使用诸如互联网协议(ip)之类的分组协议而跨计算机网络进行通信。基于分组的通信系统可以用于各种类型的通信事件。可以建立的通信事件包括语音通话、视频通话、即时消息传递、语音邮件、文件传输等。这些系统对用户是有益的是因为它们与固定线路或移动网络相比常常具有显著更低的成本。长途通信尤其是这样的情况。为了使用基于分组的系统,用户在其设备上安装并执行客户端软件。所述客户端软件提供了基于分组的连接以及诸如注册和认证之类的其他功能。

通信系统允许设备的用户跨诸如互联网之类的计算机网络来进行通信。可以建立的通信事件包括语音通话、视频通话、即时消息传递、语音邮件、文件传输等。利用视频通话,除了语音信息之外,通话者还能够查看另一方的视频图像。这使得各方之间能够进行更为自然的通信,因为脸部表情也被传送,由此使得视频通话更加类似于面对面对话。

众所周知的是,通信客户端应用提供了使得用户能够通过添加二维剪贴画效果来在用户设备处修改所捕获的视频的功能。例如,用户可以选择添加胡须效果,应用检测到用户的脸部在所捕获的帧中的位置,并且根据用户的脸部在所捕获的帧中的位置将所述胡须效果覆盖在所述帧中的位置处。因此,胡须以二维方式随着用户脸部在所捕获的视频中改变位置而进行移动。



技术实现要素:

本公开的实施例涉及在视频通话期间向所显示的视频帧上进行绘制。用户所绘制的绘图被映射到视频帧中的用户脸部的多个点上,以使得该绘图以三维方式随用户脸部移动。

发明人已经认识到,由于该绘图是由用户徒手输入的,因此难以准确地绘制到所显示的视频帧上,尤其是当该视频帧中的用户的脸部正在移动时。该问题在用户绘制到另一个用户的脸部上,即无法控制所显示的视频帧中的脸部的移动量时更加严重。

根据本公开的第一方面,提供了一种在通过通信网络与至少一个另外的用户终端进行视频通话的期间在用户终端处实现的方法,所述方法包括:在所述用户终端的显示器上显示用户界面,以用于显示所接收的视频帧;当所接收的视频帧被显示在所述用户界面中时,检测由用户使用所述用户终端的输入设备对在所述用户界面中所显示的可选择的按钮的选择;响应于所述检测,禁用对所述所接收的视频帧之后所接收的视频帧的显示;通过在所述用户终端的处理器上执行脸部追踪算法来确定所述所接收的视频帧中的用户的脸部的位置;在所述可选择的按钮处于被选择状态时接收多个绘图输入,每个绘图输入定义了要应用在显示在所述脸部的脸部位置处的图像数据;通过将所述图像数据应用于所述脸部的所述脸部位置而根据所接收的多个绘图输入来修改所显示的视频帧;对条件进行检测并且响应于检测到所述条件,针对在检测到所述条件之后所接收的每个视频帧,所述方法还包括:通过执行所述脸部追踪器算法来确定在所述所接收的视频帧中的所述脸部的位置,从而确定所述视频帧中的所述脸部位置的定位;通过将所述图像数据应用于所述脸部上的所述位置中的每个位置来修改所述视频帧;并且在所述用户界面中显示经修改的视频帧。

根据本公开的另一个方面,提供了一种用户终端,包括:显示器;输入设备;网络接口,其被配置为在所述用户终端与至少一个另外的用户终端之间的视频通话期间,发送和接收所述用户终端与所述通信网络之间的视频数据;处理器,其被配置为运行在所述视频通话期间用于执行以下操作的应用:在所述显示器上显示用户界面,以用于显示所接收的视频帧;当所接收的视频帧被显示在所述用户界面上时,检测由用户使用所述输入设备对在所述用户界面中所显示的可选择的按钮的选择;响应于所述检测,禁用对所述所接收的视频帧之后所接收的视频帧的显示;通过执行脸部追踪器算法来确定所述所接收的视频帧中的用户的脸部的位置;在所述可选择的按钮处于被选择状态时接收多个绘图输入,每个绘图输入定义了要应用在所述脸部上的脸部位置处的图像数据;通过将所述图像数据应用至所述脸部上的所述脸部位置中的每个脸部位置上而根据所接收的多个绘图输入来修改所显示的视频帧;以及对条件进行检测并且响应于检测到所述条件,针对在检测到所述条件之后所接收的每个视频帧:通过执行所述脸部追踪器算法来确定在所述所接收的视频帧中的所述脸部的位置,从而确定所述视频帧中的所述脸部位置的定位;通过将所述图像数据应用于所述脸部上的所述位置中的每个位置来修改所述视频帧;并且在所述用户界面中显示经修改的视频帧。

根据本公开的另一个方面,提供了一种计算机程序产品,所述计算机程序产品被实施在计算机可读介质上,并且被配置为当在用户终端与至少一个另外的用户终端之间的视频通话期间在所述用户终端的处理器上执行时,执行以下在本文中所描述的方法中的任何方法。

提供了该发明内容以用简化的形式引入了在以下的具体实施方式中进一步描述的概念的选择。该发明内容不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

为了更好地理解本公开并且示出可以如何实现本公开,现在将作为示例来参考以下附图,其中:

图1示出了通信系统;

图2示出了用户终端的示意图;

图3示出了在用户终端上执行的帧修改应用与通信客户端应用之间的通信;

图4示出了由帧修改应用所提供的用户界面;

图5a和图5b示出了针对修改视频数据的过程的流程图;

图6示出了识别所捕获的视频帧中的脸部的多个点的三维三角网格;

图7示出了二位纹理图;和

图8示出了通过帧修改应用绘制到所接收的视频帧的应用。

具体实施方式

仅仅作为示例对本公开的实施例进行了描述。

图1示出了通信系统100,其包括与用户终端102相关联的第一用户104(用户a)、与用户终端108相关联的第二用户110(用户b)。用户终端102和108可以在通信系统100中通过通信网络106进行通信,从而允许用户104和110通过通信网络106与彼此通信。通信网络106可以是具有在用户终端102与第二用户终端108之间提供通信信道的能力的任何合适的网络。例如,通信网络106可以是互联网或者诸如高数据速率移动网络之类的另一种类型的网络,例如第三代(“3g”)移动网络。

应当注意的是,在可替代的实施例中,用户终端可以经由未在图1中示出的额外的中间网络而连接至通信网络106。例如,如果用户终端102是移动设备,则其可以经由诸如gsm或umts网络之类的蜂窝移动网络(未在图1中示出)而连接至通信网络106。

用户终端102可以是例如移动电话、个人数字助理(“pda”)、个人计算机(“pc”)(包括,例如windowstm、macostm和linuxtmpc)、平板计算机、游戏设备、或者能够连接至通信网络106的其他嵌入式设备。用户终端102被设置为从用户a104接收信息或者向用户a104输出信息。

用户终端102执行由与通信系统100相关联的软件提供商所提供的通信客户端应用112。通信客户端应用112是在用户终端102中的本地处理器上执行的软件程序。通信客户端应用112在用户终端102处执行所需的处理,以便使得用户终端102通过通信系统100发送和接收数据。在用户终端102处所执行的通信客户端应用112可以通过数字证书的呈现(例如,证明用户104是通信系统的真实订阅者——在wo2005/009019中更加详细地进行了描述)而被认证以通过通信系统进行通信。

用户终端108可以对应于用户终端102。用户终端108在本地处理器上执行与在用户终端102处所执行的通信客户端应用112相对应的通信客户端应用114。在用户终端108处的通信客户端应用114执行所需要的处理以允许用户110通过网络106进行通信。在图1中所示出的用户终端是通信系统中的末端。为了清楚起见,图1仅仅示出了两个用户(104和110)和两个用户终端(102和108),但是更多的用户和用户设备可以被包括在通信系统100中,并且可以使用在相应的用户设备上执行的相应的通信客户端而通过通信系统100进行通信,如在本领域中公知的。

图2示出了其上执行有用于通过通信系统100来进行通信的通信客户端应用的用户终端102的详细视图。用户终端102包括连接有诸如屏幕或触摸屏之类的显示器204的中央处理单元(“cpu”)202、诸如小键盘206之类的输入设备、相机208、和触摸屏204。在下文中所描述的实施例中,相机208可以是集成到用户终端102中或者经由有线或无线连接耦合至用户设备的常规网络相机。可替代地,相机208可以是深度感知相机,例如,飞行时间或结构光相机。输出音频设备210(例如,扬声器)和输入音频设备212(例如,麦克风)连接至cpu202。可以将显示器204、小键盘206、相机208、输出音频设备210、和输入音频设备212集成到如在图2中所示出的用户终端102中。在可替代用户终端中,显示器204、小键盘206、相机208、输出音频设备210、和输入音频设备212中的一个或多个可以不集成到用户终端102中,并且可以经由相应的接口而连接至cpu202。这样的接口的一个示例是usb接口。cpu202连接到网络接口224,例如用于与通信网络106进行通信的调制解调器。可以将网络接口224集成到如在图2中所示出的用户终端102中。在可替代用户终端中,没有将网络接口224集成到用户终端102中。用户终端102还包括用于存储数据的存储器226,如在本领域中公知的那样。存储器226可以是永久性存储器,例如rom。存储器226可以可替代是临时性存储器,例如ram。

用户终端102安装有通信客户端应用112,其中通信客户端应用112被存储在存储器226中并且被设置为在cpu202上执行。图2还示出了在cpu202上执行的操作系统(“os”)214。在os214顶层运行的是在上文中提到的通信客户端应用112的软件堆栈216。软件堆栈示出了i/o层218、客户端引擎层220、和客户端用户界面层(“ui”)222。每一层负责具体的功能。因为每一层通常与两个其他层进行通信,所以这些层被认为布置在堆栈中,如在图2中所示。操作系统214管理计算机的硬件资源,并且处理经由网络接口224而往来于通信网络106的数据。i/o层218包括音频和/或视频编码解码器,其接收到来的经编码的流并且对它们进行解码以适当地输出至扬声器210和/或显示器204,其还从麦克风212和/或相机208接收未编码的音频和/或视频数据并且对它们进行编码以作为流而传输至通信系统100的其他末端用户终端。客户端引擎层220处理如在上文中所讨论的voip系统的连接管理功能,例如通过基于服务器的或者p2p的地址查找和认证来建立呼叫或其他连接。客户端引擎还可以负责没有在本文中讨论的其他辅助功能。客户端引擎220还与客户端用户接口层222进行通信。客户端引擎220还可以被设置为控制客户端用户接口层222以经由在显示器204上显示的通信客户端应用112的用户界面向用户终端102的用户呈现信息,并且经由用户界面从用户终端102的用户接收信息。

也在os214上运行的是帧修改应用230。以下参考作为分别的应用的帧修改应用230和通信客户端应用112来对实施例进行描述,然而,在下文中更加详细地描述的帧修改应用230的功能可以被并入到通信客户端应用程序112之中。

图3示出了帧修改应用230如何与通信客户端应用112进行交互。

如在图3中所示,帧修改应用230被设置成接收所捕获的视频以及绘图指令。帧修改应用230被配置为根据所述绘图指令来修改所捕获的视频帧,并且将经修改的视频帧提供给通信客户端应用程序112。

在下文中所描述的实施例中,帧修改应用230从相机208接收所捕获的视频帧,并且帧修改应用230从用户a104接收绘图指令。将已经响应于从用户a104所接收的绘图指令而被修改的视频帧从帧修改应用230供应至通信客户端应用112,以用于通过网络106而传输至用户终端108。

帧修改应用230经由在显示器204上所显示的用户界面向用户a104呈现信息。

图4示出了在显示器204的可用区域400中显示内容的帧修改应用230。尽管在图4中显示器的可用区域是整个显示器,但显示器的可用区域(即对帧修改应用230可用的区域)可能仅构成该显示器的一部分,例如其中显示器的其余部分由操作系统和/或在其上执行的(多个)其他应用程序所使用以显示其他内容。

如在图4中所示,帧修改应用230所提供的用户界面显示相机208所捕获的视频数据(在图4中,用户a104正在查看相机208)。

如在图4中所示,帧修改应用230可以将至少一个可选择的绘图工具按钮402覆盖在所显示的所捕获的视频上,以由用户a104使用合适的输入设备(例如,鼠标、与触摸屏交互的触控笔、或者直接触摸触摸屏)来选择。可选择的绘图工具按钮402可以包括笔绘图工具按钮404a、口红绘图工具按钮404b、和刷子绘图工具按钮404c。响应于检测到对可选择的绘图工具按钮402中的一个绘图工具按钮的选择,帧修改应用230被设置为将调色板406覆盖在所显示的所捕获的视频上。覆盖在所显示的所捕获的视频上的调色板406与所选择的绘图工具按钮相关联。每个调色板406包括供用户a104使用合适的输入设备来选择的至少一种可选择的颜色。图4示出了包括第一颜色408a、第二颜色408b、第三颜色408c、和第四颜色408d的调色板406。

绘图工具按钮404和颜色408的选择使得用户a104能够在在由帧修改应用230所提供的用户界面中所显示的所捕获的视频数据上进行绘制。帧修改应用230包括三维脸部追踪器功能,其在所捕获的视频数据中识别用户的脸部的多个点,并且在用户移动时对这些点进行追踪。根据在下文中更加详细地描述的实施例,将由用户a104绘制到所显示的所捕获的视频中的用户a的脸部上的绘图映射至由脸部追踪器所识别的用户脸部的点上,以使得绘图以三维的方式随着用户的脸部进行移动。

帧修改应用230可以将可选择的帧渲染调节按钮412覆盖在所显示的所捕获的视频上,以由用户104a使用合适的输入设备来选择。响应于检测到对可选择的帧渲染调节按钮412的选择,帧修改应用230调节所接收的视频帧在由帧修改应用230所提供的用户界面中被渲染的方式。

存储器226包括用于在由帧修改应用230所提供的用户界面中被渲染之前存储所接收的视频帧的数据缓冲器228。

在一个实施例中,如果当所接收的视频帧在由帧修改应用230所提供的用户界面中被显示时,帧修改应用230检测到对可选择的帧渲染调节按钮412的选择(可选择的帧渲染调节按钮412接着处于被选择状态),则帧修改应用230阻止数据缓冲器228中的任何视频帧从数据缓冲器228中被读取以及在由帧修改应用230所提供的用户界面中被渲染,直到可选择的帧渲染调节按钮412再次被选择为止。因此,可选择的帧渲染调节按钮用于暂停到来的实时视频数据。

响应于检测到由用户a104对可选择的帧渲染调节按钮412的再次选择(可选择的帧渲染调节按钮412接着处于未选择状态),帧修改应用230渲染在可选择的帧渲染调节按钮412被再次选择之后在数据缓冲器228中所接收的第一视频帧,并且继续从数据缓冲器228读取随后接收的视频帧以用于在由帧修改应用230所提供的用户界面中渲染。

应当理解的是,在第一次选择可选择的帧渲染调节按钮412与第二次选择可选择的帧渲染调节按钮412之间的时段期间,视频帧仍然由帧修改应用230接收,并且被存储在数据缓冲器228中。

在第二实施例中,如果当所接收的视频帧在由帧修改应用230所提供的用户界面中被显示时,帧修改应用230检测到对可选择的帧渲染调节按钮412的选择(可选择的帧渲染调节按钮412接着处于被选择状态),则帧修改应用230阻止数据缓冲器228中的任何视频帧从数据缓冲器228中被读取以及在由帧修改应用230所提供的用户界面中被渲染,直到经过了预先确定的时间段为止。因此,可选择的帧渲染调节按钮用于减缓到来的实时视频数据。

响应于检测到从选择了可选择的帧渲染调节按钮412开始经过了预先确定的时间段(可选择的帧渲染调节按钮412接着处于未选择状态),帧修改应用230渲染从选择了可选择的帧渲染调节按钮412开始到预先确定的时间段过期之后在数据缓冲器228中所接收的第一视频帧,并且继续从数据缓冲器228读取随后接收的视频帧以用于在由帧修改应用230所提供的用户界面中渲染。

应当理解的是,在选择可选择的帧渲染调节按钮412与预先确定的时间段过期之间的时段期间,视频帧仍然由帧修改应用230接收,并且被存储在数据缓冲器228中。

将参考图5a和图5b更加详细地描述响应于检测到选择了帧渲染调节按钮412的帧修改应用230的操作。

首先参考图5a,其示出了当第一用户终端102和第二用户终端108之间正在进行视频通话时帧修改应用230所执行的方法的流程图500。

过程从步骤s502开始,由此帧修改应用230在由帧修改应用230所提供的用户界面中显示所接收的视频帧。在示例性实施例中,帧修改应用230从第一用户终端102的相机208接收所捕获的视频帧。

在步骤s504处,帧修改应用230检测由用户a104对可选择的帧渲染调节按钮412的选择。

在步骤506处,帧修改应用230检测用户的脸部在所接收到的视频帧中的位置。帧修改应用230可以通过执行脸部追踪器算法来执行步骤s506。所述脸部追踪器算法可以基于已知的活动外观模型(aam)方法。所述脸部追踪器算法以二维方式追踪脸部特征点,并且将三维三角网格拟合至所追踪的脸部特征点。所述脸部追踪器算法确定被拟合至用户的脸部的三维三角网格的每个顶点的三维像素坐标(x,y,z)。所述三维三角网格包括定义了多个三角形的多个顶点。在图6中示出了被拟合至(在视频帧中所捕获的)用户脸部的示例三维三角网格。所述三维三角网格的每个顶点的坐标定义了该顶点在帧中的位置,这可以根据像素数量来定义。如上所述,相机208可以是常规相机或深度感知的相机。当相机208是深度感知相机时,由该深度感知相机所输出的深度信息被用作对脸部追踪器算法的额外的输入,但无论相机208是常规相机还是深度感知相机,所述脸部追踪器算法的输出都是相同的。

帧修改应用230被配置为计算三维三角网格的二维表示。这在本文中被称为二维纹理图700,其在图7中被示出。

用于计算三维三角网格的二维表示的各种可能技术对本领域技术人员而言是公知的,并且因此不在本文中详细讨论。一种示例性方法包括(i)将三维三角网格投影到椭球体上;以及(ii)将所述椭球体投影成二维(例如,使用gall-peters等面积图投影)。

二维纹理图700被覆盖在像素网格上,该像素网格是多个像素宽和多个像素高。该像素宽度和像素高度定义了像素网格的分辨率。像素网格的分辨率可以例如是512×512。uv坐标(被表达为像素网格的像素坐标)用于描述二维纹理图700的表面。二维纹理图700中的每个u,v坐标在视频帧中具有对应的x,y像素坐标。像素网格的像素分辨率是相当随意的。如果像素分辨率太小,则纹理映射(在下文中参考步骤s522描述)将在经修改的图像中引入平滑/模糊。如果像素分辨率太大,则纹理映射和效果渲染将会不必要地变慢。因此,对于本领域技术人员将显而易见的是,选择与所接收的图像中的脸部的最大尺寸近似对应的像素网格的像素分辨率是合适的。脸部网格的u,v坐标对于脸部位置、表情、或姿态是恒定且不变的。在过程500开始之前,u,v坐标在离线预先计算步骤中被计算了一次。

在步骤s508处,帧修改应用230执行纹理映射过程,由此将在步骤s506处所计算的三维三角网格中的每个三角形的纹理复制到二维纹理图700中的对应的三角形。对三维三角网格中的三角形的“纹理”的引用在本文中用于指示三维三角网格中的特定三角形中的每个像素的颜色值。像素颜色值可以根据rgb颜色模型来定义。

在步骤s510处,帧修改应用230检测到已经从用户a104处接收了绘图指令(在本文中另外被称为绘图输入),所述绘图指令定义了要应用于在步骤s502处所接收的视频帧修改。帧修改应用230响应于用户a104在由帧修改应用230所提供的区域中进行绘制而接收绘图指令,其中,所接收的视频帧被显示为已经选择了绘图工具按钮404和颜色408。绘图指令定义了要应用在所接收的视频帧中的用户的脸部上的位置处的图像数据(例如,绘图效果)。在步骤510处,帧修改应用230确定由用户a104进行绘制的一组像素坐标(x,y)。

在步骤s512处,帧修改应用230确定与在步骤s510处所检测到的绘图指令的坐标(x,y)相对应的u,v坐标。在步骤s514处,帧修改应用230以(在步骤s510中所确定的)u,v坐标与相关联的效果信息的形式来将绘图命令存储在存储器226中。与u,v坐标相关联的效果信息包括基于由用户a104所选择的绘图工具按钮404和颜色408而在该u,v坐标处要应用于二维纹理图700的绘图修改的指示。在一些实施例中,效果信息不包括绝对颜色值。替代地,该效果信息包括取决于所选择颜色408的颜色修改因子。该颜色修改因子是根据乘法项和加法项来定义的。因此,具有原始颜色值(r,g,b)的像素根据以下方式而被修改为具有新的颜色值(r',g',b'):

r'=αrr+βr

g'=αgg+βg

b'=αbb+βb

从而,三个乘法项αr、αg、和αb以及三个加法项βr、βg、和βb描述了所要应用的效果。所述三个乘法项和三个加法项的值是预先配置的,并且根据所选择的颜色408而变化。通过以该方式应用颜色修改因子,像素以与视频帧中的未修改的像素保持一致的方式而被修改。例如,如果相机208正在捕获视频的房间中的光照水平改变,则颜色修改因子确保像素是基于其原始颜色值来修改的。实施例还扩展到定义了绝对颜色值的颜色408。所存储的效果信息还包括有关绘图笔划的宽度的信息,其给出了关于要修改的u,v坐标处的像素周围的像素的数量的指示。绘图笔划的宽度取决于所选择的绘图工具按钮404。例如,在选择刷子绘图工具按钮404c时所形成的绘图笔划的宽度可以比选择口红绘图工具按钮404b时所形成的绘图笔划更宽。类似地,在选择口红绘图工具按钮404b时所形成的绘图笔划的宽度可以比在选择钢笔绘图工具按钮404a时所形成的绘图笔划更宽。

在步骤s516处,帧修改应用230根据在步骤s514处所存储的绘制命令来修改二维纹理图700。即,针对在步骤s512处所确定的u,v坐标,帧修改应用230根据其相关联的效果信息来修改二维纹理图700的u,v坐标。

在步骤518处,帧修改应用230执行与在步骤s508处所执行的纹理映射相反的纹理映射过程。在步骤s518处,二维纹理图700中的每个三角形的纹理被复制到在步骤s506处所确定的三维三角网格的对应的三角形。对二维纹理图700中的三角形的“纹理”的引用在本文中用于表示二维纹理图700中的特定三角形中的每个像素的颜色值。

响应于由帧修改应用230所执行的步骤s518,对在步骤s502处所显示的视频帧的修改在由帧修改应用230所提供的用户界面中进行渲染。

步骤s518可以使用z缓冲来实现。如果三维三角网格中的三角形的一部分必须被渲染在视频帧中与三维三角网格的另一个三角形的一部分相同的x,y像素中,则对这些部分的深度(z坐标)进行比较,并且视频帧的x,y像素从最接近于用户终端102的显示器204的观看者(例如,用户a)的三角形获得其颜色。使用z缓冲来执行步骤s518确保了属于三维三角网格中的多于一个三角形的x,y像素从最接近于观看者(例如,用户a)的三角形获得其颜色,即距离较远的三角形被最接近的一个三角形所遮挡。

z缓冲技术的替代物是确定在三维三角网格中的每个三角形的中点处的深度(z坐标)值,并且根据三维三角网格中的所有三角形的中点z值将它们排序成经排序的列表。通过从距离显示器204的观看者最远的三维三角网格中的三角形开始渲染,并且完成有序列表而以渲染距离显示器204的观看者最近的三维三角网格中的三角形结束,这也将正确地对遮挡进行处理。

在步骤520处,帧修改应用230将经修改的视频帧供应至通信客户端应用112以便经由网络接口224通过网络106传输至第二用户终端108。本领域技术人员将意识到的是,可以在传输之前由通信客户端应用112对经修改的视频帧进行处理(例如,进行编码和分组)。应当理解的是,在通过其可以将帧修改应用230的功能并入到通信客户端应用112的实施例中,在步骤s518处,通信在由通信客户端应用112所提供的用户界面中渲染经修改的视频帧,并且不执行步骤s520。

在步骤s522处,帧修改应用230确定是否检测到条件。在第一实施例中,所述条件与可选择的帧渲染调节按钮412再次被选择(在步骤s504处被选择之后)相对应,即,可选择的帧渲染调节按钮412处于未选择状态。在第二实施例中,所述条件与从在步骤s504处选择了可选择的帧渲染调节按钮412开始已经过了预先确定的时间段相对应。

如果帧修改应用230在步骤s522处确定没有检测到所述条件,则过程500进行回步骤s510。在过程500在步骤s510-s522之间循环期间,用户a能够在步骤s502处所显示的单个视频帧中的用户的脸部上进行绘制。这使得与当从数据缓冲器连续地读取所接收的视频帧,以用于在由帧修改应用230所提供的用户界面中渲染时用户在移动相比,用户a104能够在视频帧中的脸部上精确地绘制。

如果帧修改应用230在步骤522处确定已经检测到所述条件,则过程500进行至在图5b中所示出的步骤s524。

在步骤524处,帧修改应用230从所述数据缓冲器接收视频帧。

在第一实施例中,在步骤s524处所接收的视频帧与第一视频帧相对应,所述第一视频帧是在可选择的帧渲染调节按钮412被选择为处于未选择状态之后在所述数据缓冲器中所接收的。在第二实施例中,在步骤s524处所接收的视频帧与第一视频帧相对应,所述第一视频帧是在从检测到在s504处选择了可选择的帧渲染调节按钮412开始预先确定的时间段过期之后在所述数据缓冲器中所接收的。

在步骤s526处,帧修改应用230检测在步骤s522处所接收的视频帧中的用户的脸部的位置。已经参考步骤s506描述了该过程,因此出于清楚的目的不再重复。

在步骤s528处,所述帧修改应用230执行纹理映射,从而将在步骤s526处所计算的三维三角网格中的每个三角形的纹理复制到二维纹理图700中的对应的三角形。

在步骤s530处,已经响应于每次过程500循环通过步骤s510-s522而步骤s514被执行而被存储在存储器226中的所有绘图命令是由帧修改应用230接收的并且勇于修改二维纹理图700。即,针对所接收的u,v坐标中的每个u,v坐标,帧修改应用230根据与所述u,v坐标相关联的效果信息来修改二维纹理图700的u,v坐标。

在步骤s532处,帧修改应用230执行与在步骤528处所执行的纹理映射过程相反的纹理映射过程。已经参考步骤s518描述了该过程,因此出于清楚的目的不再重复。

响应于由帧修改应用230执行步骤s532,在步骤s524处所接收的视频帧以经修改的形式在由帧修改应用230所提供的用户界面中显示。

在步骤s534处,帧修改应用230将所述经修改的视频帧供应至通信客户端应用112以用于经由网络接口224通过网络106传输至第二用户终端108。应当意识到的是,在帧修改应用230的功能被并入到通信客户端应用112中的实施例中,在步骤s532处,通信在由通信客户端应用112所提供的用户界面中渲染经修改的视频帧,并且不执行步骤s534。

过程500接着进行至步骤s536,其中,帧修改应用230确定可选择的帧渲染调节按钮412是否被选择。如果在步骤536处,帧修改应用230确定可选择的帧渲染调节按钮412已经被选择,则过程500返回至s524,其中,帧修改应用230从数据缓冲器接收接下来的视频帧,并且重复步骤s524-s536的循环。

即,当可选择的帧渲染调节按钮412处于被选择状态时对在步骤s502处所显示的视频帧进行的所有绘制都被应用于当可选择的帧渲染调节按钮412处于未选择状态时在数据缓冲器中所接收的所有视频帧。将由用户a104绘制到视频中的用户a的脸部上的绘图映射到由脸部追踪器所识别的用户的脸部的点上,以使得所述绘图以三维的方式随着用户的脸部移动。

如果在步骤s536处,帧修改应用230确定可选择的帧渲染调节按钮412已经被选择,所述过程500进行至步骤s506。

在上文中所描述的实施例中,将在由帧修改应用230在显示器204上所提供的用户界面中所显示的任何经修改的帧由通信客户端应用112发送只第二用户终端108。因此,用户b110看到用户a104看到的内容。应当理解的是,在步骤s504处选择了可选择的帧渲染调节按钮412与在步骤s522处检测到所述条件之间的时间段期间,由帧修改应用230所接收并且存储在数据缓冲器228中的视频帧不被发送至第二用户终端108,并且可以从数据缓冲器228中丢弃。在该时间段中,在步骤s502处所显示的所接收的视频帧以及经修改的形式被发送至第二用户终端108。

在可替代的实施例中,在步骤s504处选择了可选择的帧渲染调节按钮412与在步骤s522处检测到所述条件之间的时间段期间,由帧修改应用230所接收并且存储在数据缓冲器228中的视频帧被发送至第二用户终端108。即,当可选择的帧渲染调节按钮412处于被选择的状态时,所捕获的实时视频被发送至第二用户终端。此外,绘图修改信息在每次其被确定时被发送至第二用户终端。该绘图修改信息是以在步骤s510处所确定的像素坐标(x,y)或者在步骤s512处所确定的u,v坐标为形式的。这允许在第二用户终端上执行的帧修改应用根据所接收的绘图修改信息来修改所接收的视频帧。

在另外的可替代的实施例中,在步骤s504处选择了可选择的帧渲染调节按钮412与在步骤s522处检测到所述条件之间的时间段期间,由帧修改应用230所接收并且存储在数据缓冲器228中的视频帧被发送至第二用户终端108。即,当可选择的帧渲染调节按钮412处于被选择的状态时,所捕获的实时视频被发送至第二用户终端。在该另外的可替代的实施例中,一旦在步骤s522处检测到所述条件,则绘图修改信息被发送至第二用户终端。该绘图修改信息是以每次执行步骤s510时所确定的多个像素坐标(x,y)或者每次执行步骤s512时所确定的多个u,v坐标为形式的。这允许在第二用户终端上执行的帧修改应用在接收到绘图修改信息之后根据所接收的绘图修改信息来修改所接收的视频帧。

必须针对每个视频帧而重新渲染二维纹理图700(在步骤s508和s526处),因为其必须包含来自所捕获图像(在视频帧中)的最新更新的纹理。在另一方面,可以将绘图效果预先渲染成分别的uv图(在本文中被称为“效果图”)。该“效果图”保持不变直到用户添加或删除绘图笔划为止。将该效果图混合到二维纹理图700上以创建三维三角网格的经混合的二维表示。通过将该效果图的分辨率设置为等于二维纹理图700的分辨率,该混合可以以简单的逐像素循环来完成,而不需要三维三角网格或遮挡的知识。三维三角网格的经混合的二维表示的u,v坐标中的每个从二维纹理图700的对应的u,v坐标获取纹理,除非该效果图已经在特定的u,v坐标处被修改,在被修改的情况下,三维三角网格的经混合的二维表示的u,v坐标从所述效果图获取纹理。

图8示出了由帧修改应用230所提供的用户界面,该用户界面是在用户a通过在可选择的帧渲染调节按钮412处于被选择的状态时移动光标802而绘制了刷子笔划801a和801b之后提供的。

当可选择的帧渲染调节按钮412处于未选择状态时,绘图801a和801b粘贴至所捕获的视频数据中的脸部的皮肤上,并且以三维方式随着脸部移动。例如,如果不同于如在图8中所示出的直接看向相机208,而是用户将他的头部转90度以侧对相机208,则将笔划801a、801b中的仅仅一个在由帧修改应用230所供用户界面中进行渲染(取决于用户是以顺时针还是逆时针转动他的头部的)。

绘图时有多个绘图指令来定义的。将每个绘图的u,v坐标以队列存储在存储器226中,由此,最近的绘图的u,v坐标被存储在队列顶部而最早的绘图的u,v坐标被存储在队列底部。

如在图4和8中所示,帧修改应用230可以将可选择的撤销按钮414覆盖在所显示的所捕获的视频上以供用户a104使用合适的输入设备来选择。响应于检测到对可选择的撤销按钮414的选择,帧修改应用230被设置为移除存储器226中的队列顶部的u,v坐标。因此,当执行步骤s528时,用户a104所绘制的最新的绘图不再被渲染(由帧修改应用230所接收的随后的视频帧不利用该最新绘图进行修改)。

如在图4和8中所示,帧修改应用230可以将可选择的新绘图按钮416覆盖在所显示的所捕获的视频上以供用户a104使用合适的输入设备来选择。响应于检测到对可选择的新绘图按钮416的选择,帧修改应用230被设置为移除存储器226中的队列中所存储的所有绘图的u,v坐标。因此,用户a104截止该时间点所绘制的所有绘图都不再由帧修改应用230来渲染。

如在图4和8中所示,帧修改应用230可以将可选择的保存按钮418覆盖在所显示的所捕获的视频上以供用户a104使用合适的输入设备来选择。响应于检测到对可选择的保存按钮418的选择,帧修改应用230被设置为将绘图文件保存至存储器226。所保存的绘图文件包括在保存按钮418被选择时存储在存储器226中的所有u,v坐标(及其相关联的效果信息)。因此,绘图文件是以与脸部形状以及相机208的分辨率和类型无关的格式来保存的。这使得所保存的绘图文件能够在通信系统100的用户之间进行分享。

尽管已经参考由此帧修改应用230从第一用户终端102的相机208接收所捕获的视频帧的场景以及在这些所捕获的视频帧进行绘制的用户a104(从用户a104接收的绘图指令)而在上文中描述了示例性实施例,但本公开的原理扩展至其他场景。

在另一个场景中,由在第一用户终端108上执行的帧修改应用230所接收的所捕获的视频(在图3中所示)是通过网络106从第二用户终端108接收的(由第二用户终端108的相机所捕获),并且在由帧修改应用230所提供的用户界面中进行显示——绘图指令(在图3中所示)是响应于用户a104在这些所显示的视频帧上进行绘制而从用户a104接收的。因此,在该实施例中,用户a104在第一用户终端102上所显示的用户b的脸部上进行绘制,并且该绘图是在第一用户终端102的显示器204上渲染的。

尽管已经参考通过用户在到来的实时视频的帧上绘制刷子笔划绘制的绘图而对实施例进行了描述,但是本公开的实施例扩展到包括将预先计算的三维图形对象应用至到来的实时视频的帧的绘图指令。例如,用户可以选择将帽子图形放置到脸上,因此根据在上文中所描述的实施例,该帽子图形将与三维三角网格的顶点相关联,并且因此以三维方式随着(在视频中所捕获的)用户的移动而移动。

已经在上文中描述了本公开的第一方面。

检测所述条件的步骤包括确定对在所述用户界面中所显示的可选择的按钮的另外的选择。

检测所述条件的步骤可以包括,检测从选择了在所述用户界面中所显示的可选择的按钮开始已经过了预先确定的时间段。

确定在所述所接收的视频帧中的用户的脸部的位置包括:以二维方式来识别所述脸部中的脸部特征点,并且将三维三角网格拟合至所追踪的脸部特征点,其中每个绘图输入定义了要应用在所述三维三角网格上的位置处的图像数据。

修改所述所显示的视频帧的步骤包括将所述三维三角网格中的每个三角形的纹理映射到所述三维三角网格的二维表示上;并且针对所接收的每个绘图输入:确定在所述三维三角网格的二维表示中与所述三维三角网格上的所述位置相对应的位置;将所述图像数据应用于所述三维三角网格的所述二维表示中的所确定的位置;并且将所述三维三角网格的所述二维表示中的每个三角形的纹理映射到所述三维三角网格上。

修改所述所显示的视频帧的步骤包括将所述三维三角网格中的每个三角形的纹理映射到所述三维三角网格的二维表示上;并且针对所接收的每个绘图输入:确定在所述三维三角网格的第二二维表示中与所述三维三角网格上的所述位置相对应的位置;将所述图像数据应用于所述三维三角网格的所述第二二维表示中的所确定的位置;将所述三维三角网格的所述第二二维表示混合到所述三维三角网格的所述第一二维表示上,以创建所述三维三角网格的经混合的二维表示;并且将所述三维三角网格的所述经混合二维表示中的每个三角形的纹理映射到所述三维三角网格上。

确定在检测到所述条件之后所接收到的每个视频帧中的用户的脸部的位置包括:以二维方式来识别所述脸部中的脸部特征点,并且将三维三角网格拟合至所追踪的脸部特征点,其中每个绘图输入定义了要应用在所述三维三角网格上的位置处的图像数据。

修改在检测到所述条件之后所接收到的每个视频帧的步骤包括:将所述三维三角网格中的每个三角形的纹理映射到所述三维三角网格的二维表示上;并且针对所接收的每个绘图输入:确定在所述三维三角网格的二维表示中与所述三维三角网格上的所述位置相对应的位置;将所述图像数据应用于所述三维三角网格的所述二维表示中的所确定的位置;并且将所述三维三角网格的所述二维表示中的每个三角形的纹理映射到所述三维三角网格上。

修改在检测到所述条件之后所接收到的每个视频帧的步骤包括:将所述三维三角网格中的每个三角形的纹理映射到所述三维三角网格的二维表示上;并且针对所接收的每个绘图输入:确定在所述三维三角网格的第二二维表示中与所述三维三角网格上的所述位置相对应的位置;将所述图像数据应用于所述三维三角网格的所述第二二维表示中的所确定的位置;将所述三维三角网格的所述第二二维表示混合到所述三维三角网格的第一二维表示上,以创建所述三维三角网格的经混合的二维表示;并且将所述三维三角网格的所述经混合二维表示中的每个三角形的纹理映射到所述三维三角网格上。

所述方法还可以包括在所述用户界面中显示至少一个可选择的绘图工具按钮。

所述至少一个可选择的绘图工具按钮可以包括以下中的一个或其任何组合:笔绘图工具按钮、口红绘图工具按钮、和刷子绘图工具按钮。

所述方法还可以包括响应于检测到由用户使用所述用户终端的输入设备对所述至少一个可选择的绘图工具按钮的选择而显示与所选择的绘图工具按钮相关联的多种可选择的颜色。

所述图像数据可以是基于所选择的绘图工具按钮以及与所述所选择的绘图工具按钮相关联的所述多种可选择的颜色中的所选择颜色的。

所述视频帧可以是从所述用户终端的相机接收的。

所述方法还可以包括将每个经修改的视频帧通过所述通信网络发送至所述至少一个另外的用户终端。

所述方法还可以包括在显示视频帧时防止所述视频帧被禁止通过所述通信网络而发送至所述至少一个另外的用户终端。

所述方法还包括将在视频帧的显示被禁用时所接收的视频帧通过所述通信网络发送至所述至少一个另外的用户终端。

所述方法还包括:当接收到每个绘图输入时,将所述绘图输入的指示发送至所述至少一个另外的用户终端。可替代地,所述方法还可以包括响应于检测到所述条件而发送多个绘图输入的指示。

在图5a和图5b中分别地示出的步骤可以或可以不被实现为分别的步骤,并且可以或可以不以所示出的顺序来实现。

通常而言,在本文中所描述的任何功能都可以使用软件、固件、硬件(例如,固定逻辑电路)、或这些实现的组合来实现。如在本文中所使用的术语“控制器”、“功能”、“组件”和“应用”通常表示软件、固件、硬件、或其组合。在软件实现的情况下,控制器、功能、组件、或应用表示当在处理器(例如,一个或多个cpu)上执行时执行指定的任务的程序代码。可以将所述程序代码存储在一个或多个计算机可读存储器设备中。在下文中所描述的技术的特征是与平台无关的,这意味着可以在具有多种处理器的多种商业计算平台上实现所述技术。

例如,用户终端还可以包括使得用户终端的硬件执行操作的实体(例如,软件),例如,处理器功能块等。例如,用户设备可以包括计算机可读介质,其可以被配置为保存使得用户终端,并且更加特别地使得操作系统和用户终端的相关联的硬件执行操作的指令。因此,指令用于配置操作系统和相关联的硬件以执行操作,并且以该方式引起操作系统的状态的转换并且使得相关联的硬件执行功能。可以由计算机可读介质通过多种不同的配置而将指令提供至用户终端。

计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为将指令(例如,作为载波)发送至计算设备,例如,经由网络。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括:随机存取存储器(ram)、只读存储器(rom)、光盘、闪速存储器、硬盘存储器、以及可以使用磁、光、和其他技术来存储指令和其他数据的其他存储器设备。

尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解的是,在所附权利要求中所限定的主题不一定限于在上文中所描述的具体的特征或动作。相反,在上文中所描述的具体的特征和动作是作为实现所述权利要求的示例形式而公开的。

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