CN110037373A - 一种基于边界跟踪的人体尺寸测量方法 - Google Patents
一种基于边界跟踪的人体尺寸测量方法 Download PDFInfo
- Publication number
- CN110037373A CN110037373A CN201910465350.8A CN201910465350A CN110037373A CN 110037373 A CN110037373 A CN 110037373A CN 201910465350 A CN201910465350 A CN 201910465350A CN 110037373 A CN110037373 A CN 110037373A
- Authority
- CN
- China
- Prior art keywords
- human body
- point
- shoulder
- neck
- pixel
- 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
Links
Classifications
-
- A—HUMAN NECESSITIES
- A41—WEARING APPAREL
- A41H—APPLIANCES OR METHODS FOR MAKING CLOTHES, e.g. FOR DRESS-MAKING OR FOR TAILORING, NOT OTHERWISE PROVIDED FOR
- A41H1/00—Measuring aids or methods
-
- A—HUMAN NECESSITIES
- A41—WEARING APPAREL
- A41H—APPLIANCES OR METHODS FOR MAKING CLOTHES, e.g. FOR DRESS-MAKING OR FOR TAILORING, NOT OTHERWISE PROVIDED FOR
- A41H1/00—Measuring aids or methods
- A41H1/02—Devices for taking measurements on the human body
Landscapes
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Engineering & Computer Science (AREA)
- Textile Engineering (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Length Measuring Devices By Optical Means (AREA)
Abstract
本发明公开了一种基于边界跟踪的人体尺寸测量方法,首先采用多线程技术实现了正侧面图像的同步拍摄;接着提出了一种基于优先搜索方向的边界跟踪算法获得正面和侧面图像中的人体轮廓,在此基础上,研究了人体关键特征点的定位方法,建立了人体主要尺寸的计算模型,最终得到人体的主要尺寸。本发明提出的人体尺寸测量方法成本低且有较高的准确性和较好的可操作性。
Description
技术领域
本发明属于数字图像处理技术领域,具体涉及了一种基于方向优先搜索边界跟踪的人体尺寸测量方法。
背景技术
传统的人体测量方法主要是普通手工测量,采用的测量仪器较为简单,价格低廉,主要有软尺、角度计、测高计和滑动计等,其数据处理采用人工处理或者人工输入与计算机处理相结合的方式。传统的测量方法简单易行,但是在测量过程中,由于人体为弹性活体,真实尺寸很难通过常规测量获得。而且不同的测量人员对同一被测者的同一部位所测得的尺寸差异较大,不能保证测量结果的唯一性,因此不适合大规模的人体数据采集。
在近二、三十年里,非接触式人体测量方法被深入研究,并广泛应用于生产生活中。这些方法主要是通过一些设备仪器来获得人体表面信息,便于批量进行人体测量工作。具有测量精确、快捷、自动化程度高的特点,比较常见的有莫尔条纹法、激光测量法、立体摄像测量法、红外线测量法等,但是由于其设备昂贵,多用于科研领域,不利于推广使用。
基于机器视觉方法的三维人体测量技术以其独特的优势,已经被应用到与人体相关的各类产品的设计与研究中。这种技术以现代光学为基础,利用光栅原理,将白光、红外线或激光等光线投射到人体表面形成图像,再利用光敏设备进行捕捉,最后通过电脑图像处理来描述人体三维特征。如今已成形的基于机器视觉技术的三维人体测量系统在国内外也相当多,国际上常用的人体扫描仪有Telmat的CyberwareWB4、TechMath-RAMSIS、Vitronic-Vitus、SYMCAD、Turbo Flash/3D、TC2-3T6等。这些三维人体测量技术可以快速获取人体的三维数据,但是这些3D文件往往会占用大量的存储空间,因此会带来额外的开销。
为了降低人体尺寸测量的成本,提高测量结果的准确性,本发明提出一种新的人体尺寸测量方法。该方法首先采集同一人体正面和侧面图像,接着采用基于优先搜索方向的边界跟踪算法获得正面和侧面图像中的人体轮廓,在此基础上,定位人体关键特征点,建立人体主要尺寸的计算模型,最终得到人体的主要尺寸。实验结果表明,本发明可以较为准确的获得人体各个主要部位的尺寸,能够较好的满足自动化测量以及服装定制等商业需求。
发明内容
发明目的:为克服现有人体尺寸测量技术的不足,本发明提供一种基于边界跟踪的人体尺寸测量方法,通过使用多线程技术减小正侧面拍摄的时间误差,并以边界跟踪算法得到人体轮廓像素坐标,分析人体特征点,较为准确的求出人体尺寸。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于边界跟踪的人体尺寸测量方法,首先,对相机进行标定,并利用多线程技术,通过控制标志位来同步拍照。其次,对图片进行二值化处理,得到图像的前景和背景。接着,使用基于方向优先的边界跟踪算法提取出人体轮廓的像素坐标。最后,分析人体轮廓的像素坐标,求出人体特征点,计算出人体的主要尺寸。包括以下步骤:
步骤1、人体图像采集过程使用两台照相机,同时拍摄人体正面图像与侧面图像。为保证正侧面图像拍摄的同步性,使用多线程控制标志位的方式保证相机拍照同步。
步骤2、将采集到的图像进行二值化处理,得到人体图像的前景与背景,图像二值化处理后,采用基于优先搜索方向的轮廓跟踪算法获得人体正侧面图像的完整人体轮廓。
步骤3、对部分人体部位进行拟合,定位人体尺寸计算的关键点,最终计算得到人体主要尺寸。
步骤3.1,身高的计算:
人体的身高就是从地面到人的头部顶端的直线距离,地面的位置需要通过人为标定得出,地面的像素坐标在纵向的大小为ground_y。对于人体头部顶端的数据,只要从图片左上角开始,进行逐行逐列的扫描,一直到获取到第一个属于人体的像素为止,这个像素坐标的x值可以作为人体中心的坐标,记为center。该像素坐标的y值记为head_y,表示人体头顶的高度。由此可得人体身高:
height=m×(head_y-ground_y) (1)
其中m为标定系数。
步骤3.2,人体肩点的定位:
由人体图像可知,肩部的边界曲线有着曲率较大的特点,根据此特性,首先需要根据人体比例大致确定肩的范围,确定起始点,并采用边界跟踪算法,选取N个像素点分析。然后使用最小二乘法,将这些连续的像素点拟合成一条4次曲线,拟合之后的曲线近似的表示肩部轮廓,并可减少衣服褶皱的干扰。曲线在靠近人体中心的部位的斜率的绝对值较小,而远离人体中心的斜率的绝对值较大。根据斜率的变化规律,基于斜率阈值的肩点确定方法。根据粗精定位的不同过程,以及人体轮廓体型的不同,自适应选取肩点的斜率阈值θ,在远离人体中心的方向上从拟合曲线中选取连续的像素点,并计算该点斜率,当斜率大于θ时,算法终止,终止的点即为肩点。肩点的粗精定位过程如下:
第①步粗定位肩点:考虑到人体是垂直于地面站立的,选取θ为1得到粗定位肩点。
第②步精确定位肩点。考虑到人体的肩型不同,对应的斜率θ也不同。从上一步得到的粗定位肩点开始,分别沿顺时针和逆时针各跟踪N/2个轮廓像素点,分别拟合得到肩峰到肩颈部位的一条直线,该直线斜率记为α,以及人体上臂轮廓直线,斜率记为β。即可精确定位肩点斜率阈值为θ=1/2×(α+β),依据此斜率阈值最终确定肩点的位置。
步骤3.3人体颈点定位:
利用已经求得的肩点,定位颈点的位置。
已经通过边界跟踪算法获取了从肩点到颈部方向的边缘点序列,在序列中依次取间隔为n的两个像素,这两个像素在x方向的距离差在肩部附近较大,在颈部附近较小,因此根据两个像素在x方向的距离差的变化来确定颈点位置。根据这种像素位置变化规律,采用间隔像素跟踪算法:取边界上间隔为n的两个像素,靠近肩点的像素记为A1,远离肩点的像素记为B1,当的值小于一定阈值p的时候,表示A1点在x方向的位移,表示B1点在x方向的位移,即可判定A1点为颈点位置,否则A1和B1都同时向靠近颈点的方向移动,保证它们之间的间隔n不变。
步骤3.4,肩宽的计算
采用多段直线来近似弧线的方法来求肩宽,计算由两个肩峰点和两个颈点组成的三个线段的长度的和作为肩宽。设左肩点为LS,右肩点为RS,左颈点为LN,右颈点为RN,函数length(A2,B2)的返回值为A2,B2两点的直线距离。则肩宽shoulder_breath的计算如下:
shoulder_breath=m×(length(LS,LN)+length(LN,RN)+length(RN,RS)) (2)
步骤3.5颈围的计算
当获得颈点的坐标后,可将人体的颈部截面看作圆形,因此,根据两个颈点,可直接求得颈围的大小。则颈围neck的计算如下:
neck=π(m×length(LN,RN)/2)2 (3)
步骤3.5,胸围的计算
根据人体正侧面图像,分别求得同一水平位置的人体胸部的正面尺寸front_chest和侧面尺寸side_chest。
胸围的计算公式如下:
bust=m×(front_chest×2.0/3.0+side_chest)×2 (4)
其中,bust表示胸围。
优选的:步骤1中使用多线程控制标志位的方式保证相机拍照同步的方法如下:
步骤1.1,拍照过程使用了三个线程,分别为主线程、线程一、线程二,线程一与线程二分别控制照相机一与照相机二,主线程的主要任务是保证线程一与线程二同时进行。f0,f1,f2是控制相机拍照的标志位,当不需要拍照时,这三个标志位都为0。
步骤1.2,如果要拍照,只需要按一下拍照按钮,标志位随之发生变化,即可拍照。对于线程一,当满足f0=1且f1=0这个条件时,即控制照相机一拍照,拍照完毕后将f1置1。对于线程二,当满足f0=1且f2=0这个条件时,即控制照相机二拍照,拍照完毕后将f2置1。
步骤1.3,对于主线程,当有按键消息传来的时候,将f0置1,并不断检测f1与f2的值,当满足f1=1且f2=1的条件时,说明两台照相机拍照完毕,恢复标志位,令f0,f1,f2都置0。
优选的:步骤2中采用基于优先搜索方向的轮廓跟踪算法获得人体正侧面图像的完整人体轮廓的方法:
步骤2.1,采用阈值分割技术,将正侧面图像二值化,然后采用平滑处理以减小人体图像边缘的锯齿。
步骤2.2,以图像的左下角作为坐标原点建立平面直角坐标系,因此,每个像素的位置在坐标系中表示出来,并且图像的轮廓像素都是两两相邻的。取3个连续的像素点,分别记作A、B、C。B是当前扫描到的像素,A是B的前一个像素点,而C是待求的下一个像素点。三个像素点A,B,C的坐标位置分别记为(xA,yA),(xB,yB),(xC,yC),从A点到B点是有方向的,用向量AB表示该方向,即向量[xB-xA,yB-yA]T,易知向量AB一共有8种情况。
最开始执行的时候,需要确定像素扫描的起始点,为保证该点在轮廓上,需要从图中选取轮廓外部的某一位置,使用一次行扫描或者列扫描,定位到轮廓的某一边缘点即为起始点。此时的向量AB的方向就是使用行扫描或者列扫描的方向。
像素扫描的方向有两种情况,即顺时针扫描和逆时针扫描。当顺时针扫描时,C有7种可能的位置分别表示为C1能的位。逆时针方向扫描的情况类似。对这7种方向位置进行扫描时,是有优先级顺序的其中C1方向搜索的优先级最高,C7方向搜索的优先级最低,因为C7的位置与A的位置相同。根据向量AB的方向,按照搜索方向优先级高低顺序依次进行扫描,搜索到的第一个属于前景的像素点即为待求的下一个轮廓像素点C。
步骤2.3,得到轮廓点C的像素坐标后,进行赋值操作令B->A,C->B,便可得到新的A、B像素点的坐标,进行下一步的循环迭代,以计算出图中所有的轮廓像素坐标。
优选的:步骤2.3中通过控制迭代次数来确定待计算的边缘像素点的个数。
优选的:步骤3.3中间隔n为8,阈值p为3。
本发明相比现有技术,具有以下有益效果:
本发明是基于方向优先搜索的边界跟踪计算人体尺寸的方法,可以准确跟踪人体的边缘轮廓像素点,并获得人体各个主要部位的尺寸。使用该发明的方法具有方便,快捷,尺寸计算精度高等优点,能够较好地满足自动化测量以及服装定制等商业需求。
附图说明
图1多线程拍照流程图
图2基于人体轮廓跟踪的像素扫描算法(顺时针)
图3基于边界跟踪的人体尺寸测量方法的流程图
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种基于边界跟踪的人体尺寸测量方法,首先采集同一人体正面和侧面图像,接着采用基于优先搜索方向的边界跟踪算法获得正面和侧面图像中的人体轮廓,在此基础上,定位人体关键特征点,建立人体主要尺寸的计算模型,最终得到人体的主要尺寸。实验结果表明,本发明可以较为准确的获得人体各个主要部位的尺寸,能够较好的满足自动化测量以及服装定制等商业需求,如图3所示,具体步骤如下:
步骤1、首先,对人体图像进行采集,这个过程主要分为两步:相机标定与正侧面图像同步拍摄。人体图像采集过程使用两台照相机,同时拍摄人体正面图像与侧面图像。为保证正侧面图像拍摄的同步性,使用多线程控制标志位的方式保证相机拍照同步。
为了确定空间物体表面某个点的三维几何位置与图像中对应点的关系,必须进行相机标定。以固定高度的标杆作为标定物。首先固定标杆的放置位置,然后测量标杆的高度,放置好相机后,拍照成像,可以得到标杆在图像中的像素高度。则标定系数为标杆高度(cm)与标杆在图像中的像素高度(px)的比值,由此得到相机的外部参数。由于采用的是平面型标定物,为了方便操作,在实验过中,保证两台照相机距离人体中心的距离相等。这种方式可以保证两台照相机有相同的外部参数。同时,在后面人体图像的采集过程中,保证整个图像采集装置的相对位置不变。如果相对位置发生变化,需要重新标定。具体包括以下步骤:
步骤1.1,拍照过程使用了三个线程,分别为主线程、线程一、线程二,线程一与线程二分别控制照相机一与照相机二,主线程的主要任务是保证线程一与线程二同时进行。f0,f1,f2是控制相机拍照的标志位,当不需要拍照时,这三个标志位都为0。
步骤1.2,如果要拍照,只需要按一下拍照按钮,标志位随之发生变化,即可拍照。对于线程一,当满足f0=1且f1=0这个条件时,即控制照相机一拍照,拍照完毕后将f1置1。对于线程二,当满足f0=1且f2=0这个条件时,即控制照相机二拍照,拍照完毕后将f2置1。
步骤1.3,对于主线程,当有按键消息传来的时候,将f0置1,并不断检测f1与f2的值,当满足f1=1且f2=1的条件时,说明两台照相机拍照完毕,恢复标志位,令f0,f1,f2都置0。
因此,每次拍照时,这三个标志位都按照这个规则进行,即可保证两台照相机的拍照时间间隔尽量短,可以减少由于拍照时间不一致导致的误差。
步骤2、获得了几乎同步拍摄的人体正侧面图像后,先对图像预处理。将图像二值化,将属于人的像素作为前景,而其它像素作为背景。本发明采用阈值分割技术,将正侧面图像二值化,然后采用平滑处理以减小人体图像边缘的锯齿。之后使用一种基于优先搜索方向的人体轮廓跟踪算法,可以扫描到凹图形中完整的轮廓像素信息,从而获取复杂的人体轮廓信息。
传统的方法主要是使用逐行扫描或者逐列扫描的方法定位到边缘像素点,这种方法简单易行,但是如果扫描的对象具有较为复杂的轮廓,传统的像素扫描方式将很难满足要求。逐行扫描与逐列扫描适合寻找凸图形的轮廓像素,而不适合扫描凹图形的轮廓。本发明提出基于方向优先的轮廓跟踪算法,具体步骤如下:
步骤2.1,采用阈值分割技术,将正侧面图像二值化,然后采用平滑处理以减小人体图像边缘的锯齿。
步骤2.2,以图像的左下角作为坐标原点建立平面直角坐标系,因此,每个像素的位置在坐标系中表示出来,并且图像的轮廓像素都是两两相邻的。取3个连续的像素点,分别记作A、B、C。B是当前扫描到的像素,A是B的前一个像素点,而C是待求的下一个像素点。若C可以通过某种方式求得,那么就可以一直采用这种方式迭代下去,从而计算出图中所有的轮廓像素坐标。基于优先搜索方向的人体轮廓跟踪算法的主要思想如下:
将上文描述的三个像素点A,B,C的坐标位置分别记为(xA,yA),(xB,yB),(xC,yC),从A点到B点是有方向的,可以用向量AB表示该方向,即向量[xB-xA,yB-yA]T,易知向量AB一共有8种情况。
在整个算法最开始执行的时候,需要确定像素扫描的起始点,为保证该点在轮廓上,需要从图中选取轮廓外部的某一位置,使用一次行扫描或者列扫描,定位到轮廓的某一边缘点即为起始点。此时的向量AB的方向就是使用行扫描或者列扫描的方向。
像素扫描的方向有两种情况,即顺时针扫描和逆时针扫描。当顺时针扫描时,C有7种可能的位置分别表示为C1能的位。逆时针方向扫描的情况类似。需要注意的是,对这7种方向位置进行扫描时,是有优先级顺序的其中C1方向搜索的优先级最高,C7(图中以A表示)方向搜索的优先级最低,因为C7的位置与A的位置相同,在图中均以A来表示。根据向量AB的方向,按照搜索方向优先级高低顺序依次进行扫描,搜索到的第一个属于前景的像素点即为待求的下一个轮廓像素点C。
算法中将处理好的二值化图像、当前像素坐标(xB,yB)、向量AB以及图像扫描的方向d作为输入,输出则是下一个像素点的位置坐标,算法步骤如下:
输入:处理好的二值化图像(1为前景,0为背景),当前像素坐标(xB,yB),向量AB以及图像扫描的方向d(0为顺时针,1为逆时针)。
输出:(xC,yC)。
步骤2.3,得到轮廓点C的像素坐标后,进行赋值操作令B->A,C->B,便可得到新的A、B像素点的坐标,进行下一步的循环迭代,以计算出图中所有的轮廓像素坐标。可以通过控制迭代次数来确定待计算的边缘像素点的个数。
步骤3、对部分人体部位进行拟合,定位人体尺寸计算的关键点,利用相关公式最终计算得到人体主要尺寸。
步骤3.1身高的计算:
身高数据是对人体其他尺寸进行计算的基础,只有确定了人体身高,才能进行下一步的特征点定位。人体的身高就是从地面到人的头部顶端的直线距离,地面的位置需要通过人为标定得出,设地面的像素坐标在y方向(纵向)的大小为ground_y。由于测量人体尺寸的整体设备是固定的,所以只需要标定一次,便可重复利用这个标定数据。如果设备场景发生变化,就需要重新进行标定。对于人体头部顶端的数据,只要从图片左上角开始,进行逐行逐列的扫描,一直到获取到第一个属于人体的像素为止,这个像素坐标的x值可以作为人体中心的坐标,记为center。该像素坐标的y值记为head_y,表示人体头顶的高度。由此可得人体身高:
height=m×(head_y-ground_y) (1)
其中m为标定系数。
步骤3.2人体肩点的定位:
肩点是人体重要的特征点之一,要计算肩宽,就必须尽可能准确的找到肩点的位置。由于很难一次性确定肩点的精确位置,本发明确定肩点采用的方法分为两步:粗定位和精确定位。
由人体图像可知,肩部的边界曲线有着曲率较大的特点,根据此特性,本发明首先需要根据人体比例大致确定肩的范围,确定起始点,并采用边界跟踪算法,选取80个像素点分析(其中80这个参数是可以根据实际情况设定的,以保证肩点处于跟踪到的像素点之中)。然后使用最小二乘法,将这些连续的像素点拟合成一条4次曲线,拟合之后的曲线可以近似的表示肩部轮廓,并可减少衣服褶皱的干扰。该曲线的不同位置的斜率信息是非常重要的,斜率的变化程度也是曲率的大小的体现,曲线在靠近人体中心的部位的斜率的绝对值较小,而远离人体中心的斜率的绝对值较大。根据斜率的变化规律,本发明提出了基于斜率阈值的肩点确定方法。方法的主要思想是:根据粗精定位的不同过程,以及人体轮廓体型的不同,自适应选取肩点的斜率阈值θ,在远离人体中心的方向上从拟合曲线中选取连续的像素点,并计算该点斜率,当斜率大于θ时,算法终止,终止的点即为肩点。肩点的粗精定位过程如下:
第①步粗定位肩点。考虑到人体是垂直于地面站立的,选取θ为1得到粗定位肩点。
第②步精确定位肩点。考虑到人体的肩型不同,对应的斜率θ也不同。从上一步得到的粗定位肩点开始,分别沿顺时针和逆时针各跟踪40个轮廓像素点,分别拟合得到肩峰到肩颈部位的一条直线,该直线斜率记为α,以及人体上臂轮廓直线,斜率记为β。即可精确定位肩点斜率阈值为θ=1/2×(α+β),依据此斜率阈值可以最终确定肩点的位置。
步骤3.3人体颈点定位:
从人体图像可以看出,颈点部位的曲率也比较大,理论上可以使用与求肩点类似的方法,但是这种方法有较复杂的计算过程,因此可以利用已经求得的肩点,并采用一种更为简便的方式来定位颈点的位置。
假设已经通过边界跟踪算法获取了从肩点到颈部方向的边缘点序列,在序列中依次取间隔为n(n为一个较小的整数)的两个像素,那么可以发现这两个像素在x方向的距离差在肩部附近较大,在颈部附近较小,因此可以根据两个像素在x方向的距离差的变化来确定颈点位置。根据这种像素位置变化规律,本发明采用一种间隔像素跟踪算法:取边界上间隔为n的两个像素,靠近肩点的像素记为A,远离肩点的像素记为B,当|xA-xB|的值小于一定阈值p的时候,即可判定A点为颈点位置,否则A和B都同时向靠近颈点的方向移动,保证它们之间的间隔n不变。依据人体图像的特点,可以取n为8,p为3。
间隔像素跟踪算法描述如下:其中函数next_n_piont(A,n)返回的是A像素后面的第n个像素。
算法步骤如下:
输入:肩点A,间隔n,阈值p。
输出:颈点位置。
该算法最终返回一个A点,则A点就是颈点。
步骤3.4肩宽的计算
上文已经获得肩峰点,从直观上来说,肩宽似乎是左肩峰点和右肩峰点的直线距离,然而实际上,测量人体肩宽的时候,测量尺要紧贴人体后背,也就是说,肩宽是由一条弧线决定的,而非直线。本发明采用多段直线来近似弧线的方法来求肩宽,即计算由两个肩峰点和两个颈点组成的三个线段的长度的和作为肩宽。设左肩点为LS,右肩点为RS,左颈点为LN,右颈点为RN,函数length(A,B)的返回值为A,B两点的直线距离。则肩宽shoulder_breath的计算如下:
shoulder_breath=m×(length(LS,LN)+length(LN,RN)+length(RN,RS)) (2)
步骤3.5颈围的计算
当获得颈点的坐标后,可将人体的颈部截面看作圆形,因此,根据两个颈点,可直接求得颈围的大小。则颈围的计算如下:
neck=π(m×length(LN,RN)/2)2 (3)
步骤3.6虎口定位
虎口的位置在手背拇、食指之间,寻找虎口这个特征点主要是为了求得臂长。人体的臂长为肩峰点到手腕处的长度,然而人在站立拍照的过程中,手臂会有轻微的弯曲,若只取图像中手腕点到肩峰点的直线距离作为臂长,计算得到的尺寸会偏小。因此,本次使用肩峰点到虎口点的直线距离作为手臂长度,以减小计算误差。为了方便找到虎口点,人在拍照时要求手臂张开约30度,拇指张开,其他四指并拢,掌心朝前,这样便可根据人体从肩部到手部的轮廓特点确定虎口的位置。
虎口定位采用了前面所描述的基于优先搜索方向的轮廓跟踪算法和间隔像素跟踪算法。首先使用基于优先搜索方向的轮廓跟踪算法提取出从肩部到手部方向一定数量的像素,保证虎口位置处于提取的像素之中。然后再使用间隔像素跟踪算法,分析手部轮廓的像素坐标特征,以得到虎口特征点。
以人体右部肩为例,从肩部到拇指部位的的所有像素都有着x方向不断增大的趋势,此时使用一次间隔像素跟踪算法,可以先确定拇指的位置。再以拇指的位置为起点,继续扫描。虎口部位的像素坐标有以下特点:拇指到虎口的像素在x方向上不断减小,而虎口之后的像素坐标在x方向上有增大的趋势。根据这个特点,再次使用间隔像素跟踪算法,即可确定虎口的位置。
步骤3.7臂长的计算
若已求得肩峰点和虎口位置,便可将肩峰点和虎口的直线距离作为臂长。由于人体是对称的,选取左右臂中的其一即可。设右肩点为RS,右手的虎口点为RP,则臂长的计算如下:
arm_length=m×length(RS,RP) (4)
步骤3.8胸围的计算
胸围的计算需要获得人体正面图像和人体侧面图像的相关尺寸。对于正面图像需要获得人体腋下两个特征点,这两个特征点的直线距离作为胸的正面尺寸,记作front_chest。分析轮廓像素可知,腋下点为峰点,即该点的y坐标比其两侧的y坐标值大。因此可以利用轮廓跟踪算法,一定范围的连续区域像素点,分析像素y坐标的变化特征来确定腋下点的位置。
以虎口点为起始点,使用轮廓跟踪算法选取像素点。可以选取500个像素点,以保证腋下点处于扫描到的像素点之中。在这些像素点中,y值最大的像素点即为所求的腋下点。两次使用这种方法,可以分别得到人体左边和右边的腋下点,分别记为LOxter与ROxter。
定位了人体腋下点后,根据人体正侧面图像,分别求得同一水平位置的人体胸部的正面尺寸front_chest和侧面尺寸side_chest。首先根据人体正面图像的腋点位置,计算胸部的正面尺寸front_chest如下:
front_chest=m×length(LOxter,ROxter) (5)
接着,在同一水平线上,扫描人体侧面图,可得到该水平线上人体前部和后部的两个边缘点,这两个边缘的距离也就是人体侧面的厚度,记作side_chest。胸围的计算公式如下:
bust=m×(front_chest×2.0/3.0+side_chest)×2 (6)
本发明主要是通过边界跟踪算法提取人体轮廓像素坐标,确定人体特征点后,计算人体主要尺寸。使用该发明的方法具有方便,快捷,尺寸计算精度高等优点。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种基于边界跟踪的人体尺寸测量方法,其特征在于,包括以下步骤:
步骤1、人体图像采集过程使用两台照相机,同时拍摄人体正面图像与侧面图像;为保证正侧面图像拍摄的同步性,使用多线程控制标志位的方式保证相机拍照同步;
步骤2、将采集到的图像进行二值化处理,得到人体图像的前景与背景,图像二值化处理后,采用基于优先搜索方向的轮廓跟踪算法获得人体正侧面图像的完整人体轮廓;
步骤3、对部分人体部位进行拟合,定位人体尺寸计算的关键点,最终计算得到人体主要尺寸;
步骤3.1,身高的计算:
人体的身高就是从地面到人的头部顶端的直线距离,地面的位置需要通过人为标定得出,地面的像素坐标在纵向的大小为ground_y;对于人体头部顶端的数据,只要从图片左上角开始,进行逐行逐列的扫描,一直到获取到第一个属于人体的像素为止,这个像素坐标的x值可以作为人体中心的坐标,记为center;该像素坐标的y值记为head_y,表示人体头顶的高度;由此可得人体身高:
height=m×(head_y-ground_y) (1)
其中m为标定系数;
步骤3.2,人体肩点的定位:
由人体图像可知,肩部的边界曲线有着曲率较大的特点,根据此特性,首先需要根据人体比例大致确定肩的范围,确定起始点,并采用边界跟踪算法,选取N个像素点分析;然后使用最小二乘法,将这些连续的像素点拟合成一条4次曲线,拟合之后的曲线近似的表示肩部轮廓,并可减少衣服褶皱的干扰;曲线在靠近人体中心的部位的斜率的绝对值较小,而远离人体中心的斜率的绝对值较大;根据斜率的变化规律,基于斜率阈值的肩点确定方法;根据粗精定位的不同过程,以及人体轮廓体型的不同,自适应选取肩点的斜率阈值θ,在远离人体中心的方向上从拟合曲线中选取连续的像素点,并计算该点斜率,当斜率大于θ时,算法终止,终止的点即为肩点;肩点的粗精定位过程如下:
第①步粗定位肩点:考虑到人体是垂直于地面站立的,选取θ为1得到粗定位肩点;
第②步精确定位肩点;考虑到人体的肩型不同,对应的斜率θ也不同;从上一步得到的粗定位肩点开始,分别沿顺时针和逆时针各跟踪N/2个轮廓像素点,分别拟合得到肩峰到肩颈部位的一条直线,该直线斜率记为α,以及人体上臂轮廓直线,斜率记为β;即可精确定位肩点斜率阈值为θ=1/2×(α+β),依据此斜率阈值最终确定肩点的位置;
步骤3.3人体颈点定位:
利用已经求得的肩点,定位颈点的位置;
已经通过边界跟踪算法获取了从肩点到颈部方向的边缘点序列,在序列中依次取间隔为n的两个像素,这两个像素在x方向的距离差在肩部附近较大,在颈部附近较小,因此根据两个像素在x方向的距离差的变化来确定颈点位置;根据这种像素位置变化规律,采用间隔像素跟踪算法:取边界上间隔为n的两个像素,靠近肩点的像素记为A1,远离肩点的像素记为B1,当的值小于一定阈值p的时候,表示A1点在x方向的位移,表示B1点在x方向的位移,即可判定A1点为颈点位置,否则A1和B1都同时向靠近颈点的方向移动,保证它们之间的间隔n不变;
步骤3.4,肩宽的计算
采用多段直线来近似弧线的方法来求肩宽,计算由两个肩峰点和两个颈点组成的三个线段的长度的和作为肩宽;设左肩点为LS,右肩点为RS,左颈点为LN,右颈点为RN,函数length(A2,B2)的返回值为A2,B2两点的直线距离;则肩宽shoulder_breath的计算如下:
shoulder_breath=m×(length(LS,LN)+length(LN,RN)+length(RN,RS)) (2)
步骤3.5颈围的计算
当获得颈点的坐标后,可将人体的颈部截面看作圆形,因此,根据两个颈点,可直接求得颈围的大小;则颈围neck的计算如下:
neck=π(m×length(LN,RN)/2)2 (3)
步骤3.5,胸围的计算
根据人体正侧面图像,分别求得同一水平位置的人体胸部的正面尺寸front_chest和侧面尺寸side_chest;
胸围的计算公式如下:
bust=m×(front_chest×2.0/3.0+side_chest)×2 (4)
其中,bust表示胸围。
2.根据权利要求1所述基于边界跟踪的人体尺寸测量方法,其特征在于:步骤1中使用多线程控制标志位的方式保证相机拍照同步的方法如下:
步骤1.1,拍照过程使用了三个线程,分别为主线程、线程一、线程二,线程一与线程二分别控制照相机一与照相机二,主线程的主要任务是保证线程一与线程二同时进行;f0,f1,f2是控制相机拍照的标志位,当不需要拍照时,这三个标志位都为0;
步骤1.2,如果要拍照,只需要按一下拍照按钮,标志位随之发生变化,即可拍照;对于线程一,当满足f0=1且f1=0这个条件时,即控制照相机一拍照,拍照完毕后将f1置1;对于线程二,当满足f0=1且f2=0这个条件时,即控制照相机二拍照,拍照完毕后将f2置1。
步骤1.3,对于主线程,当有按键消息传来的时候,将f0置1,并不断检测f1与f2的值,当满足f1=1且f2=1的条件时,说明两台照相机拍照完毕,恢复标志位,令f0,f1,f2都置0。
3.根据权利要求2所述基于边界跟踪的人体尺寸测量方法,其特征在于:步骤2中采用基于优先搜索方向的轮廓跟踪算法获得人体正侧面图像的完整人体轮廓的方法:
步骤2.1,采用阈值分割技术,将正侧面图像二值化,然后采用平滑处理以减小人体图像边缘的锯齿;
步骤2.2,以图像的左下角作为坐标原点建立平面直角坐标系,因此,每个像素的位置在坐标系中表示出来,并且图像的轮廓像素都是两两相邻的;取3个连续的像素点,分别记作A、B、C;B是当前扫描到的像素,A是B的前一个像素点,而C是待求的下一个像素点;三个像素点A,B,C的坐标位置分别记为(xA,yA),(xB,yB),(xC,yC),从A点到B点是有方向的,用向量AB表示该方向,即向量[xB-xA,yB-yA]T,易知向量AB一共有8种情况;
最开始执行的时候,需要确定像素扫描的起始点,为保证该点在轮廓上,需要从图中选取轮廓外部的某一位置,使用一次行扫描或者列扫描,定位到轮廓的某一边缘点即为起始点;此时的向量AB的方向就是使用行扫描或者列扫描的方向;
像素扫描的方向有两种情况,即顺时针扫描和逆时针扫描;当顺时针扫描时,C有7种可能的位置分别表示为C1能的位;逆时针方向扫描的情况类似;对这7种方向位置进行扫描时,是有优先级顺序的其中C1方向搜索的优先级最高,C7方向搜索的优先级最低,因为C7的位置与A的位置相同;根据向量AB的方向,按照搜索方向优先级高低顺序依次进行扫描,搜索到的第一个属于前景的像素点即为待求的下一个轮廓像素点C;
步骤2.3,得到轮廓点C的像素坐标后,进行赋值操作令B->A,C->B,便可得到新的A、B像素点的坐标,进行下一步的循环迭代,以计算出图中所有的轮廓像素坐标。
4.根据权利要求3所述基于边界跟踪的人体尺寸测量方法,其特征在于:步骤2.3中通过控制迭代次数来确定待计算的边缘像素点的个数。
5.根据权利要求4所述基于边界跟踪的人体尺寸测量方法,其特征在于:步骤3.3中间隔n为8,阈值p为3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465350.8A CN110037373B (zh) | 2019-05-30 | 2019-05-30 | 一种基于边界跟踪的人体尺寸测量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465350.8A CN110037373B (zh) | 2019-05-30 | 2019-05-30 | 一种基于边界跟踪的人体尺寸测量方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110037373A true CN110037373A (zh) | 2019-07-23 |
CN110037373B CN110037373B (zh) | 2021-06-25 |
Family
ID=67284295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910465350.8A Active CN110037373B (zh) | 2019-05-30 | 2019-05-30 | 一种基于边界跟踪的人体尺寸测量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110037373B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111075306A (zh) * | 2019-12-31 | 2020-04-28 | 东风小康汽车有限公司重庆分公司 | 一种电动尾门高度自适应开启的控制方法、装置及控制器 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322589A (zh) * | 2008-07-16 | 2008-12-17 | 苏州大学 | 用于服装设计的非接触式人体测量方法 |
CN101564209A (zh) * | 2009-03-06 | 2009-10-28 | 谢琴 | 服装在线人体尺寸测量方法 |
CN103006228A (zh) * | 2012-11-09 | 2013-04-03 | 北京服装学院 | 一种人体形态特征的测量方法 |
CN103218808A (zh) * | 2013-03-26 | 2013-07-24 | 中山大学 | 一种二值图轮廓跟踪方法及其装置 |
CN103578004A (zh) * | 2013-11-15 | 2014-02-12 | 西安工程大学 | 一种用于展示虚拟试衣效果的方法 |
CN106295657A (zh) * | 2016-08-04 | 2017-01-04 | 天津汉光祥云信息科技有限公司 | 一种视频数据结构化过程中提取人体高度特征的方法 |
CN106418847A (zh) * | 2015-08-04 | 2017-02-22 | 王廷金 | 一种基于计算机视觉技术的人体三维尺寸测量方法 |
CN107041585A (zh) * | 2017-03-07 | 2017-08-15 | 上海优裁信息技术有限公司 | 人体尺寸的测量方法 |
CN107111833A (zh) * | 2014-10-17 | 2017-08-29 | 电子湾有限公司 | 快速3d模型适配和人体测量 |
-
2019
- 2019-05-30 CN CN201910465350.8A patent/CN110037373B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322589A (zh) * | 2008-07-16 | 2008-12-17 | 苏州大学 | 用于服装设计的非接触式人体测量方法 |
CN101564209A (zh) * | 2009-03-06 | 2009-10-28 | 谢琴 | 服装在线人体尺寸测量方法 |
CN103006228A (zh) * | 2012-11-09 | 2013-04-03 | 北京服装学院 | 一种人体形态特征的测量方法 |
CN103218808A (zh) * | 2013-03-26 | 2013-07-24 | 中山大学 | 一种二值图轮廓跟踪方法及其装置 |
CN103578004A (zh) * | 2013-11-15 | 2014-02-12 | 西安工程大学 | 一种用于展示虚拟试衣效果的方法 |
CN107111833A (zh) * | 2014-10-17 | 2017-08-29 | 电子湾有限公司 | 快速3d模型适配和人体测量 |
CN106418847A (zh) * | 2015-08-04 | 2017-02-22 | 王廷金 | 一种基于计算机视觉技术的人体三维尺寸测量方法 |
CN106295657A (zh) * | 2016-08-04 | 2017-01-04 | 天津汉光祥云信息科技有限公司 | 一种视频数据结构化过程中提取人体高度特征的方法 |
CN107041585A (zh) * | 2017-03-07 | 2017-08-15 | 上海优裁信息技术有限公司 | 人体尺寸的测量方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111075306A (zh) * | 2019-12-31 | 2020-04-28 | 东风小康汽车有限公司重庆分公司 | 一种电动尾门高度自适应开启的控制方法、装置及控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN110037373B (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102982557B (zh) | 基于深度相机的空间手势姿态指令处理方法 | |
CN102880866B (zh) | 一种人脸特征提取方法 | |
CN100430690C (zh) | 利用单数码相机自由拍摄进行物体三维测量的方法 | |
CN106780619A (zh) | 一种基于Kinect深度相机的人体尺寸测量方法 | |
CN110335234B (zh) | 一种基于古文物LiDAR点云的三维变化检测方法 | |
CN103136525B (zh) | 一种利用广义Hough变换的异型扩展目标高精度定位方法 | |
CN107357427A (zh) | 一种用于虚拟现实设备的手势识别控制方法 | |
US10755433B2 (en) | Method and system for scanning an object using an RGB-D sensor | |
CN107063190B (zh) | 面向定标面阵相机影像的位姿高精度直接估计方法 | |
CN103500010B (zh) | 一种视频人手指尖定位方法 | |
CN101833762B (zh) | 基于对象间粗大边缘和拟合的异源图像匹配的方法 | |
CN110021039A (zh) | 序列图像约束的多视角实物表面点云数据初始配准方法 | |
CN113362452A (zh) | 一种手部姿态三维重建方法、装置及存储介质 | |
CN103247032B (zh) | 一种基于姿态补偿的微弱扩展目标定位方法 | |
CN104866824A (zh) | 一种基于Leap Motion的手语字母识别方法 | |
CN100594841C (zh) | 测量颅面形态的方法 | |
CN109313822A (zh) | 基于机器视觉的虚拟墙构建方法及装置、地图构建方法、可移动电子设备 | |
KR20100062320A (ko) | 영상 데이터를 이용한 로봇 움직임 데이터 생성 방법 및 생성 장치 | |
CN110037373A (zh) | 一种基于边界跟踪的人体尺寸测量方法 | |
Yang et al. | Auto-recognition Method for Pointer-type Meter Based on Binocular Vision. | |
CN106296797A (zh) | 一种三维扫描仪特征点建模数据处理方法 | |
Nüchter et al. | Skyline-based registration of 3D laser scans | |
Liu et al. | LVI-Fusion: A Robust Lidar-Visual-Inertial SLAM Scheme | |
CN113487674A (zh) | 一种人体位姿估计系统和方法 | |
CN109801326A (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 |