一种根据人体照片得到人体外表数据的系统及方法与流程

文档序号:18556636发布日期:2019-08-30 22:41阅读:171来源:国知局
一种根据人体照片得到人体外表数据的系统及方法与流程
本发明属于计算机
技术领域
,涉及一种个性化人体模型获取系统及方法,具体地说,涉及一种根据人体照片得到人体外表数据的系统及方法。
背景技术
:一方面随着科技的发展,越来越多的电商行业的兴起,使得人们可以不用出门就可以通过一些平台(例如:淘宝,京东,唯品会等等)买到自己想要的东西,在买衣服的时候由于不能亲身的试穿,所以只能根据以前买过的衣服来选择尺码,但由于衣服的版型不统一使得买回来的衣服很少合身,大多数被搁置,最后扔掉,从而造成资源浪费。在以往图像识别时常使用光学图像识别技术,这会受到周围环境光线强弱的影响,出现较大识别误差。市场上的三维扫描仪不但价格昂贵,而且使用繁杂,所以导致3d人像重建还存在成本高、耗时长等问题。现有的个性化人体模型获取方法包括扫描模型法、创建模型法以及重建模型法三种。重建模型法以其逼真的建模效果、较少的用户操作以及多样化的参数形式,逐渐成为主流的人体建模方法。但是重建模型法具有建模时间较长、生成模型外形依赖于实例空间的多样性等弊端。技术实现要素:本发明的目的在于提供一种根据人体照片得到人体外表数据的系统及方法。首先导入图片,对图片进行预处理,读取和存储图片的相关数据。完成后,导入标准数据模型,基于特征点的人体三维常见模块开始与图片数据进行算法运算,完成特征点的人体三维重建,并对重建后的三维虚拟人模型进行数据存储,调动存储的经过特征点三维虚拟人体模型数据,进行部分位逐层重建,最后进行纹理映射,从而完成人体的三维重建,所用到的关键技术为基于图片的人体三维重建和纹理映射。其具体技术方案为:一种根据人体照片得到人体外表数据的系统,包括图片预处理模块、基于特征点的人体三维重建模块、所述分部位逐层重建模块和纹理贴图模块;所述图片预处理模块,用于对图片进行二值化处理,提取图片中人物的轮廓;所述基于特征点的人体三维重建模块,用于开始与图片数据进行算法运算,完成特征点的人体三维重建,并对重建后的三维虚拟人模型进行数据存储;所述分部位逐层重建模块,用于对标准虚拟人体模型进行部位划分,能够更加精确的得到人体三维模型;所述纹理贴图模块,用于提取图片中真人的纹理信息,输出与图片中人物形态相近、具有相同纹理的三维虚拟人模型。一种根据人体照片得到人体外表数据的方法,包括以下步骤:步骤1、导入人体照片,读取并存储照片中的像素数据;步骤2、图片预处理,选择图片二值化方法对照片进行二值化,然后将经过二值化的照片提取照片中的轮廓数据并进行存储;步骤3、进行基于特点的人体三维化,首先在标准三维人体模型中标注出特征点,然后对照片中人体轮廓的特征点进行标注,最后根据基于特征点的人体三维重建方法对标准人体模型进行特化;步骤4、判断是否需要进行分部位逐层重建,如果照片中人体轮廓与标准人体模型中各个部位数据相差±1cm,经过基于特征点的人体三维特化就能够得到所需要的人体三维模型,则不需要进行分部位逐层重建。这时只需要对三维模型进行参数化微调,得到更高精度的三维模型;否则需要对特化的三维人体模型进行进一步的分部位组成重建;步骤5、分部位逐层重建,在此步骤中先划分人体模型和照片轮廓中的部位,选择相同部位,逐层位移变化。步骤6、判断人体三维重建是否完成,完成则跳至步骤8,否则继续进行。步骤7、导入侧面图片,读取并存储,跳至步骤2;步骤8、纹理贴图。进一步,步骤2中,所述图片二值化方法,具体为:step1:确定阈值t。step2:判断:像素值<t,像素值归0;否则,像素值为255。进一步,步骤2中,所述将经过二值化的照片提取照片中的轮廓数据并进行存储,具体为:step1:判断点是否为边界点,如果是则直接将该点像素值置为255,如果不是则继续下一步。step2:判断改点与周围8个点的像素值是否相等,如有一个不相等则保留改点像素值。否则将改点像素值置为255。进一步,步骤3中,所述基于特征点的人体三维重建方法,具体如下:step1:对图片进行预处理。读取和存储图片中的灰度值,将图片二值化,提取图片中人体的外围轮廓;step2:对标准虚拟人按部位进行剖分,并标定各部位变化的特征点,得到特征点的数据;step3:对所提取的图片中的人体轮廓,按照标准虚拟人所剖分的部位和标定的特点标定轮廓中相应的特征点,并得到这些特征点的数据;step4:图片中人体轮廓的特征点与标准虚拟人模型的特征点对应,按照特征点坐标位移变换算法,对标准虚拟人模型的点进行坐标变换,得到与轮廓中人体形态相近的虚拟人模型。再进一步,所述特征点坐标位移变换算法,包括以下步骤:a.读取真实人体轮廓部位的轮廓数据,得到轮廓在y轴的高度为m,然后对虚拟人模型部位进行切片,切为m片;b.计算点point所在的片数;c.对比参考轴判断点是在所在片数的参考轴l2的左边还是右边d.选取人体轮廓中对应y轴坐标的轮廓数据,也就是读取轮廓数据中的对应左边或者右边的坐标,求得其轮廓点与参考轴l1的距离为x1;e.计算模型中点point所在片对应的左边或者右边的最外围轮廓点距离参考轴的距离为x2;f.求得模型中模块的高度为n;g.则点point所在的片中的点的位移系数公式为:x1/m=x2/n*bilv(比例系数bilv=(x1*n)/(m*x2));h.点经过位移算后的坐标为:在参考轴左边xx=l2-(l2-x)*bilv;在右边xx=l2+(x-l2)*bilv。进一步,步骤3中,所述对照片中人体轮廓的特征点进行标注,将人体的特征数据按照算法需求的结构进行几个划分,将一个完整的虚拟人模型划分为下列结构部分:上头部、下头部、颈部、胸部、腹部、腿部、脚部、手臂、手掌。进一步,步骤8,所述纹理贴图,具体为:a.对模型进行分部位,纹理贴图中的模型部位划分为:头部、脖子、躯干、腿部、脚部、手臂和手掌。b.模型是按三角面片来绘制的,对每个面片进行正反面判定,分别绑定正面纹理和背面纹理,定义纹理贴图。c.计算面片中每个点对应图片中的二维坐标,定义纹理坐标。d.控制纹理贴图,实现每个面片的纹理映射,从而实现整个模型的纹理贴图。与现有技术相比,本发明的有益效果为:本发明通过三维人体重建技术,我们可以轻松地得到自己身体的外表数据,从而选择合适的衣服,而且可以将这个方法嵌入到一些大型的电商平台例如淘宝、唯品会等等,如果可以的话还可以进行扩展直接生成你可以穿衣服的尺码,这样就可以很容易的进行衣服的选购,从而促进消费;另一方面随着人们生活水平的提高,越来越多的人都喜欢开始健身,可以将这个方法封装成一个app从而可以实时的得到自己身体外表的数据等等,所以应用比较广。本发明使用基于特征点的人体三维重建方法,再分部位逐层重建对细节需求较大的部位进行切片重建,能够得到更贴合样本体型的模型,因此可以推荐更适合的尺码。再通过神经网络学习大量样本,这种方法具有很强的自适应、自组织、自学习能力。处理的信息可以有各种变化,而且在处理信息的同时,非线性动力系统本身也在不断变化。样本容量大,且识别率高。附图说明图1为基于特征点的人体三维重建图;图2基于特征点的人体三维重建的流程图;图3为标准虚拟人分块图;图4为正面人体轮廓特征点的选取图;图5为侧面人体轮阔特征点的标注图;图6为假设真实人体轮廓与模型轮廓图,其中,(a)图片中人体轮廓;(b)标准虚拟人轮廓;图7为假设真实人体头部轮廓与模型轮廓图,其中,(a)图片中人体头部轮廓;(b)标准虚拟人头部轮廓图;图8为腿部重建前后对比图,其中,(a)重建前;(b)重建后;图9为曲率变化算法示意图;图10为假设真实人体某部位轮廓与模型轮廓,其中,(a)图片中人体某部位轮廓(b)虚拟人模型中对应部位的轮廓;图11神经网络模型图;图12为算法训练框图。具体实施方式下面结合附图和具体实施例对本发明的技术方案作进一步详细地说明。基于特征点的人体三维重建图:实现流程:我们通过实验对象提供自己的几张照片,分别为人体的正面照,左侧面照,右侧面照,和背面照,通过三维人体重建技术得到此人的三维模型,再通过图像处理中的边缘检测方法来得到边缘检测直方图,以边缘检测得到的直方图作为神经网络算法的输入层,以此人的年龄,身高,体重作为神经网络的隐含层,以此人的身体外表数据(三维,臂长,腿长等等)作为神经网络的输出层,通过大量的数据进行训练后可以得到一个模型,当人们在选择性别和年龄之后再次输入实验对象的三张照片时,自动输出此人的身体外表数据。三维重建的实现:三维人体重建步骤:首先导入图片,对图片进行预处理,读取和存储图片的相关数据。完成后,导入标准数据模型,基于特征点的人体三维常见模块开始与图片数据进行算法运算,完成特征点的人体三维重建,并对重建后的三维虚拟人模型进行数据存储,调动存储的经过特征点三维虚拟人体模型数据,进行部分位逐层重建,最后进行纹理映射,从而完成人体的三维重建,所用到的关键技术为基于图片的人体三维重建和纹理映射。详细步骤:(1);导入人体照片,读取并存储照片中的像素数据(2):图片预处理,选择图片二值化方法对照片进行二值化,然后将经过二值化的照片提取照片中的轮廓数据并进行存储(3):进行基于特点的人体三维化,首先在标准三维人体模型中标注出特征点,然后对照片中人体轮廓的特征点进行标注,最后根据基于特征点的人体三维重建方法对标准人体模型进行特化。(4)判断是否需要进行分部位逐层重建,如果照片中人体轮廓与标准人体模型中各个部位数据相差±1cm,经过基于特征点的人体三维特化就能够得到所需要的人体三维模型,则不需要进行分部位逐层重建。这时只需要对三维模型进行参数化微调,得到更高精度的三维模型;否则需要对特化的三维人体模型进行进一步的分部位组成重建。(5);分部位逐层重建,在此步骤中先划分人体模型和照片轮廓中的部位,选择相同部位,逐层位移变化。(6):判断人体三维重建是否完成,完成则跳至步骤8,否则继续进行。(7):导入侧面图片,读取并存储,跳至步骤2;(8):纹理贴图。部分方法的具体过程:(1)照片基于像素的二值化本系统中所有的图片其前提都是经过图像处理软件处理过,把需要变换的人体从背景中抠出来,形成的一幅新的图片,没有背景与前景的模糊,所以采用最基本的固定门限二值化方法就可以满足系统的需求。图像二值化方法实现步骤如下:step1:确定阈值t。step2:判断:像素值<t,像素值归0;否则,像素值为255。(2)人体轮廓的提取和存储经过图像分割后,原图像成为二值化图像,图像轮廓提取算法就变得非常简单。二值图像轮廓的提取算法就是掏空内部点。如果原图中有一点为黑,且它8个相邻点都是黑色时,判定该点是图像的内部点,将该点像素值置为255。经过这样的算法处理后,最后留下来的点即是图像的轮廓。人体轮廓提取实现步骤如下:step1:判断点是否为边界点,如果是则直接将该点像素值置为255,如果不是则继续下一步。step2:判断改点与周围8个点的像素值是否相等,如有一个不相等则保留改点像素值。否则将改点像素值置为255。(3)基于特征点的人体三维重建:基于特征点的人体三维重建是指首先选定标准三维人体模型,在标准三维人体模型上标注出反映人体特征的特征点;然后从已知的图片中提取人的相应的正面、侧面轮廓,根据轮廓提取特征点的信息,将这些信息和标准三维虚拟人的正面、侧面投影图中提取的特征点信息进行比对,求出特征点的位移转换矩阵;最后分别根据正面和侧面的转换矩阵,来估计标准虚拟人模型上任意顶点到真人模型上的对应顶点的三维空间中的近似变换关系,这样就重构出近似图片中人体的三维模型。如图2所示,基于特征点的人体三维重建方法整个实现步骤如下:给定一组包含人体正面、侧面、背面的图片和一个标准三维人体模型,将标准三维人体模型中的特征点经过坐标变换,得到与图片中人体的的形态近似的三维人体模型。step1:对图片进行预处理。读取和存储图片中的灰度值,将图片二值化,提取图片中人体的外围轮廓。step2:对标准虚拟人按部位进行剖分,并标定各部位变化的特征点,得到特征点的数据。(详见(4)标准虚拟人模型的部分划分与特征点的标注①)step3:对所提取的图片中的人体轮廓,按照标准虚拟人所剖分的部位和标定的特点标定轮廓中相应的特征点,并得到这些特征点的数据。(详见(4)标准虚拟人模型的部分划分与特征点的标注②)step4:图片中人体轮廓的特征点与标准虚拟人模型的特征点对应,按照特征点坐标位移变换算法,对标准虚拟人模型的点进行坐标变换,得到与轮廓中人体形态相近的虚拟人模型。(详见(5)特征点位移变换算法)。(4)标准虚拟人模型的部位划分与特征点的标注①基于特征点的三维重建方法首先必须在标准三维模型中标定特征点。本系统中将人体的特征数据按照算法需求的结构进行几个划分,将一个完整的虚拟人模型划分为下列结构部分:上头部、下头部、颈部、胸部、腹部、腿部、脚部、手臂、手掌如图3所示。模型中特征点设定与人体轮廓对应特征点标注如图4、图5所示。正面和侧面特征点的说明如表1、表2所示:表1人体正面轮廓特征点说明表2人体侧面轮廓特征点说明特征点特征点对应人体模型部位h1头顶h2胸部顶点h3腹部顶点h4脚后跟h5脚趾间②数据存储结构的设定系统对人体模型数据的需求有:a.标准模型显示是绘制标准模型是按照面取点来绘制的,则需要点的拓扑关系;b.点的x、y、z轴坐标必须;c.模型分为几个部位,每个部位都是由点组成,因此点的数据结构中必须包含点所属面的标志;d.在纹理贴图算法中需要判断面的对应图片的正面和背面图片,因此必须在面的存储结构中包含正反面标识;e.同样在纹理贴图算法中是根据点所对应图片中点的坐标来进行纹理贴图的,因此必须包含点对应图片中的二位坐标;(5)特征点位移变换算法标准三维虚拟人模型中的部位切分和特征点标注之后,在对应的图片中标准相应的特征点,并取得这些特征点的数据,然后进行特征点位移算法。(51)特征点对应的特征部位的y轴方向的位移算法即确定特征部位高度的算法。本发明中以躯干(胸部和腹部)为参考体,在y轴方向上的位移均以其固定高度为参考。下面以头部的高度变换为例介绍y轴方向的位移算法。如图6中图片人体轮廓头部高为h1,躯干长度为h2,标准虚拟人模型头部高为m1,身区干长度为m2,将虚拟人头部高度与其躯干的比与图片中人体轮廓的头部高度与轮廓的躯干的比相等,那么即可说两者在的头部特征部位在高度上是相似。假定虚拟人头部任意一点point(x,y,z),求其位移公式。计算步骤如下:①出比例变换关系:设变换比例为bilv,由已知条件得h1/h2=m1/m2*bilv(1-1)由式1-1可得:变换bilv=h1*m2/(h2*m1)②部底部是变化特征点,由要求可知为已知,设为(x1,y1,z1),所求点point离头部最低点的距离为:juli=y-y1;③point的y轴位移后的坐标则为:y=y1+juli*bilv运用到此算法的部位变化的有:头部的高度,腿部的高度。(52)特征点对应的特征部位的x轴方向的位移算法x轴方向上的位移算法是指模型上的特征部位在水平部位上与图片中对应的特征位相似。以头部的任意一点的x轴方向的位移求算为例。如图7中所示的图片人体头部轮廓的高为h1,特征点所在特征划分出宽度为v1;标准虚拟人头部高为m1,对应特征切线处宽度为n1。求标准虚拟人头部任意一点的位移公式。计算步骤如下:①x轴方向上的中间值为参考轴。先求变换系统,设变换系数为xbilv,由已知条件得:w1/h1=nl/m1*xbilv(式1-2)由式1-2可得xbilv=w1}m1/(h1*m1)②x轴中间值为参考轴,设为x1,则可能点point位移变化后的坐标为:x’=x1+(x-x1)*xbilv。特征部位需要经过上面两种算法进行位移变化,本系统定义先进行y轴方向的位移变换,再进行x轴方向上的位移变换。运用到x轴方向位移的算法有头部、手臂长短、胸部、腹部,手掌的长短。(53)特殊部位的变换算法人体各部位的都具有各自的特点,因此必须对各部位的位移算法区别出来。本发明只对头部和腿部进行y轴方向的位移算法,对头部,胸部,腹部,手臂进行x轴方向的位移算法。颈部只定义粗细变化,且不根据图片中人体的颈部来比对变换,脚部粗细和手臂粗细均不是用上面两种算法来实现的。腿部粗细的变化是先将腿部按y轴方向进行切片,对每片先判定是点属于左腿还是右腿,然后以腿内侧的轮廓点为参考点,取位移比例向右或向左靠拢腿内侧轮廓线,从而实现腿部粗细的变化。如图8所示。手臂粗细的变化则是将手臂按x轴方向进行切片,对每片取y轴最大坐标的点为参考点,按照位移比例对每片中的其余点进行坐标变化。脚的长短变化是以脚后跟中的点的z轴坐标最小的值为参考点,对脚掌所属的所有的按照位移比例进行位移变化。(54)特征部位外围弧度的变化算法进行特征点位移变换。人体的不同部位的曲率变化不同,且同一部位的局部曲率变化也很大,因此必须设计一个曲率算法,以使经过特征点位移变化后人体轮廓曲线与真实人体曲线最大程度的相近。本发明设计的曲率变化算法如图9所示。abcd为一个特征部位,点a、c为特征点,首先按照上述算法求得a点和c点的位移系数f1和f2,弧ac的曲率变化算法实现步骤:①将弧ac按y轴进行切片,切片数目设为n;②a点为开始变化处,取弧ac上的任意一点e(x3y3);③定e点所在片:(y3-y1)/((y2-y1)/n)对结果取整则得到点所在的片序,假定结果为m;则弧ac上e点的位移系数f3=f1+f(f2-f1)*m;④根据x轴方向上的位移算法得到点e变化后的坐标;⑤遍历弧ac上所有点,重复以上步骤,得变化后的弧形。从算法原理上可以看出,对弧ac的切片数目的不同,其变化曲率则会不相同,本发明中对每个特征部位的切片数目都可以自定,以此来达到外围轮廓与图片中人体最大程度的近似。(6)分部位逐层重建是指对比经过基于特征点的人体三维重建后虚拟人模型与图片中真实人体轮廓的区别,选取其中细节需求较大的部位进行切片重建。其实现步骤如下:step1:对经过特征点的人体模型进行部位切分。step2:比较各部位与图片中人体轮廓的对应部位,选取其中细节差别较大,需要进一步重建的部位。(详见(7)进一步重建);step3:按照分部位逐层重建的算法(对经特征点重建后的虚拟人模型进行部位划分后,选取需要进行切片重建的部位进行切片,对每片中的点运用分部位逐层重建点位移算法进行位移变化。)进行重建。(详见(7)进一步重建);(7)进一步重建①分部位逐层重建对虚拟人体模型的部位划分分部位逐层重建中对虚拟人模型的划分为头部、颈部、躯干、大腿、脚部和手臂(包含手掌);②分部位逐层重建中点的位移算法对经特征点重建后的虚拟人模型进行部位划分后,选取需要进行切片重建的部位进行切片,对每片中的点运用分部位逐层重建点位移算法进行位移变化。图10中,(a)表示图片中真实人体某部位的轮廓,图(b)表示经特征点重建后虚拟人模型中对应部位的轮廓。直线l1为真实人体的参考轴,直线l2为虚拟人模型中对应l1直线的参考轴。选取虚拟人部位中任意一点point(x,y,z),求其位移变化算法。具体实现如下:a.读取真实人体轮廓部位的轮廓数据,得到轮廓在y轴的高度为m,然后对虚拟人模型部位进行切片,切为m片;b.计算点point所在的片数;c.对比参考轴判断点是在所在片数的参考轴l2的左边还是右边d.选取人体轮廓中对应y轴坐标的轮廓数据,也就是读取轮廓数据中的对应左边或者右边的坐标,求得其轮廓点与参考轴l1的距离为x1;e.计算模型中点point所在片对应的左边或者右边的最外围轮廓点距离参考轴的距离为x2;f.求得模型中模块的高度为n;g.则点point所在的片中的点的位移系数公式为:x1/m=x2/n*bilv(比例系数bilv=(x1*n)/(m*x2));h.点经过位移算后的坐标为:在参考轴左边xx=l2-(l2-x)*bilv;在右边xx=l2+(x-l2)*bilv。(8)纹理贴图具体步骤:a.对模型进行分部位,纹理贴图中的模型部位划分为:头部、脖子、躯干、腿部、脚部、手臂和手掌。b.模型是按三角面片来绘制的,对每个面片进行正反面判定,分别绑定正面纹理和背面纹理,定义纹理贴图。c.计算面片中每个点对应图片中的二维坐标,定义纹理坐标。d.控制纹理贴图,实现每个面片的纹理映射,从而实现整个模型的纹理贴图。三维重建框图:边缘检测直方图的获取过程1.通过canny算子检测到边缘图像;canny算子求边缘点具体算法步骤如下:a.用高斯滤波器平滑图像.b.用一阶偏导有限差分计算梯度幅值和方向.c.对梯度幅值进行非极大值抑制.d.用双阈值算法检测和连接边缘.2.获取图像的边缘后,利用以下公式计算边缘点的梯度方向角及模值其中θ(x,y)为。(x,y)处的方向,m(x,y)为(x,y)处的模值,l(x,y)表示(x,y)处的灰度值从而得到边缘检测的直方图。神经网络具体结构神经网络模型如图11所示。1.输入层:神经元节点个数=人体轮廓特征点个数,其中正面人体特征点12个,侧面人体特征点5个,共计17个;2.隐含层:将训练样本的年龄,身高,体重作为神经网络的隐含层,即神经元节点个数=3;3.输出层:将样本的外表数据(三维,臂长,腿长,腿围,肩宽等)作为神经网络的输出层,神经元节点个数=人体的外表数据个数,共计7个。算法训练算法训练过程:首先选择大量(样本数量>=100)不同小孩的照片样本,通过神经网络来进行训练得到一个小孩的神经网络模型,其次选择大量(样本数量>=100)不同女性的照片样本,通过神经网络来进行训练得到一个女性的神经网络模型;最后选择大量(样本数量>=100)不同男性的照片样本,通过神经网络来进行训练得到一个男性的神经网络模型。这些照片的都是现场拍照(在可以照到人全身的前提下,人体距离相机的距离小于1.5米),并经过处理之后的照片(三维重建,边缘检测)。算法训练框图如图12所示。注意:为了达到较高的精度就需要用户在指定的范围内拍照(在可以照到人全身的前提下,人体距离相机的距离小于1.5米)。以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本
技术领域
的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1