CN102831397A - 一种基于几何匹配和分合算法的人脸识别方法 - Google Patents
一种基于几何匹配和分合算法的人脸识别方法 Download PDFInfo
- Publication number
- CN102831397A CN102831397A CN2012102556484A CN201210255648A CN102831397A CN 102831397 A CN102831397 A CN 102831397A CN 2012102556484 A CN2012102556484 A CN 2012102556484A CN 201210255648 A CN201210255648 A CN 201210255648A CN 102831397 A CN102831397 A CN 102831397A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- face
- image
- characteristic
- people
- 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.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
本发明涉及一种基于几何匹配和分合算法的人脸识别方法,具体方法如下:a.人脸定位中的图像分割;b.对图像分割后进行分合算法;c.成组算法;d.形状属性的计算:(1)特征块的位置;(2)特征块的取向;(3)特征块的外接矩形;e.图像的预处理:(1)图像对比度的增强;(2)二值化;f.几何匹配算法。本发明的一种基于几何匹配和分合算法的人脸识别方法,采用分合的分割算法和几何匹配的算法,实现了人脸的定位和算法清晰简单,具有一定的抗噪声能力,符合人眼视觉多尺度的特征。
Description
技术领域
本发明涉及人脸识别的领域,尤其是一种基于几何匹配和分合算法的人脸识别方法。
背景技术
所谓人脸的定位,就是在照片(静态图像)或视频(动态图像)中标出人脸所在的位置,把人脸选取出来。而人脸的识别就是把选取出来的人脸与数据库中已有的人脸进行比较,找出匹配的档案来。有的文献把人脸的定位和识别统称为人脸识别,定位和识别则是两个主要的步骤。完整的人脸识别系统涉及到决定照片或视频中有无人脸,并计数,定位,定出大小,然后根据数据库识别出个人,可能的话还要识别表情,以及根据脸的图像做出描述(瓜子脸,丹凤眼等等就是日常生活中“描述”的例子),或者反过来根据描述挑选匹配的人脸图像。
在日常生活中,我们主要根据脸来识别一个人。交谈中,我们往往看着对方的脸,尤其是眼睛。脸上的表情也是进行交谈的一个重要部分。所以,人脸在人与人的交流过程中起着极其重要的作用。这就决定了在现代社会中,使用计算机自动进行人脸的定位和识别工作有着重要的意义。其应用领域包括很多方面,比如身份鉴别,保安系统,人机交互界面等等。
人脸识别系统虽然有诱人的应用前景,但是在现实中却还没有开始大规模的使用。其主要原因之一就是用计算机自动进行人脸的定位和识别十分困难,目前的识别效果(正确率,速度)不如其他的生物识别技术,如指纹识别,视网膜识别等等。人们在日常生活中就进行了大量的人脸定位和识别工作,当然全部是由人的视觉系统和大脑“自动”进行的。目前还不清楚人的视觉系统和大脑的工作原理,因此这项人可以轻而易举完成的任务,对于目前还只会死板地执行程序指令的计算机来说却是极端困难。困难主要存在于两个方面:
人脸的图像数据具有高度的随机性。光照条件,脸的偏向,表情,发型,胡子,化妆,衣饰(眼镜,帽子)等等略有变化,就可以给识别系统带来巨大的困难。
人脸的图像数据量巨大。目前出于计算量的考虑,人脸定位和识别算法研究大多使用尺寸很小的灰度图像。一张64×64像素的256级灰度图像就有4096个数据,每个数据有256种可能的取值。定位和识别算法一般都很复杂,在人脸库较大的情况下,计算量十分大,很多情况下速度令人难以忍受。而灰度数据事实上是丧失了象色彩,运动等等的有用信息的。如果要使用全部的有用信息,计算量就更大了。
因此,研究人脸的定位和识别不仅仅有实用上的考虑,而且对人们理解人脑的工作方式、研究人工智能和数字图像处理有重要的意义。
从模型匹配的方法来看,目前的人脸定位算法可以粗略地分为两大类:第一类是利用人脸各器官之间的几何关系的方法;第二类是利用标准人脸图像或者其变换结果直接或者经特征提取后进行匹配的方法。第一类方法利用了明显的先验知识,因而方法简单明了,执行速度较快,对人脸的方向和表情有一定的适应性(在一定的变化范围内面部特征的相对几何关系变化很小),但是准确率往往不高(漏判和误判),而且对预处理要求高,依赖于所有面部特征都完整地被提取,所以对转角较大的侧脸,光照极度不均匀,部分脸被遮蔽(眼镜,围巾等)适应性不好。第二类方法利用了更多的图像信息,准确率高,不易受欺骗;缺点是计算量大,而且使用的人脸模板受人脸库中已有资料的影响,可能会有通用性不好的问题(比如不同人种的人脸模板不能通用)。
发明内容
本发明要解决的技术问题是:为了克服上述中存在的问题,提供一种基于几何匹配和分合算法的人脸识别方法。
本发明解决其技术问题所采用的技术方案是:一种基于几何匹配和分合算法的人脸识别方法,具体方法如下:
a.人脸定位中的图像分割:把人脸的器官与脸的其他部分分离开来,并保存每个器官的完整性;
b.对图像分割后进行分合算法:具有某种共同特征并且相互连通的像素分在同一区域,而特征不同或者不相互连通的像素分在不同的区域;
c.成组算法:用来把挨得足够近的可能本属于同一器官的特征合并起来;
d.形状属性的计算:(1)特征块的位置;(2)特征块的取向;(3)特征块的外接矩形;
e.图像的预处理:(1)图像对比度的增强;(2)二值化;
f.几何匹配算法。
b中分合算法包括分割算法、合并算法和相邻归并算法,所述的分割算法的具体步骤如下:(1)把金字塔数据结构中起始某个中间层的数据块编码全部压入工作堆栈RgStack;(2)从RgStack弹出一个数据块编码Code;(3)反复执行2,直至堆栈RgStack空;
所述的合并算法的具体步骤如下:(1)把中间层里所有均匀的数据块的编码存入工作队列RgA;(2)从RgA出队一个编码Code;(3)反复执行2,直至队RgA空;
所述的相邻归并算法的具体步骤如下:(1)从RgCode中弹出一个编码,压入工作堆栈RgStack;(2)从RgStack中弹出一个编码Code,将它入队到RgA;(3)反复执行2,直至栈RgStack空;(4)反复执行1-2-3,直至栈RgCode空。
e中图像对比度的增强的方法包括S形变换方法、直方图均衡化方法和灰度分布标准化方法。
e中二值化分为全局阈值的二值化和取局部阈值的二值化
本发明的有益效果是,本发明的一种基于几何匹配和分合算法的人脸识别方法,采用分合的分割算法和几何匹配的算法,实现了人脸的定位和算法清晰简单,具有一定的抗噪声能力,符合人眼视觉多尺度的特征。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明的金字塔数据结构示意图;
图2是本发明的数据块编码规则的示意图;
图3是本发明的2:2对角和2:2同侧分布的示意图;
图4是本发明的外接矩形的计算的示意图;
图5是本发明的“物体”合并后外接矩形的近似计算的示意图;
图6是本发明的分合算法结果显示的示意图;
图7是本发明的增强对比度方法的比较的示意图;
图8是本发明的二值化方法比较的示意图;
图9是本发明的人脸几何模型的示意图;
图10是本发明的嘴的拼合效果的示意图;
图11是本发明的人脸定位结果示例的示意图。
具体实施方式
现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
一种基于几何匹配和分合算法的人脸识别方法,具体方法如下:
a.人脸定位中的图像分割:把人脸的器官与脸的其他部分分离开来,并保存每个器官的完整性,在照片中,人脸比较明显而易辨别的特征主要是面部器官:眼睛,嘴巴,鼻子和眉毛。鼻子往往与脸的反差不大,因此通常用鼻孔代替。这几个面部特征在灰度图像中一般比周围区域暗。尤其是眼睛和嘴巴在绝大部分情况下都清晰可见。因此图像分割可以利用的特征就是:灰度比周围区域暗的区域。在我的毕业设计中,为了减少图像分割这一步的运算量,预处理的时候就对图像做了二值化。因此事实上分割的对象已经是黑白图像,分割简化为找出所有黑色的连通区域,它们都成为人脸器官的候选者;
对分割算法有两个要求:1.一定的抗噪声能力。经过二值化的黑白图像中,难免会有很多与主旨无关的细碎黑色像素连接了本应分开的特征,而某些单一的特征也可能会破碎成几块。要求分割算法具有一定的能力抵抗这些噪声,将应该分开的特征分开,应该成为整体的部分连起来;2.运行速度要快。人脸定位和识别系统常常作为实时应用,在这些场合要求系统的运行不能耗时过长,否则就失去意义了。从几何匹配方法来看,最耗时的步骤就是图像分割这一步。所以这一步的速度决定了整个人脸定位方法的运行速度。
b.对图像分割后进行分合算法:具有某种共同特征并且相互连通的像素分在同一区域,而特征不同或者不相互连通的像素分在不同的区域,判定区域R内的像素是不是具有共同的特征需要均匀性判据H(R),H(R)为True表示区域均匀(从而可以认为像素具有共同的特征),否则表示不均匀。一般应用的均匀性判据往往是区域内的灰度比较均匀,比如区域内最大和最小的灰度值之差不超过一定阈值(5)。在我的应用中,因为图像已事先做了二值化,所以均匀性的判定有所不同。我只关心黑色的区域,因为只有黑色区域可能代表人脸特征。当一个区域中黑色像素占了绝大部分时,我就认为它是均匀的。具体的判据将在算法中给出。
分合算法采用金字塔数据结构。首先讨论以像素计的边长是2的整数次幂的正方形图像。塔的底层(第0层)是原始图像(在我的应用中是已经过二值化的图像)。用相邻排作正方形的四个像素作为子结点,计算上一层相应像素的取值。这样每上溯一层(层编号加1),像素数目成为原来的1/4。当整幅图只剩下一个像素时,金字塔构造完毕(见图1)。数据结构某一层中的一个像素事实上代表了第0层中2j个像素组成的一个数据方块(j是该层编号),为了表示和计算方便起见,用编码来代表这样的一个数据块。设数据结构中最高一层的编号为n,则这个编码共有n位。把一个方块内的四个子方块按照图2顺时针标记为1,2,3,4。为了表示一个数据块,我们首先把原始图像划分成四个正方形,第一位编码就描述该数据块落在了1,2,3,4中哪个正方形里,然后对包含该数据块的正方形再划分为四个小正方形,第二位编码就描述该数据块落在了哪个小正方形里。如此反复,直到某个小正方形恰好是该数据块,此后的编码就全部取0,表示不必再细分。例如图2所示的3层金字塔结构;对于一幅普通的图像,一般都不会恰好是正方形,边长也不会恰好是2的整数次幂。我便以128×128的方块作为基本单位,用m×n个这样的方块对图像做覆盖。遇到图像中某个部分填不满一个方块的情形,就补上白色(白色不作为特征,看成空白)。每个方块都产生自己的一个7层金字塔数据结构,相互独立地运行分裂算法和合并算法。在相邻归并算法中,不处于同一个128×128划分块但是相邻的数据块应该被归入同一个特征块,所以数据块编码需要在全图像内唯一。我使用的数据块编码是在每个金字塔7位编码的基础上再加两位,分别表示在m×n个128×128划分块中该数据块所处的划分块的x和y位置。因此完整的编码是9位。
如图3所示,根据子结点像素计算父结点像素时常用的是灰度平均法。我的应用中有所不同:如果四个像素中白色占了3块以上则父结点像素赋值为白色;如果黑白2:2对角分布也赋值为白色;如果黑色占了三块以上则赋值为黑色;如果黑白2:2各占据一侧则赋值为黑色。这样的好处是可以消除一部分不紧密的连接(2:2对角分布),而保留所有可能的紧密的连接(2:2同侧分布),分合算法的思路是:1.任取一层数据结构,检验其均匀性H,若对于该结构中某一区域R有H(R)=fal se,则分裂这个区域为4个子区;若4个彼此相邻属于同一个父结点的区域Rk1,…,Rk4满足H(Rk1∪Rk2∪Rk3∪Rk4)=true,则合并它们成为单一区域。当不再有区域可分裂或合并时,停止分割;2.如果二任意相邻区域Ri和Rj(可以不属于同一个父结点;可以有不同的大小)使得H(Ri∪Rj)=true,则合并它们;
分割算法的具体步骤如下:(1)把金字塔数据结构中起始某个中间层的数据块编码全部压入工作堆栈RgStack;(2)从RgStack弹出一个数据块编码Code;(3)反复执行2,直至堆栈RgStack空;
合并算法的具体步骤如下:(1)把中间层里所有均匀的数据块的编码存入工作队列RgA;(2)从RgA出队一个编码Code;(3)反复执行2,直至队RgA空;
相邻归并算法的具体步骤如下:(1)从RgCode中弹出一个编码,压入工作堆栈RgStack;(2)从RgStack中弹出一个编码Code,将它入队到RgA;(3)反复执行2,直至栈RgStack空;(4)反复执行1-2-3,直至栈RgCode空。
c.成组算法:用来把挨得足够近的可能本属于同一器官的特征合并起来,算法实现参考了Shi-Hong Jeng,Hong Yuan Mark Liao等(1)的工作。算法有两个特点:1.合并半径取决于待合并的特征块的大小(一个重要参数-最大合并半径Nmax事先指定),特征块越大,则合并半径越小;2.如果待合并的两个数据块中任一个大于Nmax,那么它们必须位于同一主轴上(主轴的定义在形状属性的计算中介绍)才能合并。下面的伪代码描述了成组算法,其中N(i)代表第i个块Bi包含的像素个数,Nb代表图像中特征块的总数。
合并后的特征块的各个形状属性都要重新计算;
d.形状属性的计算:二值化后的原始图像直接用黑和白的像素表示。在用分合算法分割之后,每一个连通的黑色特征块就由一组数据块编码来表示,编码所代表的数据块(可能是来自金字塔数据结构中不同的层次)在一起组成了该特征块。但是这样仍然不能方便地进行几何匹配。为了进行几何匹配,需要知道每一个特征块的位置,大小,倾角及大概的形状。这些参数统称为形状属性。从组成一个特征块的数据块编码来计算这个特征块的形状属性是继分合算法之后的重要步骤。由于它与分合算法结合更紧密(因为不同的分割算法导致不同的计算形状参数的方法),所以把它放在分合算法这部分来介绍。
图像用f(x,y)来表示,x,y分别是横、纵坐标(已经离散化,所以下面都使用求和而不是积分),f(x,y)是该坐标处的灰度值。用字母B代表特征块。设特征块由一组正方形数据块{Bi}组成,Bi包含的像素个数为Ni,边长为Di(Ni=Di 2),其中心(也就是重心)坐标为Ni和可以从数据块编码通过计算得到,方法较简单,这里就不赘述了。形状属性的计算就是要把特征块的形状属性都用Ni(或Di)和表达出来。
(1)特征块的位置
特征块的位置用它的重心来表示。重心坐标计算公式如下:
在我的应用中,像素都是黑白的,即f(x,y)只有两种取值:0(黑)或者255(白),而特征块所包含的像素一定是黑色的(这是特征块的定义决定的)。所以在公式中完全可以把f(x,y)省略(为了方便,下面的公式中都直接略去了f(x,y)),直接写作:
(2)特征块的取向
由此可以得到:
由于θ取值范围的规定,k的所有可能取值只有-1,0,1。
算法中对k的所有三个可能取值分别计算θ,舍弃不在内的值。然后分别检查转动惯量二阶导I''(θ)的符号,使得I''(θ)>0的才是能够令I(θ)取极小值的主轴倾角θ。检查I''(θ)的符号所依据的公式是:
I″(θ)∝cos2θ(μ20-μ02)+2sin2θμ11
计算主轴倾角θ要用到中心矩。中心矩的一般定义和详细讨论可参见RobertM.Haralick和Linda G.Shapiro的Computer and Robot Vision(6)。
特征块B的(j+k)阶中心矩μjk为(注意这里同样略去了f(x,y)):
经简单计算可以得到:
这一部分的推导比较繁琐,结果如下:
有了这些公式,特征块的取向就可以由特征块所包含的数据块的编码计算出来了。
(3)特征块的外接矩形
特征块的外接矩形定义为长边平行于主轴且与特征块外接的矩形。
为了求得外接矩形,对特征块做坐标变换:把坐标原点挪到重心处,再逆时针旋转坐标系θ,得到的新坐标系记为po’q。在新坐标系下找出所有数据块顶点(每个数据块有四个顶点)坐标的最值pmin,pmax,qmin,qmax。易知在新坐标系下外接矩形的四个顶点坐标为(pmin,qmin),(pmin,qmax),(pmax,qmin),(pmax,qmax),特征块重心到矩形四条边的距离分别是L1=-pmin,L2=pmax,W1=-qmin,W2=qmax。将坐标系反变换回去(先顺时针旋转θ再平移),就得到了原坐标系下特征块的外接矩形的四个顶点坐标,如图4所示,两个特征块(“物体”)合并时形状属性的计算。设B1和B2这两个特征块合并成了B。
显然有N=N1+N2;
由刚才得到的公式:
刚才i是对数据块计数的,现在推广到对特征块计数。可见如果把每个特征块的∑xy,∑x2,∑y2这三个数据保存在“物体”属性里,那么合并以后的特征块的∑xy,∑x2,∑y2很容易就能计算出来,其主轴倾角也就容易计算了。
合并后“物体”的外接矩形理论上应该由所有组成这个“物体”的数据块来计算。由于在“物体”属性里不能再保留所有成员数据块的编号(否则存贮量太大),所以合并后“物体”的外接矩形无法精确求出。可以把各个子“物体”的外接矩形的外接矩形近似当作合并后“物体”的外接矩形,如图5所示计算的方法与单个特征块外接矩形大同小异,分合完成,物体属性都计算完毕之后,就可以在图像中标出所有的特征块。在我的程序中,每个特征块用一个外接矩形和一个位于重心的十字架来表示,如图6可以看见,虽然图像中有很多细碎的黑点,但是最后得到的特征块数目并不大(图6中有20个特征块)。这正是因为分合算法具有一定的抗噪声能力。
e.图像的预处理:把图像变成便于后续处理的形式;提高对比度,抑制背景而突出面部特征;去除噪声和其他有害的信息。在我的应用中,把图像变成分合算法能够处理的二值化图像是预处理最重要的功能。其次,希望预处理能够提高二值化前的对比度,把面部器官清晰地突出出来,这样加上合适的二值化方法,就能够保证二值化后的图像中,面部器官以黑色特征块的形式被尽量完整而独立地保留下来。
(1)图像对比度的增强;
增强图像对比度有很多种方法,常见的有“S”形变换,直方图均衡化方法等等(参见Kenneth R.Castleman,Digital Image Processing(4)),都是十分经典而使用很广的,这里就不赘述其具体实现了。简单地说,“S”形变换办法将灰度处于某一范围内(比如灰度很大和很小,或者灰度取值处于中间)的像素的灰度分布差距拉大,从而使对比度提高,这是以牺牲其他灰度范围的对比度为代价的。直方图均衡化则把像素的灰度分布尽量展开在所有可能的灰度取值上,同样能够使对比度提高。
尝试把这些方法应用到人脸定位的预处理中时,效果却不好。原因是这些方法增强对比度没有针对性,结果往往不仅不能突出脸部器官的特征,有时还会造成特征的损失。尤其是直方图均衡化,其结果往往是不能忍受的。
在这样的情况下,我根据实际的需要找到了一种能够突出脸部特征,有针对地增强对比度的方法。
众所周知,边缘提取是特征提取中的一种重要方法。利用边缘提取,可以把图像中灰度发生跳跃变化的地方全部显现出来。脸部器官(尤其是眼睛和嘴)表现为在整个脸的较均匀灰度的背景上的暗团块。所以利用边缘提取可以得到脸部器官的轮廓和内部发生灰度突变的所有边缘。
但是实践证明直接采用边缘提取来提取脸部器官的特征,其效果并不好。边缘提取可类比于微分运算,对于噪声十分敏感,容易造成本不相连的区域粘连起来。
我现在采用的办法是:对输入的原始灰度图像做Sobel运算(4)提取边缘,得到的是灰度的边缘图像(边缘特征用较小的灰度值,即较偏黑色来表示)。将边缘图像按照一定的比例加到原始图像上,再做一个线性变换保证所有灰度值落在0~255的有效灰度范围之内。这样,原始图像中边缘特征就被加强了,脸部器官的特征从而也被加强了,和脸部较为均匀的灰度形成了鲜明的对比。
从图7可以看到原始灰度图像,经Sobel运算提取了边缘之后的灰度边缘图像,以及相加处理完毕的图像(原始图与边缘图比重为5:1)作为比较,使用“S”形变换(参数α(4)为0.5)和直方图均衡化的结果也显示在图中。
(2)二值化
二值化是预处理中最关键的步骤,因为它直接产生能够被分合算法使用的二值化图像。可以说,二值化结果的好坏决定了分合算法结果的好坏,从而决定了整个人脸定位能否成功。
二值化的方法举不胜举,但都可以分为取全局阈值的二值化和取局部阈值的二值化两大类。
取全局阈值的二值化方法中,有一种叫做“组内方差最小化方法”(8),由Otsu于1979年提出。它的思路是,最好的阈值应该使得被阈值分开的两组的方差的加权和达到最小,其中某组的加权系数就是该组的概率(其实就是该组像素数目占总像素数目的比例)。
设所有像素被阈值t分为两组,灰度≤t的称做组1,灰度>t的称做组2;σ1 2(t),σ2 2(t)是1组和2组各自的方差;q1(t),q2(t)是1组和2组各自的概率;μ1(t),μ2(t)是1组和2组各自的灰度平均值。定义组内方差σW 2(t)为这两个组的方差的加权和:
σW 2(t)=q1(t)σ1 2(t)+q2(t)σ2 2(t)
所有像素的平均灰度和方差记做μ和σ2。有下面的关系式成立:
σ2=σW 2(t)+σB 2(t)
其中σB 2(t)叫做组间方差,
σB 2(t)=q1(t)[μ1(t)-μ]2+q2(t)[μ2(t)-μ]2=q1(t)[1-q1(t)][μ1(t)-μ2(t)]2
显然σ2并不随t变化,所以使得组内方差最小的t就是使得组间方差最大的t。寻找这个t的方法是穷举法,即搜索t的每一个可能值,计算出相应的σB 2(t),然后找出最大的σB 2(t)对应的t。
当阈值为t时的各参量已知时,阈值为t+1时的各参量可以用下列递推公式算出,从而避免对每个t都做独立的大量的运算。
q1(t+1)=q1(t)+P(t+1),递推起点是q1(1)=P(1)
有了q1(t+1),μ1(t+1)和μ2(t+1)之后,σB 2(t+1)就可以求出。
这个全局取阈值方法常常可以得到不错的效果。但是对于人脸定位的应用,全局取阈值的方法就不合适了。这是因为人脸各器官相对于面部皮肤的对比度各不相同,比如眼睛就往往比嘴的对比度要高得多。如果对全图像使用同一个阈值,那么无论怎么调整阈值,结果不是眼睛不正确就是嘴不正确,或者两个都不怎么好,捉襟见肘。
我以组内方差最小化方法为基础,构造了一种局域取阈值的方法。其思路是:首先对整幅图像用组内方差最小化方法求出阈值,并记录下组间方差。然后把整幅图像划分为m×n个正方形,每个正方形边长都为十几个像素量级。对每个正方形的子图像按组内方差最小化方法求出一个阈值和一个组间方差。最后某一个正方形子图像二值化所使用的阈值是由全局阈值和局域阈值,以全局组间方差和局域组间方差作为权重,再加上事先指定的加大全局阈值权重的因子,综合计算出来。显然全局阈值应该占到绝大部分的比重,因为正方形子图内的像素分部可能与全局分布极不相同,甚至出现全是单一灰度的极端情形。如果仅仅用子图的像素分布来决定子图使用的阈值,那么各个子图取的阈值就会各自相差很大,导致结果图像零乱破碎,无法使用。
全局取阈值二值化方法和局域取阈值二值化方法的结果比较见图8,该局域取阈值二值化方法有边界效应的缺陷。所谓边界效应,是指由于相邻两个正方形子图所取阈值不同,造成边界两边本来灰度变化缓慢的像素有可能一边被二值化成黑色,一边被二值化成白色,形成突变。为了解决这个问题,我曾经构造了另一种局域取阈值二值化方法:对每一个像素,都使用它周围一个边长为十几个像素的正方形区域内的灰度分布来计算一个局域阈值,然后和全局阈值合成这个像素使用的阈值。这样的效果虽然不错,避免了边界效应,但是计算量太大,耗时太长,所以目前的算法中没有采用。这两种局域取阈值二值化方法的结果比较见图8(图中没有明显的边界效应)。
f.几何匹配算法
图像分割完成后,结果保存在“物体”数组中,每一个“物体”就是图像中一个连通的黑色区域。“物体”的属性也已经计算出来,包括其位置,大小,取向,外接矩形。几何匹配算法所做的就是在“物体”中寻找可能是人脸器官的组合,所利用的判据则是人脸器官之间所固有的几何关系。使用这些判据按照一定的权重组合,可以对每一组可能被当作面部特征组合的“物体”计算一个评价函数。如果这个函数值超过了一定的阈值,就认为它是一张人脸。
几何关系的模型参考的是Shi-Hong Jeng,Hong Yuan Mark Liao等人(1)的工作,但是在评价函数的构造上有一些改动。详细的规则在下面解释每个评价函数时介绍。举个例子来说明几何模型的意义。如图9,以两眼中心连线为基线,两眼中心距离为D,则鼻孔,眉毛和嘴巴到基线的垂直距离分别约为0.6D,0.3D和1.0D。越符合这个标准的“物体”组合,其评价函数值越大。
实际的照片中,眉毛常和头发粘连在一起无法分割出来,而鼻子往往因为与脸部皮肤的对比太不强烈而根本不出现在二值化图像中。经过实践,发现使用仅仅包括眼睛和嘴巴的几何模型就足以解决问题,所以我的算法只考虑了眼睛和嘴巴。
具体的算法是这样的:
1.首先任意挑选一对“物体”(设为eye1和eye2),计算它们作为一对眼睛的评价函数:
强制性条件:eye1必须在eye2的左边(防止同一对“物体”被考虑两遍);eye1和eye2的连线倾角必须在之间(人脸的角度不能太倾斜)。
评价函数表达式:
Eeye=exp{-4.8·[0.4(l1-l2)2+0.2(l1+l2-1)2+0.2(O1-O)2+0.2(O2-O)2]}
其中l1和l2分别是eye1和eye2的归一化长度(长度除以eye1和eye2的中心距离D),O1是eye1的主轴倾角,O2是eye2的主轴倾角,O是eye1和eye2连线的倾角。
易知表达式中各项越接近0,则评价函数值越大,越接近1。
评价函数中各项代表的含义:
(l1-l2)2:两眼的长度应该相等。
(l1+l2-1)2:两眼长度之和应该大致等于两眼的中心距。
(O1-O)2,(O2-O)2:两眼的倾角应该都等于两眼中心连线的倾角。
如果Eeye超过一定的阈值(0.85),那么认为这一对“物体”很可能是一对眼睛,进入下一步2。否则舍弃这对“物体”,另取一对重新做1。
2.在其余的“物体”中任取一个,计算它作为嘴巴的评价函数:
强制性条件:该“物体”须在眼睛的下面;该物体长宽比不能小于2(否则作为嘴巴来说太宽了)。
评价函数表达式:
Emouth=exp{-4.8·[0.4(dm-1)2+0.2(O-mO)2+0.2xm2+0.2(ml-0.5el)2]}
其中dm是“物体”中心到两眼中心连线的垂直距离,O是两眼中心连线的倾角(在1中算出),mO是“物体”的倾角,xm是“物体”相对于两眼中心连线中点的横向坐标(计算方法:先把坐标系原点移动到两眼中心连线中点,然后旋转坐标系使得两眼中心连线与x轴重合,此时“物体”的重心的x坐标就是xm),ml是“物体”的长度,el是两眼长度的平均值。
评价函数中各项代表的含义:
(dm-1)2:嘴到两眼中心连线的垂直距离应该大致等于两眼的中心距。
(O-mO)2:嘴的倾角应该等于两眼中心连线的倾角。
xm2:嘴的左右位置应该和两眼中心连线的中点一致。
(ml-1.5el)2:嘴的长度应该大致等于眼睛长度的1.5倍。
如果Emouth超过了一定的阈值(0.7),那么认为“物体”很可能是一张嘴。如果这是第一个找到的嘴的候选者,那么把它存储起来。如果它不是第一个,那么就和存储的嘴的候选者进行比较,保留评价函数值较大的那一个。把所有的物体(除了两个眼睛)都检查过一遍之后,进入下一步3。
由于照片中嘴和脸部皮肤之间的对比差别往往不大,所以经过二值化和分割以后,嘴常常会破碎成两块或更多块。所以我引入了一种方法来拼合这些碎块。当每次遇到一个可能是嘴的“物体”时(记为m),不是简单的和已存储的候选者(记为mouth)作比较二选一,而是尝试把它们合并成一个新的“物体”(记为mmerge),然后在m,mouth,mmerge三个“物体”中选出评价函数最高的那一个作为新的mouth存储起来。这样如果有几个碎块拼在一起更符合嘴的要求的话,算法就会把它们拼起来。考虑到嘴的碎片常常不符合长宽比不小于2的要求,上面提到的强制要求的第二条被取消,代之以要求拼合后嘴的长宽比不小于2。对拼合的嘴还有另一个强制要求,就是两个需要被拼合的碎块相距不能超过两个标准嘴的长度(眼睛平均长度的3倍)。
图10显示了图像分割的结果与几何匹配的结果。可以从图中看到,嘴的拼合的确解决了嘴巴破碎的问题。
3.计算综合的评价函数,表达式为:
Eval=0.8Eeye+0.2Emouth
如果这个评价函数值超过了一定的阈值(0.8),那么认为这些找到的“物体”合起来的确是一张人脸。
有些情况下,程序可能错把眉毛当作眼睛,与嘴合起来形成一张“人脸”,这样同一张人脸就可能被检测到两次。经过实验,我发现单纯提高评价函数的阈值无法很好地解决这个问题。阈值设得大,虽然可以排除掉眉毛与嘴巴的组合,却会导致漏判其他的人脸。所以我在3中又增加了一层判断:如果发现新找到的人脸与已经找到的人脸占用了共同的“物体”,那么就比较这两个人脸的评价函数值,仅仅保留评价函数值较大的那个作为检测结果。实践证明这种方法能够较好地解决上述问题。
几何匹配结束后,在图像中显示代表眼睛和嘴巴的“物体”,表示找到的人脸的位置,图11是两个例子,其中右面一幅有3张人脸,全部被成功地检测出来了。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
Claims (4)
1.一种基于几何匹配和分合算法的人脸识别方法,其特征是具体方法如下:
a.人脸定位中的图像分割:把人脸的器官与脸的其他部分分离开来,并保存每个器官的完整性;
b.对图像分割后进行分合算法:具有某种共同特征并且相互连通的像素分在同一区域,而特征不同或者不相互连通的像素分在不同的区域;
c.成组算法:用来把挨得足够近的可能本属于同一器官的特征合并起来;
d.形状属性的计算:(1)特征块的位置;(2)特征块的取向;(3)特征块的外接矩形;
e.图像的预处理:(1)图像对比度的增强;(2)二值化;
f.几何匹配算法。
2.根据权利要求1所述的一种基于几何匹配和分合算法的人脸识别方法,其特征是:b中分合算法包括分割算法、合并算法和相邻归并算法,所述的分割算法的具体步骤如下:(1)把金字塔数据结构中起始某个中间层的数据块编码全部压入工作堆栈RgStack;(2)从RgStack弹出一个数据块编码Code;(3)反复执行2,直至堆栈RgStack空;
所述的合并算法的具体步骤如下:(1)把中间层里所有均匀的数据块的编码存入工作队列RgA;(2)从RgA出队一个编码Code;(3)反复执行2,直至队RgA空;
所述的相邻归并算法的具体步骤如下:(1)从RgCode中弹出一个编码,压入工作堆栈RgStack;(2)从RgStack中弹出一个编码Code,将它入队到RgA;(3)反复执行2,直至栈RgStack空;(4)反复执行1-2-3,直至栈RgCode空。
3.根据权利要求1所述的一种基于几何匹配和分合算法的人脸识别方法,其特征是:e中图像对比度的增强的方法包括S形变换方法、直方图均衡化方法和灰度分布标准化方法。
4.根据权利要求1所述的一种基于几何匹配和分合算法的人脸识别方法,其特征是:e中二值化分为全局阈值的二值化和取局部阈值的二值化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102556484A CN102831397A (zh) | 2012-07-23 | 2012-07-23 | 一种基于几何匹配和分合算法的人脸识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102556484A CN102831397A (zh) | 2012-07-23 | 2012-07-23 | 一种基于几何匹配和分合算法的人脸识别方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102831397A true CN102831397A (zh) | 2012-12-19 |
Family
ID=47334525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102556484A Pending CN102831397A (zh) | 2012-07-23 | 2012-07-23 | 一种基于几何匹配和分合算法的人脸识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831397A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111202494A (zh) * | 2018-11-22 | 2020-05-29 | 松下知识产权经营株式会社 | 皮肤分析装置、皮肤分析方法以及记录介质 |
CN112070708A (zh) * | 2020-08-21 | 2020-12-11 | 杭州睿琪软件有限公司 | 图像处理方法、图像处理装置、电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093539A (zh) * | 2007-07-27 | 2007-12-26 | 哈尔滨工程大学 | 手指静脉特征提取与匹配识别方法 |
CN101533517A (zh) * | 2009-04-15 | 2009-09-16 | 北京联合大学 | 一种基于结构特征的中国书画印章图像自动提取方法 |
-
2012
- 2012-07-23 CN CN2012102556484A patent/CN102831397A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093539A (zh) * | 2007-07-27 | 2007-12-26 | 哈尔滨工程大学 | 手指静脉特征提取与匹配识别方法 |
CN101533517A (zh) * | 2009-04-15 | 2009-09-16 | 北京联合大学 | 一种基于结构特征的中国书画印章图像自动提取方法 |
Non-Patent Citations (1)
Title |
---|
刘向: "基于几何匹配和分合算法的生物特征识别技术在公安视频监控中人脸识别的应用研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 May 2011 (2011-05-15) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111202494A (zh) * | 2018-11-22 | 2020-05-29 | 松下知识产权经营株式会社 | 皮肤分析装置、皮肤分析方法以及记录介质 |
CN112070708A (zh) * | 2020-08-21 | 2020-12-11 | 杭州睿琪软件有限公司 | 图像处理方法、图像处理装置、电子设备、存储介质 |
CN112070708B (zh) * | 2020-08-21 | 2024-03-08 | 杭州睿琪软件有限公司 | 图像处理方法、图像处理装置、电子设备、存储介质 |
US11985287B2 (en) | 2020-08-21 | 2024-05-14 | Hangzhou Glority Software Limited | Image processing method, image processing device, electronic apparatus and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhu et al. | Robust point cloud classification based on multi-level semantic relationships for urban scenes | |
Houben | A single target voting scheme for traffic sign detection | |
Bariya et al. | Scale-hierarchical 3d object recognition in cluttered scenes | |
CN106295460B (zh) | 人的检测方法及设备 | |
CN105335722A (zh) | 一种基于深度图像信息的检测系统及方法 | |
CN102567993B (zh) | 基于主成分分析的指纹图像质量评价方法 | |
CN104866829A (zh) | 一种基于特征学习的跨年龄人脸验证方法 | |
CN101154265A (zh) | 基于局部二值模式特征和图匹配的虹膜识别方法 | |
CN105574063A (zh) | 基于视觉显著性的图像检索方法 | |
CN102147812A (zh) | 基于三维点云模型的地标建筑图像分类方法 | |
CN106021330A (zh) | 一种用于混合轮廓线视图下的三维模型检索方法 | |
CN105224937A (zh) | 基于人体部件位置约束的细粒度语义色彩行人重识别方法 | |
CN109753950A (zh) | 动态人脸表情识别方法 | |
Paul et al. | Extraction of facial feature points using cumulative histogram | |
Liu et al. | A novel rock-mass point cloud registration method based on feature line extraction and feature point matching | |
CN105184294B (zh) | 一种基于像素追踪的倾斜文字判断识别方法 | |
CN115861247A (zh) | 一种高分辨率遥感影像轮廓多级正则化方法、系统及应用 | |
CN104376312A (zh) | 基于词袋压缩感知特征提取的人脸识别方法 | |
Xu et al. | License plate recognition system based on deep learning | |
CN102831397A (zh) | 一种基于几何匹配和分合算法的人脸识别方法 | |
CN109741351A (zh) | 一种基于深度学习的类别敏感型边缘检测方法 | |
CN103390150B (zh) | 人体部件检测方法和装置 | |
Vezzetti et al. | Application of geometry to rgb images for facial landmark localisation-a preliminary approach | |
CN110378337A (zh) | 金属切削刀具图纸标识信息视觉输入方法及系统 | |
CN103336781A (zh) | 一种医学图像聚类方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121219 |