CN111652807B - 眼部的调整、直播方法、装置、电子设备和存储介质 - Google Patents

眼部的调整、直播方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN111652807B
CN111652807B CN201910604807.9A CN201910604807A CN111652807B CN 111652807 B CN111652807 B CN 111652807B CN 201910604807 A CN201910604807 A CN 201910604807A CN 111652807 B CN111652807 B CN 111652807B
Authority
CN
China
Prior art keywords
eye
key points
points
keypoints
reference point
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
CN201910604807.9A
Other languages
English (en)
Other versions
CN111652807A (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 CN201910604807.9A priority Critical patent/CN111652807B/zh
Publication of CN111652807A publication Critical patent/CN111652807A/zh
Application granted granted Critical
Publication of CN111652807B publication Critical patent/CN111652807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • G06T5/77
    • G06T5/80
    • 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
    • G06V40/165Detection; Localisation; Normalisation using facial parts and geometric relationships
    • 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/18Eye characteristics, e.g. of the iris
    • G06V40/19Sensors therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face

Abstract

本发明实施例公开了一种眼部的调整、直播方法、装置、电子设备和存储介质。该眼部的调整方法包括:获取图像数据,图像数据中具有人脸数据;将图像数据划分为多个网格,网格的顶点至少包括人脸数据的人脸关键点,人脸关键点包括眼部的眼部关键点;接收作用于眼部的调整操作;响应于调整操作,调整眼部关键点所处的网格,以调整眼部;绘制调整之后的网格,以显示调整眼部之后的图像数据。使得在对人脸关键点进行调整时,可连同调整网格,网格内的像素点的调整较为均匀,使得人脸的调整更加平滑,减少变形的情况,避免人脸失真。

Description

眼部的调整、直播方法、装置、电子设备和存储介质
技术领域
本发明实施例涉及图像处理的技术,尤其涉及一种眼部的调整、直播方法、装置、电子设备和存 储介质。
背景技术
随着社会的发展,诸如手机、平板电脑等电子设备已经广泛应用在学习、娱乐、工作等方面,扮 演着越来越重要的角色。
在很多电子设备中配置有摄像头,可用于拍照、录像、直播等操作。
对于含有人物的图像数据,用户经常会对该图像数据进行人脸关键点,直接对人脸关键点进行平 移、拉伸、缩放等调整,从而实现各种美颜效果,如调整眼睛大小、调整脸部大小等。
直接对人脸关键点进行平移、拉伸、缩放等调整,也会对位于该人脸关键点周围的人脸数据进行 平移、拉伸、缩放等调整,但是,这些人脸数据调整较为粗糙,部分可能调整较大、部分可能调整较 小,容易出现变形,导致人脸失真。
发明内容
本发明实施例提供一种眼部的调整、直播方法、装置、电子设备和存储介质,以解决调整人脸关 键点容易导致人脸失真的问题。
第一方面,本发明实施例提供了一种眼部的调整方法,该方法包括:
获取图像数据,所述图像数据中具有人脸数据;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的人脸关键点,所述人 脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据。
进一步的,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键点、眼睛的眼睛关 键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处 的网格。
进一步的,所述基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中,包括:
针对一侧的所述眼睛关键点,从所述眼睛关键点中选取两个参考关键点,两个所述参考关键点的 连线过所述眼睛的瞳孔;
将两个所述参考关键点的中点,确定为一侧的参考点。
进一步的,所述对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述 眉毛关键点所处的网格,包括:
确定所述第一操作设置的旋转方向;
对左侧的所述眉毛关键点以左侧的所述参考点为目标,按照所述旋转方向进行旋转;
对右侧的所述眉毛关键点以右侧的所述参考点为目标,按照所述旋转方向的反方向进行旋转。
进一步的,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格。
进一步的,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格。
进一步的,所述分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关 键点所处的网格,包括:
确定所述第三操作设置的调整方向和调整距离;
对左侧的所述眼睛关键点以左侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离;
对右侧的所述眼睛关键点以右侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离。
进一步的,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点;
以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
进一步的,所述将所述图像数据划分为多个网格,包括:
识别所述人脸数据中的人脸关键点;
确定位置相邻的人脸关键点,作为第一目标关键点;
在所述图像数据中以所述第一目标关键点作为顶点、连接所述第一目标关键点,获得网格。
进一步的,所述将所述图像数据划分为多个网格,还包括:
确定位于所述图像数据边缘上的点,作为边缘点;
确定与所述边缘点位置相邻的人脸关键点,作为第二目标关键点;
在所述图像数据中以所述边缘点、所述第二目标关键点作为顶点、连接所述边缘点与所述第二目 标关键点,获得网格。
第二方面,本发明实施例还提供了一种直播方法,该方法包括:
采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主播用户;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的人脸关键点,所述人 脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据;
在一直播间发布调整眼部之后的视频数据。
第三方面,本发明实施例还提供了一种眼部的调整装置,该装置包括:
图像数据获取模块,用于获取图像数据,所述图像数据中具有人脸数据;
网格划分模块,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的 人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块,用于接收作用于所述眼部的调整操作;
调整操作响应模块,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼 部;
网格绘制模块,用于绘制调整之后的网格,以显示调整眼部之后的图像数据。
第四方面,本发明实施例还提供了一种直播装置,该装置包括:
视频数据采集模块,用于采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主 播用户;
网格划分模块,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的 人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块,用于接收作用于所述眼部的调整操作;
调整操作响应模块,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼 部;
网格绘制模块,用于绘制调整之后的网格,以显示调整眼部之后的图像数据;
视频发布模块,用于在一直播间发布调整眼部之后的视频数据。
第五方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方 面所述的眼部的调整方法或如第二方面所述的直播方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被 处理器执行时实现第一方面所述的眼部的调整方法或如第二方面所述的直播方法。
在本发明实施例中,图像数据中具有人脸数据,将图像数据划分为多个网格,调整眼部关键点所 处的网格,以调整眼部,绘制该网格,从而显示调整眼部之后的图像数据,一方面,在对人脸关键点 进行调整时,可连同调整网格,网格内的像素点的调整较为均匀,使得人脸的调整更加平滑,减少变形的情况,避免人脸失真,另一方面,网格可同时用于人脸调整、渲染操作,复用划分网格的操作, 可降低运算量,并且,网格的绘制及其调整相比于神经网络等深度学习更为简单,可提高处理速度、 降低处理时间,降低显示时的延时,适用于直播等对实时性要求较高的场景。
附图说明
图1为本发明实施例一提供的一种眼部的调整方法的流程图;
图2A至图2D为本发明实施例提供的一种人脸关键点的示例图;
图3A至图3C为本发明实施例提供的一种网格顺序的示例图;
图4为本发明实施例提供的一种相邻人脸关键点的示例图;
图5A至图5B为本发明实施例提供的一种维诺图的示例图;
图6A至图6B为本发明实施例提供的一种网格的示例图;
图7是本发明实施例提供的一种调整人脸的操作的示例图;
图8A至图8H是本发明实施例提供的一种调整人脸的效果示意图。
图9为本发明实施例二提供的一种直播方法的流程图;
图10为本发明实施例三提供的一种眼部的调整装置的结构示意图;
图11为本发明实施例四提供的一种直播装置的结构示意图;
图12为本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例 仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了 与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种眼部的调整方法的流程图,本实施例可适用于基于人脸关键点 构建网格、调整人脸关键点中的眼部关键点、绘制网格、以显示调整眼部关键点之后的图像数据的情 况,该方法可以由眼部的调整装置来执行,该装置可以由软件和/或硬件实现,可配置在电子设备中, 可以包括手机、平板、PDA(personal digitalassistant,个人数字助理)、智能穿戴设备(如智能 眼镜、智能手表)等移动终端,也可以包括智能电视、个人电脑等非移动终端,这些电子设备包括 CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)等处理器,以及配置有用于渲染2D矢量图形的应用程序编程接口(API)或渲染引擎,该方法具体包括如 下步骤:
S110、获取图像数据,所述图像数据中具有人脸数据。
在具体实现中,电子设备的操作系统可以包括Android(安卓)、IOS、Windows等等。
在这些操作系统中支持运行可进行图像处理的应用,如直播应用、图像编辑应用、相机应用、即 时通讯工具、图库应用,等等。
诸如图像编辑应用、即时通讯工具、图库应用等应用,其UI(User Interface,用户界面)可提供 导入的控件,用户可通过触控或鼠标等外设操作该导入的控件,选择本地存储的图像数据(以缩略图 或路径表示),也可以选择网络存储的图像数据(以URL(UniformResource Locators,统一资源定位 器)表示),使得应用获取该图像数据。
诸如直播应用、图像编辑应用、相机应用、即时通讯工具等应用,其UI可提供拍照、录像的控 件,用户可通过触控或鼠标等外设操作该拍照、录像的控件,通知应用调用摄像头采集图像数据。
该人脸数据表示人脸的像素点。在本发明实施例中,应用对该图像数据进行人脸检测,识别该人 脸数据中包含的人脸关键点。
其中,人脸检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸数据,定位出人脸面 部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等等。
本实施例中,该人脸数据的人脸关键点包括眼部的眼部关键点。本实施例中的眼部指的是包括眼 睛和眉毛的区域。
人脸检测通常使用如下方法:
1、利用人工提取特征,如haar特征,使用特征训练分类器,使用分类器进行人脸检测。
2、从通用的目标检测算法中继承人脸检测,例如,利用Faster R-CNN来检测人脸。
3、使用级联结构的卷积神经网络,例如,Cascade CNN(级联卷积神经网络),MTCNN(Multi-task Cascaded Convolutional Networks,多任务卷积神经网络)。
在具体实现中,这些实现人脸检测的方法可以集成在应用的模块中,应用可直接调用该模块检测 图像数据中的人脸关键点,这些实现人脸检测的方法也可以集成在SDK(Software Development Kit,软件开发工具包),该SDK作为应用的组装数据,应用可请求SDK对图像数据进行人脸检测,SDK 检测到图像数据中的人脸关键点,并将人脸关键点返回应用。
需要说明的是,人脸关键点的数量,可以由本领域技术人员根据实际情况设置,对于静态的图像 处理,实时性要求较低,可以检测较为稠密的人脸关键点,如1000个,除了能定位人脸重要特征点 之外,还能准确的描述出五官的轮廓;对于直播等,实时性要求较高,可以检测较为稀疏的人脸关键点,如68、81、106个,定位人脸上比较明显且重要的特征点(如眼睛关键点、眉毛关键点、鼻子关 键点、嘴巴关键点、轮廓关键点等),以降低处理量、减少处理时间,等等,本发明实施例对此不加 以限制。
为使本领域技术人员更好地理解本发明实施例,在本发明实施例中,以较为稀疏的人脸关键点作 为一种示例进行说明。
例如,对图2A所示的图像数据进行人脸检测,可以输出如图2B的68个人脸关键点,也可以输 出如图2C所示的106个人脸关键点。
S120、将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的人脸关键点, 所述人脸关键点包括眼部的眼部关键点。
网格(Mesh),代表单个的可绘制实体,其顶点至少包括人脸关键点,即以人脸关键点作为网格 的至少部分顶点,将图像数据进行网格化,划分为多个(两个及两个以上)网格。
所谓网格化,是将凹多边形或有边相交的多边形划分成凸多边形,如三角形,以便被OpenGL 等API或渲染引擎渲染。
需要说明的是,网格之间是有序的,从而形成网格序列,使得符合OpenGL等API或渲染引擎 的渲染规范。
例如,对于OpenGL,一般情况下有三种绘制一系列三角形(网格):
1、GL_TRIANGLES
每三个点一组画一个三角形,三角形之间是独立的。
如图3A所示,第一个三角形使用顶点v0、v1、v2,第二个三角形使用顶点v3、v4、v5,以此 类推。
2、GL_TRIANGLE_STRIP
从第三个点开始,每点与前面的两个点组合画一个三角形,即线性连续三角形串:
如图3B所示,第一个三角形,顶点排列顺序是v0,v1,v2;第二个三角形,顶点排列顺序是v2,v1,v3; 第三个三角形,顶点排列顺序是v2,v3,v4;第四个三角形,顶点排列顺序是v4,v3,v8。
这个顺序是为了保证三角形按照相同的方向绘制的,使这个三角形的序列能够正确形成表面的一 部分。
3、GL_TRIANGLE_FAN。
从第三个点开始,每点与前一个点和第一个点组合画一个三角形,即扇形连续三角形。
如图3C所示,第一个三角形的顶点排列顺序是v2,v1,v0,第二个三角形的顶点排列顺序是 v3,v2,v0,第一个三角形的顶点排列顺序是v4,v3,v0。
在本发明的一个实施例中,S120可以包括如下步骤:
S1211、识别所述人脸数据中的人脸关键点;
S1212、确定位置相邻的人脸关键点,作为第一目标关键点。
S1213、在所述图像数据中以所述第一目标关键点作为顶点、连接所述第一目标关键点,获得网 格。
在本发明实施例中,对于位置相邻的两个人脸关键点,可作为一对第一目标关键点,依次以第一 目标关键点作为网格的顶点、连接该对第一目标关键点,则可以生成网格。
在一种检测位置相邻的方式中,可通过定义法(Intersect of Halfplanes)、增量(incremental)算 法、分治法、plane sweep算法等方式,将包含人脸关键点的图像数据转换为维诺图(Voronoi图)。
维诺图,又称泰森多边形或Dirichlet图,它包括一组由连接两邻点直线的垂直平分线组成的连 续多边形(又称单元cell)。
在维诺图中,任意两个人脸关键点p和q之间的欧氏距离,记作dist(p,q)。
设P={p1,p2,…,pn}为平面上任意n个互异的人脸关键点,这些人脸关键点也就是基点。所谓P 对应的Voronoi图,就是平面的一个子区域划分——整个平面因此被划分为n个单元,它们具有这样 的性质:
任一人脸关键q位于人脸关键pi所对应的单元中,当且仅当对于任何的pj∈Pj,j≠i,都有dist(q,pi) <dist(q,pj)。此时,将与P对应的Voronoi图记作Vor(P)。
“Vor(P)”或者“Voronoi图”所指示是组成该子区域划分的边和顶点。在Vor(P)中,与基点pi相 对应的单元记作V(pi)——称作与pi相对应的Voronoi单元。
在本发明实施例中,维诺图包括多个单元,每个单元包含一个人脸关键点,该单元具有多条边, 此时,可确定位于同一条边两侧的人脸关键点位置相邻,将位于同一条边两侧的人脸关键点连接,则 可生成网格。
例如,参见图4,将图像数据中转换为维诺图,图4显示了部分人脸关键点(黑点)和部分单元 的边(实线)。
其中,在单元400中,边401两侧的人脸关键点411与人脸关键点412相邻,可连接人脸关键点 411与人脸关键点412,同理,连接人脸关键点411与人脸关键点413,以及,连接人脸关键点413 与人脸关键点412,从而生成网格(虚线边)420。
进一步地,图2B所示的图像数据,包含68个人脸关键点,可转换为如图5A所示的维诺图,从 而确定位置相邻的人脸关键点,按照既定的顺序连接位置相邻的人脸关键点,可获得如图6A所示的 网格;图2C所示的图像数据,包含106个人脸关键点,可转换为如图5B所示的维诺图,从而确定 位置相邻的人脸关键点,按照既定的顺序连接位置相邻的人脸关键点,可获得如图6B所示的网格。
在本发明的另一个实施例中,S120可以包括如下步骤:
S1221、确定位于所述图像数据边缘上的点,作为边缘点。
S1222、确定与所述边缘点位置相邻的人脸关键点,作为第二目标关键点。
S1223、在所述图像数据中以所述边缘点、所述第二目标关键点作为顶点、连接所述边缘点与所述第二目标关键点,获得网格。
人脸关键点组成的网格一般不能完全覆盖图像数据,此时,可在图像数据边缘上选取一些点,作 为边缘点。
需要说明的是,为了方便运算,选取的边缘点对称。
例如,如图6A与图6B所示,选择图像数据的四个顶点、以及、每两个顶点之间的中点作为边 缘点。
将边缘点及其相邻的人脸关键点作为一对第二目标关键点,依次以第二目标关键点作为网格的顶 点、按照顺序连接该对第二目标关键点,则可以生成网格。
需要说明的是,边缘点与人脸关键点位置相邻的关系,可由本领域技术人员根据实际情况进行设 置,本发明实施例对此不加以限制。
一般而言,人脸关键点中的眉毛关键点、轮廓关键点与边缘点相邻,边缘点的数量少于与其位置 相邻的人脸关键点的数量。
例如,图2B所示的图像数据,包含68个人脸关键点、8个边缘点,25个人脸关键点与8个边 缘点位置相邻,按照既定的顺序连接位置相邻的人脸关键点、边缘点,可获得如图6A所示的网格; 图2C所示的图像数据,包含106个人脸关键点、8个边缘点,41个人脸关键点与8个边缘点位置相邻,按照既定的顺序连接位置相邻的人脸关键点、边缘点,可获得如图6B所示的网格。
需要说明的是,网格的顶点可同时包括人脸关键点、边缘点,与每个人脸关键点、每个边缘点位 置相邻的点(可以是人脸关键点,也可以是边缘点)均已确定,此时,可既定的顺序连接各人脸关键点、边缘点,从而生成网格。
在本发明的又一个实施例中,网格的顶点包括人脸关键点、位于图像数据边缘上的边缘点,边缘 点与人脸关键点具有第一编号,其中,边缘点的第一编号是预设的,人脸关键点的第一编号是在人脸 检测时生成的,或者,基于人脸检测时生成的编号映射获得,并且、边缘点的第一编号与人脸关键点的第一编号互不重复。
例如,如图2D所示,人脸关键点共68个,情况如下:
轮廓关键点共17个,第一编号分别为1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17。
眉毛关键点共10个,第一编号分别为18、19、20、21、22、23、24、25、26、27。
鼻子关键点共9个,第一编号分别为28、29、30、31、32、33、34、35、36。
眼睛关键点共12个,第一编号分别为37、38、39、40、41、42、43、44、45、46、47、48。
嘴巴关键点共20个,第一编号分别为49、50、51、52、53、54、55、56、57、58、59、60、61、 62、63、64、65、66、67、68。
边缘点共8个,第一编号分别为69、70、71、72、73、74、75、76。
此时,S120可以包括如下步骤:
S1231、查询预设的、且具有顺序的网格变量。
其中,每个网格变量中的顶点标记有第二编号。
S1232、若所述第一编号与所述第二编号相同,则在所述图像数据中以所述第一编号所属的边缘 点或人脸关键点作为顶点、连接所述第一编号所属的边缘点或人脸关键点,获得网格。
因为人脸检测的方法是预先设定的,其输出的人脸关键点一般是固定的,并且,边缘点也一般是 固定的,使得与每个人脸关键点、每个边缘点位置相邻的点(可以是人脸关键点,也可以是边缘点) 均是固定的,即每个网格中顶点的顺序是固定的。
因此,可在首次(离线)将某帧图像数据按照某一方式划分为多个网格时,按照顺序记录每个网 格中每个顶点(可以是人脸关键点,也可以是边缘点)的编号,作为第二编号,此时,每个网格保留 顶点的第二编号,作为网格变量。
对于其他图像数据,若按照相同的方式划分为网格,则可以将其点(可以是人脸关键点,也可以 是边缘点)的第一编号与网格变量的第二编号进行匹配,若两者相同,则可以按照网格变量中限定的 顺序连接第一编号所表示的点(可以是人脸关键点,也可以是边缘点),从而将该图像数据划分为多个网格。
例如,如图2D所示,网格变量可以表示为(1,76,2)、(2,76,3)、(3,76,4)、(4, 76,5),等等。
对于图2B所示的图像数据,第一编号为1、2的人脸关键点以及第一编号为76的边缘点,与其 中一个网格变量中的第二编号匹配成功,则可以按照其顺序连接人脸关键点边缘点,从而组成一个网 格(1,76,2)。
S130、接收作用于所述眼部的调整操作;
在具体实现中,应用的UI可提供美颜的控件,其中,该控件关联多个子控件,部分子控件可用 于调整人脸,用户可通过触控或鼠标等外设操作该子控件,从而触发调整操作。
例如,如图7所示,应用的UI提供的部分子控件,其触发的调整操作可分别用于调整眼睛的大 小、眼高、眼距、倾斜(角度),其中,圆圈表示调整的幅度,用户可滑动该圆圈设置调整眼睛的大 小、眼高、眼距、倾斜(角度)的幅度。
当然,上述调整操作只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他调整操 作,例如,调整眉毛的倾斜(角度),等等,本发明实施例对此不加以限制。另外,除了上述调整操作外,本领域技术人员还可以根据实际需要采用其它调整操作,本发明实施例对此也不加以限制。
S140、响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部。
针对调整操作,可确定该调整操作所调整的人脸关键点及调整方式。其中,调整方式包括调整类 型、幅度。
例如,对于眼睛(以人脸关键点表示),调整类型包括调整眼睛的大小、眼高、眼距、倾斜(角 度)。
又例如,对于眉毛(以人脸关键点表示),调整类型包括调整眉毛的长短、粗细、眉距、倾斜(角 度)。
按照该调整类型、幅度,对该人脸关键点进行调整,在保持人脸关键点作为网格的顶点的情况下, 调整人脸关键点,可连同调整网格,使得网格内的人脸数据发生变化,从而实现调整人物形象中人脸 的效果。
当然,部分人脸关键点并非调整操作所调整的人脸关键点,即部分人脸关键点并未调整,若网格 的顶点(人脸关键点)并未调整,则该网格保持原有的状态。
本实施例中,以调整眼部为例进行说明,该眼部包括眼睛和眉毛,该眼部的眼部关键点包括眉毛 的眉毛关键点、眼睛的眼睛关键点。图8A为未进行调整操作的图像数据。
1、眉毛的调整
该调整操作包括第一操作,用于调整眼部中的眉毛的倾斜(角度)。
将步骤S140细化为步骤S1411-S1412:
S1411、响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中。
本实施例中,针对一侧的所述眼睛关键点(如图2D中的第一编号为37、38、39、40、41、42 的人脸关键点所表示的左侧的眼睛,或第一编号为43、44、45、46、47、48的人脸关键点所表示的 右侧的眼睛),从所述眼睛关键点中选取两个参考关键点(如图2D中第一编号为38、41的人脸关键点;或第一编号为39、42的人脸关键点;第一编号为37、40的人脸关键点),两个所述参考关键点 的连线过所述眼睛的瞳孔;将两个所述参考关键点的中点,确定为一侧的参考点。
S1412、对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关 键点所处的网格。
进一步而言,可以通过如下方式移动眉毛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眉毛关键点,Dstn为移动之前的眉毛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数(旋转函数)。
本实施例中,通过确定所述第一操作设置的旋转方向;对左侧的所述眉毛关键点以左侧的所述参 考点为目标,按照所述旋转方向进行旋转;对右侧的所述眉毛关键点以右侧的所述参考点为目标,按 照所述旋转方向的反方向进行旋转。
在眉毛内旋转时,位于左侧的眉毛关键点以左侧的参考点目标进行顺时针的旋转、位于右侧的眉 毛关键点以右侧的参考点目标进行逆时针的旋转。
在眉毛外旋转时,位于左侧的眉毛关键点以左侧的参考点目标进行逆时针的旋转、位于右侧的眉 毛关键点以右侧的参考点目标进行顺时针的旋转。
参照图8B为调整眼部中的眉毛的倾斜(角度)内旋转所对应的图像数据。参照图8C为调整眼部 中的眉毛的倾斜(角度)外旋转所对应的图像数据。
2、眼睛的调整
2.1、调整眼睛的倾斜(角度)
该调整操作包括第二操作,用于调整眼部中的眼睛的倾斜(角度)。
将步骤S140细化为步骤S1421-S1422:
S1421、响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中。
S1422、分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所 处的网格。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数(旋转函数)。
在眼睛内旋转时,位于左侧的眼睛关键点以左侧的参考点目标进行顺时针的旋转、位于右侧的眼 睛关键点以右侧的参考点目标进行逆时针的旋转。
在眼睛外旋转时,位于左侧的眼睛关键点以左侧的参考点目标进行逆时针的旋转、位于右侧的眼 睛关键点以右侧的参考点目标进行顺时针的旋转。
参照图8D为调整眼部中的眼睛的倾斜(角度)内旋转所对应的图像数据。参照图8E为调整眼部 中的眼睛的倾斜(角度)外旋转所对应的图像数据。
2.2、调整眼睛的大小
该调整操作包括第三操作,用于调整眼部中的眼睛的大小。
将步骤S140细化为步骤S1431-S1432:
S1431、响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中;
S1432、分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所 处的网格。
本实施例中,通过确定所述第三操作设置的调整方向和调整距离;对左侧的所述眼睛关键点以左 侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离;对右侧的所述眼睛关键点以右侧 的所述参考点为目标,按照所述调整方向进行移动所述调整距离。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数。
在减小眼睛大小时,位于左侧的眼睛关键点朝向左侧的参考点移动、位于右侧的眼睛关键点朝向 右侧的参考点移动。
在增加眼睛大小时,位于左侧的眼睛关键点远离左侧的参考点移动、位于右侧的眼睛关键点远离 右侧的参考点移动。
参照图8F为调大眼部中的眼睛的大小对应的图像数据。参照图8G为调小眼部中的眼睛的大小所 对应的图像数据。
2.3、调整眼睛的眼距
该调整操作包括第四操作,用于调整眼部中的眼睛的眼距。
将步骤S140细化为步骤S1441-S1442:
S1441、响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点 (如图2D所示的第一编号为28的人脸关键点);
S1442、以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数。
需要说明的是,眼睛关键点一般位于参考点两侧,因此,这两侧眼睛关键点同时以相反方向、朝 向或远离参考点移动。
在减小眼距时,位于参考点左侧的眼睛关键点朝右移动、位于参考点右侧的眼睛关键点朝左移动。
在增加眼距时,位于参考点左侧的眼睛关键点朝左移动、位于参考点右侧的眼睛关键点朝右移动。
参照图8H中左一为左二调小眼部中的眼睛的眼间距对应的图像数据。参照图8G为左三为左二调 大眼部中的眼睛的眼间距对应的图像数据。
S150、绘制调整之后的网格,以显示调整眼部之后的图像数据。
在实际应用中,调用OpenGL、OpenGL ES等API或渲染引擎,按照顺序绘制每个网格(包含已调 整的网格),从而在屏幕显示调整人物形象之后的图像数据。
进一步地,为了提高图像数据的显示速度,可以在GPU中绘制网格。
在本发明的一个实施例中,针对调整后的网格,S150包括如下步骤:
S151、对于每个网格,确定位于所述网格中各个顶点的纹理坐标。
S152、对于每个网格,确定位于所述网格中各个顶点的顶点坐标。
S153、按照所述纹理坐标与所述顶点坐标绘制所述网格,以显示所述图像数据。
在绘制纹理映射场景时,除了给每个顶点定义几何坐标(即顶点坐标),也要定义纹理坐标。经 过多种变换后,几何坐标决定顶点在屏幕上绘制的位置,而纹理坐标决定纹理图像中的哪一个纹素赋 予该顶点。
纹理图像是方形数组,纹理坐标通常可定义成一、二、三或四维形式,称为s,t,r和q坐标, 一维纹理常用s坐标表示,二维纹理常用(s,t)坐标表示,目前忽略r坐标。q坐标像w一样,一般 情况下其值为1,主要用于建立齐次坐标。OpenGL坐标定义的函数是:
void gltexCoord{1234}{sifd}[v](TYPE coords);
设置当前纹理坐标,此后调用glVertex*()所产生的顶点都赋予当前的纹理坐标。对于 gltexCoord1*(),s坐标被设置成给定值,t和r设置为0,q设置为1;用gltexCoord2*()可以设置 s和t坐标值,r设置为0,q设置为1;对于gltexCoord3*(),q设置为1,其它坐标按给定值设置; 用gltexCoord4*()可以给定所有的坐标。
在本发明实施例中,以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,则屏幕绘制缓冲区中的片段,产生屏幕上的像素。
在本发明实施例中,调整人脸关键点所处的网格,可实现人物形象的调整,在绘制网格时,可显 示调整之后的人物形象,网格内的像素点的调整较为均匀,使得人物形象的调整更加平滑,减少变形, 避免人脸失真。
实施例二
图9为本发明实施例二提供的一种直播方法的流程图,本实施例可适用于基于人脸关键点构建网 格的情况,该方法可以由直播装置来执行,该装置可以由软件和/或硬件实现,可配置在电子设备中, 可以包括手机、平板、PDA、智能穿戴设备(如智能眼镜、智能手表)等移动终端,也可以包括智能 电视、个人电脑等非移动终端,这些电子设备包括CPU、GPU等处理器,以及配置有用于渲染2D矢量 图形的应用程序编程接口(API)或渲染引擎,该方法具体包括如下步骤:
S210、采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主播用户。
在具体实现中,电子设备的操作系统可以包括Android(安卓)、IOS、Windows等等。
在这些操作系统中支持运行直播应用,该直播应用可进行图像处理。
需要说明的是,该直播应用可以为独立的应用,也可以为其他应用(如社交应用、即时通讯工具 等)中的一个组件,如SDK,本发明实施例对此不加以限制。
主播用户在直播应用中向直播平台登录用户账号,并向直播平台发送直播标题,以按照该直播标 题对该用户账号生成直播间。
此后,该直播应用可调用电子设备的摄像头采集视频数据,该视频数据中包括多帧图像数据,至 少部分图像数据中具有主播用户。
当然,图像数据中的主播用户,可以指用于表示主播用户的像素点,一般情况下,该主播至少包 括用于表示人脸的人脸数据(像素点),除此之外,还可以包括用于表示头发的头发数据(像素点)、 用于表示躯体的躯体数据(像素点)、用于表示四肢的四肢数据(像素点),等等,本发明实施例对此不加以限制。
其中,对于人脸数据、躯体数据、四肢数据等可以包括用于表示皮肤的皮肤数据(像素点)。
S220、将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的人脸关键点, 所述人脸关键点包括眼部的眼部关键点。
在具体实现中,直播应用对该图像数据进行人脸检测,可识别主播用户的人脸关键点,从而根据 人脸关键点将图像数据划分为多个网格,即网格的顶点至少包括主播用户的人脸关键点。
其中,人脸检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸数据,定位出人脸面 部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等等。
人脸检测通常使用如下方法:
1、利用人工提取特征,如haar特征,使用特征训练分类器,使用分类器进行人脸检测。
2、从通用的目标检测算法中继承人脸检测,例如,利用Faster R-CNN来检测人脸。
3、使用级联结构的卷积神经网络,例如,Cascade CNN,MTCNN。
在具体实现中,这些实现人脸检测的方法可以集成在直播应用的模块中,应用可直接调用该模块 检测图像数据中的人脸关键点,这些实现人脸检测的方法也可以集成在SDK,该SDK作为直播应用的组装数据,直播应用可请求SDK对图像数据进行人脸检测,SDK检测到图像数据中的人脸关键点,并 将人脸关键点返回直播应用。
对于直播等,实时性要求较高,可以检测较为稀疏的人脸关键点,如68、81、106个,定位人脸 上比较明显且重要的特征点(如眼睛关键点、眉毛关键点、鼻子关键点、嘴巴关键点、轮廓关键点等), 以降低处理量、减少处理时间。
例如,直播应用采集的视频数据中,包含了如图2A所示的图像数据,其中具有主播用户,若对 该图像数据进行人脸检测,可以输出如图2B的68个人脸关键点,也可以输出如图2C所示的106个 人脸关键点。
网格(Mesh),代表单个的可绘制实体,其顶点至少包括人脸关键点,即以人脸关键点作为网格 的至少部分顶点,将每帧图像数据进行网格化,划分为多个(两个及两个以上)网格。
所谓网格化,是将凹多边形或有边相交的多边形划分成凸多边形,如三角形,以便被OpenGL等 API或渲染引擎渲染。
需要说明的是,网格之间是有序的,从而形成网格序列,使得符合OpenGL等API或渲染引擎的 渲染规范。
例如,对于OpenGL,一般情况下有三种绘制一系列三角形(网格):
1、GL_TRIANGLES
每三个点一组画一个三角形,三角形之间是独立的。
如图3A所示,第一个三角形使用顶点v0、v1、v2,第二个三角形使用顶点v3、v4、v5,以此类推。
2、GL_TRIANGLE_STRIP
从第三个点开始,每点与前面的两个点组合画一个三角形,即线性连续三角形串:
如图3B所示,第一个三角形,顶点排列顺序是v0,v1,v2;第二个三角形,顶点排列顺序是v2,v1,v3; 第三个三角形,顶点排列顺序是v2,v3,v4;第四个三角形,顶点排列顺序是v4,v3,v8
这个顺序是为了保证三角形按照相同的方向绘制的,使这个三角形的序列能够正确形成表面的一 部分。
3、GL_TRIANGLE_FAN。
从第三个点开始,每点与前一个点和第一个点组合画一个三角形,即扇形连续三角形。
如图3C所示,第一个三角形的顶点排列顺序是v2,v1,v0,第二个三角形的顶点排列顺序是v3,v2,v0, 第一个三角形的顶点排列顺序是v4,v3,v0
在本发明的一个实施例中,S220可以包括如下步骤:
S2211、识别所述人脸数据中的人脸关键点;
S2212、确定位置相邻的人脸关键点,作为第一目标关键点。
S2213、在所述图像数据中以所述第一目标关键点作为顶点、连接所述第一目标关键点,获得网 格。
在本发明实施例中,对于位置相邻的两个人脸关键点,可作为一对第一目标关键点,依次以第一 目标关键点作为网格的顶点、连接该对第一目标关键点,则可以生成网格。
在一种检测位置相邻的方式中,可通过定义法(Intersect of Halfplanes)、增量(incremental) 算法、分治法、plane sweep算法等方式,将包含人脸关键点的图像数据转换为维诺图(Voronoi图)。
维诺图,又称泰森多边形或Dirichlet图,它包括一组由连接两邻点直线的垂直平分线组成的连 续多边形(又称单元cell)。
在维诺图中,任意两个人脸关键点p和q之间的欧氏距离,记作dist(p,q)。
设P={p1,p2,…,pn}为平面上任意n个互异的人脸关键点,这些人脸关键点也就是基点。所谓 P对应的Voronoi图,就是平面的一个子区域划分——整个平面因此被划分为n个单元,它们具有这 样的性质:
任一人脸关键q位于人脸关键pi所对应的单元中,当且仅当对于任何的pj∈Pj,j≠i,都有 dist(q,pi)<dist(q,pj)。此时,将与P对应的Voronoi图记作Vor(P)。
“Vor(P)”或者“Voronoi图”所指示是组成该子区域划分的边和顶点。在Vor(P)中,与基点 pi相对应的单元记作V(pi)——称作与pi相对应的Voronoi单元。
在本发明实施例中,维诺图包括多个单元,每个单元包含一个人脸关键点,该单元具有多条边, 此时,可确定位于同一条边两侧的人脸关键点位置相邻,将位于同一条边两侧的人脸关键点连接,则 可生成网格。
例如,参见图4,将图像数据中转换为维诺图,图4显示了部分人脸关键点(黑点)和部分单元 的边(实线)。
其中,在单元400中,边401两侧的人脸关键点411与人脸关键点412相邻,可连接人脸关键点 411与人脸关键点412,同理,连接人脸关键点411与人脸关键点413,以及,连接人脸关键点413 与人脸关键点412,从而生成网格(虚线边)420。
进一步地,图2B所示的图像数据,包含68个人脸关键点,可转换为如图5A所示的维诺图,从 而确定位置相邻的人脸关键点,按照既定的顺序连接位置相邻的人脸关键点,可获得如图6A所示的 网格;图2C所示的图像数据,包含106个人脸关键点,可转换为如图5B所示的维诺图,从而确定位 置相邻的人脸关键点,按照既定的顺序连接位置相邻的人脸关键点,可获得如图6B所示的网格。
在本发明的另一个实施例中,S220可以包括如下步骤:
S2221、确定位于所述图像数据边缘上的点,作为边缘点。
S2222、确定与所述边缘点位置相邻的人脸关键点,作为第二目标关键点。
S2223、在所述图像数据中以所述边缘点、所述第二目标关键点作为顶点、连接所述边缘点与所 述第二目标关键点,获得网格。
人脸关键点组成的网格一般不能完全覆盖图像数据,此时,可在图像数据边缘上选取一些点,作 为边缘点。
需要说明的是,为了方便运算,选取的边缘点对称。
例如,如图6A与图6B所示,选择图像数据的四个顶点、以及、每两个顶点之间的中点作为边缘 点。
将边缘点及其相邻的人脸关键点作为一对第二目标关键点,依次以第二目标关键点作为网格的顶 点、按照顺序连接该对第二目标关键点,则可以生成网格。
需要说明的是,边缘点与人脸关键点位置相邻的关系,可由本领域技术人员根据实际情况进行设 置,本发明实施例对此不加以限制。
一般而言,人脸关键点中的眉毛关键点、轮廓关键点与边缘点相邻,边缘点的数量少于与其位置 相邻的人脸关键点的数量。
例如,图2B所示的图像数据,包含68个人脸关键点、8个边缘点,25个人脸关键点与8个边缘 点位置相邻,按照既定的顺序连接位置相邻的人脸关键点、边缘点,可获得如图6A所示的网格;图 2C所示的图像数据,包含106个人脸关键点、8个边缘点,41个人脸关键点与8个边缘点位置相邻, 按照既定的顺序连接位置相邻的人脸关键点、边缘点,可获得如图6B所示的网格。
需要说明的是,网格的顶点可同时包括人脸关键点、边缘点,与每个人脸关键点、每个边缘点位 置相邻的点(可以是人脸关键点,也可以是边缘点)均已确定,此时,可既定的顺序连接各人脸关键点、边缘点,从而生成网格。
在本发明的又一个实施例中,网格的顶点包括人脸关键点、位于图像数据边缘上的边缘点,边缘 点与人脸关键点具有第一编号,其中,边缘点的第一编号是预设的,人脸关键点的第一编号是在人脸 检测时生成的,或者,基于人脸检测时生成的编号映射的,并且、边缘点的第一编号与人脸关键点的第一编号互不重复。
例如,如图2D所示,人脸关键点共68个,情况如下:
轮廓关键点共17个,第一编号分别为1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17。
眉毛关键点共10个,第一编号分别为18、19、20、21、22、23、24、25、26、27。
鼻子关键点共9个,第一编号分别为28、29、30、31、32、33、34、35、36。
眼睛关键点共12个,第一编号分别为37、38、39、40、41、42、43、44、45、46、47、48。
嘴巴关键点共20个,第一编号分别为49、50、51、52、53、54、55、56、57、58、59、60、61、 62、63、64、65、66、67、68。
边缘点共8个,第一编号分别为69、70、71、72、73、74、75、76。
此时,S220可以包括如下步骤:
S2231、查询预设的、且具有顺序的网格变量。
其中,每个网格变量中的顶点标记有第二编号。
S2232、若所述第一编号与所述第二编号相同,则在所述图像数据中以所述第一编号所属的边缘 点或人脸关键点作为顶点、连接所述第一编号所属的边缘点或人脸关键点,获得网格。
因为人脸检测的方法是预先设定的,其输出的人脸关键点一般是固定的,并且,边缘点也一般是 固定的,使得与每个人脸关键点、每个边缘点位置相邻的点(可以是人脸关键点,也可以是边缘点) 均是固定的,即每个网格中顶点的顺序是固定的。
因此,可在首次(离线)将某帧图像数据按照某一方式划分为多个网格时,按照顺序记录每个网 格中每个顶点(可以是人脸关键点,也可以是边缘点)的编号,作为第二编号,此时,每个网格保留 顶点的第二编号,作为网格变量。
对于其他图像数据,若按照相同的方式划分为网格,则可以将其点(可以是人脸关键点,也可以 是边缘点)的第一编号与网格变量的第二编号进行匹配,若两者相同,则可以按照网格变量中限定的 顺序连接第一编号所表示的点(可以是人脸关键点,也可以是边缘点),从而将该图像数据划分为多个网格。
例如,如图2D所示,网格变量可以表示为(1,76,2)、(2,76,3)、(3,76,4)、(4, 76,5),等等。
对于图2B所示的图像数据,第一编号为1、2的人脸关键点以及第一编号为76的边缘点,与其 中一个网格变量中的第二编号匹配成功,则可以按照其顺序连接人脸关键点边缘点,从而组成一个网 格(1,76,2)。
S230、接收作用于所述眼部的调整操作。
在具体实现中,应用的UI可提供美颜的控件,其中,该控件关联多个子控件,部分子控件可用 于调整人脸,用户可通过触控或鼠标等外设操作该子控件,从而触发调整操作。
例如,如图7所示,应用的UI提供的部分子控件,其触发的调整操作可分别用于调整眼睛的大 小、眼高、眼距、倾斜(角度),其中,圆圈表示调整的幅度,用户可滑动该圆圈设置调整眼睛的大 小、眼高、眼距、倾斜(角度)的幅度。
当然,上述调整操作只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他调整操 作,例如,调整眉毛的倾斜(角度),等等,本发明实施例对此不加以限制。另外,除了上述调整操作外,本领域技术人员还可以根据实际需要采用其它调整操作,本发明实施例对此也不加以限制。
S240、响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部。
针对调整操作,可确定该调整操作所调整的人脸关键点及调整方式。其中,调整方式包括调整类 型、幅度。
例如,对于眼睛(以人脸关键点表示),调整类型包括调整眼睛的大小、眼高、眼距、倾斜(角 度)。
又例如,对于眉毛(以人脸关键点表示),调整类型包括调整眉毛的长短、粗细、眉距、倾斜(角 度)。
按照该调整类型、幅度,对该人脸关键点进行调整,在保持人脸关键点作为网格的顶点的情况下, 调整人脸关键点,可连同调整网格,使得网格内的人脸数据发生变化,从而实现调整人物形象中人脸 的效果。
当然,部分人脸关键点并非调整操作所调整的人脸关键点,即部分人脸关键点并未调整,若网格 的顶点(人脸关键点)并未调整,则该网格保持原有的状态。
本实施例中,以调整眼部为例进行说明,该眼部包括眼睛和眉毛,该眼部的眼部关键点包括眉毛 的眉毛关键点、眼睛的眼睛关键点。图8A为未进行调整操作的图像数据。
1、眉毛的调整
该调整操作包括第一操作,用于调整眼部中的眉毛的倾斜(角度)。
将步骤S140细化为步骤S1411-S1412:
S1411、响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中。
本实施例中,针对一侧的所述眼睛关键点(如图2D中的第一编号为37、38、39、40、41、42 的人脸关键点所表示的左侧的眼睛,或第一编号为43、44、45、46、47、48的人脸关键点所表示的 右侧的眼睛),从所述眼睛关键点中选取两个参考关键点(如图2D中第一编号为38、41的人脸关键点;或第一编号为39、42的人脸关键点;第一编号为37、40的人脸关键点),两个所述参考关键点 的连线过所述眼睛的瞳孔;将两个所述参考关键点的中点,确定为一侧的参考点。
S1412、对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关 键点所处的网格。
进一步而言,可以通过如下方式移动眉毛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眉毛关键点,Dstn为移动之前的眉毛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数(旋转函数)。
本实施例中,通过确定所述第一操作设置的旋转方向;对左侧的所述眉毛关键点以左侧的所述参 考点为目标,按照所述旋转方向进行旋转;对右侧的所述眉毛关键点以右侧的所述参考点为目标,按 照所述旋转方向的反方向进行旋转。
在眉毛内旋转时,位于左侧的眉毛关键点以左侧的参考点目标进行顺时针的旋转、位于右侧的眉 毛关键点以右侧的参考点目标进行逆时针的旋转。
在眉毛外旋转时,位于左侧的眉毛关键点以左侧的参考点目标进行逆时针的旋转、位于右侧的眉 毛关键点以右侧的参考点目标进行顺时针的旋转。
参照图8B为调整眼部中的眉毛的倾斜(角度)内旋转所对应的图像数据。参照图8C为调整眼部 中的眉毛的倾斜(角度)外旋转所对应的图像数据。
2、眼睛的调整
2.1、调整眼睛的倾斜(角度)
该调整操作包括第二操作,用于调整眼部中的眼睛的倾斜(角度)。
将步骤S140细化为步骤S1421-S1422:
S1421、响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中。
S1422、分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所 处的网格。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数(旋转函数)。
在眼睛内旋转时,位于左侧的眼睛关键点以左侧的参考点目标进行顺时针的旋转、位于右侧的眼 睛关键点以右侧的参考点目标进行逆时针的旋转。
在眼睛外旋转时,位于左侧的眼睛关键点以左侧的参考点目标进行逆时针的旋转、位于右侧的眼 睛关键点以右侧的参考点目标进行顺时针的旋转。
参照图8D为调整眼部中的眼睛的倾斜(角度)内旋转所对应的图像数据。参照图8E为调整眼部 中的眼睛的倾斜(角度)外旋转所对应的图像数据。
2.2、调整眼睛的大小
该调整操作包括第三操作,用于调整眼部中的眼睛的大小。
将步骤S140细化为步骤S1431-S1432:
S1431、响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛 的瞳孔中;
S1432、分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所 处的网格。
本实施例中,通过确定所述第三操作设置的调整方向和调整距离;对左侧的所述眼睛关键点以左 侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离;对右侧的所述眼睛关键点以右侧 的所述参考点为目标,按照所述调整方向进行移动所述调整距离。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数。
在减小眼睛大小时,位于左侧的眼睛关键点朝向左侧的参考点移动、位于右侧的眼睛关键点朝向 右侧的参考点移动。
在增加眼睛大小时,位于左侧的眼睛关键点远离左侧的参考点移动、位于右侧的眼睛关键点远离 右侧的参考点移动。
参照图8F为调大眼部中的眼睛的大小对应的图像数据。参照图8G为调小眼部中的眼睛的大小所 对应的图像数据。
2.3、调整眼睛的眼距
该调整操作包括第四操作,用于调整眼部中的眼睛的眼距。
将步骤S140细化为步骤S1441-S1442:
S1441、响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点 (如图2D所示的第一编号为28的人脸关键点);
S1442、以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
进一步而言,可以通过如下方式移动眼睛关键点:
Resultm=Dstn+A(y)·F(x)(Svcm-Dstn)
其中,Resultm为移动之后的眼睛关键点,Dstn为移动之前的眼睛关键点,为Svcm为参考点,A(y) 为幅度,F(x)为移动函数。
需要说明的是,眼睛关键点一般位于参考点两侧,因此,这两侧眼睛关键点同时以相反方向、朝 向或远离参考点移动。
在减小眼距时,位于参考点左侧的眼睛关键点朝右移动、位于参考点右侧的眼睛关键点朝左移动。
在增加眼距时,位于参考点左侧的眼睛关键点朝左移动、位于参考点右侧的眼睛关键点朝右移动。
参照图8H中左一为左二调小眼部中的眼睛的眼间距对应的图像数据。参照图8G为左三为左二调 大眼部中的眼睛的眼间距对应的图像数据。
S250、绘制调整之后的网格,以显示调整眼部之后的图像数据。
在实际应用中,调用OpenGL、OpenGL ES等API或渲染引擎,按照顺序绘制每个网格(包含已调 整的网格),从而在屏幕显示调整人物形象之后的图像数据。
进一步地,为了提高图像数据的显示速度,可以在GPU中绘制网格。
在本发明的一个实施例中,针对调整后的网格,S250包括如下步骤:
S251、对于每个网格,确定位于所述网格中各个顶点的纹理坐标。
S252、对于每个网格,确定位于所述网格中各个顶点的顶点坐标。
S253、按照所述纹理坐标与所述顶点坐标绘制所述网格,以显示所述图像数据。
在绘制纹理映射场景时,除了给每个顶点定义几何坐标(即顶点坐标),也要定义纹理坐标。经 过多种变换后,几何坐标决定顶点在屏幕上绘制的位置,而纹理坐标决定纹理图像中的哪一个纹素赋 予该顶点。
纹理图像是方形数组,纹理坐标通常可定义成一、二、三或四维形式,称为s,t,r和q坐标, 一维纹理常用s坐标表示,二维纹理常用(s,t)坐标表示,目前忽略r坐标。q坐标像w一样,一般 情况下其值为1,主要用于建立齐次坐标。OpenGL坐标定义的函数是:
void gltexCoord{1234}{sifd}[v](TYPE coords);
设置当前纹理坐标,此后调用glVertex*()所产生的顶点都赋予当前的纹理坐标。对于 gltexCoord1*(),s坐标被设置成给定值,t和r设置为0,q设置为1;用gltexCoord2*()可以设置 s和t坐标值,r设置为0,q设置为1;对于gltexCoord3*(),q设置为1,其它坐标按给定值设置; 用gltexCoord4*()可以给定所有的坐标。
在本发明实施例中,以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,则屏幕绘制缓冲区中的片段,产生屏幕上的像素。
S260、在一直播间发布调整眼部之后的视频数据。
直播应用可通过RTSP、RTMP、HLS等协议,将视频数据发送至直播平台(直播服务器),直播平 台(直播服务器)公开该直播间,使得观众用户可以在客户端中打开直播间,接收该视频数据并进行 播放。
实施例三
图10为本发明实施例三提供的一种眼部的调整装置的结构示意图,该装置具体可以包括如下模 块:图像数据获取模块310、网格划分模块320、调整操作接收模块330、调整操作响应模块340和 网格绘制模块350。
图像数据获取模块310,用于获取图像数据,所述图像数据中具有人脸数据;
网格划分模块320,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数 据的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块330,用于接收作用于所述眼部的调整操作;
调整操作响应模块340,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所 述眼部;
网格绘制模块350,用于绘制调整之后的网格,以显示调整眼部之后的图像数据。
在本发明的另一个实施例中,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键 点、眼睛的眼睛关键点;
所述调整操作响应模块340,包括:
第一操作响应单元,用于响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位 于两个所述眼睛的瞳孔中;
眉毛旋转单元,用于对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整 所述眉毛关键点所处的网格。
在本发明的另一个实施例中,所述第一操作响应单元,包括:
目标关键点确定子单元,用于针对一侧的所述眼睛关键点,从所述眼睛关键点中选取两个参考关 键点,两个所述参考关键点的连线过所述眼睛的瞳孔;
参考点确定子单元,用于将两个所述参考关键点的中点,确定为一侧的参考点。
在本发明的另一个实施例中,所述眉毛旋转单元,包括:
第一旋转方向确定子单元,用于确定所述第一操作设置的旋转方向;
左侧旋转子单元,用于对左侧的所述眉毛关键点以左侧的所述参考点为目标,按照所述旋转方向 进行旋转;
右侧旋转子单元,用于对右侧的所述眉毛关键点以右侧的所述参考点为目标,按照所述旋转方向 的反方向进行旋转。
在本发明的另一个实施例中,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键 点;
所述调整操作响应模块340,包括:
第二操作响应单元,用于响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位 于两个所述眼睛的瞳孔中;
眼睛旋转单元,用于分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼 睛关键点所处的网格。
在本发明的另一个实施例中,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键 点;
所述调整操作响应模块340,包括:
第三操作响应单元,用于响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位 于两个所述眼睛的瞳孔中;
眼睛大小调整单元,用于分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所 述眼睛关键点所处的网格。
在本发明的另一个实施例中,所述眼睛大小调整单元,包括:
调整参数确定子单元,用于确定所述第三操作设置的调整方向和调整距离;
左侧调整单元,用于对左侧的所述眼睛关键点以左侧的所述参考点为目标,按照所述调整方向进 行移动所述调整距离;
右侧调整单元,用于对右侧的所述眼睛关键点以右侧的所述参考点为目标,按照所述调整方向进 行移动所述调整距离。
在本发明的另一个实施例中,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键 点;
所述调整操作响应模块340,包括:
第四操作响应单元,用于响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位 于两瞳孔的中点;
眼距调整单元,用于以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网 格。
在本发明的另一个实施例中,所述网格划分模块320,包括:
识别单元,用于识别所述人脸数据中的人脸关键点;
第一相邻点确定单元,用于确定位置相邻的人脸关键点,作为第一目标关键点;
第一网格获取单元,用于在所述图像数据中以所述第一目标关键点作为顶点、连接所述第一目标 关键点,获得网格。
在本发明的另一个实施例中,所述网格划分模块320,还包括:
边缘点确定单元,用于确定位于所述图像数据边缘上的点,作为边缘点;
第二相邻点确定单元,用于确定与所述边缘点位置相邻的人脸关键点,作为第二目标关键点;
第二网格获取单元,用于在所述图像数据中以所述边缘点、所述第二目标关键点作为顶点、连接 所述边缘点与所述第二目标关键点,获得网格。
本发明实施例所提供的眼部的调整装置可执行本发明任意实施例所提供的眼部的调整方法,具备 执行方法相应的功能模块和有益效果。
实施例四
图11为本发明实施例四提供的一种直播装置的结构示意图,该装置具体可以包括如下模块:视 频数据采集模块410、网格划分模块420、调整操作接收模块430、调整操作响应模块440、网格绘制 模块450和视频发布模块460。
视频数据采集模块410,用于采集视频数据,所述视频数据中包括图像数据,所述图像数据中具 有主播用户;
网格划分模块420,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用 户的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块430,用于接收作用于所述眼部的调整操作;
调整操作响应模块440,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所 述眼部;
网格绘制模块450,用于绘制调整之后的网格,以显示调整眼部之后的图像数据;
视频发布模块460,用于在一直播间发布调整眼部之后的视频数据。
本发明实施例所提供的直播装置可执行本发明任意实施例所提供的直播方法,具备执行方法相应 的功能模块和有益效果。
实施例五
图12为本发明实施例五提供的一种设备的结构示意图。如12所示,该设备包括处理器500、存 储器501、通信模块502、输入装置503和输出装置504;设备中处理器500的数量可以是一个或多 个,12中以一个处理器500为例;设备中的处理器500、存储器501、通信模块502、输入装置503 和输出装置504可以通过总线或其他方式连接,12中以通过总线连接为例。
存储器501作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块, 如本实施例中的一种眼部的调整方法对应的模块(例如,如图10所示的一种眼部的调整装置中的图像数据获取模块310、网格划分模块320、调整操作接收模块330、调整操作响应模块340和网格绘 制模块350),又如本实施例中的一种直播方法对应的模块(例如,如图11所述的一种直播装置中的 视频数据采集模块410、网格划分模块420、调整操作接收模块430、调整操作响应模块440、网格绘 制模块450和视频发布模块460)。处理器500通过运行存储在存储器501中的软件程序、指令以及 模块,从而执行设备的各种功能应用以及数据处理,即实现上述的一种眼部调整方法或直播方法。
存储器501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个 功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器501可以包 括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器501可进一步包括相对于处理器500远程设置的存 储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、 局域网、移动通信网及其组合。
通信模块502,用于与显示屏建立连接,并实现与显示屏的数据交互。输入装置503可用于接收 输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。
本实施例提供的一种设备,可执行本发明任一实施例提供的眼部调整方法或直播方法,具体相应 的功能和有益效果。
实施例六
本发明实施例六还提供一种计算机可读存储介质,其上存储有计算机程序。
在一实施例中,该程序被处理器执行时实现一种眼部的调整方法,该方法包括:
获取图像数据,所述图像数据中具有人脸数据;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的人脸关键点,所述人 脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据。
在又一实施例中,该程序被处理器执行时实现一种直播方法,该方法包括:
采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主播用户;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的人脸关键点,所述人 脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据;
在一直播间发布调整眼部之后的视频数据。
当然,本发明实施例所提供的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还 可以执行本发明任意实施例所提供的眼部的调整方法或直播方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必 需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的 理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包 括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各 个实施例所述的方法。
值得注意的是,上述眼部的调整装置或直播装置的实施例中,所包括的各个单元和模块只是按照 功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元 的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于 这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱 离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范 围由所附的权利要求范围决定。

Claims (11)

1.一种眼部的调整方法,其特征在于,包括:
获取图像数据,所述图像数据中具有人脸数据;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据;
其中,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键点、眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处的网格;
或,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点;
以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
2.根据权利要求1所述的方法,其特征在于,所述基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中,包括:
针对一侧的所述眼睛关键点,从所述眼睛关键点中选取两个参考关键点,两个所述参考关键点的连线过所述眼睛的瞳孔;
将两个所述参考关键点的中点,确定为一侧的参考点。
3.根据权利要求1所述的方法,其特征在于,所述对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处的网格,包括:
确定所述第一操作设置的旋转方向;
对左侧的所述眉毛关键点以左侧的所述参考点为目标,按照所述旋转方向进行旋转;
对右侧的所述眉毛关键点以右侧的所述参考点为目标,按照所述旋转方向的反方向进行旋转。
4.根据权利要求1所述的方法,其特征在于,所述分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格,包括:
确定所述第三操作设置的调整方向和调整距离;
对左侧的所述眼睛关键点以左侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离;
对右侧的所述眼睛关键点以右侧的所述参考点为目标,按照所述调整方向进行移动所述调整距离。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述将所述图像数据划分为多个网格,包括:
识别所述人脸数据中的人脸关键点;
确定位置相邻的人脸关键点,作为第一目标关键点;
在所述图像数据中以所述第一目标关键点作为顶点、连接所述第一目标关键点,获得网格。
6.根据权利要求5所述的方法,其特征在于,所述将所述图像数据划分为多个网格,还包括:
确定位于所述图像数据边缘上的点,作为边缘点;
确定与所述边缘点位置相邻的人脸关键点,作为第二目标关键点;
在所述图像数据中以所述边缘点、所述第二目标关键点作为顶点、连接所述边缘点与所述第二目标关键点,获得网格。
7.一种直播方法,其特征在于,包括:
采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主播用户;
将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
接收作用于所述眼部的调整操作;
响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
绘制调整之后的网格,以显示调整眼部之后的图像数据;
在一直播间发布调整眼部之后的视频数据;
其中,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键点、眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处的网格;
或,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;或,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键点;
所述响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部,包括:
响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点;
以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
8.一种眼部的调整装置,其特征在于,包括:
图像数据获取模块,用于获取图像数据,所述图像数据中具有人脸数据;
网格划分模块,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述人脸数据的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块,用于接收作用于所述眼部的调整操作;
调整操作响应模块,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
网格绘制模块,用于绘制调整之后的网格,以显示调整眼部之后的图像数据;
其中,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键点、眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第一操作响应单元,用于响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眉毛旋转单元,用于对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处的网格;
或,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第二操作响应单元,用于响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眼睛旋转单元,用于分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第三操作响应单元,用于响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眼睛大小调整单元,用于分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第四操作响应单元,用于响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点;
眼距调整单元,用于以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
9.一种直播装置,其特征在于,包括:
视频数据采集模块,用于采集视频数据,所述视频数据中包括图像数据,所述图像数据中具有主播用户;
网格划分模块,用于将所述图像数据划分为多个网格,所述网格的顶点至少包括所述主播用户的人脸关键点,所述人脸关键点包括眼部的眼部关键点;
调整操作接收模块,用于接收作用于所述眼部的调整操作;
调整操作响应模块,用于响应于所述调整操作,调整所述眼部关键点所处的网格,以调整所述眼部;
网格绘制模块,用于绘制调整之后的网格,以显示调整眼部之后的图像数据;
视频发布模块,用于在一直播间发布调整眼部之后的视频数据;
其中,所述调整操作包括第一操作,所述眼部关键点包括眉毛的眉毛关键点、眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第一操作响应单元,用于响应于所述第一操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眉毛旋转单元,用于对两侧的所述眉毛关键点分别以同侧的所述参考点为目标进行旋转,以调整所述眉毛关键点所处的网格;
或,所述调整操作包括第二操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第二操作响应单元,用于响应于所述第二操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眼睛旋转单元,用于分布以两侧的所述参考点为目标旋转同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第三操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第三操作响应单元,用于响应于所述第三操作,基于所述眼睛关键点确定参考点,所述参考点位于两个所述眼睛的瞳孔中;
眼睛大小调整单元,用于分别以两侧的所述参考点为目标移动同侧的所述眼睛关键点,以调整所述眼睛关键点所处的网格;
或,所述调整操作包括第四操作,所述眼部关键点包括眼睛的眼睛关键点;
所述调整操作响应模块,包括:
第四操作响应单元,用于响应于所述第四操作,基于所述眼睛关键点确定参考点,所述参考点位于两瞳孔的中点;
眼距调整单元,用于以所述参考点为目标移动所述眼睛关键点,以调整所述眼睛关键点所处的网格。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的眼部的调整方法或如权利要求7所述的直播方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的眼部的调整方法或如权利要求7所述的直播方法。
CN201910604807.9A 2019-07-05 2019-07-05 眼部的调整、直播方法、装置、电子设备和存储介质 Active CN111652807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910604807.9A CN111652807B (zh) 2019-07-05 2019-07-05 眼部的调整、直播方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910604807.9A CN111652807B (zh) 2019-07-05 2019-07-05 眼部的调整、直播方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN111652807A CN111652807A (zh) 2020-09-11
CN111652807B true CN111652807B (zh) 2024-03-08

Family

ID=72348424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910604807.9A Active CN111652807B (zh) 2019-07-05 2019-07-05 眼部的调整、直播方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN111652807B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112381729A (zh) * 2020-11-12 2021-02-19 广州繁星互娱信息科技有限公司 图像处理方法、装置、终端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533523A (zh) * 2009-02-27 2009-09-16 西北工业大学 一种虚拟人眼部运动控制方法
CN108492247A (zh) * 2018-03-23 2018-09-04 成都品果科技有限公司 一种基于网格变形的眼妆贴图方法
CN109360166A (zh) * 2018-09-30 2019-02-19 北京旷视科技有限公司 一种图像处理方法、装置、电子设备和计算机可读介质
CN109785259A (zh) * 2019-01-09 2019-05-21 成都品果科技有限公司 一种实时美瞳方法及装置
WO2019128917A1 (zh) * 2017-12-29 2019-07-04 腾讯科技(深圳)有限公司 对象控制方法、装置、存储介质和计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533523A (zh) * 2009-02-27 2009-09-16 西北工业大学 一种虚拟人眼部运动控制方法
WO2019128917A1 (zh) * 2017-12-29 2019-07-04 腾讯科技(深圳)有限公司 对象控制方法、装置、存储介质和计算机设备
CN108492247A (zh) * 2018-03-23 2018-09-04 成都品果科技有限公司 一种基于网格变形的眼妆贴图方法
CN109360166A (zh) * 2018-09-30 2019-02-19 北京旷视科技有限公司 一种图像处理方法、装置、电子设备和计算机可读介质
CN109785259A (zh) * 2019-01-09 2019-05-21 成都品果科技有限公司 一种实时美瞳方法及装置

Also Published As

Publication number Publication date
CN111652807A (zh) 2020-09-11

Similar Documents

Publication Publication Date Title
CN111243093B (zh) 三维人脸网格的生成方法、装置、设备及存储介质
Guo et al. Image retargeting using mesh parametrization
US20180276882A1 (en) Systems and methods for augmented reality art creation
CN109325990B (zh) 图像处理方法及图像处理装置、存储介质
CN111652791B (zh) 人脸的替换显示、直播方法、装置、电子设备和存储介质
CN111462205B (zh) 图像数据的变形、直播方法、装置、电子设备和存储介质
CN112784621A (zh) 图像显示方法及设备
CN111382618B (zh) 一种人脸图像的光照检测方法、装置、设备和存储介质
EP3855386B1 (en) Method, apparatus, device and storage medium for transforming hairstyle and computer program product
CN111652795A (zh) 脸型的调整、直播方法、装置、电子设备和存储介质
CN109461197B (zh) 一种基于球面uv和重投影的云实时绘制优化方法
CN111652794B (zh) 一种面部的调整、直播方法、装置、电子设备和存储介质
CN111652022B (zh) 图像数据的显示、直播方法、装置、电子设备和存储介质
CN111652807B (zh) 眼部的调整、直播方法、装置、电子设备和存储介质
WO2019042028A1 (zh) 全视向的球体光场渲染方法
CN111652792B (zh) 图像的局部处理、直播方法、装置、设备和存储介质
CN111652023B (zh) 嘴型的调整、直播方法、装置、电子设备和存储介质
CN111652025B (zh) 一种人脸的处理、直播方法、装置、电子设备和存储介质
CN116977539A (zh) 图像处理方法、装置、计算机设备、存储介质和程序产品
CN111651033B (zh) 一种人脸的驱动显示方法、装置、电子设备和存储介质
JPH08147494A (ja) 頭髪画像生成装置
CN111652024B (zh) 一种人脸的显示、直播方法、装置、电子设备和存储介质
CN111652978B (zh) 一种网格的生成方法、装置、电子设备和存储介质
CN112488909A (zh) 多人脸的图像处理方法、装置、设备及存储介质
CN111652793B (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
GR01 Patent grant
GR01 Patent grant