发明内容
本发明的目的在于提供一种基于人体姿态识别技术自动批量根据图像获取人体身高测量数据的方法和装置。
本发明公开了一种基于人体姿态识别的身高测量方法,包括:
通过图像获取装置获取包括人体姿态的场景图像;
去除场景背景,分割获取场景图像中的人体图像;
对人体图像进行人体姿态识别,判断人体姿态是否为直立,如果是,则通过计算人体图像最高点和最低点之间的空间实际距离获得人体身高;
其中,通过将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标,并基于转换得到空间实际坐标计算人体图像像素点对应的人体部位之间的空间实际距离。
优选地,所述方法还包括:
如果判断人体姿态不是直立状态,则对人体图像进行人体姿态识别,判断人体姿态是否为张开双臂,如果是,则通过计算人体图像最左点和最右点之间的空间实际距离获得人体身高;如果否,则通过人体姿态识别分割人体图像中构成身高或臂展的不同身体部分,并分别计算所述构成身高或臂展的不同身体部分的空间实际长度,对所述构成身高或臂展的不同身体部分的空间实际长度求和估算人体的身高或臂展获得人体身高;
其中,通过将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标,并基于空间实际坐标计算人体图像像素点对应的人体部位之间的空间实际距离。
优选地,所述图像获取装置为深度传感器,所述场景图像为深度图像,所述深度图像的像素信息包括像素坐标和该像素对应的场景点的空间实际坐标;
所述将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标包括,根据所述深度图像的像素信息将像素坐标转换为对应人体部位的空间实际坐标。
优选地,所述图像获取装置为二维图像拍摄装置,所述场景图为二维图像,所述方法通过在人体距离所述二维图像拍摄装置预定距离情况下进行拍摄来获取图像;
所述将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标包括,通过下式来基于像素坐标求解成像物点的空间实际坐标:
其中,(Xw,Yw,Zw)为场景点空间实际坐标,空间实际坐标系的原点取所述二维图像拍摄装置的镜头光心位置,(u,v)为对应像素的像素坐标,(uo,vo)为图像中心的像素坐标,fu,fv分别为X和Y方向的等效焦距,fu、fv、uo、vo为二维图像拍摄装置的内部参数,Zw等于所述预定距离。
优选地,所述图像获取装置为获取图像序列的连续图像拍摄装置,所述方法根据所述图像序列中至少两个时刻所对应的图像分别计算至少两个人体身高值,以所述至少两个人体身高值的平均值作为身高测量值,或者将在所计算得到的人体身高值中出现次数最多的人体身高值作为身高测量值,或者将在所述计算得到的人体身高值中出现次数最多的人体身高值与根据相邻帧图像计算得到的人体身高值的加权平均值作为身高测量值。
优选地,所述构成身高的不同身体部分为头部、躯干、大腿和小腿;
所述构成臂展的不同身体部分为肩宽、左上臂、左下臂、左手掌、右上臂、右下臂、右手掌。
本发明还公开了一种基于人体姿态识别的身高测量装置,包括:
场景图像获取模块,用于通过图像获取装置获取包括人体姿态的场景图像;
人体图像获取模块,用于去除场景背景,分割获取场景图像中的人体图像;
第一身高计算模块,用于对人体图像进行人体姿态识别,判断人体姿态是否为直立,如果是,则通过计算人体图像最高点和最低点之间的空间实际距离获得人体身高;
其中,通过将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标,并基于转换得到空间实际坐标计算人体图像像素点对应的人体部位之间的空间实际距离。
优选地,所述装置还包括:
第二身高计算模块,用于在判断人体姿态不是直立状态时,对人体图像进行人体姿态识别,判断人体姿态是否为张开双臂,如果是,则通过计算人体图像最左点和最右点之间的实际距离获得人体身高;如果否,则通过人体姿态识别分割人体图像中构成身高或臂展的不同身体部分,并分别计算所述构成身高或臂展的不同身体部分的空间实际长度,并对所述构成身高或臂展的不同身体部分的空间实际长度求和估算人体的身高或臂展获得人体身高;
其中,通过将人体图像的像素点的像素坐标转换为对应人体部位的空间实际坐标,并基于转换得到空间实际坐标计算人体图像像素点对应的人体部位之间的空间实际距离。
优选地,所述图像获取装置为深度传感器,所述场景图像为深度图像,所述深度图像的像素信息包括像素坐标和对应的场景点的空间实际坐标,所述第一身高计算模块和第二身高计算模块根据所述深度图像的像素信息将像素坐标转换为对应人体部位的空间实际坐标。
优选地,所述图像获取装置为二维图像拍摄装置,所述场景图为二维图像,所述二维图像拍摄装置通过在人体距离所述二维图像拍摄装置预定距离情况下进行拍摄来获取图像,所述第一身高计算模块和第二身高计算模块通过下式来基于像素坐标求解成像物点的空间实际坐标:
其中,(Xw,Yw,Zw)为成像物点空间实际坐标,空间实际坐标系的原点取所述二维图像拍摄装置的镜头光心位置,(u,v)为像素的像素坐标,(uo,vo)为图像中心的像素坐标,fu,fv分别为X和Y方向的等效焦距,fu、fv、uo、vo为二维图像拍摄装置的内部参数,Zw为所述预定距离。
本发明通过对人体姿态的自动识别,对直立、张开双臂和其它姿态的人体图像采用不同的身高计算方式,在图像中的人体处于难以直接估算其身高的姿态时,利用其构成身高或臂展的不同部位的长度求和来估算人体身高,自动化程度高,处理效率大大高于现有技术。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
图1a和图1b是本发明实施例进行身高求和测量原理图。
人体直立,即,人体为竖直站立状态,此时人体的头、躯干、大腿和小腿大致呈直线且该直线与地面垂直。在人体直立时,人体身高可以通过人体最高点与最低点的高度差来计算。
同时,经过统计发现,人体张开双臂时的长度与身高比较接近,身高可以用人体张开双臂时的臂展长度近似求得。张开双臂,是指人体双臂展开,人体的手臂与人体躯干平面位于同一平面内,并与人体的肩部大致呈直线的状态。当人体张开双臂时,人体身高可以通过计算人体最左点和最右点之间的空间实际距离获得。
当人体处于非直立状态,也非张开双臂的状态时,人体身高可以通过对人体不同部分进行求和来近似获得,如图1a所示,可以通过对构成人体身高的不同身体部分长度求和来求取身高:
身高=头的高度+躯干高度+大腿长度+小腿长度 (1)
或者,如图1b所示,通过求和计算人体臂展来获得近似身高:
身高=肩宽+左上臂长度+左下臂长度+左手掌长度+右上臂长度+右下臂长度+右手掌长度 (2)
其中,测量臂展以及求和估算臂展来测量身高适用于图像中没有显示人体全部部分的场合。
图2是本发明实施例进行身高测量的方法流程图。所述方法包括如下步骤:
步骤100、通过图像获取装置获取包括人体姿态的场景图像。
步骤200、处理所述场景图像,分割获取图像中的人体图像。
在该步骤中,可以通过连通域检测或图像检测获取图像中人体的像素信息,将场景图像中人体像素以外的其它背景信息去除后,剩下的图像就只有人体,使得图像中除了人体图像之外的像素的数值都是零。
步骤300、通过对人体图像进行人体姿态识别来判断人体姿态是否为直立,如果是,则执行步骤400,如果否,则执行步骤500。
中国专利申请CN101576953A公开了一种人体姿态的分类方法,通过跟踪图像中的人体区域,对人体区域进行人体形状的提取,获得人体外轮廓,并根据人头位置信息、图像长宽比来对图像中的人体姿态进行分类,该申请还公开了根据人工标定的一组人体外轮廓的特征向量作为训练样本输入到分类器的训练模块,通过训练建立人体姿态的分类器,并进一步根据分类器来实现对于图像中的人体姿态的分类。该人体姿态的分类器可以是Adaboost(自适应增强算法)分类器、SVM(支持向量机)分类器或神经网络等。
中国专利申请CN101989326A公开了一种人体姿态的识别方法,通过提取深度图像中的特征信息与预订的模板数据库进行匹配以搜索最匹配的模板动作姿态。
通过以上方法能够实现对于深度图像或普通二维图像的人体姿态识别,从而判断人体姿态是直立或是处于其他姿态。当然,本发明对于人体姿态的判断并不限于以上文献所公开的方法。任何现有技术中可供利用的任何方法均可用来进行本步骤的人体姿态识别。
步骤400、通过计算人体图像中像素最高点和最低点之间的空间实际距离获得人体身高,结束流程。
在该步骤中,可以通过直接在图像像素中搜索垂直坐标值最大和最小的非零像素即得到人体图像的最高点和最低点,通过像素坐标-空间坐标变换可以获得所述最高点和最低点对应的人体部位的空间实际坐标,从而可以根据直立人体的最高点和最低点的空间实际坐标计算其空间实际距离从而获得人体身高。这里,像素坐标是指表示像素在图像中所处位置的坐标,像素坐标系是一个二维的坐标系,同时空间实际坐标是指表示物体在现实世界中所处位置的坐标,空间实际坐标系(也称为世界坐标系)是一个三维坐标系。空间实际距离是指在现实场景中,两点之间的直线距离,其可以通过空间实际坐标计算得到。
步骤500、通过对人体图像进行人体姿态识别判断人体姿态是否为张开双臂,如果是,则执行步骤600,如果否则执行步骤700。
步骤600、通过计算人体图像最左点和最右点之间的空间实际距离获得人体身高,结束流程。
在该步骤中,可以通过直接在图像像素中搜索水平坐标值最大和最小的非零像素即得到人体图像的最左点和最右点,通过图像坐标-空间坐标变换可以获得所述最左点和最右点对应的人体部位的空间实际坐标,从而可以根据张开双臂人体的最左点和最右点的空间实际坐标计算其空间实际距离获得其臂展长度,从而获得估计得人体身高。
步骤700、通过人体姿态识别分割人体图像中构成身高或臂展的不同身体部分,用线段代表相应的人体身体部分。例如,头部、躯干、大腿、小腿或肩部、手臂等或者用点表示相应的人体部分的关节,如肘关节,肩关节等。
文献“Articulated Human Pose Estimation and Search in(Almost)Unconstrained Still Images”Eichner,M.and Marin-Jimenez,M.andZisserman,A.and Ferrari,V.,ETH Zurich,D-ITET,BIWI,Technical ReportNo.272,September 2010以及对应的网站公开了一种人体识别算法及***(http://www.vision.ee.ethz.ch/~calvin/articulated_human_pose_estimation_code/),所述算法和***可以通过处理二维人体图像识别分割得到图像中的不同姿态的人体的各部分,例如人体的头部、躯干、大臂、小臂、手以及大腿和小腿等。
文献“Real-Time Human Pose Recognition in Parts from Single DepthImages”.Jamie Shotton,Andrew Fitzgibbon,Mat Cook,Toby Sharp,MarkFinocchio,Richard Moore,Alex Kipman,and Andrew Blake.CVPR,2011公开了一种深度图像实时人体姿态部分识别方法,通过对深度图像进行处理将困难的姿态估计问题转化为简单的逐像素分类问题实现了从深度图像中分离获取人体关节部位信息的目的。
通过以上方法能够实现对于深度图像或普通二维图像的人体关键点识别分割。当然,本发明对于人体姿态的判断并不限于以上文献所公开的方法。
步骤800、分别计算所述不同身体部分的空间实际长度,并对所述构成身高或臂展的不同身体部分的空间实际长度求和估算人体的身高或臂展获得人体身高。
将识别获得的人体关键点,例如,构成上臂的肩关节和肘关节的像素点的像素坐标提取得到,然后对识别得到的各部分图像坐标-空间坐标变换可以获得像素点对应的场景点(也即上述的人体关键点)的空间实际坐标,根据空间实际坐标计算其空间实际长度,例如通过计算肩关节和肘关节的空间实际距离获得人体上臂的实际长度。
其中,在上述步骤400中,当人体直立时,要求图像获取装置能拍摄人体全身的图像。通过搜索获得人体图像中的最高点像素坐标和最低点像素坐标。通过像素坐标-空间实际坐标变换,根据图像中直立人体最高点的像素坐标(umax,vmax)和最低点的像素坐标(umin,vmin),计算获取得到的人体最高点空间实际坐标(xmax,ymax,zmax)和最低点的空间实际坐标(xmin,ymin,zmin)。根据下式计算直立人体身高:
H=ymax-ymin (3)
在上述步骤600中,当图像中人体为张开双臂时,此时要求图像获取装置能拍摄人体上半身的深度图像。通过搜索获得人体图像中的最右点像素坐标和最左点像素坐标。通过像素坐标-空间实际坐标变化,根据图像中直立人体最右点的像素坐标(uright,vright)和最左点的像素坐标(uleft,vleft),计算获取得到的人体最右点空间实际坐标(xright,yright,zright)、最左点(xleft,yleft,zleft)。根据下式计算直立人体身高:
H=xright-xleft (4)
深度传感器在获取场景深度图像时,场景内的每一个点(场景点)被投影到成像平面,形成图像的像素,因此,深度图像的每一个像素都存在与之对应的场景点。举例来说,图1b中人体图像的指尖处的像素对应于现实场景中人体的指尖位置。深度传感器在形成深度图像时会计算获取深度图像的像素坐标与对应的场景点之间的空间实际坐标。深度图像中的每个像素的信息包括{(u,v)(x,y,z)},其中(u,v)用于表示该像素在图像中的位置,(x,y,z)用于表示该像素对应的场景点的在空间中的位置,即,该像素对应的部分的空间实际坐标。对于本实施例的深度图像,根据深度传感器所使用技术的不同,其空间实际坐标的原点的选取方式可有不同,例如,采用结构光测距的深度传感器,其空间实际坐标系(也可称为世界坐标系)的坐标原点通常设定在摄像机焦距处,如图3所示。由此,通过图像像素坐标与空间实际坐标的一一对应关系,即可根据图像像素坐标获取像素点的空间实际坐标。
需要进一步说明的是,在本实施例中,由于后续计算人体身高时,采用的是计算图像关键像素点所对应的场景点之间的空间实际距离的方式,其仅仅与场景点之间的相对距离有关,与坐标系原点的位置无关,因此,像素坐标以及空间坐标原点的选取方式实际上对于后续计算人体身高没有影响,只要深度传感器在形成的深度图像的像素信息包括对应的像素坐标和场景点空间实际坐标即可。
图4是二维图像成像的模型示意图。如图4所示,在本发明的另一个实施例中,采用二维图像拍摄装置作为所述的图像获取装置来获取包括人体的场景图像,此时,要求获取图像时,人体距离二维图像拍摄装置的距离为一已知的预定距离,例如2.5米。在人体距离所述二维图像拍摄装置距离已知时,即可通过坐标变化将像素坐标转换为人体的空间实际坐标。二维图像拍摄装置获取的图像可分为灰度图像和彩色图像,黑白图像中,每个像素的信息包括{(u,v),I(u,v)},彩色图像中每个像素的信息包括{(u,v)(r,g,b)},其中,(u,v)为该像素的像素坐标,I(u,v)为该像素的灰度值,(r,g,b)为该像素的色彩取值。
在本实施例中,使用小孔成像模型来进行像素坐标-空间实际坐标的变换。如图4所示,场景中的场景点在图像获取装置的成像平面上成像形成对应的图像像素点,(Xw,Yw,Zw)为场景点的空间实际坐标,(u,v)为对应的成像点像素的像素坐标。其中,以图像获取装置的镜头透镜光心处为空间实际坐标系的原点,则根据小孔成像原理,成像平面距离所述空间实际坐标系原点距离为焦距f。
根据三角形相似原理,像素坐标与对应场景点的空间实际坐标存在如下关系:
(5)
其中,(uo,vo)为图像中心(光轴与图像平面的交点)坐标,图像中心坐标实际上表述了像素坐标系相对于所述图像中心的位置,只要给出图像中心坐标,像素坐标系的原点可以根据需要选取成像平面的任意位置。fu=f/dx,fv=f/dy分别定义为X和Y方向的等效焦距,上式中,f为摄像机镜头焦距,dx、dy为摄像机图像像素在x轴和y轴方向的尺寸。fu、fv、uo、vo这4个参数只与摄像机内部结构有关,因此称为摄像机的内部参数,这些参数可以直接从摄像机获得。
在已知人体距离摄像机的距离Zw以及上述摄像机的内部参数的情况下,通过公式(5)可以根据像素坐标计算得到对应的空间实际坐标(Xw,Yw,Zw)。
在本发明的另一实施例中,可以从视频中,也即连续的图像序列中统计身高,以获取更高的精度。在该实施例中,可以从图像序列选择与不同时刻分别对应的多帧图像,根据选取的多帧图像分别计算多个人体身高值,然后对计算得到的人体身高值求平均,将该平均值作为人体身高测量值。例如,选取视频的t1、t2、……tn时刻对应的n个图像,根据选取的n个图像分别计算得到n个人体身高值,对该n个人体身高值进行求取平均,将平均值作为人体身高测量值。
除了计算平均值来从多帧图像获取更加精确的人体身高测量值外,还可以根据视频的不同时刻分别对应的多帧图像计算多个人体身高值,建立该计算得到的多个身高值的直方图,将直方图中出现次数最多的柱体对应的身高数值(也即该多个人体身高值中出现/重复次数最多/频率最高的身高值)为人体身高测量值。例如,选取视频的t1、t2、……tn时刻对应的n个图像,根据选取的n个图像分别计算得到n个人体身高值,其中某一身高值x在n次估算中出现了m次,是出现次数最多的人体身高值,那么选取身高值x作为人体身高测量值。
另外,还可以求直方图中出现次数最高的柱体相邻的多个柱体对应身高数值的加权平均作为人体身高测量值,其中每个身高数值的加权权重为该柱体数值在整个直方图中的出现次数。例如,在计算得到的n个人体身高值中,其中某一身高值x在n次估算中出现了m次,是出现次数最多的人体身高值,则选取该身高值x出现的时刻两侧相邻的身高值x1,x2,......x2m,将这些身高值按照在n次估算中出现的次数进行加权平均,将结果作为人体身高测量值。
图5为本发明的身高测量装置的框图。如图5所示,所述身高测量装置包括场景图像获取模块、人体图像获取模块、第一姿态判断模块、第二姿态判断模块、直立身高计算模块、臂展身高计算模块、人体图像分割模块和身高求和模块。
其中,场景图像获取模块用于通过图像获取装置获取包括人体姿态的场景图像;
人体图像获取模块用于处理所述场景图像,分割获取图像中的人体图像;
第一姿态判断模块用于进行人体姿态识别判断人体姿态是否为直立;
第二姿态判断模块用于进行人体姿态识别判断人体姿态是否为张开双臂;
直立身高计算模块用于在第一姿态判断模块判断人体姿态为直立时,通过计算人体像素最高点和最低点之间的空间实际距离获得人体身高;
臂展身高计算模块用于在第二姿态判断模块判断人体姿态为张开双臂时,通过计算人体图像最左点和最右点之间的空间实际距离获得人体身高;
人体图像分割模块用于在第一姿态判断模块判断人体姿态不为直立,且第二姿态判断模块判断人体姿态不为张开双臂时,通过人体姿态识别分割人体图像中构成身高或臂展的不同身体部分,用线段代表相应的人体身体部分或用关键点标识人体关节部位。
身高求和模块用于分别计算所述不同身体部分的空间实际长度,并对所述构成身高或臂展的不同身体部分的长度求和估算人体的身高或臂展获得人体身高。
其中,第一姿态判断模块和直立身高计算模块共同构成了第一身高计算模块;第二姿态判断模块、臂展身高计算模块、人体图像分割模块和身高求和模块共同构成第二身高计算模块。
本发明通过对人体姿态的自动识别,对直立、张开双臂和其它姿态的人体图像采用不同的身高计算方式,在图像中的人体处于难以直接估算其身高的姿态时,利用其构成身高或臂展的不同部位的长度求和来估算人体身高,自动化程度高,处理效率大大高于现有技术。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。