CN113516743A - 头发的渲染方法、装置、电子设备及存储介质 - Google Patents
头发的渲染方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113516743A CN113516743A CN202010230272.6A CN202010230272A CN113516743A CN 113516743 A CN113516743 A CN 113516743A CN 202010230272 A CN202010230272 A CN 202010230272A CN 113516743 A CN113516743 A CN 113516743A
- Authority
- CN
- China
- Prior art keywords
- target
- hair
- motion state
- particle
- image frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
- G06T2207/30201—Face
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/56—Particle system, point based geometry or rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
- Studio Devices (AREA)
- Image Analysis (AREA)
Abstract
本公开关于一种头发的渲染方法、装置、电子设备及存储介质。该方法包括:获取包含头发信息的目标视频,从目标视频的图像帧中选择目标图像帧;获取目标图像帧的纹理图像;纹理图像为对目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像;从纹理图像中获取第一目标粒子区域的第一目标运动状态和目标状态变化信息;根据第一目标运动状态和目标状态变化信息确定第一目标粒子区域在下一图像帧中的第二目标运动状态;根据第二目标运动状态对纹理图像中的运动状态进行更新,以对头发区域进行渲染。根据本方案能够在移动端实现对头发区域的实时渲染,同时对特定粒子区域的运动状态进行修改,能实现粒子沿发丝方向流动的渲染特效。
Description
技术领域
本公开涉及图像处理技术领域,尤其涉及头发的渲染方法、装置、电子设备及存储介质。
背景技术
随着网络直播等技术的发展,实时渲染技术在移动端的应用越来越广,例如:在直播过程中对图像、视频中的用户头发进行染发、柔发等渲染处理。
目前是通过PC(个人电脑)端或者服务器端的CPU(中央处理器),对头发区域中的像素点进行颜色替换、模糊等渲染处理。
然而,目前的渲染方法运算量大,CPU对头发粒子信息的处理过程往往较为复杂,无法在移动端中实现实时渲染。而目前通过移动端进行直播的需求不断增加,因此有必要提供一种能够在移动端中对头发进行实时渲染的方法。
发明内容
本公开提供一种头发的渲染方法、方法、装置、电子设备及存储介质,以至少解决相关技术中无法在移动端中对头发进行实时渲染的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种头发的渲染方法,包括:获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧;获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域;从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息;根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像;根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
可选地,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:根据所述第二目标运动状态对所述第一目标粒子区域的运动状态进行更新,并保留剩余粒子区域的运动状态;所述剩余粒子区域为所述至少一个粒子区域中除去所述第一目标粒子区域的粒子区域。
可选地,所述第一目标运动状态包括第一屏幕坐标,所述目标状态变化信息包括第一速度;所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:确定所述目标图像帧和所述下一图像帧的时间差值;根据所述第一屏幕坐标、所述第一速度和所述时间差值确定所述第一目标粒子区域在所述下一图像帧中的第二屏幕坐标,作为所述第二目标运动状态。
可选地,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:若所述第二屏幕坐标处于所述头发区域之外,重新确定所述纹理图像的头发区域,并从新确定的头发区域所对应的粒子区域中确定第二目标粒子区域;从所述纹理图像中获取所述第二目标粒子区域的参考目标运动状态和参考目标状态变化信息;根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态;根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新。
可选地,所述第一目标运动状态包括第二速度,所述目标状态变化信息包括头发方向角;所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:获取预先设定的速率;根据所述第二速度、所述头发方向角和所述速率确定所述第一目标粒子区域在所述下一图像帧中的第三速度,得到所述第二目标运动状态。
可选地,在所述获取所述目标图像帧的纹理图像的步骤之前,还包括:根据所述目标视频中随时间变化的像素状态信息,确定所述目标图像帧中各个像素点的候选状态变化信息;获取所述目标图像帧对应的头发方向图和头发区域掩码图;所述头发方向图中包含有所述各个像素点的头发方向角,所述头发区域掩码图中包含有所述目标图像帧中头发区域的掩码信息;根据所述头发方向图中的头发方向角和所述头发区域掩码图中的掩码信息确定所述各个像素点的候选运动状态;将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上;其中,所述至少一个粒子区域的顶点位置与所述各个像素点对应。
可选地,在所述将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上的步骤之后,还包括:将所述纹理图像存储到第一帧缓冲中;在所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤之后,还包括:将第一帧缓冲中的纹理图像存储到第二帧缓冲中;将更新后的所述纹理图像存储到所述第一帧缓冲中。
可选地,在所述获取所述目标图像帧的纹理图像的步骤之后,还包括:确定所述纹理图像中的头发区域;根据预先确定的粒子束数量对所述头发区域进行格网划分,得到对应的至少一个粒子束;根据预先确定的粒子数量对所述至少一个粒子束分别进行格网划分,得到对应的至少一个粒子区域。
可选地,在所述从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息的步骤之前,还包括:将所述至少一个粒子束中处于设定位置的粒子区域,确定为所述第一目标粒子区域。
根据本公开实施例的第二方面,提供一种头发的渲染装置,包括:图像帧确定单元,被配置为执行获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧;纹理图像获取单元,被配置为执行获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域;状态信息获取单元,被配置为执行从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息;运动状态确定单元,被配置为执行根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像;运动状态更新单元,被配置为执行根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
可选地,所述运动状态更新单元,还被配置为执行根据所述第二目标运动状态对所述第一目标粒子区域的运动状态进行更新,并保留剩余粒子区域的运动状态;所述剩余粒子区域为所述至少一个粒子区域中除去所述第一目标粒子区域的粒子区域。
可选地,所述第一目标运动状态包括第一屏幕坐标,所述目标状态变化信息包括第一速度;所述运动状态确定单元,包括:时间差值确定子单元,被配置为执行确定所述目标图像帧和所述下一图像帧的时间差值;第一运动状态确定子单元,被配置为执行根据所述第一屏幕坐标、所述第一速度和所述时间差值确定所述第一目标粒子区域在所述下一图像帧中的第二屏幕坐标,作为所述第二目标运动状态。
可选地,所述运动状态更新单元,包括:粒子区域确定子单元,被配置为执行若所述第二屏幕坐标处于所述头发区域之外,重新确定所述纹理图像的头发区域,并从新确定的头发区域所对应的粒子区域中确定第二目标粒子区域;状态信息获取子单元,被配置为执行从所述纹理图像中获取所述第二目标粒子区域的参考目标运动状态和参考目标状态变化信息;第二运动状态确定子单元,被配置为执行根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态;运动状态更新子单元,被配置为执行根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新。
可选地,所述第一目标运动状态包括第二速度,所述目标状态变化信息包括头发方向角;所述运动状态确定单元,包括:速率获取子单元,被配置为执行获取预先设定的速率;第三运动状态确定子单元,被配置为执行根据所述第二速度、所述头发方向角和所述速率确定所述第一目标粒子区域在所述下一图像帧中的第三速度,得到所述第二目标运动状态。
可选地,所述头发的渲染装置,还包括:状态变化信息确定单元,被配置为执行根据所述目标视频中随时间变化的像素状态信息,确定所述目标图像帧中各个像素点的候选状态变化信息;图像获取单元,被配置为执行获取所述目标图像帧对应的头发方向图和头发区域掩码图;所述头发方向图中包含有所述各个像素点的头发方向角,所述头发区域掩码图中包含有所述目标图像帧中头发区域的掩码信息;候选运动状态确定单元,被配置为执行根据所述头发方向图中的头发方向角和所述头发区域掩码图中的掩码信息确定所述各个像素点的候选运动状态;候选运动状态存储单元,被配置为执行将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上;其中,所述至少一个粒子区域的顶点位置与所述各个像素点对应。
可选地,所述头发的渲染装置,还包括:第一图像存储单元,被配置为执行将所述纹理图像存储到第一帧缓冲中;图像转存单元,被配置为执行将第一帧缓冲中的纹理图像存储到第二帧缓冲中;第二图像存储单元,被配置为执行将更新后的所述纹理图像存储到所述第一帧缓冲中。
可选地,所述头发的渲染装置还包括:区域确定单元,被配置为执行确定所述纹理图像中的头发区域;区域划分单元,被配置为执行根据预先确定的粒子束数量对所述头发区域进行格网划分,得到对应的至少一个粒子束;粒子束划分单元,被配置为执行根据预先确定的粒子数量对所述至少一个粒子束分别进行格网划分,得到对应的至少一个粒子区域。
可选地,所述头发的渲染装置,还包括:粒子区域确定单元,被配置为执行将所述至少一个粒子束中处于设定位置的粒子区域,确定为所述第一目标粒子区域。
根据本公开实施例的第三方面,提供一种电子设备,包括处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如上所述的头发的渲染方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上所述的头发的渲染方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行如上实施例中所述的头发的渲染方法。
本公开的实施例提供的技术方案至少带来以下有益效果:根据包含头发信息的目标视频获取目标图像帧的纹理图像,该纹理图像能够被GPU处理;该纹理图像中的头发区域被划分为至少一个粒子区域,能实现GPU对粒子区域的处理,同时极大简化GPU的图形处理效率,实现在移动端的运算;另外,从纹理图像中获取目标粒子区域的第一目标运动状态和目标状态变化信息,据此确定第一目标粒子区域在下一图像帧中的第二目标运动状态,根据第二目标运动状态对纹理图像中的运动状态进行更新,以实现对头发区域的渲染。根据本公开的上述技术方案能够在移动端实现对头发区域的实时渲染,同时对特定粒子区域的运动状态进行修改,能实现粒子沿发丝方向流动的渲染特效。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种头发的渲染方法的应用环境图。
图2是根据一示例性实施例示出的一种头发的渲染方法的流程图。
图3是根据一示例性实施例示出的粒子束的结构示意图。
图4是根据一示例性实施例示出的头发渲染的显示示意图。
图5是根据另一示例性实施例示出的一种头发的渲染方法的流程图。
图6是根据一示例性实施例示出的一种头发的渲染装置的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所提供的头发的渲染方法,可以应用于如图1所示的设备100中。设备100可以是移动端,如:移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。
参照图1,设备100可以包括以下一个或多个组件:处理组件101、存储器102、电源组件103、多媒体组件104、音频组件105、输入/输出(I/O)的接口106、传感器组件107以及通信组件108。对这些组件详细说明如下:
处理组件101通常控制设备100的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件101可以包括一个或多个处理器109来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件101可以包括一个或多个模块,便于处理组件101和其他组件之间的交互。例如,处理组件101可以包括多媒体模块,以方便多媒体组件104和处理组件101之间的交互。
存储器102被配置为存储各种类型的数据以支持在设备100的操作。这些数据的示例包括用于在设备100上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器、磁盘或光盘。
电源组件103为设备100的各种组件提供电力。电源组件103可以包括电源管理系统,一个或多个电源,及其他与为设备100生成、管理和分配电力相关联的组件。
多媒体组件104包括在所述设备100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件104包括一个前置摄像头和/或后置摄像头。当设备100处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件105被配置为输出和/或输入音频信号。例如,音频组件105包括一个麦克风(MIC),当设备100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或经由通信组件108发送。在一些实施例中,音频组件105还包括一个扬声器,用于输出音频信号。
I/O接口106为处理组件101和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件107包括一个或多个传感器,用于为设备100提供各个方面的状态评估。例如,传感器组件107可以检测到设备100的打开/关闭状态,组件的相对定位,例如所述组件为设备100的显示器和小键盘,传感器组件107还可以检测设备100或设备100一个组件的位置改变,用户与设备100接触的存在或不存在,设备100方位或加速/减速和设备100的温度变化。传感器组件107可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件107还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件107还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。
通信组件108被配置为便于设备100和其他设备之间有线或无线方式的通信。设备100可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件108经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件108还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在一示例性实施例中,设备100可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
图2是根据一示例性实施例示出的一种头发的渲染方法的流程图,头发的渲染方法可以用于如图1所示的设备100中(也可以具体用于图1中的处理器109中,更具体的,还可以应用于设备100的GPU中),如图2所示,包括以下步骤S201/S202/S203/S204/S205,详细说明如下:
在步骤S201中,获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧。
其中,目标视频可以是通过拍摄设备对人体(也可以是动物体)头部进行采集得到的视频。拍摄设备可以为设备100上的传感器组件107,也可以是与设备100存在网络连接关系的摄像头。目标视频中所包含的头发信息可以指头发区域所在位置、头发区域大小、头发区域实时位置、头发颜色、发丝长度、发丝方向等等信息。
摄像头可以拍摄设定时间段的包含有头发信息的目标视频,并将拍摄得到的目标视频发送给设备100(或者直接发给设备100的处理器),由处理器进行头发渲染。更进一步的,摄像头可以预先拍摄目标视频,将拍摄好的目标视频一起发送给设备100;也可以是在拍摄过程中实时向处理器发送目标视频。
进一步的,目标视频的各个时序上对应有图像帧,设备100在一次的头发渲染程序中可以对其中的某个或某些图像帧进行头发渲染处理,所述某个或某些图像帧可以理解为目标图像帧。其中,目标图像帧可以是从目标视频中随机选择的图像帧,也可以是按时间顺序选择的相互连续的若干个图像帧。
在步骤S202中,获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域。
其中,纹理格式是能被GPU所识别的像素格式,本公开实施例中的纹理图像即为纹理格式的图像,进一步的,纹理图像也可以直接简称为“纹理”,可以是half float(半浮点)或者float(浮点)型纹理图。
本步骤获取目标图像帧的纹理图像,由设备100中的GPU来对该纹理图像进行处理。可以根据目标图像帧中的各个像素点的颜色来确定纹理图像中的头发区域,例如:将面积大于设定值的黑色区域确定为头发区域,进而在纹理图像对应的网格中填充相应的信息,以在纹理图像中表征头发区域。当然,确定头发区域的过程也可以通过机器学习的方式来实现,例如:将多个包含头发信息的视频输入到预先构建的神经网络模型中,同时向该神经网络模型中输入各个视频各个图像帧对应的头发区域信息,该神经网络模型通过输入的信息进行自学习并完成训练过程,训练结束后将摄像头拍摄的目标视频输入到神经网络模型中,神经网络模型就能自动输出该目标视频中各个图像帧的头发区域。
进一步的,纹理图像中的头发区域被划分为至少一个粒子区域(在某些情况下还可以对头发区域外的其他区域也进行格网划分,得到对应的粒子区域),该粒子区域可以由设备100在获取到纹理图像后划分得到,也可以由设备100的外接设备或者设备100中处理器以外的其他组件划分得到(例如可以由设备100上的传感器组件划分得到)。更进一步地,可以按照设定数量的格网线对纹理图像对应的头发区域进行划分,根据划分得到的格网确定粒子区域;也可以根据发丝的分布来对纹理图像进行划分,例如,将各个发束(发丝之间的距离足够小)确定为粒子区域。另外,纹理图像中的粒子区域数量可以根据实际情况确定,在需要对头发区域进行更为准确的渲染时则粒子区域数量可以为一个较大的值,在需要对头发区域进行更为粗略的渲染时则粒子区域数量可以为一个较小的值。
进一步的,目标图像帧可以为设备100显示屏中显示的图像帧,即纹理图像记录显示屏当前显示的图像帧的粒子信息,该粒子信息为目标图像帧中各个像素点(每个像素点都可以有对应的粒子区域)的运动状态和状态变化信息。其中,运动状态为粒子在对应图像帧中所处的状态,可以是位置信息、速度信息(包括速率和方向)、头发方向角、尺寸等;而状态变化信息可以指对该粒子的状态变化进行描述的信息,能够表征该粒子在接下来的相邻图像帧中的运动状态,可以为速度、头发方向角、旋转方向、生命周期等。需要说明的是,某些粒子信息既可以为运动状态也可以为状态变化信息,例如,速度既可以表征某一图像帧的速率和方向信息(此时可以作为运动状态),也可以表征该图像帧的移动状态(此时可以作为状态变化信息,它可以结合时间信息确定粒子的移动距离,进而确定粒子的位置坐标)。具体的,在需要计算粒子在下一图像帧中的位置时,速度是可以评价粒子的在下一时刻的位置的,此时位置信息可以作为运动状态而速度可以作为状态变化信息;在需要计算粒子在下一图像帧中的速度时,速率是可以评价粒子的在下一时刻的速度,此时速度可以作为运动状态而速率可以作为状态变化信息,上述情况中速度既作为运动状态又作为状态变化信息。
在一示例性实施例中,由于纹理图像中的存储通道有限,如果一张纹理图像不足以存储运动状态或状态变化信息,则可以通过两张纹理图像来存储。例如,对于仅有4个通道的纹理图像,可以通过两张纹理图像来存储位置信息、速度信息(包括速率和方向)、头发方向角、旋转方向、生命周期、尺寸这些维度的信息。
在步骤S203中,从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息。
其中,纹理图像中各个粒子可以有各自的编号,而各个粒子的粒子信息存储在纹理图像的各个粒子区域中。目标粒子区域可以从纹理图像的各个粒子区域中随机选择,也可以按照特定的规则选择(例如:选择特定位置的粒子区域)。进一步地,通过目标粒子区域中记录的粒子信息就可以得到对应的目标运动状态和状态变化信息,即得到第一目标运动状态和目标状态变化信息。
S203的具体实现过程可以为:从所述纹理图像中获取所述目标粒子的屏幕坐标、速度、方向角、旋转姿态、当前生命状态、生命周期、尺寸中的至少一项,根据所获取的信息得到第一目标运动状态和所目标状态变化信息(可以根据当前所要更新的运动状态确定对应的目标状态变化信息)。
在一示例性实施例中,在所述获取所述目标图像帧的纹理图像的步骤之后,还包括:确定所述纹理图像中的头发区域;根据预先确定的粒子束数量对所述头发区域进行格网划分,得到对应的至少一个粒子束;根据预先确定的粒子数量对所述至少一个粒子束分别进行格网划分,得到对应的至少一个粒子区域。
其中,粒子束数量用于表征头发区域中所包含粒子束的数量,该数量可以根据屏幕分辨率、渲染精细度等确定;粒子数量用于表征粒子束中所包含粒子区域的数量,该数量也可以根据屏幕分辨率、渲染精细度等确定。进一步地,在获知数量之后,可以按照等间隔(当然,间隔也可以不等)的格网线对头发区域或者粒子束进行划分,同时,可以进行横向划分,也可以纵向划分,还可以是横向和纵向结合(既进行横向划分又进行纵向划分,此时横向和纵向的划分间隔可以相同也可以不同),还可以是按照与屏幕水平线呈一定的角度(例如30°)的线进行划分。
纹理图像的示意图可以如图3所示,图3左侧示出了一个女孩的头部轮廓,该头部轮廓包括头发轮廓(粗实线)和脸庞轮廓(细实线),这两种轮廓分别构成头发区域301和脸庞区域302。进一步的,头发区域被划分为多个粒子束,如图3中由粗虚线围成的一个方格区域303可以理解为一个粒子束。进一步的,这些粒子束还被划分为多个小区域,这些小区域可以称为第一目标粒子区域304(也可以称为头发粒子或者粒子,其具体划分情况可以参见图3右侧的放大图)。
需要说明的是,图3是对整个纹理图像都进行了格网划分,在实际的应用场景中,可以仅对头发区域(或者仅对头发区域和脸庞区域)进行划分。进一步的,一个视频中包含多个帧,而由于头部位置可能发生变化,每个帧中的头发区域也会发生变化,因此,在获取到一个纹理图像后,都可以重新确定头发区域并对头发区域进行格网划分。
在一示例性实施例中,在所述从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息的步骤之前,还包括:将所述至少一个粒子束中处于设定位置的粒子区域,确定为所述第一目标粒子区域。
其中,设定位置可以是某一粒子束中处于居中位置、头部位置(第一个编号所在的位置)、尾部位置(最后一个编号所在的位置)等的粒子区域。
进一步的,本公开实施例从粒子束的多个粒子区域中选择出目标粒子区域(如图3中的304),其选择方式可以为随机选取,也可以是选择居中或者边缘位置的粒子作为目标粒子区域,在一些示例性实施例中,目标粒子区域也可以称为头部粒子(该粒子在渲染过程中起到了带动其他粒子移动的作用)。另一方面,同一纹理图像中不同粒子束中选择目标粒子的方法可以一致,也可以不一致,以不一致的情况为例,其实现方式可以具体如下:某一粒子束中选择一个处于边缘位置的粒子区域作为目标粒子区域,而在另一粒子束中可以选择位于居中位置的粒子区域作为目标粒子区域。另外,一个粒子束对应的目标粒子区域的数量可以为一个、两个也可以为多个,进一步的,目标粒子区域可以为头发区域中所有粒子束中所选择的目标粒子区域,也可以是部分或者某个粒子束中所选择的目标粒子区域。对纹理图像中的头发区域进行划分,能对其中的特定粒子区域进行运动状态更新,使得这些粒子区域在最终显示的视频中呈现逐步变化的状态,达到粒子沿发丝方向流动的渲染特效。
在步骤S204中,根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像。
其中,下一图像帧为目标图像帧在下一时刻的图像帧,该“下一时刻”中的时刻可以根据帧取样率来确定,以1min包含有60个图像帧[每秒(s)一个图像帧]为例,如果帧取样率为5s/帧,则下一图像帧与目标图像帧中间相隔4个图像帧,而如果帧取样率为1s/帧,则下一图像帧与目标图像帧中间相隔0个图像帧(即两者相邻)。因此,可以根据实际情况调整图像帧的选择,例如,对渲染精细度要求高,则帧取样率可以取一个高的值(此时需要对更多图像帧进行处理),而如果对渲染精细度要求低,则帧取样率可以取一个低的值。
第一目标运动状态表征的是第一目标粒子区域在目标图像帧中的运动状态,而目标状态变化信息表征的是第一目标粒子区域在目标图像帧中对状态变化产生的影响,因此,将两者相互结合,就能获知第一目标粒子区域在下一图像帧的运动状态,即得到第二目标运动状态。例如,纹理图像中包含以下粒子信息:第一目标粒子区域的位置坐标为(2,2),其速度方向为屏幕水平线(可以记为x轴)正方向36.87°,速度值为5mm/s,其中位置坐标为第一目标运动状态,速度方向和速度值为目标状态变化信息,根据上述信息可以确定第一目标粒子区域从目标图像帧到下一图像帧(以目标图像帧和下一图像帧相隔时间为1s为例)在x轴正方向运动了3mm,在y轴方向运动了4mm,因此,可以确定第一目标粒子区域在下一图像帧的位置坐标为(5,6),即得到了第二目标运动状态。
在步骤S205中,根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
对纹理图像中的运动状态进行更新可以理解为直接将纹理图像中的第一目标运动状态替换为第二目标运动状态。
设备100的显示屏中刚开始时根据纹理图像显示目标图像帧,在对纹理图像进行更新后,可以在显示屏中显示对应的下一图像帧,此时屏幕中第一目标粒子区域的运动状态就会从第一目标运动状态变化为第二目标运动状态,即实现了对头发区域中特定粒子在流动的渲染效果。
进一步的,完成了目标图像帧和下一图像帧的切换即可以认为完成了一次头发区域的渲染。接下来,可以继续进行新的渲染。
上述头发的渲染方法中,根据包含头发信息的目标视频获取目标图像帧的纹理图像,该纹理图像能够被GPU处理;该纹理图像中的头发区域被划分为至少一个粒子区域,能实现GPU对粒子区域的处理,同时极大简化GPU的图形处理效率,实现在移动端的运算;另外,从纹理图像中获取目标粒子区域的第一目标运动状态和目标状态变化信息,据此确定第一目标粒子区域在下一图像帧中的第二目标运动状态,根据第二目标运动状态对纹理图像中的运动状态进行更新,以实现对头发区域的渲染。根据本公开的上述技术方案能够在移动端实现对头发区域的实时渲染,同时对特定粒子区域的运动状态进行修改,能实现粒子沿发丝方向流动的渲染特效。
在一示例性实施例中,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:根据所述第二目标运动状态对所述第一目标粒子区域的运动状态进行更新,并保留剩余粒子区域(也可以称为尾部粒子区域或者尾部粒子)的运动状态;所述剩余粒子区域为所述至少一个粒子区域中除去所述第一目标粒子区域的粒子区域。
如图3中303的放大图所示,粒子束中除去第一目标粒子区域304的全部或部分粒子可以认为是剩余粒子区域,如图3中的305所示。在一示例性实施例中,确定第一目标粒子区域和剩余粒子区域的过程可以如下:设存储粒子信息的纹理图像的分辨率为W*H,粒子在W、H方向分布分别为m、n个,则总粒子数量为m*n,其中m<=W,n<=H;设每一粒子束由K个粒子构成,把H方向划分为n/K个格子,则每个格子存储一束粒子的信息。将每个格子划分为K个子区间k(i),其中i取值范围是0~K-1,其中,k(0)为粒子束的目标粒子(即头部粒子),而k(1)~k(K-1)为粒子束的剩余粒子(即尾部粒子)。其中,W/H/m/n/K/k的数值大小可以根据实际情况确定。
在本实施例中,剩余粒子区域在下一图像帧中的运动状态直接采用目标图像帧的运动状态,而第一目标粒子区域的运动状态则被实时更新,基于此,显示屏中的显示状态即为:第一目标粒子区域的状态发生变化而剩余粒子区域的状态不发生变化。通过这样的方式,在显示目标图像帧后显示下一图像帧,就能够形成“拖尾”效果,这在游戏等需要形成“拖尾”效果的场景中具有较高的适用性。如图4所示,目标图像帧的头发区域的显示示意图可以如图4(a)所示(显示时可以不显示格网线),可以看清楚发丝的状态;经过渲染处理后,有拖尾渲染效果的头发区域可以如图4(b)所示,图4(b)中灰色区域401可以为第一目标粒子区域,第一目标粒子区域在帧切换的过程中由于运动而发丝模糊,而其他区域的粒子状态不变则仍能看清楚发丝,这样就实现了粒子束沿着发丝方向流动以及“拖尾”的渲染特效。
在一示例性实施例中,剩余粒子区域在下一图像帧中的运动状态也可以不采用目标图像帧中对应的参考剩余运动状态,而是按照第二目标运动状态的确定方法得到候选剩余运动状态,确定候选剩余运动状态和参考剩余运动状态之间的差值,将该差值乘以一定比例(例如:30%)后与参考剩余运动状态求和得到剩余粒子区域在下一图像帧中的运动状态,这样的处理方式能使得在渲染过程中剩余粒子也会发生状态变化但其变化幅度没有目标粒子大,能够产生“拖尾”效果同时头发的流动性更为自然。
进一步的,在一示例性实施例中,还可以根据场景需要对目标粒子区域或者剩余粒子区域进行颜色渲染(例如:将黑色的粒子换成金色的粒子)等操作。
在一示例性实施例中,所述第一目标运动状态包括第一屏幕坐标,所述目标状态变化信息包括第一速度;所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:确定所述目标图像帧和所述下一图像帧的时间差值;根据所述第一屏幕坐标、所述第一速度和所述时间差值确定所述第一目标粒子区域在所述下一图像帧中的第二屏幕坐标,作为所述第二目标运动状态。
其中,目标图像帧和下一图像帧的时间差值可以根据前述实施例的帧取样率确定,进一步的,可以按视频特效的整体帧率来确定,比如某app产品设定的特效帧率为30fps,则相邻图像帧之间的时间差值(delta_t)约等于1000/30=33ms,如果目标图像帧和下一图像帧为相邻图像帧,则两者的时间差值为33ms。
屏幕坐标可以理解为第一目标粒子区域的顶点在设备100显示屏中的位置坐标。
进一步的,对第一目标粒子区域的屏幕坐标进行更新可以是第一目标粒子区域的顶点位置进行更新,而其他位置不更新。
本实施例根据第一屏幕坐标、第一速度和时间差值确定第一目标粒子区域在下一图像帧中的第二屏幕坐标,将第二屏幕坐标作为第二目标运动状态。运动状态的确定过程简单,能有效提高头发区域渲染的效率,实现在移动端的实时渲染。
进一步的,在一示例性实施例中,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:若所述第二屏幕坐标处于所述头发区域之外,重新确定所述纹理图像的头发区域,并从新确定的头发区域所对应的粒子区域中确定第二目标粒子区域;从所述纹理图像中获取所述第二目标粒子区域的参考目标运动状态和参考目标状态变化信息;根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态;根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新。
其中,可以将第二屏幕坐标与头发区域中各个粒子区域的坐标进行比对,如果均不匹配,则可以认为第一屏幕坐标处于头发区域之外。
“根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态”可以参照前述实施例中“根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态”的过程,“根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新”可以参照前述实施例中“根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染”的过程,本实施例对此不再赘述。
本实施例在确定目标粒子位于目标图像帧对应的头发区域之外时,重新确定目标粒子的运动状态(即第三目标运动状态),并根据第三目标运动状态对纹理图像进行更新,能保证显示屏中显示的头发区域的连贯性,不会出现头发区域突然变形的问题,保证良好的头发显示效果。
在一示例性实施例中,如果第三目标运动状态对应的屏幕坐标依旧位于头发区域之外,则可以继续根据第三目标运动状态和第三目标状态变化信息确定新的运动状态,以此类推,直到所确定的屏幕坐标位于头发区域内。当然,在某些情况下,所确定的屏幕坐标(包括前述第二屏幕坐标)位于头发区域之外但与头发区域边缘之间的距离小于预设的阈值(阈值大小可以根据实际情况确定,本公开对此不做限制),也可以不重新确定运动状态,而是直接根据第二目标运动状态对纹理图像进行更新,这样的处理方式能在保证良好的头发显示效果的同时有效减少运算量。
在一示例性实施例中,所述第一目标运动状态包括第二速度,所述目标状态变化信息包括头发方向角;所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:获取预先设定的速率;根据所述第二速度、所述头发方向角和所述速率确定所述第一目标粒子区域在所述下一图像帧中的第三速度,得到所述第二目标运动状态。
需要说明的是,第一速度和第二速度都是从同一纹理图像中某一通道获取的速度信息,它们的大小可以一致。在对屏幕坐标进行更新时,要根据速度来对粒子的屏幕坐标进行更新时,速度是作为状态变化信息的;在对速度进行更新时,速度是作为运动状态的。
其中,速率可以也可以称为速度标量,用来控制粒子的流速,可以由用户预先设定,也可以是通过一定的算法(例如:随着时间变化速度标量逐步变小)确定。
头发方向角可以指第一目标粒子区域的速度相对于屏幕水平线x轴正方向的角度,可以理解为第一目标粒子区域的运动方向,可以通过D(cost,sint)来表示,其中,t表示目标粒子相对于x轴正方向的角度,而cost和sint分别表示第一目标粒子区域的移动距离在x轴和y轴方向上的距离分量。
进一步的,第三速度可以通过以下公式来进行计算:
第三速度=第二速度+头发方向角*速率
其中,第二速度中包含有速度值和方向角。因此,“第二速度”和“头发方向角*速率”求和,不仅包含速度值的求和,因此还可以包括方向角的融合。
在另一示例性实施例中,也可以不结合第二速度来确定第三速度,而是直接将头发方向角和速率的乘积作为第三速度,具体的计算公式可以如下:
第三速度v(u,v)=D(cost,sint)*V,其中,D(cost,sint)为头发方向角,V为用户定义的速率。这样的处理方式使得第一目标粒子区域的速度可以由设备100来控制,能根据用户的需要来控制发丝的流速,起到更个性化的头发特效显示效果。
上述实施例根据方向角和速率来确定下一图像帧的速度信息,确定过程简单,能有效提高运算效率,实现在移动端的实时渲染。
在一示例性实施例中,在所述获取所述目标图像帧的纹理图像的步骤之前,还包括:根据所述目标视频中随时间变化的像素状态信息,确定所述目标图像帧中各个像素点的候选状态变化信息;获取所述目标图像帧对应的头发方向图和头发区域掩码图;所述头发方向图中包含有所述各个像素点的头发方向角,所述头发区域掩码图中包含有所述目标图像帧中头发区域的掩码信息;根据所述头发方向图中的头发方向角和所述头发区域掩码图中的掩码信息确定所述各个像素点的候选运动状态;将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上;其中,所述至少一个粒子区域的顶点位置与所述各个像素点对应。
其中,像素状态信息可以指视频中各个像素点的颜色、位置等状态信息以及像素点之间的状态随时间的变化关系(例如,在某一帧中,某一像素点P1为纯黑色,而在下一帧中,其相邻像素点P2变为纯黑色,像素点P1则变为其他颜色)。粒子可能对应有一个或多个像素点(粒子与像素点之间存在映射关系),根据对应像素点的像素状态信息,可以确定出各个粒子的状态变化信息(如:移动速度等),得到候选状态变化信息。
头发方向角为发丝的方向,各个粒子的头发方向角t对应的排列在一起即形成头发方向图;在其他实施例中,头发方向图中还可以存储可以cos2t和sin2t的值(存储2t角的正弦和余弦值是为了防止头发方向在同一条直线上的歧义性),在需要对头发方向角进行处理时可以通过以下公式分别确定cost和sint:
cost=sqrt((1+cos2t)/2)*sign(sin2t);
sint=sqrt(1-cost^2)
其中,sign表示符号函数。
进一步的,t可以通过以下方式确定:Sa.计算目标图像帧的灰度图;Sb.计算灰度图的梯度图;Sc.对梯度图进行模糊处理;Sd.取Sc的垂直矢量每个像素的方向矢量,得到t。
掩码是一串二进制代码,对目标字段进行位与运算,头发区域的掩码信息可以表征各个粒子是否处于头发区域中,各个粒子的掩码信息排列在一起即形成头发区域掩码图。
根据某一图像帧的头发方向图中的头发方向角可以得到各个粒子的方向角,而根据某一图像帧的头发区域掩码图可以得到各个粒子的位置信息、尺寸等,进一步的,结合相邻图像帧的头发方向图可以获知各个粒子的旋转方向,结合相邻图像帧的头发区域掩码图可以获知各个粒子的生命周期(例如:确定某一粒子在A图像帧产生,在B图像帧消失,则可以将A和B之间相差的帧数作为该粒子的生命周期)、速度信息(例如,某个粒子在C图像帧中处于c位置,而在D图像帧中处于d位置,可以根据c位置和d位置之间的距离以及C图像帧和D图像帧之间相差的时间确定该粒子的速度信息)。
另外,可以通过神经网络模型从目标视频信息中获取头发方向图和头发区域掩码图。该神经网络模型可以是CNN(卷积神经网络)模型等。
上述实施例根据目标视频信息确定目标图像帧的候选运动状态和候选状态变化信息,并将这些信息存储到纹理图像中,属于对目标视频进行预先处理的过程,以便后续头发渲染过程的有序进行。
在一示例性实施例中,在所述将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上的步骤之后,还包括:将所述纹理图像存储到第一帧缓冲中;在所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤之后,还包括:将第一帧缓冲中的纹理图像存储到第二帧缓冲中;将更新后的所述纹理图像存储到所述第一帧缓冲中。
在获取到候选状态变化信息和候选运动状态后,本实施例将这两个信息存储到纹理图像中对应的顶点位置上备用。在需要对头发进行渲染时,从纹理图像中获取目标图像帧对应的候选状态变化信息和候选运动状态,分别作为目标状态变化信息和第一目标运动状态。
本实施例通过第一帧缓冲和第二帧缓冲这两个帧缓冲来存储纹理图像,其中,第一帧缓冲中存储的纹理图像可以是作为输出(即在显示屏中进行显示),第二帧缓冲中存储的纹理图像可以是作为输入,例如,在需要进行图像帧的显示时,将第一帧缓冲中的纹理图像输入到第二帧缓冲中,进而根据第一帧缓冲中的纹理图像进行图像帧的输出显示。
另外,第一帧缓冲和第二帧缓冲也可以进行输入和输出的切换,例如,在当前时刻输出第一帧缓冲中的纹理图像,将第二帧缓冲作为第一帧缓冲的备份用于存储下一图像帧对应的纹理图像;在下一时刻,输出第二帧缓冲中下一图像帧对应的纹理图像,并将第一帧缓冲作为第二帧缓冲的备份,将新确定的下下一图像帧(下一图像帧的下一帧图像)对应的纹理图像存储到第一帧缓冲中。
上述实施例通过双缓冲来对纹理图像进行存储,能保证纹理图像中的信息输入和输出的有序性,防止出现数据的丢失,保证头发渲染的准确性。
在一示例性实施例中,提供一种头发的渲染方法的流程图,头发的渲染方法用于如图1所示的设备中,如图5所示,其实现过程如下:
S501、获取头发方向图&头发区域掩码图。
S502、利用双重帧缓冲来读写粒子信息。从头发方向图&头发区域掩码图中获取目标图像帧的粒子信息,所获取的粒子信息包括:粒子的速度、位置、旋转姿态、当前生命状态、尺寸、发丝方向,将所获取的粒子信息通过两张纹理进行存储,并将记录有粒子信息的纹理存储到第一帧缓冲中,另一帧缓冲用于对第一帧缓冲进行备份。例如,对于位置,其获取过程可以为:初始化两张纹理,在全屏幕随机生成粒子,如果某粒子位于头发区域内,则把该粒子的屏幕坐标写入帧缓冲;对于发丝方向,根据头发方向图存储的cos2t和sin2t确定cost和sint,得到发丝方向D(cost,sint)。
S503、更新目标粒子的速度。根据发丝方向D(cost,sint)和速度标量V确定目标粒子的在下一图像帧的速度v2(u,v):v2(u,v)=D(cost,sint)*V,根据v2(u,v)对目标图像帧的速度进行更新。
S504、更新目标粒子的位置。根据目标图像帧的粒子速度v1(u,v)确定目标粒子在下一图像帧的位置P(u,v)=P_prev(u,v)+v1(u,t)*delta_t,其中,P_prev(u,v)表示目标粒子在目标图像帧的位置,delta_t表示时间增量,根据P(u,v)对P_prev(u,v)进行更新。如果更新后的粒子位置超出了头发区域范围,则在屏幕上重新生成随机的粒子位置,重新确定位置并进行位置更新。
S505、剩余粒子的状态保持不变。剩余粒子在下一图像帧的速度和位置采用目标图像帧的速度和位置。
上述实施例实现了以下有益效果:
1、将头发粒子整合为粒子束,避免了头发的杂乱无序,实现了“流光”的流畅渲染效果。
2、传统技术中,视频特效大多数实现比较简单,且GPU粒子技术实现复杂,比较难推广成一种固定的模式,所以一般需求还是使用传统的cpu计算来实现粒子系统。而上述实施例使用GPU实现粒子信息的计算,实现了GPU粒子系统,大大提高了粒子系统的计算效率,能在移动端做到实时,实现了移动端对头发的实时渲染。
应该理解的是,虽然图2和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者节点的至少一部分轮流或者交替地执行。
图6是根据一示例性实施例示出的一种头发的渲染装置600的框图。参照图6,该装置包括图像帧确定单元601,纹理图像获取单元602,状态信息获取单元603,运动状态确定单元604和运动状态更新单元605。
图像帧确定单元601,被配置为执行获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧;
纹理图像获取单元602,被配置为执行获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域;
状态信息获取单元603,被配置为执行从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息;
运动状态确定单元604,被配置为执行根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像;
运动状态更新单元605,被配置为执行根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
上述实施例提供的头发的渲染装置,根据包含头发信息的目标视频获取目标图像帧的纹理图像,该纹理图像能够被GPU处理;该纹理图像中的头发区域被划分为至少一个粒子区域,能实现GPU对粒子区域的处理,同时极大简化GPU的图形处理效率,实现在移动端的运算;另外,从纹理图像中获取目标粒子区域的第一目标运动状态和目标状态变化信息,据此确定第一目标粒子区域在下一图像帧中的第二目标运动状态,根据第二目标运动状态对纹理图像中的运动状态进行更新,以实现对头发区域的渲染。根据本公开的上述技术方案能够在移动端实现对头发区域的实时渲染,同时对特定粒子区域的运动状态进行修改,能实现粒子沿发丝方向流动的渲染特效。
在一示例性实施例中,所述运动状态更新单元,还被配置为执行根据所述第二目标运动状态对所述第一目标粒子区域的运动状态进行更新,并保留剩余粒子区域的运动状态;所述剩余粒子区域为所述至少一个粒子区域中除去所述第一目标粒子区域的粒子区域。
在一示例性实施例中,所述第一目标运动状态包括第一屏幕坐标,所述目标状态变化信息包括第一速度;所述运动状态确定单元,包括:时间差值确定子单元,被配置为执行确定所述目标图像帧和所述下一图像帧的时间差值;第一运动状态确定子单元,被配置为执行根据所述第一屏幕坐标、所述第一速度和所述时间差值确定所述第一目标粒子区域在所述下一图像帧中的第二屏幕坐标,作为所述第二目标运动状态。
在一示例性实施例中,所述运动状态更新单元,包括:粒子区域确定子单元,被配置为执行若所述第二屏幕坐标处于所述头发区域之外,重新确定所述纹理图像的头发区域,并从新确定的头发区域所对应的粒子区域中确定第二目标粒子区域;状态信息获取子单元,被配置为执行从所述纹理图像中获取所述第二目标粒子区域的参考目标运动状态和参考目标状态变化信息;第二运动状态确定子单元,被配置为执行根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态;运动状态更新子单元,被配置为执行根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新。
在一示例性实施例中,所述第一目标运动状态包括第二速度,所述目标状态变化信息包括头发方向角;所述运动状态确定单元,包括:速率获取子单元,被配置为执行获取预先设定的速率;第三运动状态确定子单元,被配置为执行根据所述第二速度、所述头发方向角和所述速率确定所述第一目标粒子区域在所述下一图像帧中的第三速度,得到所述第二目标运动状态。
在一示例性实施例中,所述头发的渲染装置,还包括:状态变化信息确定单元,被配置为执行根据所述目标视频中随时间变化的像素状态信息,确定所述目标图像帧中各个像素点的候选状态变化信息;图像获取单元,被配置为执行获取所述目标图像帧对应的头发方向图和头发区域掩码图;所述头发方向图中包含有所述各个像素点的头发方向角,所述头发区域掩码图中包含有所述目标图像帧中头发区域的掩码信息;候选运动状态确定单元,被配置为执行根据所述头发方向图中的头发方向角和所述头发区域掩码图中的掩码信息确定所述各个像素点的候选运动状态;候选运动状态存储单元,被配置为执行将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上;其中,所述至少一个粒子区域的顶点位置与所述各个像素点对应。
在一示例性实施例中,所述头发的渲染装置,还包括:第一图像存储单元,被配置为执行将所述纹理图像存储到第一帧缓冲中;图像转存单元,被配置为执行将第一帧缓冲中的纹理图像存储到第二帧缓冲中;第二图像存储单元,被配置为执行将更新后的所述纹理图像存储到所述第一帧缓冲中。
在一示例性实施例中,所述头发的渲染装置还包括:区域确定单元,被配置为执行确定所述纹理图像中的头发区域;区域划分单元,被配置为执行根据预先确定的粒子束数量对所述头发区域进行格网划分,得到对应的至少一个粒子束;粒子束划分单元,被配置为执行根据预先确定的粒子数量对所述至少一个粒子束分别进行格网划分,得到对应的至少一个粒子区域。
在一示例性实施例中,所述头发的渲染装置,还包括:粒子区域确定单元,被配置为执行将所述至少一个粒子束中处于设定位置的粒子区域,确定为所述第一目标粒子区域。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一示例性实施例中,还提供了一种电子设备,其结构示意图可以如图1所示,该电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如前述实施例所述的头发的渲染方法。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器102,上述指令可由设备100的处理器120执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在一示例性实施例中,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行如上实施例中所述的头发的渲染方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种头发的渲染方法,其特征在于,包括:
获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧;
获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域;
从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息;
根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像;
根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
2.根据权利要求1所述的头发的渲染方法,其特征在于,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:
根据所述第二目标运动状态对所述第一目标粒子区域的运动状态进行更新,并保留剩余粒子区域的运动状态;所述剩余粒子区域为所述至少一个粒子区域中除去所述第一目标粒子区域的粒子区域。
3.根据权利要求1或2所述的头发的渲染方法,其特征在于,所述第一目标运动状态包括第一屏幕坐标,所述目标状态变化信息包括第一速度;
所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:
确定所述目标图像帧和所述下一图像帧的时间差值;
根据所述第一屏幕坐标、所述第一速度和所述时间差值确定所述第一目标粒子区域在所述下一图像帧中的第二屏幕坐标,作为所述第二目标运动状态。
4.根据权利要求3所述的头发的渲染方法,其特征在于,所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤,包括:
若所述第二屏幕坐标处于所述头发区域之外,重新确定所述纹理图像的头发区域,并从新确定的头发区域所对应的粒子区域中确定第二目标粒子区域;
从所述纹理图像中获取所述第二目标粒子区域的参考目标运动状态和参考目标状态变化信息;
根据所述参考目标运动状态和所述参考目标状态变化信息确定所述第二目标粒子区域在所述下一图像帧中的运动状态,得到第三目标运动状态;
根据所述第三目标运动状态对所述纹理图像中的运动状态进行更新。
5.根据权利要求1或2所述的头发的渲染方法,其特征在于,所述第一目标运动状态包括第二速度,所述目标状态变化信息包括头发方向角;
所述根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态的步骤,包括:
获取预先设定的速率;
根据所述第二速度、所述头发方向角和所述速率确定所述第一目标粒子区域在所述下一图像帧中的第三速度,得到所述第二目标运动状态。
6.根据权利要求1所述的头发的渲染方法,其特征在于,在所述获取所述目标图像帧的纹理图像的步骤之前,还包括:
根据所述目标视频中随时间变化的像素状态信息,确定所述目标图像帧中各个像素点的候选状态变化信息;
获取所述目标图像帧对应的头发方向图和头发区域掩码图;所述头发方向图中包含有所述各个像素点的头发方向角,所述头发区域掩码图中包含有所述目标图像帧中头发区域的掩码信息;
根据所述头发方向图中的头发方向角和所述头发区域掩码图中的掩码信息确定所述各个像素点的候选运动状态;
将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上;其中,所述至少一个粒子区域的顶点位置与所述各个像素点对应。
7.根据权利要求6所述的头发的渲染方法,其特征在于,在所述将所述候选状态变化信息和所述候选运动状态存储到所述至少一个粒子区域的顶点位置上的步骤之后,还包括:
将所述纹理图像存储到第一帧缓冲中;
在所述根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新的步骤之后,还包括:
将第一帧缓冲中的纹理图像存储到第二帧缓冲中;
将更新后的所述纹理图像存储到所述第一帧缓冲中。
8.一种头发的渲染装置,其特征在于,包括:
图像帧确定单元,被配置为执行获取包含头发信息的目标视频,从所述目标视频的图像帧中选择目标图像帧;
纹理图像获取单元,被配置为执行获取所述目标图像帧的纹理图像;其中,所述纹理图像为对所述目标图像帧中像素点的运动状态和状态变化信息进行记录的纹理格式的图像,所述纹理图像中的头发区域被格网线划分为至少一个粒子区域;
状态信息获取单元,被配置为执行从所述纹理图像中获取所述至少一个粒子区域中第一目标粒子区域的第一目标运动状态和目标状态变化信息;
运动状态确定单元,被配置为执行根据所述第一目标运动状态和所述目标状态变化信息确定所述第一目标粒子区域在下一图像帧中的第二目标运动状态;所述下一图像帧为所述目标视频中所述目标图像帧的下一帧图像;
运动状态更新单元,被配置为执行根据所述第二目标运动状态对所述纹理图像中的运动状态进行更新,以对所述头发区域进行渲染。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的头发的渲染方法。
10.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的头发的渲染方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010230272.6A CN113516743A (zh) | 2020-03-27 | 2020-03-27 | 头发的渲染方法、装置、电子设备及存储介质 |
PCT/CN2020/129859 WO2021189880A1 (zh) | 2020-03-27 | 2020-11-18 | 头发的渲染方法、装置、电子设备及存储介质 |
JP2022549140A JP7390495B2 (ja) | 2020-03-27 | 2020-11-18 | 髪のレンダリング方法、装置、電子機器及び記憶媒体 |
US17/897,309 US20220414963A1 (en) | 2020-03-27 | 2022-08-29 | Hair rendering method and apparatus, electronic device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010230272.6A CN113516743A (zh) | 2020-03-27 | 2020-03-27 | 头发的渲染方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113516743A true CN113516743A (zh) | 2021-10-19 |
Family
ID=77890877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010230272.6A Pending CN113516743A (zh) | 2020-03-27 | 2020-03-27 | 头发的渲染方法、装置、电子设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220414963A1 (zh) |
JP (1) | JP7390495B2 (zh) |
CN (1) | CN113516743A (zh) |
WO (1) | WO2021189880A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114037740A (zh) * | 2021-11-09 | 2022-02-11 | 北京字节跳动网络技术有限公司 | 图像数据流的处理方法、装置及电子设备 |
WO2023103684A1 (zh) * | 2021-12-06 | 2023-06-15 | 北京字节跳动网络技术有限公司 | 人像头发流动特效处理方法、装置、介质和电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220164852A1 (en) * | 2020-11-20 | 2022-05-26 | The Procter & Gamble Company | Digital Imaging and Learning Systems and Methods for Analyzing Pixel Data of an Image of a Hair Region of a User's Head to Generate One or More User-Specific Recommendations |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180181803A1 (en) * | 2016-12-27 | 2018-06-28 | Shenzhen University | Pedestrian head identification method and system |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4695275B2 (ja) | 2001-03-07 | 2011-06-08 | 独立行政法人科学技術振興機構 | 動画像生成システム |
JP2007286669A (ja) | 2006-04-12 | 2007-11-01 | Sony Corp | 画像処理装置および方法、並びにプログラム |
JP2009020874A (ja) | 2007-06-11 | 2009-01-29 | Kyushu Institute Of Technology | 髪シミュレーション方法およびその装置 |
CN103606186B (zh) | 2013-02-02 | 2016-03-30 | 浙江大学 | 一种图像与视频的虚拟发型建模方法 |
JP2017054337A (ja) * | 2015-09-10 | 2017-03-16 | ソニー株式会社 | 画像処理装置および方法 |
US9870638B2 (en) * | 2016-02-24 | 2018-01-16 | Ondrej Jamri{hacek over (s)}ka | Appearance transfer techniques |
CN107958480B (zh) * | 2017-11-23 | 2021-04-30 | 腾讯科技(上海)有限公司 | 图像渲染方法、装置及存储介质 |
-
2020
- 2020-03-27 CN CN202010230272.6A patent/CN113516743A/zh active Pending
- 2020-11-18 WO PCT/CN2020/129859 patent/WO2021189880A1/zh active Application Filing
- 2020-11-18 JP JP2022549140A patent/JP7390495B2/ja active Active
-
2022
- 2022-08-29 US US17/897,309 patent/US20220414963A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180181803A1 (en) * | 2016-12-27 | 2018-06-28 | Shenzhen University | Pedestrian head identification method and system |
Non-Patent Citations (2)
Title |
---|
吕梦雅 等: "头发流体模型中碰撞处理的新方法", 燕山大学学报, vol. 34, no. 5, pages 417 - 420 * |
吴晨: "基于视频的快速头发捕捉方法研究与实现", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 01, pages 20 - 60 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114037740A (zh) * | 2021-11-09 | 2022-02-11 | 北京字节跳动网络技术有限公司 | 图像数据流的处理方法、装置及电子设备 |
WO2023083171A1 (zh) * | 2021-11-09 | 2023-05-19 | 北京字节跳动网络技术有限公司 | 图像数据流的处理方法、装置及电子设备 |
WO2023103684A1 (zh) * | 2021-12-06 | 2023-06-15 | 北京字节跳动网络技术有限公司 | 人像头发流动特效处理方法、装置、介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
JP7390495B2 (ja) | 2023-12-01 |
WO2021189880A1 (zh) | 2021-09-30 |
JP2023515410A (ja) | 2023-04-13 |
US20220414963A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110675310B (zh) | 视频处理方法、装置、电子设备及存储介质 | |
US10032076B2 (en) | Method and device for displaying image | |
WO2021189880A1 (zh) | 头发的渲染方法、装置、电子设备及存储介质 | |
CN109087238B (zh) | 图像处理方法和装置、电子设备以及计算机可读存储介质 | |
CN107977934B (zh) | 图像处理方法及装置 | |
CN112614228B (zh) | 三维网格的简化方法、装置、电子设备和存储介质 | |
US20240078703A1 (en) | Personalized scene image processing method, apparatus and storage medium | |
CN110211211B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN111985268A (zh) | 一种人脸驱动动画的方法和装置 | |
CN110782532B (zh) | 图像生成方法、生成装置、电子设备及存储介质 | |
CN110505406A (zh) | 背景虚化方法、装置、存储介质及终端 | |
US20220222831A1 (en) | Method for processing images and electronic device therefor | |
CN114025105A (zh) | 视频处理方法、装置、电子设备、存储介质 | |
EP3828832B1 (en) | Display control method, display control device and computer-readable storage medium | |
CN114255496A (zh) | 视频生成方法、装置、电子设备及存储介质 | |
CN112509005A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN112906553B (zh) | 图像处理方法、装置、设备及介质 | |
CN110728621A (zh) | 一种面部图像的换脸方法、装置、电子设备及存储介质 | |
CN107239758B (zh) | 人脸关键点定位的方法及装置 | |
CN113870413A (zh) | 三维重建方法、装置、电子设备及存储介质 | |
CN110502993B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN116092147A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
CN115379195A (zh) | 视频生成方法、装置、电子设备和可读存储介质 | |
CN113989424A (zh) | 三维虚拟形象的生成方法、装置及电子设备 | |
CN110312117B (zh) | 数据刷新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |