一种基于人脸检测和关键点定位的人体组件划分方法

文档序号:8922940阅读:607来源:国知局
一种基于人脸检测和关键点定位的人体组件划分方法
【技术领域】
[0001] 本发明属于计算机图像处理技术领域,具体涉及一种基于人脸检测和关键点定位 的人体组件划分方法。
【背景技术】
[0002] 视频或图片中人体的组件划分可以服务于人体精确三维重建、人体组件测量和 行为识别等诸多相关领域的研宄和实际应用。在过去的十几年中,这一问题的研宄吸引 了诸多研宄这的关注。文献l:Haritaoglu,D.Harwood,andL.S.Davis, "W4:Real_time surveillanceofpeopleandtheiractivities, "IEEETrans.PatternAnal.Mach. Intell.,vol. 22,no. 8,pp. 809 - 830,Aug. 2000.提出了一种递归凸壳算法来构造基于轮廓 模型寻找可能的身体部位。文献 2:S.S.Micilotta,E.J.Ong,andR.Bowden,"Detecting andtrackingofhumansbyprobabilisticbodypartassembly, "inProc. BritishMachineVisionConf.,Sep. 2005,vol.l,pp. 429 - 438?使用几种提前用 Adaboost算法训练过的身体部分探测器检测到了不同的身体部位。文献3:S.Weik andC.E.Liedtke,"Hierarchical3Dposeestimationforarticu-latedhuman bodymodelsfromasequenceofvolumedata, "inProc.Int.WorkshopRobot Vis. ,Auckland,NewZealand,Feb. 2001,pp. 27 - 34?跟踪沿着身体的轮廓负的最小曲 率,然后使用修正迭代最近点算法分析每个身体部位。文献4 :Y.Song,L.Goncalves,and P.Perona,"Unsupervisedlearningofhumanmotion, "IEEETrans.PatternAnal. Mach.Intell. ,vol. 25,no. 7,pp. 814 - 827,Jul. 2003.提出了一种基于角的方法研宄人类 的姿势,并从视频序列中确定身体部分。文献5:Jun-WeiHsieh,Chi-HungChuang,and Sin-YuChenetal,"SegmentationofHumanBodyPartsUsingDeformable Triangulation,IEEETrans.Systems,Man,AndCybernetics,vol. 40,no. 3,May2010 提 出一种新颖的三角分割算法来做躯干定位的基础算法。但总体来说仍然具有一些较为明显 的不足,主要包括(1)没有考虑快速剔除"类似人体形状"的预处理,(2)可能需要大量的训 练图片。

【发明内容】

[0003] 发明目的:本发明的目的是针对以上人体组件划分方法的缺陷和不足,提出一种 解决人体组件划分问题的新思路、新方法。
[0004] 为实现所述目的,本发明使用比较成熟人脸检测算法进行人脸定位,再根据人脸 位置和轮廓上的关键点信息进行组件划分。其特征是在输入图像后,包括以下处理步骤:
[0005] 步骤1,输入无肢体重叠的人体图像,在图像中使用Adaboost学习算法,即基于 Haar-like级联分类器的人脸检测方法进行人脸检测,根据检测得到的人脸的位置信息确 定人脸的中心和人脸的的半径;
[0006] 步骤2,根据人脸的位置信息检测得到对应的人体外轮廓;
[0007] 步骤3,基于十字链表结构在检测得到的人体轮廓上进行关键点定位;
[0008] 步骤4,利用关键点将人体轮廓划分成各人体组件的轮廓。
[0009] 其中,步骤2包括:使用Canny算子进行边缘检测,找出人体图像中所有物体的外 轮廓集合私},1£{1,2,一,111},且(;=妒」(父」,¥」)},_]_£{1,2,.",11},111、11为大于1的 自然数,Pj(Xj,Yj)表示外轮廓上的像素点,Y」分别表示外轮廓上的像素点的横坐标和 纵坐标,I和分别表示检测得到的人脸中心横坐标、人脸中心纵坐标和人脸半径,满 足如下公式:
[0012] 其中外轮廓集合{CJ中元素最多的轮廓为人体轮廓。
[0013] 步骤3包括如下步骤:
[0014] 步骤3-1,采用十字链表的存储结构对人体外轮廓上的像素点的简单链式结构进 行重组,并进行关键点的查找和定位,关键点包括:人脸中心点1个、人体颈部左右边缘关 键点共2个、人体左臂和右臂的上界点以及人体左臂和右臂的下界点共4个、人体腰部左右 边缘关键点共2个、人体裤裆中点1个;
[0015] 步骤3-2,建立十字链表:对人体外轮廓上的像素点列进行一次逐点链式扫描,在 扫描过程中,扫描第一个点时,分别建立一个行头指针和一个列头指针,都指向扫描的这个 点,再新建一个总指针,向右指向行头指针,向下指向列头指针,然后按人体外轮廓的链式 结构逐个扫描其它点时,如属于已创建行或列,便按行或列坐标顺序加入十字链表中,如不 属于已创建行或列,便新建一个行或列头指针,先将此指针加入行或列头指针链中,再把指 针指向该扫描点,统计每行和每列的点个数total,并用index标识每个点在被读取出来的 序号即在被读取出来时是第几个;
[0016] 步骤3-3,确定人体颈部左、右边缘关键点,算法步骤如下:
[0017]步骤3-3-1,获取十字链表行链坐标Y= 的行指针;
[0018] 步骤3-3-2,遍历十字链表中所有点Pj,若存在点Pj的横坐标Xj满足XQ-RQ〈Xj〈XQ^lJ Pj为人体颈部左边缘关键点,若Pj为十字链表中最后一个点且XyXjO^+l,则Pj为人体颈 部右边缘关键点,若人体颈部左右边缘关键点全找到,则算法终止,否则执行步骤3-3-3 ;
[0019] 步骤3-3-3,行指针上移一行,若行链坐标Y=Y〇-R〇,算法终止;
[0020] 步骤3-3-4,重复步骤3-3-2~步骤3-3-3。
[0021 ] 步骤3-4,确定人体裤裆中点关键点,算法步骤如下:
[0022] 步骤3-4-1,获取十字链表行链坐标Y= (2RQX5. 5/4)X(1-0. 467)/ (l-〇.844)-(YQ-RQ)的行指针;
[0023]步骤3-4-2,遍历十字链表中所有点Pj,若存在点Pj的横坐标X」满足XA〈Xj〈XB,则 执行步骤3-4-3,PJPPB分别表示人体颈部左、右边缘关键点,XJPXB分别为人体颈部左、 右边缘关键点的横坐标,若不存在且行指针未移动过,执行步骤3-4-4,若不存在且行指针 移动过,执行步骤3_4_5 ;
[0024] 步骤3-4-3,定义当前行链坐标为Yk,逐行向上遍历十字链表中行链坐 标满足Yk〈Y〈 =Yk-h〇G的行,其中h〇G为肚脐到臀部下边缘的竖直高度,h〇G= (2R0X5. 5/4)X(0? 600-0. 467)八1-0. 844),若十字链表中存在点P」的横坐标X」满足 XA〈X^XB的行链,将行指针上移到此行,继续执行步骤3-4-2,否则执行步骤3-4-5 ;
[0025]步骤3-4-4,逐行向下遍历十字链表中所有点Pj,找到第一个存在点横坐标X」 满足XA〈Xj〈XB的行;
[0026]步骤3-4-5,遍历步骤3-4-4找到的行中所有的点,|X」-(XA+XB) /2 |最小的点即为 人体裤裆中点关键点;
[0027] 步骤3-5,确定人体腰部左右边缘关键点,算法步骤如下:
[0028] 步骤3-5-1,获取十字链表中行链坐标Y=Y^hoG的行指针,表示人体裤裆中点 关键点,表示点Px的纵坐标;
[0029] 步骤3-5-2,若行链坐标Y>1,则执行步骤3-5-3,否则遍历十字链表中所有点,若 存在横坐标\满足XfWoS/^K= 的点Pp&表示点P 横坐标,其中Xj最小的点P』 是人体腰部左边缘关键点,若存在满足X'X' =XfWoS/2的点匕,其中\最大的点P」是 人体腰部右边缘关键点,WoS为肩宽,若人体腰部左、右边缘关键点并未全找到,则执行步骤 3-5-4,若人体腰部左、右边缘关键点全找到,则算法终止;
[0030] 步骤3-5-3,将WoS更新为WoS+5 (5是经验值,它的存在是为了扩大搜索腰部点 的横向范围,它可以取大于0的任意整数,取值过小,重复执行步骤3-5-2的次数将会过 多,取值过大,有可能将手臂上的点确定为腰部上的点,所以折中考虑取值为5),执行步骤 3_5_1,若本步骤执行超过四次,算法终止;
[0031] 步骤3-5-4,行指针下移一行,返回执行步骤3-5-1
[0032] 步骤3-6,确定人体左臂和右臂的上界点,以及人体左臂和右臂的下界点,算法步 骤如下:
[0033] 步骤3-6-1,令十字链表中所有点的序号index减去一个值使得(index)A= 0, (index)A表示点PA被读取出来的序号;
[0034] 步骤3-6-2,获取列链坐标X=X。的列指针,P表示人体腰部左边缘关键点,X^表 示点Pc的横坐标;
[0035] 步骤3-6-3,遍历十字链表中所有点Pj,对于手指所在点PF,(index)岸于 (index)A加上人体颈部左边缘关键点到手指所在点的曲线距离,若存在点P』满足(index) A〈(index)』〈(
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1