CN112634411A - 一种动画生成方法、系统及其可读介质 - Google Patents

一种动画生成方法、系统及其可读介质 Download PDF

Info

Publication number
CN112634411A
CN112634411A CN202110012068.1A CN202110012068A CN112634411A CN 112634411 A CN112634411 A CN 112634411A CN 202110012068 A CN202110012068 A CN 202110012068A CN 112634411 A CN112634411 A CN 112634411A
Authority
CN
China
Prior art keywords
image
human body
points
animation generation
generation method
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.)
Granted
Application number
CN202110012068.1A
Other languages
English (en)
Other versions
CN112634411B (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.)
Shanghai Xinzi Information Technology Co ltd
Original Assignee
Shanghai Xinzi Information 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 Shanghai Xinzi Information Technology Co ltd filed Critical Shanghai Xinzi Information Technology Co ltd
Priority to CN202110012068.1A priority Critical patent/CN112634411B/zh
Publication of CN112634411A publication Critical patent/CN112634411A/zh
Application granted granted Critical
Publication of CN112634411B publication Critical patent/CN112634411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • 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/107Static hand or arm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • 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

Abstract

本申请公开了一种动画生成方法、系统及其可读介质,该方法包括:识别用户的上传图像、当该图像识别为非人体图像时报错;识别为人体图像时沿从头到脚的方向依次对各个部位进行特征点识别;以人体图像从头到脚的方向依次对所需特征点标号;对标号后所需特征点进行逻辑分析,划分出各个身体部位所包含的特征点,从而将整个身体分割各个模块;取人体图像肢体根部关节点为原点建立坐标系,将分割后的各个模块放入对应建立好的坐标系中,改变特征点坐标来实现特征点的移动,从而带动整个身体进行运动,形成新的姿态。本方案,简便的在对人体图像处理后,自动形成新的姿态,方便动画的生成,提高工作效率。

Description

一种动画生成方法、系统及其可读介质
技术领域
本申请涉及动画生成技术领域,具体而言,涉及动画生成方法、系统及其可读介质。
背景技术
现有的人工智能AI技术中,可以分析出人体的每个身体部分,那么就可以达到只需要设计出角色的物体模型,AI代码就可以控制角色的每个需要改变姿态的身体部位,进行各种各样的运动例如坐下、跑步、行走等。以确保人体按照所需进行动画呈现,既能省出很多人力,也能极大的提高工作效率。在现有技术中,人体关键点检测主要检测人体的一些关键点,如关节,五官等,通过关键点提述人体骨骼信息;由于人体具有相当的柔性,会出现各种姿态和形状,人体任何一个部位的微小变化都会产生一种新的姿态,同时其关键点的可见性受穿着、姿态、视角等影响非常大,而且还面临着遮挡、光照、雾等环境的影响。一般通过图像分割和识别的方式解决上述问题。常见的图像分割技术有局部分割以及全局分割。人体行为是由一些基本动作组成的,局部分割是以选取部分动作或提取部分特征来实现图像分割的,常用的方法为边界检测法。边界检测法使用起来很简单很方便,但却不适合用在多人运动场景中。全局分割是将整个动作系列作为一个可统计的模型进行处理的。识别出了人体姿态但识别之后的应用并不多,且很多时候人体姿态的识别是和动画生成结合在一起的,就算识别了人体姿态之后,想要进行新的姿态生成,还需要技术人员进行更多的特征点操作才可以实现。因此,如何开发出一种新型的人体动画生成方法,以克服上述问题,是本领域技术人员需要研究的方向。
发明内容
本申请公开了一种动画生成方法,能够克服现有技术中,在人体姿态识别后角色新姿态生成困难、影响动画制作效率的问题。
一种动画生成方法,其包括以下步骤:
步骤1:识别用户的上传图像、当该图像识别为非人体图像时报错,当该图像识别为人体图像时进入步骤2;
步骤2:对所述上传图像沿从头到脚的方向依次对各个部位进行特征点识别、对人体图像所需特征点进行标号;
步骤3:对标号后所需特征点进行逻辑分析,划分出各个身体部位所包含的特征点,并将人体图像分割出各个模块;
步骤4:取人体图像肢体根部关节点为原点建立坐标系,将分割后的各个模块放入对应建立好的坐标系中,改变特征点坐标来实现特征点的移动,从而带动整个身体进行运动,形成新的姿态。
优选的是,步骤1中所述识别用户的上传图像基于卷积神经网络的训练模型实现,其具体包括以下步骤:
步骤11:选择一个MNIST数据集,使用TensorFlow框架建卷积神经网络,建立关键节点特征;
步骤12:选用一张训练图,池化函数选用2x2的实验模板,进行两次卷积加池化;
步骤13:连接卷积层,对获得的结果保存并进行结果运算,当关键点得分大于0.15的个数大于4,并且整个人体轮廓的信用值不小于0.04时,判定为可用人体图像并输出该图片为训练模型。
更优选的是,所述训练图卷积加池化前,对训练图片进行base64编码,使用编码字符串代替图像地址,且编码和urlencode后的大小不超过4M,长宽比在3:1。
更优选的是,特征点识别前,预先对特征点提取,特征点提取具体为:采用POST方式调用classBaiDuAPI的类,识别一个人体的所有关节点,取与运动姿态生成相关的面部、颈部、肩部、肘部、手腕、胯部、膝盖和脚踝共计18个关节点,然后对18个关节点进行标号。
更优选的是,上述动画生成方法中,所述将人体图像分割出各个模块包括以下步骤:
输入已经计算并输出的识别后的训练模型,返回分割后的透明背景的人像图像;
确定肢体连线,再确定肢体具体部分。
更优选的是,上述动画生成方法中:所述确定肢体具体部分包括如下步骤:
确定肢体对图像进行urlencode处理,对返回的参数进行序列化处理,得到扣除背景的角色身体部分;
对特征点进行归类和划分,确定各特征点具体归属的肢体;
对肢体的模型进行提取、将手臂和腿部与整个身体和背景分离;
采用颜色划分法分别以两个手臂和两条腿以及躯干头部对角色进行身体划分,赋予不同的颜色标注;
对局部特征点进行融合、将特征点的关联性链接在一起;
通过赋予不同区域不同的颜色来划分整个身体,对整个身体颜色的划分进行四肢和躯干的判定;在按照颜色划分了身体的各个部位之后,把四肢单独取出,把每一部分的肢体逐一的进行移动。
更优选的是,上述动画生成方法中,所述运动姿态形成包括如下步骤:
取各个肢体其中的特征点质点为原点;
分别以所述原点建立坐标系、分别计算出各个部位的坐标系运动模型;
确定关节环绕点;
确定运动过程中人体移动路径的最高点和最低点位置、确定整个姿态生成的幅度;
建立从最高点到最低点的路径;
在各个路径中分别取1000个帧、将各路径中所取得的1000个帧连接起来,以动图的形式展示出来,生成运动图像;
将所述运动图像以gif的格式生成出来并保存在电脑中。
为实现上述动画生成方法,本申请还提供一种动画生成系统,其包括通信模块、存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述动画生产方法的步骤。
同时,本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述动画生成方法的步骤。
与现有技术相比,本申请取得了如下有益效果:
1、本申请的动画生成方法,可以简便有效的对人体图像进行识别,为后续新姿态生成提供模型,便于后续新姿态的生成;
2、本申请的动画生成方法,对特征点进行识别和标号,便于后续进行处理;
3、本申请的动画生成方法,通过对人体图像进行分割,并建立坐标系,便于后续的调整;
4、本申请的动画生成方法,可以自动实现新姿态的形成,有效的降低人力劳动量。
附图说明
图1为根据本申请实施例提供的动画生成方法的流程示意框图;
图2为根据本申请实施例提供的动画生成系统的模块示意图。
具体实施方式
实施例1:
如图1所示,本申请提供了一种动画生成方法,具体包括以下步骤:
当识别用户上传的图像为非人体图像时报错;
当识别用户上传的图像为人体图像时,对人体图像的各个部位进行特征点识别;
以人体图像从头到脚的方向依次对所需特征点标号;
对标号后所需特征点进行逻辑分析,划分出各个身体部位所包含的特征点,从而将整个身体分割各个模块;
取人体图像肢体根部关节点为原点建立坐标系,将分割后的各个模块放入对应建立好的坐标系中,改变特征点坐标来实现特征点的移动,从而带动整个身体进行运动,形成新的姿态。
识别用户上传的图像并判断是否为人体。如果不是人体的话则返回错误,如果是人体的话则进行特征点提取。特征点提取前,需要训练识别模型,选择一个MNIST数据集,MNIST 数据集是关于人体姿态的数据集,包含很多已经识别过并且已经分好了关节点的数据,使用TensorFlow框架,用这个框架搭建卷积神经网络,建立关节特征点。选一张28*28的训练图,池化函数用的是2x2的实验模板,然后进行两次的卷积加池化。最终得出训练图的检测结果。如下列代码1所示,其中输入x是图片信息矩阵,W是卷积核的值。卷积层 conv2d()函数里strides参数要求第一个、最后一个参数必须是1;第二个参数表示卷积核每次向右移动的步长,第三个参数表示卷积核每次向下移动的步长。
代码1
def conv2d(x,W):
#stride=[1,水平移动步长,竖直移动步长,1]
return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME)
def max_pool 2x2(x):
#stride=[1,水平移动步长,竖直移动步长,1]
return tf.nn.max pool(x,ksize=[1,2,2,1],strides=[1,2,2,1], padding='SAME')
接下来进行第一次卷积与池化,在本实施例中,卷积大小是5*5,由于选取的图片是28*28*1的尺寸,所以经过第一次卷积后图片的尺寸变为28*28*32,再进行第一次池化,得到的图片大小是14*14*32,具体如代码2所示;
代码2
#卷积层1网络结构定义
#卷积核1:patchm5x5jinsize1;outsize32;激活酒数reLU非线性处理
W_conv1=welght.variable([5,5,1,321)
bconv1=biasvariable[32])
h.conv1=tf.nn.relu(conv2d(x_inage,W.conv1)+b_conv1)
toutputsize28*28*32
h_pooll=max.,pool_2x2(hconv1)
toutputsize14*14*328器积肌2网络结构定义。
再进行第二次卷积和池化,与卷积层1的方式一致,所以最后输出的图片尺寸为7*7*64,具体如代码3所示:
代码3
#卷积椒2:patche5x5;insize32;outsize64;激活函数reLU非线性处理
Wconv2=weightyvariable([5,5,32,64])
b_conv2=bias_yariable([64])
h_conv2=tf.n.relu(conv2d(hpool,W_conv2)+b_conv2)
foutputsize14*14*64
hpool2=maxpoo2x2(h.conv2)
#outputsize7*7*64
之后连接卷积层,当newshape=-1时,函数就会按照现存的维度算出数组;另外shape 值,只让某一些神经元加入到计算中使权重得到新的结果。当keep_prob=1的时候,全部的神经元就都参与了计算,全连接层2有10个神经元,经过全连接层1、2,得到的值保存在prediction中,具体如代码4所示;
代码4
#全连接层1
W_fc1=weight._variable([7*7*64,1024])
b_fc1=bias_variable([1824])
hpool2_flat=tf.reshape(h_pool2,[-1,7*7464])#1n_samples,7,7,64]->>/n_sampl es,7+7+64]
hfc1=tf.nn.relu(tf.matmul(h_poo12flat,Wfc1)+bfc1)
h_fc1drop=tf.nn.dropout(h_fcl,keep.prob)#减少计算量dropout
#全连接层2
WtC2=weight.varlable([1024,10])
bfc2=bias_variable([101])
|prediction=tf.matmul(h_fc1drop,W_fc2)+b.fc2
然后进行结果运算,结果值越接近1,则图片识别成功。当关键点得分大于0.15的个数大于4,且整个人体轮廓的信用值不小于0.04时,则被系统认为是可以使用的人体模型图。
特征点的提取是AI技术与人体姿态的结合,以关节点为特征点提取。首先需要确定哪些特征点才是需要的特征点,即在运动过程中需要的点。百度AI开放平台可以选择所需要的特征点进行直接提取,但是在实际操作中,在百度AI开放平台基础上把这个应用到了自己的项目中,而非在百度AI平台上进行直接的提取。使用的请求格式是POST方式调用,这里需要明确:Content-Type为application/X-www-Form-urlencoded,然后再结合urlencode格式化请求体,返回的格式为JSON格式。在训练图片模型时,需要对图片进行base64编码,使用编码字符串代替图像地址,且要求编码和urlencode后的大小不超过4M,长宽比在3:1左右。
主要的方法是用了classBaiDuAPI(object)的类,它可以识别一个人体的所有关节点,取只关乎运动姿态生成的关节点。即取面部、颈部、肩部、肘部、手腕、胯部、膝盖、脚踝一共18个主要关节点。
在提取了这些特征点之后,接下来对这些特征点进行标注。通过对多个图片进行拆解最终对目标角色定义了18个特征点。对特征点的提取和标注的主要代码5如下:
代码5
"person_num":2,
"person_info":[
{
"body_parts":{
#左臀部的特征点定位
"1eft_hip":{
"y":573,
"x":686.09375,
"score":0.78743487596512
},
#头顶特征点定位
"top_head":{
"y":242.53125,
"x":620,
"score":0.87757384777069
},
#脖子特征点定位
"neck":{
y":335.0625,
"x":620,
"score":0.84662038087845
},
#左肩特征点定位
"left_shoulder":{
"y":361.5,
"x":699.3125。
特征点的划分使用了AI技术与图片颜色的结合。输入已经计算并输出的识别后的训练模型,返回分割后的透明背景的人像图。在肢体连线确定后,就是具体确定肢体部分的步骤。因为在移动四肢时不能只移动特征关节点,要让关节点带动整个肢体部分去移动。在划分四肢和躯干的具体部分时候,首先需要去除背景。去除背景采用对数据进行urlencode处理,方法如下代码6:
代码6
#对base64数据进行urlencode处理
params=urlencode(params)
request=http.request('POST',
url,
body-params,
headers={'Content-Type':'application/x-wwwform-urlencoded'})
处理好数据之后,对返回的参数进行序列化处理,方法如下代码7:
代码7
#对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
result=str(request.data,'utf-8')
#返回参数json序列化处理
res=json.loads(result)
labelmap=base64.b64decode(res['labelmap'])
nparr=np.fromstring(labelmap,np.uint8)
labelimg=cv2.imdecode(nparr,1)
此时可以得到一个扣除背景的角色身体部分。随后对各个身体部位进行划分。计算出画面中人体坐标信息,可基于此对图片进行过滤、筛选。在提取特征点之后,对特征点进行归类和划分,即确定某一个特征点具体归属于哪部分的肢体。
对肢体的模型进行提取:将手臂和腿部与整个身体和背景分离。具体采用颜色划分法实现分离:分别以两个手臂和两条腿以及躯干头部对角色进行身体划分,赋予它们不同的颜色标注,从而避免了肢体分离时不易发生分离的身体部位过多的问题。对局部特征点进行融合、通过结合全局特征的足够信息量和局部特征的对视角变化,部分遮挡问题不算很敏感,抗干扰性强的优点。
在确定特征点后,将特征点的关联性链接在一起:
针对新目标的18个特征点,以及新的躯干,先对齐中心点,然后拉伸躯干、两个大腿,就可以由两个大腿确定两个小腿,躯干可以确定头部、大臂和小臂,且两个大臂可以确定两个小臂。这样就可以划分整个目标角色的各个部位这里只展示一个由大臂确定小臂的具体代码8:
代码8
#由大臂确定小臂
standard_polygon5=all_polygon[5]
test_polygon5=test_all_polygon[5]
new_test_polygon5,stand_max_point8,test_max_point8=getpolygon(stand_max_p oint7,standard_polygon5,test_max_point7,test_polygon5)
forkinrange(len(new_test_polygon5)):
canvas2[new_test_polygon5[k][0],new_test_polygon5[k][1],0]=0
canvas2[new_test_polygon5[k][0],new_test_polygon5[k][1],1]=0
canvas2[new_test_polygon5[k][0],new_test_polygon5[k][1],2]=0
划分区域时的方法具体为,通过赋予不同区域不同的颜色来划分整个身体。通过对整个身体颜色的划分进行四肢和躯干的判定,需要角色的四肢以及躯干颜色要有明显的分别,所以背景板最好是白色的,然后角色穿上颜色对比度比较高的衣服,此过程中,四肢要划分的很开,方便划分出身体的各个部位。具体代码9如下:
代码9
defvgg_block(x,weight_decay):
#模块1
x=conv(x,64,3,"conv1_1",(weight_decay,0))
x=relu(x)
x=conv(x,64,3,"conv1_2",(weight_decay,0))
x=relu(x)
x=pooling(x,2,2,"pool1_1")
#模块2
x=conv(x,128,3,"conv2_1",(weight_decay,0))
x=relu(x)
x=conv(x,128,3,"conv2_2",(weight_decay,0))
x=relu(x)
x=pooling(x,2,2,"pool2_1")
#模块3
x=conv(x,256,3,"conv3_1",(weight_decay,0))
x=relu(x)
x=conv(x,256,3,"conv3_2",(weight_decay,0))
x=relu(x)
x=conv(x,256,3,"conv3_3",(weight_decay,0))
x=relu(x)x=conv(x,256,3,"conv3_4",(weight_decay,0))
x=relu(x)x=pooling(x,2,2,"pool3_1")
#模块4
x=conv(x,512,3,"conv4_1",(weight_decay,0))
x=relu(x)
x=conv(x,512,3,"conv4_2",(weight_decay,0))
x=relu(x)
在按照颜色划分了身体的各个部位之后,把四肢单独取出来,然后可以把每一部分的肢体逐一的进行移动,采用此方式,会模型的动作更加的柔软,不至于僵硬化。至此,就可以控制每个身体部位运动来实现角色姿态生成。
在采用上述方式前,需对运动进行研究,即整个运动过程的定义。选择的是跑步的姿态,在设计算法的时候,要先取每一个肢体其中的特征点质点为原点,取的是两个肩部和躯干大腿连接的特征点,以这些特征点建立坐标系。每部分的肢体坐标系不同,需要再分别计算出各个部位的坐标系运动模型。已经将特征点和身体躯干划分成了各个部分,就需要先确定某几个点为运动的关节环绕点。如跑步的姿态过程中,腿部是以大腿根为关节环绕点进行的运动,那么就以大腿根部的特征点为原点建立坐标系,让整个大腿的所有部分都围绕着这一个特征点做规律的周期运动。手臂也是一样的道理,选择肩部的特征点为原点使整个手臂做以肩部为原点的规律周期运动。既然是跑步的姿态,那么还需要确定跑步过程中,人体的移动路径的最高点和最低点位置,这个最高点和最低点可以确定整个姿态生成的幅度,并且围绕着最高点和最低点设计一个函数,通过改变x或y的数值来使整个身躯的所有应该移动的特征点进行函数运动,使得整个运动姿态尽量符合正常的人体工程学,然后在整个区间内做规律的周期运动,使特征点模块(身体以及四肢)移动来达到生成角色跑步姿态运动的目的。
具体实现如下:将特征点连线对进行移动时选择了多帧移动。首先选择每个连接躯干的关节点,然后以每个关节点为原点建立坐标系。在坐标系里找到肢体移动的路径,即两个最高点和最低点,在最开始的时候建立了一个从两个最高点到最低点的路径。在这个区间内,取1000个帧,然后将每个肢体的1000个帧连接起来,以动图的形式展示出来。这里用了其中一条肢体arm2展示核心代码。具体代码10如下:
代码10
all_peaks=pickle.load(load_file)
load_file.close()
centerl=[all.peaks[1][0][1],all_peaks[1][0][0]]
center2=[all_peaks[5][0][1],all_peaks[5][0][0]]
center3=[allpeaks[1][0][1],allpeaks[1][0][0]]
center4=[all_peaks[11][0][1],allpeaks[11][0][0]]
#arm2的运动姿态生成
arm2_dot_new=[]
foriinrange(len(arm2_dot)):
try:
vect1=np.array([10,0])
vect2=np.array([arm2_dot[i][1]-center2[1],
center2[0]-arm2_dot[i][0]])
Lx=np.sqrt(vect1.dot(vect1)
Ly=np.sqrt(vect2.dot(vect2))
cos_angle=vectl.dot(vect2)/(Lx*Ly)angle=np.arccos(cos__angle)
angle2=angle*360/2/np.pi
ifvect2[0]<0andvect2[1]<0:angle2=180+(180-angle2)
ifvect2[0]>0andvect2[1]<0:angle2=360-angle2
print('angle:",angle2)
angle2+=arm2_jiaodul[iaodu%len(arm2_jiaodu)]
angle=angle2*2*np.pi/360
vect2=[int(np.cos(angle)*Ly),int(np.sin(angle)*Ly)]
arm2_dot.new.append([center2[0]-vect2[1],vect2[0]+center2[1]])
canvas2[center2[0]-vect2[1],vect2[0]+center2[1],0]=
canvas2[arm2__dot[i][0],arm2_dot[i][1],0]
canvas2[center2[0]-vect2[1],vect2[0]+center2[1],1]=
canvas2[arm2_dot[i][0],arm2_dot[i][1],1]
canvas2[center2[0]-vect2[1],vect2[0]+center2[1],2]=
canvas2[arm2__dot[i][0],arm2dot[i][1],2]
canvas2[arm2_dot[i][0],arm2_dot[i][1],0]=255
canvas2[arm2_dot[i][0],arm2_dot[i][1],1]=255
canvas2[arm2_dot[i][0],arm2_dot[i][1],2]=255
在生成运动图像之后,再将图像以gif的格式生成出来并保存在电脑中,如代码11:
代码11
if__name__=='__main__':
path="/Users/zhangjiarui/Desktop/pose/"
keras_weights_file=path+'model/keras/model.h5'
model=get_testing_model()
model.load_weights(keras_weights_file)
params,model_params=config_reader()
input_image=path+'sample_images/example2.jpg'
result=process(input_image,params,model_params,path)
cv2.imwrite(path+"result.png",result)
get_cluster_by_hand(path)
save_path="/…/Desktop/pose/result/"
transform(path,save_path)
save2Gif(path,save_path)
请参阅图2,同时,本申请另提供一种动画生成系统,包括通信模块、存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的动画生成方法的步骤。
另外,本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的动画生成方法的步骤。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种动画生成方法,其特征在于,包括以下步骤:
步骤1:识别用户的上传图像、当该图像识别为非人体图像时报错,当该图像识别为人体图像时进入步骤2;
步骤2:对所述上传图像沿从头到脚的方向依次对各个部位进行特征点识别、对人体图像所需特征点进行标号;
步骤3:对标号后所需特征点进行逻辑分析,划分出各个身体部位所包含的特征点,并将人体图像分割出各个模块;
步骤4:取人体图像肢体根部关节点为原点建立坐标系,将分割后的各个模块放入对应建立好的坐标系中、通过改变特征点坐标来实现人体图像的新姿态。
2.如权利要求1所述动画生成方法,其特征在于:步骤1所述识别用户的上传图像基于卷积神经网络的训练模型实现,其包括以下步骤:
步骤11:选择一个MNIST数据集,使用TensorFlow框架建卷积神经网络,建立关键节点特征;
步骤12:选用一张训练图、池化函数选用2x2的实验模板,进行两次卷积加池化;
步骤13:连接卷积层,对获得的结果保存并进行结果运算,当关键点得分大于0.15的个数大于4,并且整个人体轮廓的信用值不小于0.04时,判定为可用人体图像并输出该图片为训练模型。
3.如权利要求2所述动画生成方法,其特征在于,训练图卷积加池化前,对训练图片进行base64编码,使用编码字符串代替图像地址,且编码和urlencode后的大小不超过4M,长宽比在3:1。
4.如权利要求3所述动画生成方法,其特征在于,步骤2所述特征点识别包括:对特征点的预提取,所述对特征点的预提取包括:采用POST方式调用classBaiDuAPI的类,识别一个人体的所有关节点,取与运动姿态生成相关的面部、颈部、肩部、肘部、手腕、胯部、膝盖和脚踝共计18个关节点,然后对18个关节点进行标号。
5.如权利要求4所述的动画生成方法,其特征在于,所述将人体图像分割出各个模块具体包括以下步骤:
输入已经计算并输出的识别后的训练模型,返回分割后的透明背景的人像图像;
确定肢体连线、再确定肢体具体部分。
6.如权利要求5所述的动画生成方法,其特征在于:所述确定肢体具体部分包括如下步骤:
确定肢体对图像进行urlencode处理,对返回的参数进行序列化处理,得到扣除背景的角色身体部分;
对特征点进行归类和划分,确定各特征点具体归属的肢体;
对肢体的模型进行提取、将手臂和腿部与整个身体和背景分离;
采用颜色划分法分别以两个手臂和两条腿以及躯干头部对角色进行身体划分,赋予不同的颜色标注;
对局部特征点进行融合、将特征点的关联性链接在一起;
通过赋予不同区域不同的颜色来划分整个身体,对整个身体颜色的划分进行四肢和躯干的判定;在按照颜色划分了身体的各个部位之后,把四肢单独取出,把每一部分的肢体逐一的进行移动。
7.如权利要求6所述的动画生成方法,其特征在于,所述运动姿态形成包括如下步骤:
取各个肢体其中的特征点质点为原点;
分别以所述原点建立坐标系、分别计算出各个部位的坐标系运动模型;
确定关节环绕点;
确定运动过程中人体移动路径的最高点和最低点位置、确定整个姿态生成的幅度;
建立从最高点到最低点的路径;
在各个路径中分别取1000个帧、将各路径中所取得的1000个帧连接起来,以动图的形式展示出来,生成运动图像;
将所述运动图像以gif的格式生成出来并保存在电脑中。
8.一种动画生成系统,其特征在于,包括通信模块、存储器、处理器;
所述存储器中存储有计算机程序;所述处理器连接存储器、用于运行存储器上的计算机程序、执行如权利要求1-7任一项所述的动画生成方法。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的动画生成方法的步骤。
CN202110012068.1A 2021-01-06 2021-01-06 一种动画生成方法、系统及其可读介质 Active CN112634411B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110012068.1A CN112634411B (zh) 2021-01-06 2021-01-06 一种动画生成方法、系统及其可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110012068.1A CN112634411B (zh) 2021-01-06 2021-01-06 一种动画生成方法、系统及其可读介质

Publications (2)

Publication Number Publication Date
CN112634411A true CN112634411A (zh) 2021-04-09
CN112634411B CN112634411B (zh) 2023-04-07

Family

ID=75290818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110012068.1A Active CN112634411B (zh) 2021-01-06 2021-01-06 一种动画生成方法、系统及其可读介质

Country Status (1)

Country Link
CN (1) CN112634411B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610949A (zh) * 2021-08-25 2021-11-05 腾讯科技(深圳)有限公司 虚拟手臂骨骼的蒙皮方法、装置、设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831401A (zh) * 2012-08-03 2012-12-19 樊晓东 对无特定标记目标物体跟踪、三维叠加及交互的方法及系统
CN110992454A (zh) * 2019-11-29 2020-04-10 南京甄视智能科技有限公司 基于深度学习的实时动作捕捉和三维动画生成方法与装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831401A (zh) * 2012-08-03 2012-12-19 樊晓东 对无特定标记目标物体跟踪、三维叠加及交互的方法及系统
CN110992454A (zh) * 2019-11-29 2020-04-10 南京甄视智能科技有限公司 基于深度学习的实时动作捕捉和三维动画生成方法与装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李石磊等: "基于姿态库和PIK算法的虚拟人全身姿态生成", 《系统仿真学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113610949A (zh) * 2021-08-25 2021-11-05 腾讯科技(深圳)有限公司 虚拟手臂骨骼的蒙皮方法、装置、设备以及存储介质
CN113610949B (zh) * 2021-08-25 2023-06-16 腾讯科技(深圳)有限公司 虚拟手臂骨骼的蒙皮方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN112634411B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN110135375B (zh) 基于全局信息整合的多人姿态估计方法
CN110222665B (zh) 一种基于深度学习和姿态估计的监控中人体动作识别方法
Zhang et al. Learning 3d human shape and pose from dense body parts
CN110222140A (zh) 一种基于对抗学习和非对称哈希的跨模态检索方法
CN112131985B (zh) 一种基于OpenPose改进的实时轻量人体姿态估计方法
CN110472604B (zh) 一种基于视频的行人与人群行为识别方法
CN114724241A (zh) 基于骨骼点距离的动作识别方法、装置、设备及存储介质
CN108629326A (zh) 目标体的动作行为识别方法及装置
CN113128424B (zh) 基于注意力机制的图卷积神经网络动作识别方法
CN109446927A (zh) 基于先验知识的双人交互行为识别方法
CN110310285A (zh) 一种精确的基于三维人体重建的烧伤面积计算方法
CN111709289B (zh) 一种用于提高人体解析效果的多任务深度学习模型
CN113762201A (zh) 基于yolov4的口罩检测方法
CN112084878B (zh) 一种用于判别作业人员姿态规范程度的方法
CN112101262B (zh) 一种多特征融合手语识别方法及网络模型
CN113435236A (zh) 居家老人姿态检测方法、系统、存储介质、设备及应用
CN112036260A (zh) 一种自然环境下多尺度子块聚合的表情识别方法及系统
CN108596256A (zh) 一种基于rgb-d物体识别分类器构造方法
CN112258555A (zh) 实时姿态估计运动分析方法、系统、计算机设备及存储介质
CN110097110A (zh) 一种基于目标优化的语义图像修复方法
CN112906520A (zh) 一种基于姿态编码的动作识别方法及装置
CN112634411B (zh) 一种动画生成方法、系统及其可读介质
CN112990154B (zh) 一种数据处理方法、计算机设备以及可读存储介质
CN113591774A (zh) 基于Transformer的行为识别算法
CN110348395B (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