CN111462205B - 图像数据的变形、直播方法、装置、电子设备和存储介质 - Google Patents

图像数据的变形、直播方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN111462205B
CN111462205B CN202010238242.XA CN202010238242A CN111462205B CN 111462205 B CN111462205 B CN 111462205B CN 202010238242 A CN202010238242 A CN 202010238242A CN 111462205 B CN111462205 B CN 111462205B
Authority
CN
China
Prior art keywords
distance
target
curve
coordinate
image data
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.)
Active
Application number
CN202010238242.XA
Other languages
English (en)
Other versions
CN111462205A (zh
Inventor
华路延
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010238242.XA priority Critical patent/CN111462205B/zh
Publication of CN111462205A publication Critical patent/CN111462205A/zh
Application granted granted Critical
Publication of CN111462205B publication Critical patent/CN111462205B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • G06T5/77
    • G06T5/94
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation

Abstract

本发明实施例公开了一种图像数据的变形、直播方法、装置、电子设备和存储介质。其中,图像数据的变形方法包括:获取图像数据;在图像数据中确定目标区域;根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形。本发明实施例的方案,实现了对图像数据进行局部变形,可以应用于直播等应用场景,解决了现有的图像数据变形方法局部变形效果较差且灵活度较低的问题。

Description

图像数据的变形、直播方法、装置、电子设备和存储介质
技术领域
本发明实施例涉及图像处理技术领域,尤其涉及一种图像数据的变形、直播方法、装置、电子设备和存储介质。
背景技术
随着社会的发展,诸如手机、平板电脑等电子设备已经广泛应用在学习、娱乐、工作等方面,扮演着越来越重要的角色。在这些电子设备中配置有摄像头,可用于拍照、录像、直播等操作。
用户经常会对图像数据进行变形,例如,局部放大或缩小等;若图像数据包含人脸,用户经常会对该人脸进行调整,如美颜、磨皮或者瘦脸等。
目前,通常通过打开设备摄像头的同时加载图像数据变形的映射表,当检测到图像数据时,立即对其进行优化处理,从而实现对图像数据的变形。
但是,通过图像数据变形的映射表对图像数据进行变形,对图像数据的局部变形效果较差,同时,这种调整方式需要预先设置图像数据变形的映射表,对图像数据变形的灵活度较差,并且,在直播等对实时性要求较高的场景中,性能存在瓶颈。
发明内容
本发明实施例提供一种图像数据的变形、直播方法、装置、电子设备和存储介质,以解决对图像数据的局部变形效果较差且灵活度较低的问题。
第一方面,本发明实施例提供了一种图像数据的变形方法,该方法包括:
获取图像数据;
在所述图像数据中确定目标区域;
根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形。
第二方面,本发明实施例还提供了一种直播方法,该方法包括:
采集视频数据,所述视频数据中的图像数据具有主播用户的人脸数据;
当接收到美颜操作时,在所述人脸数据中确定目标区域;
根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
在播放所述视频数据时,以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
在所述主播用户设置的直播间中发布已显示对所述目标区域的变形的视频数据。
第三方面,本发明实施例还提供了一种图像数据的变形装置,该装置包括:
图像数据获取模块,用于获取图像数据;
目标区域确定模块,用于在所述图像数据中确定目标区域;
距离获取模块,用于根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
变形显示模块,用于以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形。
第四方面,本发明实施例还提供了一种直播装置,该装置包括:
视频数据采集模块,用于采集视频数据,所述视频数据中的图像数据具有主播用户的人脸数据;
目标区域确定模块,用于当接收到美颜操作时,在所述人脸数据中确定目标区域;
距离获取模块,用于根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
变形显示模块,用于在播放所述视频数据时,以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
视频数据发布模块,用于在所述主播用户设置的直播间中发布已显示对所述目标区域的变形的视频数据。
第五方面,本发明实施例还提供了一种电子,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一实施例所述的图像数据的变形方法或者直播方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明实施例中任一实施例所述的图像数据的变形方法或者直播方法。
本发明实施例的方案,通过获取图像数据,在图像数据中确定目标区域,并根据预设的曲线对目标区域中的像素点进行映射,从而获得像素点在映射时的移动距离;将移动距离作为纹理渲染图像数据,显示目标区域的变形,解决了现有的图像数据变形方法对图像数据的局部变形效果较差且灵活度较低的问题,可以实现对图像数据中任一局部区域的变形;同时,无需预先确定图像数据变形的映射表,提升了图像数据变形的灵活度;并且可以在对图像数据进行渲染的同时实现图像数据的变形,避免了在渲染之后再次进行变形操作,将两个操作合二为一,可以加快变形的速度,从而适用在直播这些实时性要求比较强的场景。
附图说明
图1是本发明实施例一提供的一种图像数据的变形方法的流程图;
图2是本发明实施例一提供的一种目标区域的示例图;
图3是本发明实施例一提供的一种第一曲线、第二曲线以及第三曲线的示例图;
图4A至图4C是本发明实施例一提供的一种网格顺序的示例图;
图5A是本发明实施例一提供的一种图像数据的示例图;
图5B是本发明实施例一提供的一种图像数据及其目标区域的示例图;
图5C是本发明实施例一提供的一种图像数据切分为网格的示例图;
图6是本发明实施例一提供的一种范围的示例图;
图7是本发明实施例二提供的一种直播方法的流程图;
图8A至图8C是本发明实施例二提供的一种人脸关键点的示例图;
图9是本发明实施例三提供的一种图像数据的变形装置的结构示意图;
图10是本发明实施例四提供的一种直播装置的结构示意图;
图11是本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种图像数据的变形方法的流程图,本实施例可适用于基于图像数据确定目标区域,并对目标区域进行变形的情况,该方法可以由图像数据的变形装置来执行,该装置可以由软件和/或硬件实现,可配置在电子设备中,例如,手机、平板、PDA(personal digital assistant,个人数字助理)、智能穿戴设备(如智能眼镜、智能手表)等移动终端,也可以包括智能电视、个人电脑等非移动终端,这些电子设备包括CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)等处理器,以及配置有用于渲染2D矢量图形的应用程序编程接口(API)或渲染引擎,如OpenGL(Open Graphics Library,开放图形库)、OpenGL ES(OpenGL for EmbeddedSystems,用于嵌入式系统的OpenGL)等等,该方法具体包括如下步骤:
S101、获取图像数据。
在具体实现中,电子设备的操作系统可以包括Android(安卓)、IOS或者Windows等等。
在这些操作系统中支持运行可进行图像处理的应用,如直播应用、图像编辑应用、相机应用、即时通讯工具、图库应用,等等。
诸如图像编辑应用、即时通讯工具、图库应用等应用,其UI(User Interface,用户界面)可提供导入的控件,用户可通过触控或鼠标等外设操作该导入的控件,选择本地存储的图像数据(以缩略图或路径表示),也可以选择网络存储的图像数据(以URL(UniformResource Locators,统一资源定位器)表示),使得应用获取该图像数据。
诸如直播应用、图像编辑应用、相机应用、即时通讯工具等应用,其UI可提供拍照、录像的控件,用户可通过触控或鼠标等外设操作该拍照、录像的控件,通知应用调用摄像头采集图像数据。
S102、在图像数据中确定目标区域。
其中,目标区域可以为椭圆形或者圆形等形状,本发明实施例中对其不加以限制。需要说明的是,本发明实施例中目标区域可以为图像数据中的任一区域,本发明实施例中对目标区域的大小和位置也不加以限制。
在本发明实施例的一个示例中,在图像数据中确定一像素点,作为关键像素点;以关键像素点为中心,生成形状为椭圆形的目标区域。
在具体实现中,为了提升算法的效率,可以在图像数据中进行关键点检测,并以检测到的任意一个关键点为中心,生成形状为椭圆形的目标区域。示例性的,若图像数据中某一关键点坐标为(x1,y1),椭圆形的长轴和短轴的长度分别为2a和2b,则目标区域的表达式可以表示为:
需要说明的是,当椭圆形的长轴和短轴的长度a和b相等时,目标区域的形状即为一个圆形。
S103、根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离。
在具体实现中,确定图像数据中的目标区域之后,可以进一步的根据预设的曲线对该目标区域中的像素点进行映射,从而获得像素点在映射时移动的距离。
在本发明实施例的一个实施例中,S103包括如下步骤:
S1031、在图像数据中查找位于目标区域中的像素点。
在具体实现中,在确定图像数据中的目标区域之后,则可以通过几何算法进一步地查找目标区域中的像素点,从而对目标区域中的像素点进行后续操作。需要说明的是,目标区域中可以包括多个像素点,本发明实施例中对此不加以限制。
在本发明实施例的一个示例中,若目标区域的形状为椭圆形,则查询目标区域中、中点的X坐标和Y坐标、图像数据中各个像素点的X坐标和Y坐标;若第一比值与第二比值之间的和值小于1,则确定像素点位于目标区域中;其中,第一比值表示第一数值的平方与目标区域中长轴的平方之间的比值,第一数值为中点的X坐标与像素点的X坐标之间的差值;第二比值表示第二数值的平方与目标区域中短轴的平方之间的比值,第二数值为中点的Y坐标与像素点的Y坐标之间的差值。
在具体实现中,若确定的目标区域的形状为椭圆形,则进一步的查询目标区域的中点的X坐标和Y坐标以及其他点的X坐标和Y坐标,其中,目标区域的中点即为椭圆形的中点。
示例性的,若确定的椭圆形目标区域如图2所示,其表达式为其中,a和b分别为椭圆形的长轴和短轴的长度,且a>b,该目标区域的中点的X坐标和Y坐标分别为x1和y1;同时,点A为图像数据中任一像素点,其X坐标和Y坐标分别为x2和y2;则对于点A,第一数值为x2-x1,第一比值为/>第二数值为y2-y1,第二比值为/>进一步的,若第一比值与第二比值之间的和值小于1,即/>则可以确定点A为目标区域中的像素点。
示例性的,若点B也为图像数据中任一点,其X坐标和Y坐标分别为x3和y3;则对于点B,第一数值为x3-x1,第一比值为第二数值为y3-y1,第二比值为/>进一步的,若第一比值与第二比值之间的和值大于1,即/>则可以确定点B不是目标区域中的像素点。
S1032、在X轴和/或Y轴的方向上,确定图像数据中的基准线。
其中,基准线可以为在目标区域中作为变形参考的线。示例性的,若在X轴上对目标区域进行变形,那么基准线是与X轴平行的线;若在Y轴上对目标区域进行变形,那么基准线是与Y轴平行的线;若同时在X轴、Y轴上对目标区域进行变形,那么基准线分别是与X轴、Y轴平行的线。
在具体实现中,椭圆形的长轴可以在X轴方向上,也可以在Y轴方向上;相应的,短轴可以在Y轴方向上,也可以在X轴方向上。在确定目标区域中的各像素点后,可以进一步的确定图像数据中的基准线。示例性的,可以确定X轴方向上的椭圆形的长轴为图像数据中的基准线;也可以确定Y轴方向上的椭圆形的短轴为图像数据中的基准线,本发明实施例对其不加以限制。
S1033、在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离。
在具体实现中,若目标区域为如图2所示的椭圆形,其中心点为(x1,y1),该区域内任一像素点A的坐标为(x2,y2),若以X轴方向上的椭圆形的长轴为目标区域中的基准线,则原始距离为点A(x2,y2)到长轴的距离,在本例子中,原始距离为x2-x1;若以Y轴方向上的椭圆形的短轴为目标区域中的基准线,则原始距离为点A(x2,y2)到短轴的距离,在本例子中,原始距离为y2-y1。
S1034、确定预设的曲线。
其中,预设的曲线以函数表达式的方式进行表示,X坐标与Y坐标存在一定的映射关系,其所在的平面可以为由X坐标与Y坐标组成的平面,而非图像数据所在的平面。
在具体实现中,预设的曲线可以包括第一曲线、第二曲线以及第三曲线;其中,通过第一曲线可以实现对图像数据在X轴和/或Y轴方向上进行缩小处理;第三曲线可以实现对图像数据在X轴和/或Y轴方向上进行放大处理;第二曲线可以使图像数据在X轴和/或Y轴方向上的大小不变。
示例性的,预设的曲线可以为y=xn,其中,n为任意一个自然数,例如0.5、1或者2等,本发明实施例中对此不加以限制。需要说明的是,本发明实施例中预设的曲线还可以为其他形式的映射关系,本发明实施例中对其不加以限制。
在本发明的一个示例中,第一曲线可以为y=xn,其中,n>1;第二曲线可以为y=xn,其中,n=1;第二曲线可以为y=xn,其中,0<1<n,为了更好地理解本发明实施例,图3分别列举了第一曲线301、第二曲线302和第三曲线303。
S1035、以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离。
在具体实现中,在确定预设的曲线之后,可以进一步的以S1033中的原始距离作为预设曲线的X坐标,在预设的曲线中映射至Y坐标,作为目标距离。
示例性的,若预设的曲线为y=xn,其中,n为任意一个自然数,若原始距离为x2-x1,则目标距离为y=(x2-x1)n
在本发明实施例中,以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离,可以包括:以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
需要说明的是,当目标距离小于原始距离时,可以实现对图像数据在X轴和/或Y轴方向上进行缩小处理;当目标距离大于原始距离时,可以实现对图像数据在X轴和/或Y轴方向上进行放大处理;当目标距离等于原始距离时,图像数据在X轴和/或Y轴方向上的大小不变。
在本发明实施例的一个具体例子中,若预设的曲线为第一曲线,y=xn,其中,n>1,则以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离,可以包括:以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离。
示例性的,当n=2时,原始距离为x2-x1,则目标距离为y=(x2-x1)2,,由于x2-x1<1,则此时目标距离小于原始距离。
在本发明实施例的另一个具体例子中,若预设的曲线为第二曲线,y=xn,其中,n=1,则以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离,可以包括:以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离。
示例性的,当n=1时,原始距离为x2-x1,则目标距离为y=x2-x1,此时,目标距离等于原始距离。
在本发明实施例的另一个具体例子中,若预设的曲线为第三曲线,y=xn,其中,0<1<n,则以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离,可以包括:以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
示例性的,当n=1/2时,原始距离为x2-x1,则目标距离为y=(x2-x1)1/2,由于x2-x1<1,则此时目标距离大于原始距离。
S1036、计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离。
在具体实现中,确定目标距离与原始距离之后,可以进一步的计算目标距离与原始距离之间的差值,并将该差值作为像素点在X轴和/或Y轴的方向上移动的距离。
示例性的,若预设的曲线为第一曲线,y=xn,其中,n>1,目标距离小于原始距离,那么目标距离与原始距离之间的差值小于零,此时,可以将像素点在X轴方向上向左移动目标距离与原始距离之间的差值的绝对值,或者将像素点在Y轴方向上向上移动目标距离与原始距离之间的差值的绝对值。
示例性的,若预设的曲线为第二曲线,y=xn,其中,n=1,目标距离等于原始距离,那么目标距离与原始距离之间的差值等于零,此时无需对像素点进行移动。
示例性的,若预设的曲线为第三曲线,y=xn,其中,0<1<n,目标距离大于原始距离,那么目标距离与原始距离之间的差值大于零,此时,可以将像素点在X轴方向上向右移动目标距离与原始距离之间的差值的绝对值,或者将像素点在Y轴方向上向下移动目标距离与原始距离之间的差值的绝对值。
本实施例中,可以通过预设曲线映射得到目标距离,并计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离,操作简单,可实现局部的变形操作,灵活性强。
S104、以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形。
在具体实现中,调用用于渲染2D矢量图形的API或渲染引擎,按照顺序对目标区域的各个像素先进行渲染,从而在屏幕显示变形后的目标区域。
在本发明的一个实施例中,S104可以包括如下步骤:
S1041、在渲染图像数据时,将图像数据切分为网格,网格具有顶点。
其中,网格(Mesh),代表单个的可绘制实体,其顶点至少包括像素点,即以像素点作为网格的至少部分顶点,将图像数据进行网格化,划分为多个(两个及两个以上)网格。
所谓网格化,是将凹多边形或有边相交的多边形划分成凸多边形,如三角形或者矩形等,以便被OpenGL等API或渲染引擎渲染。
需要说明的是,网格之间是有序的,从而形成网格序列,使得符合OpenGL等API或渲染引擎的渲染规范。
例如,对于OpenGL,一般情况下有三种绘制一系列三角形(网格):
1、GL_TRIANGLES
每三个点一组画一个三角形,三角形之间是独立的。
如图4A所示,第一个三角形使用顶点v0、v1、v2,第二个三角形使用顶点v3、v4、v5,以此类推。
2、GL_TRIANGLE_STRIP
从第三个点开始,每点与前面的两个点组合画一个三角形,即线性连续三角形串:
如图4B所示,第一个三角形,顶点排列顺序是v0、v1、v2;第二个三角形,顶点排列顺序是v2、v1、v3;第三个三角形,顶点排列顺序是v2、v3、v4;第四个三角形,顶点排列顺序是v4、v3、v8。
这个顺序是为了保证三角形按照相同的方向绘制的,使这个三角形的序列能够正确形成表面的一部分。
3、GL_TRIANGLE_FAN。
从第三个点开始,每点与前一个点和第一个点组合画一个三角形,即扇形连续三角形。
如图4C所示,第一个三角形的顶点排列顺序是v2、v1、v0,第二个三角形的顶点排列顺序是v3、v2、v0,第一个三角形的顶点排列顺序是v4、v3、v0。
需要说明的是,本发明实施例中也可以将图像数据按照上述方法切分为包括多个矩形的网格,本发明实施例对其不加以限制。
示例性的,图5A列举了一种图像数据,其中,图像数据可以包括任一数据,例如,人物形象、风景、建筑或者卡通形象等,本发明实施例中对其不加以限制;图5B为在其中确定了目标区域的图像数据,其中目标区域为500;将该图像数据通过上述方法切分为网格,切分结果为如图5C所示。
在本发明实施例中,以OpenGL ES作为示例讲解绘制网格的流程,此流程为可编程管线,具体包括如下操作:
1、VBO/VAO(Vertex Buffer/Arrays Objects,顶点缓冲区对象或顶点数组对象)
VBO/VAO是CPU提供给GPU的顶点信息,包括了顶点坐标、颜色(只是顶点的颜色,和纹理的颜色无关)、纹理坐标(用于纹理贴图)等。
2、VertexShader(顶点着色器)
顶点着色器是处理VBO/VAO提供的顶点信息的程序。VBO/VAO提供的每个顶点都执行一遍顶点着色器。Uniforms(一种变量类型)在每个顶点保持一致,Attribute每个顶点都不同(可以理解为输入顶点属性)。执行一次VertexShader输出一个Varying(可变变量)和gl_positon。
其中,顶点着色器的输入包括:
2.1、着色器程序:描述顶点上执行操作的顶点着色器程序源代码或者可执行文件。
2.2、顶点着色器输入(或者属性):用顶点数组提供的每个顶点的数据。
2.3、统一变量(uniform):顶点或者片段着色器使用的不变数据。
2.4、采样器(Samplers):代表顶点着色器使用纹理的特殊统一变量类型。
其中,VertexShader就是顶点着色器编程可以操作的阶段,用于控制顶点坐标的转换过程,片段着色器控制着每个像素颜色的计算过程。
3、Primitive Assembly(图元装配):
顶点着色器下一个阶段是图元装配,图元(prmitive)是三角形、直线或者点等几何对象。这个阶段,把顶点着色器输出的顶点组合成图元。
将顶点数据根据Primitive(原始链接关系)还原出网格结构,网格由顶点和索引组成,在此阶段根据索引将顶点链接在一起,组成点、线、面三种不同的图元,之后就是对超出屏幕的三角形进行剪裁。
例如,某个三角形(网格)三个顶点其中一个点在屏幕的外面,另外两个点在屏幕里面,其实屏幕上看到的应该是个四边形,则可以将这个四边形切成2个小的三角形(网格)。
简而言之,将顶点着色器计算之后得到的点根据链接关系组成点、线、面(三角形)。
4、rasterization(光栅化)
光栅化是将图元转化为一组二维片段的过程,然后,这些片段由片段着色器处理(片段着色器的输入)。这些二维片段代表着可在屏幕上绘制的像素,用于从分配给每个图元顶点的顶点着色器输出生成每个片段值的机制称作插值。
图元装配后顶点可以理解成变为图形,光栅化时可以根据图形的形状,插值出那个图形区域的像素(纹理坐标v_texCoord、颜色等信息)。注意,此时的像素并不是屏幕上的像素,是不带有颜色的。接下来的片段着色器完成上色的工作。
5、FragmentShader(片段着色器)
片段着色器为片段(像素)上的操作实现了通用的可编程方法,光栅化输出的每个片段都执行一遍片段着色器,对光栅化阶段生成每个片段执行这个着色器,生成一个或多个(多重渲染)颜色值作为输出。
6、Per-Fragment Operations(逐片段操作)
在该阶段,每个片段都会执行下面的5个操作:
6.1、pixelOwnershipTest(像素归属测试)
确定帧缓冲区中位置(x,y)的像素是不是归当前上下文所有。
例如,如果一个显示帧缓冲区窗口被另一个窗口所遮蔽,则窗口系统可以确定被遮蔽的像素不属于此OpenGL的上下文,从而不显示这些像素。
6.2、ScissorTest(剪裁测试):
如果该片段位于剪裁区域外,则被抛弃。
6.3、StencilTest and DepthTest(模板和深度测试):
若片段着色器返回的形状不是模板中的形状,则舍弃。
若片段着色器返回的深度小于缓冲区中的深度,则舍弃。
6.4、Blending(混合):
将新生成的片段颜色值与保存在帧缓冲区的颜色值组合起来,产生新的RGBA(Red(红色)、Green(绿色)、Blue(蓝色)和Alpha的色彩空间)。
6.5、dithering(抖动):
在逐片段操作阶段的最后,片段要么被拒绝,要么在帧缓冲区(x,y)的某个位置写入片段的颜色,深度或者模板值。写入片段颜色,深度和模板值取决于弃用的相应写入掩码。写入掩码可以更精确的控制写入相关缓冲区的颜色、深度和模板值。例如:可以设置颜色缓冲区的写入掩码,使得任何红色值都不能被写入颜色缓冲区。
最后把产生的片段放到帧缓冲区(前缓冲区或后缓冲区或FBO(Frame BufferObject,帧缓冲对象))中,若不是FBO,则屏幕绘制缓冲区中的片段,产生屏幕上的像素。
S1042、对目标像素点的纹理设置为目标像素点移动的距离,其中,目标像素点为位于顶点的像素点。
其中,目标像素点的纹理可以包括R(Red,红色)分量、G(Green,绿色)分量、B(Blue,蓝色)分量、A(Alpha)分量。
需要说明的是,通常情况下,目标像素点的R分量、G分量、B分量的范围为0~255之间的整数或者0%~100%之间的百分数,这些值描述了红绿蓝三原色在目标像素点的预期色彩中的量;A分量制订了目标像素点的色彩的透明度或者不透明度,它的范围为0.0~1.0之间,其中,当A=0.5时,表示半透明。示例性的,RGBA(255,255,255,0)表示完全透明的白色;RGBA(0,0,0,1)表示完全不透明的黑色;RGBA(0,0,0,0)表示完全不透明的白色,即无色。
在具体实现中,保持每个网格内顶点着色器不变,在片段着色器中,将目标像素点的纹理设置为目标像素点移动的距离。
这样设置的好处在于,将目标像素点的纹理设置为目标像素点移动的距离,可以更加灵活地对目标像素点进行移动,同时,每个像素点都存在R分量、G分量、B分量和A分量,无需引入其他的参数,即可实现对图像数据中的各个像素点进行准确地移动,减少了大量的计算量。
需要说明的是,本发明实施例中,对图像数据中的每个网格顶点都执行上述操作,这样设置的好处在于,可以解决图像数据局部变形过大,导致图像失真的问题。
在本发明实施例的一个实施例中,对目标像素点的纹理设置为目标像素点移动的距离,可以包括:对目标像素点的R分量设置为目标像素点在X轴的方向上移动的距离;对目标像素点的G分量设置为目标像素点在Y轴的方向上移动的距离;对目标像素点的B分量设置为0;对目标像素点的A分量设置为0。
示例性的,若目标像素点在X轴的方向上移动的距离为a,在Y轴的方向上移动的距离为0,则可以将目标像素点的R分量、G分量、B分量和A分量分别设置为a,0,0和0;若目标像素点在X轴的方向上移动的距离为0,在Y轴的方向上移动的距离为b,则可以将目标像素点的R分量、G分量、B分量和A分量分别设置为0,b,0和0。
S1043、在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点。
在具体实现中,获取到目标像素点的纹理之后,可以进一步的将目标像素点的纹理加到目标像素点的坐标上,从而得到变形之后的目标像素点,即变形之后的顶点。
在本发明实施例的一个实施例中,在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点,可以包括:在目标像素点的X坐标基础上添加目标像素点的R分量,获得变形之后的顶点的X坐标;在目标像素点的Y坐标基础上添加目标像素点的G分量,获得变形之后的顶点的Y坐标。
示例性的,若目标像素点的坐标为(x1,y1),该目标像素点的纹理的R分量、G分量、B分量和A分量分别为a,0,0和0,则变形之后的目标像素点的坐标为(x1+a,y1)。
在本发明实施例的另一个实施例中,在S1043之后,还可以包括如下步骤
S10431、确定一包含目标像素点的范围。
其中,范围内除了包括目标像素点外,还包括与目标像素点相邻的4个、8个或者16个像素点等,本发明实施例中对其不加以限制。
示例性的,范围内可以包括目标像素点,以及目标像素点的上、下、左以及右四个方向的像素点。如图6所示,目标像素点为点60,其上下左右四个像素点分别为61、62、63以及64,则所确定的范围内共包括60、61、62、63以及64五个像素点。
S10432、使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理。
其中,位于范围内的像素点的纹理可以包括范围内各像素点的R分量、G分量、B分量、A分量。
在具体实现中,使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理,可以包括:计算位于范围内的像素点的R分量的平均值,作为目标像素点的R分量;计算位于范围内的像素点的G分量的平均值,作为目标像素点的G分量。
示例性的,若目标像素点的坐标为(Xn,Yn),其中,n=0,1,2…,且目标像素点的RGBA=XY00,其中,(Xn,Yn)R=X,(Xn,Yn)G=Y,(Xn,Yn)B=0,(Xn,Yn)A=0。需要说明的是,Xn以及Yn代表网格顶点着色器的位置,(Xn,Yn)R代表片段着色器中R分量值、(Xn,Yn)G代表片段着色器中G分量值、(Xn,Yn)B代表片段着色器中B分量值以及(Xn,Yn)A代表片段着色器中A分量值。需要说明的是,若目标像素点为目标区域外的像素点,则其RGBA=0000。
进一步的,如图中所示的范围内的其他四个像素点的坐标分别为:(Xn-1,Yn)、(Xn+1,Yn)、(Xn,Yn-1)以及(Xn,Yn+1);那么,位于范围内的像素点的R分量的平均值可以为:(Xn,Yn)R=((Xn-1,Yn)R+(Xn+1,Yn)R+(Xn,Yn)R+(Xn,Yn-1)R+(Xn,Yn+1)R)/5;位于范围内的像素点的G分量的平均值可以为:(Xn,Yn)G=((Xn-1,Yn)G+(Xn+1,Yn)G+(Xn,Yn)G+(Xn,Yn-1)G+(Xn,Yn+1)G)/5。从上式中可以看出,目标像素点的R分量可以为范围内5个像素点的R分量的平均值;目标像素点的G分量可以为范围内5个像素点的G分量的平均值。
需要说明的是,本发明实施例中仅对范围内的各个像素点的R分量以及G分量求均值,并未对各个像素点的B分量以及A分量求均值,是由于范围内各个像素点的B分量以及A分量始终为0,对其进行计算,结果仍为0,故本发明实施例中并未对各个像素点的B分量以及A分量求均值。这样设置的好处在于,既可以减少计算目标像素点的R分量以及G分量的计算量,也不影响计算精度。
进一步的,在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点。例如,(Xn’,Yn’)RGBA=(Xn’+(Xn,Yn)R,Yn’+(Xn,Yn)G)RGBA,其中,Xn’以及Yn’代表纹理的顶点位置,(Xn’,Yn’)RGBA代表纹理顶点处的像素值,(Xn’+(Xn,Yn)R以及Yn’+(Xn,Yn)G)RGBA代表叠加变形量后的像素值。
本实施例中,使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理,可以有效地消除局部变形引起的边缘效应的问题,不会引起图像失真。
S1044、使用变形之后的顶点绘制网格,以显示对目标区域的变形。
在具体实现中,获得到变形之后的顶点之后,可以重新根据变形之后的顶点绘制网格,从而显示目标区域的变形。
本实施例中,获取图像数据,在图像数据中确定目标区域,并根据预设的曲线对目标区域中的像素点进行映射,从而获得像素点在映射时的移动距离;将移动距离作为纹理渲染图像数据,显示目标区域的变形,解决了现有的图像数据变形方法对图像数据的局部变形效果较差且灵活度较低的问题,可以实现对图像数据中任一局部区域的变形;同时,无需预先确定图像数据变形的映射表,提升了图像数据变形的灵活度;并且可以在对图像数据进行渲染的同时实现图像数据的变形,避免了在渲染之后再次进行变形操作,将两个操作合二为一,可以加快变形的速度,从而适用在直播这些实时性要求比较强的场景。
实施例二
图7为本发明实施例二提供的一种直播方法的流程图,本实施例可适用于直播场景中,在人脸数据中确定目标区域,并对目标区域进行变形的情况,该方法可以由直播装置来执行,该装置可以由软件和/或硬件实现,可配置在电子设备中,例如,手机、平板、PDA(personal digital assistant,个人数字助理)、智能穿戴设备(如智能眼镜、智能手表)等移动终端,也可以包括智能电视、个人电脑等非移动终端,这些电子设备包括CPU、GPU等处理器,以及配置有用于渲染2D矢量图形的API或渲染引擎,如OpenGL、OpenGL ES等等,该方法具体包括如下步骤:
S701、采集视频数据,视频数据中的图像数据具有主播用户的人脸数据。
若应用于移动终端、可穿戴设备等用户端的计算机设备,则可以在该计算机设备中安装具备直播、图像处理功能的应用,如独立的直播应用、即时通讯工具、短视频应用,等等。
对于这些应用,可以调用计算机设备的摄像头、麦克风,采集视频数据、音频数据,从而合成直播视频数据。
若应用于服务器、工作站等直播平台端的计算机设备中,可以接收终端中具备直播功能的应用发送的直播视频数据。
在具体实现中,直播视频数据中具有多帧图像数据,图像数据中具有主播用户的原始人脸数据。
S702、当接收到美颜操作时,在人脸数据中确定目标区域。
其中,美颜操作可以放大眼睛、缩小脸部或者去除额头上的痘印等等,本发明实施例中对其不加以限制。一般情况下,在具有直播功能的应用的用户界面(User Interface,UI)上,提供美颜操作的相关控件,主播用户可以操作该控件,从而触发针对原始人脸数据的美颜操作。
在具体实现中,当直播应用接收到主播用户的美颜操作时,直播应用可以将主播用户的美颜操作上传至服务器,服务器响应于主播用户的美颜操作,对人脸数据进行处理,无需直播应用进行美颜处理,加快了处理速度的同时,可以降低直播应用的开发成本。
在本发明实施例的一个示例中,当接收到美颜操作时,确定美颜操作所处理的五官;在人脸数据的五官中确定一像素点,作为关键像素点;以关键像素点为中心,生成覆盖五官的、且形状为椭圆形的目标区域。
在具体实现中,当直播应用接收到主播用户的美颜操作时,可以先确定美颜操作所处理的五官,具体的,可以对人脸数据进行人脸检测,其中,人脸检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸数据,定位出人脸面部的五官位置,包括眉毛、眼睛、鼻子、嘴巴、耳朵以及脸部轮廓等等。
人脸检测通常使用如下方法:
1、利用人工提取特征,如haar特征,使用特征训练分类器,使用分类器进行人脸检测。
2、从通用的目标检测算法中继承人脸检测,例如,利用Faster R-CNN来检测人脸。
3、使用级联结构的卷积神经网络,例如,Cascade CNN,MTCNN。
在具体实现中,这些实现人脸检测的方法可以集成在直播应用的模块中,应用可直接调用该模块检测图像数据中的人脸关键点,这些实现人脸检测的方法也可以集成在SDK,该SDK作为直播应用的组装数据,直播应用可请求SDK对图像数据进行人脸检测,SDK检测到图像数据中的人脸关键点,并将人脸关键点返回直播应用。
对于直播等,实时性要求较高,可以检测较为稀疏的人脸关键点,如68、81、106个,定位人脸上比较明显且重要的特征点(如眼睛关键点、眉毛关键点、鼻子关键点、嘴巴关键点、轮廓关键点等),以降低处理量、减少处理时间。
例如,直播应用采集的视频数据中,包含了如图8A所示的图像数据,其中具有主播用户,若对该图像数据进行人脸检测,可以输出如图8B的68个人脸关键点,也可以输出如图8C所示的106个人脸关键点。
进一步的,在上述检测到的多个人脸关键点中,确定一点作为关键像素点,例如,可以确定眼睛中心点或者嘴巴中心点作为关键像素点,本发明实施例对此不加以限制。
进一步的,若确定眼睛中心点为关键像素点,则可以以眼睛中心点为中心,生成一个可以覆盖眼睛的、且形状为如图2所示的椭圆形的目标区域。需要说明的是,目标区域的形状也可以为圆形,本发明实施例中对此不加以限制。S703、根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离。
具体实现中,预设的曲线是根据主播用户的美颜操作所设定的。若主播用户的美颜操作是放大眼睛,则预设的曲线可以为对眼睛进行放大的曲线;若主播用户的美颜操作是缩小额头,则预设的曲线可以为对额头进行缩小的曲线。进一步的,根据用户的美颜操作,对目标区域中的像素点进行映射,从而完成美颜操作。
在本发明实施例的一个实施例中,S603可以包括如下步骤:
S7031、在图像数据中查找位于目标区域中的像素点。
在具体实现中,若目标区域的形状为椭圆形,则查询目标区域中、中点的X坐标和Y坐标、图像数据中各个像素点的X坐标和Y坐标;若第一比值与第二比值之间的和值小于1,则确定像素点位于目标区域中;其中,第一比值表示第一数值的平方与目标区域中长轴的平方之间的比值,第一数值为中点的X坐标与像素点的X坐标之间的差值;第二比值表示第二数值的平方与目标区域中短轴的平方之间的比值,第二数值为中点的Y坐标与像素点的Y坐标之间的差值。
S7032、在X轴和/或Y轴的方向上,确定图像数据中的基准线。
S7033、在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离。
S7034、确定预设的曲线。
其中,预设的曲线包括第一曲线、第二曲线或者第三曲线。
S7035、以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离。
在具体实现中,以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离,可以包括:以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
S7036、计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离。
S704、在播放视频数据时,以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形。
在具体实现中,S704可以包括如下步骤:
S7041、在渲染图像数据时,将图像数据切分为网格,网格具有顶点。
S7042、对目标像素点的纹理设置为目标像素点移动的距离,其中,目标像素点为位于顶点的像素点。
其中,纹理包括R分量、G分量、B分量、A分量。在具体实现中,对目标像素点的纹理设置为目标像素点移动的距离,可以包括:对目标像素点的R分量设置为目标像素点在X轴的方向上移动的距离;对目标像素点的G分量设置为目标像素点在Y轴的方向上移动的距离;对目标像素点的B分量设置为0;对目标像素点的A分量设置为0。
S7043、在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点。
在具体实现中,在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点,可以包括:在目标像素点的X坐标基础上添加目标像素点的R分量,获得变形之后的顶点的X坐标;在目标像素点的Y坐标基础上添加目标像素点的G分量,获得变形之后的顶点的Y坐标。
在本发明的另一个实施例中,在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点之后,还可以包括:基于目标像素点确定一范围;使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理。
进一步的,使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理,可以包括:计算位于范围内的像素点的R分量的平均值,作为目标像素点的R分量;计算位于范围内的像素点的G分量的平均值,作为目标像素点的G分量。
S7044、使用变形之后的顶点绘制网格,以获得对目标区域变形的目标图像数据。
S705、在主播用户设置的直播间中发布已显示对目标区域的变形的视频数据。
直播应用将调整主播用户之后的图像数据打包为流式的视频数据,并将视频数据发送至直播平台(直播服务器),直播平台(直播服务器)公开该直播间,使得观众用户可以在客户端中打开直播间,接收该视频数据并进行播放,此时,观众用户可观看修整皮肤之后的主播用户。
在本实施例中,直播应用采集包括主播用户的人脸数据的视频数据,当接收到主播用户的美颜操作时,在人脸数据中确定目标区域,并根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;在播放视频数据时,以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形;可以在主播用户设置的直播间中发布对目标区域变形的视频数据,解决了现有的人脸数据变形方法对人脸数据的局部变形效果较差且灵活度较低的问题,实现了对人脸数据的任一区域的局部变形,无需加载人脸变形数据表,提升了人脸变形的灵活度并且对图像数据中的每个网格顶点都纹理渲染,可以解决图像数据局部变形过大,导致图像失真的问题;在直播的场景中,主播用户可以凭个人喜好选择变形区域(例如,眼睛或者鼻子等),进一步提升了直播场景的灵活度。
实施例三
图9为本发明实施例三提供的一种图像数据的变形装置的结构示意图,该装置可以执行本发明实施例中任一实施例中涉及到的图像数据的变形方法,该装置具体可以包括如下模块:
图像数据获取模块901,用于获取图像数据;
目标区域确定模块902,用于在图像数据中确定目标区域;
距离获取模块903,用于根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;
变形显示模块904,用于以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形。
在本发明的一个实施例中,目标区域确定模块902,还具体用于在图像数据中确定一像素点,作为关键像素点;以关键像素点为中心,生成形状为椭圆形的目标区域。
在本发明的一个实施例中,距离获取模块903包括:
像素点查找子模块,用于在图像数据中查找位于目标区域中的像素点;
基准线确定子模块,用于在X轴和/或Y轴的方向上,确定图像数据中的基准线;
原始距离确定子模块,用于在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离;
预设曲线确定子模块,用于确定预设的曲线;
目标距离确定子模块,用于以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离;
差值计算子模块,用于计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离。
在本发明的一个实施例中,像素点查找子模块,还具体用于若目标区域的形状为椭圆形,则查询目标区域中、中点的X坐标和Y坐标、图像数据中各个像素点的X坐标和Y坐标;若第一比值与第二比值之间的和值小于1,则确定像素点位于目标区域中;其中,第一比值表示第一数值的平方与目标区域中长轴的平方之间的比值,第一数值为中点的X坐标与像素点的X坐标之间的差值;第二比值表示第二数值的平方与目标区域中短轴的平方之间的比值,第二数值为中点的Y坐标与像素点的Y坐标之间的差值。
在本发明的一个实施例中,曲线包括第一曲线、第二曲线或者第三曲线;目标距离确定子模块,还具体用于以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
在本发明的一个实施例中,变形显示模块904包括:
图像数据切分子模块,用于在渲染图像数据时,将图像数据切分为网格,网格具有顶点;
纹理设置子模块,用于对目标像素点的纹理设置为目标像素点移动的距离,其中,目标像素点为位于顶点的像素点;
变形之后的顶点获取子模块,用于在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点;
目标区域的变形显示子模块,用于使用变形之后的顶点绘制网格,以显示对目标区域的变形。
在本发明的一个实施例中,纹理包括R分量、G分量、B分量、A分量,纹理设置子模块,还具体用于对目标像素点的R分量设置为目标像素点在X轴的方向上移动的距离;对目标像素点的G分量设置为目标像素点在Y轴的方向上移动的距离;对目标像素点的B分量设置为0;对目标像素点的A分量设置为0。
在本发明的一个实施例中,变形之后的顶点获取子模块包括:
X坐标获取单元,用于在目标像素点的X坐标基础上添加目标像素点的R分量,获得变形之后的顶点的X坐标;
Y坐标获取单元,用于在目标像素点的Y坐标基础上添加目标像素点的G分量,获得变形之后的顶点的Y坐标。
在本发明的一个实施例中,变形显示模块904还包括:
范围确定子模块,用于确定一包含目标像素点的范围;
模糊处理子模块,用于使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理。
在本发明的一个实施例中,纹理包括R分量、G分量、B分量、A分量,模糊处理子模块,还包括:
R分量计算单元,用于计算位于范围内的像素点的R分量的平均值,作为目标像素点的R分量;
G分量计算单元,用于计算位于范围内的像素点的G分量的平均值,作为目标像素点的G分量。
本发明实施例所提供的图像数据的变形装置可执行本发明任意实施例所提供的图像数据的变形方法,具备执行方法相应的功能模块和有益效果。
实施例四
图10为本发明实施例四提供的一种直播装置的结构示意图,该装置可以执行本发明实施例中任一实施例中涉及到的直播方法,该装置具体可以包括如下模块:
视频数据采集模块1001,用于采集视频数据,视频数据中的图像数据具有主播用户的人脸数据;
目标区域确定模块1002,用于当接收到美颜操作时,在人脸数据中确定目标区域;
距离获取模块1003,用于根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;
变形显示模块1004,用于在播放视频数据时,以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形;
视频数据发布模块1005,用于在主播用户设置的直播间中发布已显示对目标区域的变形的视频数据。
在本发明的一个实施例中,目标区域确定模块1002,还具体用于当接收到美颜操作时,在人脸数据中确定目标区域,可以包括:当接收到美颜操作时,确定美颜操作所处理的五官;在人脸数据的五官中确定一像素点,作为关键像素点;以关键像素点为中心,生成覆盖五官的、且形状为椭圆形的目标区域。
在本发明的一个实施例中,距离获取模块1003包括:
像素点查找子模块,用于在图像数据中查找位于目标区域中的像素点;
基准线确定子模块,用于在X轴和/或Y轴的方向上,确定图像数据中的基准线;
原始距离确定子模块,用于在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离;
预设曲线确定子模块,用于确定预设的曲线;
目标距离确定子模块,用于以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离;
差值计算子模块,用于计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离。
在本发明的一个实施例中,像素点查找子模块,还具体用于若目标区域的形状为椭圆形,则查询目标区域中、中点的X坐标和Y坐标、图像数据中各个像素点的X坐标和Y坐标;若第一比值与第二比值之间的和值小于1,则确定像素点位于目标区域中;其中,第一比值表示第一数值的平方与目标区域中长轴的平方之间的比值,第一数值为中点的X坐标与像素点的X坐标之间的差值;第二比值表示第二数值的平方与目标区域中短轴的平方之间的比值,第二数值为中点的Y坐标与像素点的Y坐标之间的差值。
在本发明的一个实施例中,曲线包括第一曲线、第二曲线或者第三曲线;目标距离确定子模块,还具体用于以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
在本发明的一个实施例中,变形显示模块904包括:
图像数据切分子模块,用于在渲染图像数据时,将图像数据切分为网格,网格具有顶点;
纹理设置子模块,用于对目标像素点的纹理设置为目标像素点移动的距离,其中,目标像素点为位于顶点的像素点;
变形之后的顶点获取子模块,用于在目标像素点的坐标基础上添加目标像素点的纹理,获得变形之后的顶点;
目标区域的变形显示子模块,用于使用变形之后的顶点绘制网格,以显示对目标区域的变形。
在本发明的一个实施例中,纹理包括R分量、G分量、B分量、A分量,纹理设置子模块,还具体用于对目标像素点的R分量设置为目标像素点在X轴的方向上移动的距离;对目标像素点的G分量设置为目标像素点在Y轴的方向上移动的距离;对目标像素点的B分量设置为0;对目标像素点的A分量设置为0。
在本发明的一个实施例中,变形之后的顶点获取子模块包括:
X坐标获取单元,用于在目标像素点的X坐标基础上添加目标像素点的R分量,获得变形之后的顶点的X坐标;
Y坐标获取单元,用于在目标像素点的Y坐标基础上添加目标像素点的G分量,获得变形之后的顶点的Y坐标。
在本发明的一个实施例中,变形显示模块904还包括:
范围确定子模块,用于确定一包含目标像素点的范围;
模糊处理子模块,用于使用位于范围内的像素点的纹理,对目标像素点的纹理进行模糊处理。
在本发明的一个实施例中,纹理包括R分量、G分量、B分量、A分量,模糊处理子模块,还包括:
R分量计算单元,用于计算位于范围内的像素点的R分量的平均值,作为目标像素点的R分量;
G分量计算单元,用于计算位于范围内的像素点的G分量的平均值,作为目标像素点的G分量。
本发明实施例所提供的直播装置可执行本发明任意实施例所提供的直播方法,具备执行方法相应的功能模块和有益效果。
实施例五
图11为本发明实施例五提供的一种电子设备的结构示意图。如图11所示,该电子设备包括处理器1100、存储器1101、通信模块1102、输入装置1103和输出装置1104;电子设备中处理器1100的数量可以是一个或多个,图11中以一个处理器1100为例;电子设备中的处理器1100、存储器1101、通信模块1102、输入装置1103和输出装置1104可以通过总线或其他方式连接,图11中以通过总线连接为例。
存储器1101作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例中的图像数据的变形方法对应的模块(例如,如图9所示的图像数据的变形装置中的图像数据获取模块901、目标区域确定模块902、距离获取模块903和变形显示模块904),或者,如本实施例中的直播方法对应的模块(例如,如图10所示的直播装置中的视频数据采集模块1001、目标区域确定模块1002、距离获取模块1003、变形显示模块1004和视频数据发布模块1005)。处理器1100通过运行存储在存储器1101中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的图像数据的变形方法或者直播方法。
存储器1101可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器1101可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器1101可进一步包括相对于处理器1100远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信模块1102,用于与显示屏建立连接,并实现与显示屏的数据交互。输入装置1103可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。
本实施例提供的电子设备,可执行本发明任一实施例提供的图像数据的变形方法或者直播方法,具体相应的功能和有益效果。
实施例六
本发明实施例六还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现一种图像数据的变形方法或直播方法。
其中,该图像数据的变形的方法包括:
获取图像数据;
在图像数据中确定目标区域;
根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;
以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形。
此外,该直播方法包括:
采集视频数据,视频数据中的图像数据具有主播用户的人脸数据;
当接收到美颜操作时,在人脸数据中确定目标区域;
根据预设的曲线对目标区域中的像素点进行映射,以获得像素点在映射时移动的距离;
在播放视频数据时,以移动的距离作为纹理渲染图像数据,以显示对目标区域的变形;
在主播用户设置的直播间中发布已显示对目标区域的变形的视频数据。
当然,本发明实施例所提供的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的图像数据的变形方法或者直播方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述图像数据的变形装置或者直播装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种图像数据的变形方法,其特征在于,包括:
获取图像数据;
在所述图像数据中确定目标区域;
根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
所述在所述图像数据中确定目标区域,包括:
在所述图像数据中确定一像素点,作为关键像素点;
以所述关键像素点为中心,生成形状为椭圆形的目标区域;
所述根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离,包括:
在所述图像数据中查找位于所述目标区域中的像素点;
在X轴和/或Y轴的方向上,确定所述图像数据中的基准线;
在X轴和/或Y轴的方向上,计算所述像素点与所述基准线之间的距离,作为原始距离;
确定预设的曲线;
以所述原始距离作为所述曲线的X坐标、在所述曲线中映射至Y坐标,作为目标距离;
计算所述目标距离与所述原始距离之间的差值,作为所述像素点在X轴和/或Y轴的方向上移动的距离;
所述曲线包括第一曲线、第二曲线或者第三曲线;
所述以所述原始距离作为所述曲线的X坐标、在所述曲线中映射至Y坐标,作为目标距离,包括:
以所述原始距离作为所述第一曲线的X坐标、在所述第一曲线中映射至Y坐标,作为目标距离,以使所述目标距离小于所述原始距离;
或者,
以所述原始距离作为所述第二曲线的X坐标、在所述第二曲线中映射至Y坐标,作为目标距离,以使所述目标距离等于所述原始距离;
或者,
以所述原始距离作为所述第三曲线的X坐标、在所述第三曲线中映射至Y坐标,作为目标距离,以使所述目标距离大于所述原始距离。
2.根据权利要求1所述的方法,其特征在于,所述在所述图像数据中查找位于所述目标区域中的像素点,包括:
若所述目标区域的形状为椭圆形,则查询所述目标区域中、中点的X坐标和Y坐标、所述图像数据中各个像素点的X坐标和Y坐标;
若第一比值与第二比值之间的和值小于1,则确定所述像素点位于所述目标区域中;
其中,所述第一比值表示第一数值的平方与所述目标区域中长轴的平方之间的比值,所述第一数值为所述中点的X坐标与所述像素点的X坐标之间的差值;
所述第二比值表示第二数值的平方与所述目标区域中短轴的平方之间的比值,所述第二数值为所述中点的Y坐标与所述像素点的Y坐标之间的差值。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形,包括:
在渲染所述图像数据时,将所述图像数据切分为网格,所述网格具有顶点;
对目标像素点的纹理设置为所述目标像素点移动的距离,其中,所述目标像素点为位于所述顶点的像素点;
在所述目标像素点的坐标基础上添加所述目标像素点的纹理,获得变形之后的顶点;
使用所述变形之后的顶点绘制所述网格,以显示对所述目标区域的变形。
4.根据权利要求3所述的方法,其特征在于,所述纹理包括R分量、G分量、B分量、A分量,所述对目标像素点的纹理设置为所述目标像素点移动的距离,包括:
对目标像素点的R分量设置为所述目标像素点在X轴的方向上移动的距离;
对所述目标像素点的G分量设置为所述目标像素点在Y轴的方向上移动的距离;
对所述目标像素点的B分量设置为0;
对所述目标像素点的A分量设置为0。
5.根据权利要求4所述的方法,其特征在于,所述在所述目标像素点的坐标基础上添加所述目标像素点的纹理,获得变形之后的顶点,包括:
在所述目标像素点的X坐标基础上添加所述目标像素点的R分量,获得变形之后的顶点的X坐标;
在所述目标像素点的Y坐标基础上添加所述目标像素点的G分量,获得变形之后的顶点的Y坐标。
6.根据权利要求3所述的方法,其特征在于,在所述目标像素点的坐标基础上添加所述目标像素点的纹理,获得变形之后的顶点之后,还包括:
确定一包含所述目标像素点的范围;
使用位于所述范围内的像素点的纹理,对所述目标像素点的纹理进行模糊处理。
7.根据权利要求6所述的方法,其特征在于,所述纹理包括R分量、G分量、B分量、A分量,所述使用位于所述范围内的像素点的纹理,对所述目标像素点的纹理进行模糊处理,包括:
计算位于所述范围内的像素点的R分量的平均值,作为所述目标像素点的R分量;
计算位于所述范围内的像素点的G分量的平均值,作为所述目标像素点的G分量。
8.一种直播方法,其特征在于,包括:
采集视频数据,所述视频数据中的图像数据具有主播用户的人脸数据;
当接收到美颜操作时,在所述人脸数据中确定目标区域;
根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
在播放所述视频数据时,以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
在所述主播用户设置的直播间中发布已显示对所述目标区域的变形的视频数据;
所述当接收到美颜操作时,在所述人脸数据中确定目标区域,包括:
当接收到美颜操作时,确定美颜操作所处理的五官,在人脸数据的五官中确定一像素点,作为关键像素点,以关键像素点为中心,生成覆盖五官的、且形状为椭圆形的目标区域;
所述根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离,包括:
在所述图像数据中查找位于所述目标区域中的像素点;
在X轴和/或Y轴的方向上,确定所述图像数据中的基准线;
在X轴和/或Y轴的方向上,计算所述像素点与所述基准线之间的距离,作为原始距离;
确定预设的曲线;
以所述原始距离作为所述曲线的X坐标、在所述曲线中映射至Y坐标,作为目标距离;
计算所述目标距离与所述原始距离之间的差值,作为所述像素点在X轴和/或Y轴的方向上移动的距离;
所述曲线包括第一曲线、第二曲线或者第三曲线;
所述以所述原始距离作为所述曲线的X坐标、在所述曲线中映射至Y坐标,作为目标距离,包括:
以所述原始距离作为所述第一曲线的X坐标、在所述第一曲线中映射至Y坐标,作为目标距离,以使所述目标距离小于所述原始距离;
或者,
以所述原始距离作为所述第二曲线的X坐标、在所述第二曲线中映射至Y坐标,作为目标距离,以使所述目标距离等于所述原始距离;
或者,
以所述原始距离作为所述第三曲线的X坐标、在所述第三曲线中映射至Y坐标,作为目标距离,以使所述目标距离大于所述原始距离。
9.一种图像数据的变形装置,其特征在于,包括:
图像数据获取模块,用于获取图像数据;
目标区域确定模块,用于在所述图像数据中确定目标区域;
所述目标区域确定模块,还具体用于在图像数据中确定一像素点,作为关键像素点,以关键像素点为中心,生成形状为椭圆形的目标区域;
距离获取模块,用于根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
变形显示模块,用于以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
所述距离获取模块包括:
像素点查找子模块,用于在图像数据中查找位于目标区域中的像素点;
基准线确定子模块,用于在X轴和/或Y轴的方向上,确定图像数据中的基准线;
原始距离确定子模块,用于在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离;
预设曲线确定子模块,用于确定预设的曲线;
目标距离确定子模块,用于以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离;
差值计算子模块,用于计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离;
所述曲线包括第一曲线、第二曲线或者第三曲线;
目标距离确定子模块,还具体用于以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;
或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;
或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
10.一种直播装置,其特征在于,包括:
视频数据采集模块,用于采集视频数据,所述视频数据中的图像数据具有主播用户的人脸数据;
目标区域确定模块,用于当接收到美颜操作时,在所述人脸数据中确定目标区域;
所述目标区域确定模块,还具体用于当接收到美颜操作时,确定美颜操作所处理的五官,在人脸数据的五官中确定一像素点,作为关键像素点,以关键像素点为中心,生成覆盖五官的、且形状为椭圆形的目标区域;
距离获取模块,用于根据预设的曲线对所述目标区域中的像素点进行映射,以获得所述像素点在映射时移动的距离;
变形显示模块,用于在播放所述视频数据时,以所述移动的距离作为纹理渲染所述图像数据,以显示对所述目标区域的变形;
视频数据发布模块,用于在所述主播用户设置的直播间中发布已显示对所述目标区域的变形的视频数据;
所述距离获取模块包括:
像素点查找子模块,用于在图像数据中查找位于目标区域中的像素点;
基准线确定子模块,用于在X轴和/或Y轴的方向上,确定图像数据中的基准线;
原始距离确定子模块,用于在X轴和/或Y轴的方向上,计算像素点与基准线之间的距离,作为原始距离;
预设曲线确定子模块,用于确定预设的曲线;
目标距离确定子模块,用于以原始距离作为曲线的X坐标、在曲线中映射至Y坐标,作为目标距离;
差值计算子模块,用于计算目标距离与原始距离之间的差值,作为像素点在X轴和/或Y轴的方向上移动的距离;
所述曲线包括第一曲线、第二曲线或者第三曲线;
目标距离确定子模块,还具体用于以原始距离作为第一曲线的X坐标、在第一曲线中映射至Y坐标,作为目标距离,以使目标距离小于原始距离;
或者,以原始距离作为第二曲线的X坐标、在第二曲线中映射至Y坐标,作为目标距离,以使目标距离等于原始距离;
或者,以原始距离作为第三曲线的X坐标、在第三曲线中映射至Y坐标,作为目标距离,以使目标距离大于原始距离。
11.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的图像数据的变形方法,或者如权利要求8所述的直播方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-7中任一所述的图像数据的变形方法,或者如权利要求8所述的直播方法。
CN202010238242.XA 2020-03-30 2020-03-30 图像数据的变形、直播方法、装置、电子设备和存储介质 Active CN111462205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010238242.XA CN111462205B (zh) 2020-03-30 2020-03-30 图像数据的变形、直播方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010238242.XA CN111462205B (zh) 2020-03-30 2020-03-30 图像数据的变形、直播方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111462205A CN111462205A (zh) 2020-07-28
CN111462205B true CN111462205B (zh) 2024-03-08

Family

ID=71683435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010238242.XA Active CN111462205B (zh) 2020-03-30 2020-03-30 图像数据的变形、直播方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN111462205B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111667563B (zh) * 2020-06-19 2023-04-07 抖音视界有限公司 图像处理方法、装置、设备和存储介质
CN112149647B (zh) * 2020-11-24 2021-02-26 北京蜜莱坞网络科技有限公司 图像处理方法、装置、设备及存储介质
WO2023070387A1 (zh) * 2021-10-27 2023-05-04 深圳市大疆创新科技有限公司 一种图像处理方法、装置、拍摄设备及可移动平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018076622A1 (zh) * 2016-10-28 2018-05-03 中兴通讯股份有限公司 图像处理方法、装置及终端
CN109859097A (zh) * 2019-01-08 2019-06-07 北京奇艺世纪科技有限公司 脸部图像处理方法、设备、图像处理设备、介质
CN110910308A (zh) * 2019-12-03 2020-03-24 广州虎牙科技有限公司 图像处理方法、装置、设备和介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018076622A1 (zh) * 2016-10-28 2018-05-03 中兴通讯股份有限公司 图像处理方法、装置及终端
CN109859097A (zh) * 2019-01-08 2019-06-07 北京奇艺世纪科技有限公司 脸部图像处理方法、设备、图像处理设备、介质
CN110910308A (zh) * 2019-12-03 2020-03-24 广州虎牙科技有限公司 图像处理方法、装置、设备和介质

Also Published As

Publication number Publication date
CN111462205A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
CN111105491B (zh) 场景渲染方法、装置、计算机可读存储介质和计算机设备
CN111462205B (zh) 图像数据的变形、直播方法、装置、电子设备和存储介质
CN111652791B (zh) 人脸的替换显示、直播方法、装置、电子设备和存储介质
US10311548B2 (en) Scaling render targets to a higher rendering resolution to display higher quality video frames
WO2021164150A1 (zh) 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备
CN107154063B (zh) 图像展示区域的形状设置方法及装置
CN111161392B (zh) 一种视频的生成方法、装置及计算机系统
JP3626144B2 (ja) 立体オブジェクトデータからの漫画的表現の2次元画像の生成方法および生成プログラム
WO2023036160A1 (zh) 视频处理方法、装置、计算机可读存储介质及计算机设备
US20230230311A1 (en) Rendering Method and Apparatus, and Device
WO2023066121A1 (zh) 三维模型的渲染
TW201828255A (zh) 用於產生光強度影像之裝置與方法
WO2023030177A1 (zh) 视频处理方法、装置、计算机可读存储介质及计算机设备
CN111652794B (zh) 一种面部的调整、直播方法、装置、电子设备和存储介质
CN109544671B (zh) 一种基于屏幕空间的视频在三维场景中投影映射方法
CN111652022B (zh) 图像数据的显示、直播方法、装置、电子设备和存储介质
CN111652795A (zh) 脸型的调整、直播方法、装置、电子设备和存储介质
CN111652024B (zh) 一种人脸的显示、直播方法、装置、电子设备和存储介质
CN111651033B (zh) 一种人脸的驱动显示方法、装置、电子设备和存储介质
CN111652025B (zh) 一种人脸的处理、直播方法、装置、电子设备和存储介质
CN107730577B (zh) 一种勾线渲染方法、装置、设备及介质
CN111652807B (zh) 眼部的调整、直播方法、装置、电子设备和存储介质
CN112528707A (zh) 图像处理方法、装置、设备及存储介质
CN111652978B (zh) 一种网格的生成方法、装置、电子设备和存储介质
JP2019149112A (ja) 合成装置、方法及びプログラム

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
GR01 Patent grant
GR01 Patent grant