著录项信息
专利名称 | 一种图像检测方法及装置 |
申请号 | CN200710179241.7 | 申请日期 | 2007-12-11 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2008-05-14 | 公开/公告号 | CN101178770 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06K9/00 | IPC分类号 | G;0;6;K;9;/;0;0;;;G;0;6;K;9;/;3;2;;;G;0;6;T;3;/;0;0查看分类表>
|
申请人 | 北京中星微电子有限公司 | 申请人地址 | 北京市海淀区学院路35号世宁大厦15层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京中星微电子有限公司 | 当前权利人 | 北京中星微电子有限公司 |
发明人 | 邓亚峰;黄英;王浩;邱嵩;霍晓芳;温小勇;俞青;邓中翰 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 黄志华 |
摘要
本发明实施例提供了一种图像检测方法及装置,用以减少图像检测的运算量,提高图像检测速度,节省图像检测芯片内存。本发明提出的一种图像检测方法,包括:根据预先设置的放缩比例,对输入图像进行放缩处理;对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置;对所述候选框位置进行反放缩后添加到候选队列中;根据所述候选队列中的各个候选框位置,确定输入图像的物体位置。本发明用于图像检测,降低图像检测占用的芯片内存,从而更加适合于硬件实现,降低产品成本。
1.一种图像检测方法,其特征在于,该方法包括:
根据预先设置的放缩比例,对上一次放缩得到的图像进行放缩,得到当前放缩得到的图像;
对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置;
对所述候选框位置进行反放缩后添加到候选队列中;
根据所述候选队列中的各个候选框位置,确定输入图像的物体位置。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
预先设置对输入图像进行放缩后得到的图像的最大尺度,对所述输入图像进行第一次放缩处理后得到的图像的尺度为所述最大尺度。
3.根据权利要求1所述的方法,其特征在于,预先为放缩后得到的图像分配两个内存;
将连续两次放缩中的在先放缩得到的第一放缩后图像存储在一个内存中;将在后放缩得到的第二放缩后图像存储在另一内存中。
4.根据权利要求1所述的方法,其特征在于,对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置的步骤包括:
并行计算当前放缩得到的图像的积分图像和平方积分图像;
根据预先训练得到的物体检测器,通过所述积分图像和平方积分图像得到微结构特征值,并且根据所述微结构特征值,确定所述当前放缩后图像的候选框位置。
5.根据权利要求1所述的方法,其特征在于,所述物体检测器的宽和高的值是2的幂次。
6.根据权利要求1所述的方法,其特征在于,对所述候选框位置进行反放缩后添加到候选队列中的步骤包括:
根据待添加的所述反放缩后的候选框的大小和位置,以及已被添加到候选队列中的候选框的大小和位置,判断所述待添加的候选框是否与所述已添加的候选框相近,如果是,则将相近的候选框合并,并将被合并的候选框的个数作为合并后的候选框的置信度;否则,将所述待添加的候选框加入所述候选队列中。
7.根据权利要求6所述的方法,其特征在于,根据所述候选队列中的各个候选框位置,确定所述输入图像的物体位置的步骤包括:
当所述候选队列中的一候选框包含于另一候选框时,将置信度较小的候选框删除;当置信度相同时,删除面积较小的候选框;
将经过所述合并和删除处理后的候选队列中剩余的候选框的位置确定为所述输入图像上的物体位置。
8.一种图像检测装置,其特征在于,该装置包括:
放缩单元,用于根据预先设置的放缩比例,对上一次放缩得到的图像进行放缩,得到当前放缩得到的图像;
候选框单元,用于对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置;
反放缩单元,用于对所述候选框位置进行反放缩后添加到候选队列中;
后处理单元,用于根据所述候选队列中的各个候选框位置,确定输入图像的物体位置。
一种图像检测方法及装置 \n技术领域\n[0001] 本发明涉及图像处理技术领域,尤其涉及一种图像检测方法及装置。 背景技术\n[0002] 在计算机视觉和图像处理技术领域,获取图像或者视频中的人脸信息在诸如人机交互、安全、娱乐等领域都具有重要的应用。因此,从图像中自动获取人脸的数目、大小、位置信息的技术,即人脸检测技术,受到了极大地重视。近年来,随着计算机视觉和模式识别技术的发展,人脸检测技术也得到了快速的发展,逐渐趋向成熟。 \n[0003] 现有技术中Voila提出了一种基于微结构特征(Haar-like Features)和层次型自适应增强(Adaboost)分类器的人脸检测技术,该技术在性能上与基于向量机(SVM)和神经网络(Neural Network)的方法相当,但是,在速度上远远高于基于向量机和神经网络的方法,基本可以达到实时运行的水平。该方法提出后,便得到了研究者的重视,提出了很多改进技术,并且,应用于工业界的很多产品中。 \n[0004] Viola提出的人脸检测方法速度快的原因主要是两点,一是由于采用了基于积分图像(Integral Image)的方法计算微结构特征值,能够快速地计算出输入图像的微结构特征值;二是由于采用了层次型Adaboost算法,该算法先采用运算量小的层拒掉大部分容易排除的干扰,然后,采用运算量大的层处理少量候选干扰。该方法中的采用的微结构特征如图1所示,每个微结构特征值定义为灰色矩形区域内像素亮度(即像素灰度值)和与白色矩形区域内像素亮度和之差。 \n[0005] 为了快速计算出微结构特征值,Viola提出的积分图像如图2所示,积分 图像在点(x,y)处的值定义为其左上角的灰色矩形区域内的所有像素灰度值的和,即: [0006] \n[0007] 其中,II(x,y)表示积分图像在点(x,y)处的值,I(x′,y′)表示输入图像在点(x′,y′)处的像素灰度值。Viola采用如下迭代的方式对图像从左上角的灰色矩形区域扫描一遍得到积分图像: \n[0008] s(x,y)=s(x,y-1)+I(x,y) \n[0009] II(x,y)=II(x-1,y)+s(x,y) \n[0010] 其中,s(x,y)表示x行处于y列之前(包括y)的所有像素灰度值之和,并且,定义s(x,-1)=0,II(-1,y)=0。 \n[0011] 采用积分图像可以快速求取任意矩形区域像素灰度值之和。用sum(r)表示矩形区域r的像素灰度值之和。如图3所示,根据积分图像的定义,可以根据如下公式: [0012] sum(D)=II(4)-II(2)-II(3)+II(1) \n[0013] 求取任意矩形区域D内的像素灰度值之和(A、B、C、D分别表示一个阴影矩形区域,点1、2、3、4分别对应区域A,B,C,D的右下角顶点)。 \n[0014] 为了排除光照等条件的干扰,Viola进一步采用图像亮度方差对上述微结构特征值进行归一化。Viola将图像亮度方差定义为: \n[0015] \n[0016] 其中, 为亮度均值,I(i,j)为点(i,j)处的亮度值,N为输入图像中的像素数目。图像亮度方差可以采用公式: \n[0017] \n[0018] 计算,则归一化微结构特征值定义为gj=fj/σ,其中fj为上述定义的微结构特 征值,即灰色矩形区域内像素亮度和与白色矩形区域内像素亮度和之差。 [0019] Viola采用对每一微结构特征构造最简单的树分类器作为弱分类器,具体如下: [0020] \n[0021] 其中,x为固定尺度的输入图像,gj(x)表示该图像对应的第j个微结构特征值,θj是第j个微结构特征对应的判决阈值,pj的值为1或-1,当pj为1时,判决器的判决符号为大于号,当pj为-1时,判决器的符号为小于号,hj(x)表示第j个弱分类器的判决输出。这样,每个弱分类器只需要一次的阈值比较就可以完成判决。 \n[0022] Viola提出的层次型Adaboost分类器结构如图4所示,对于所有候选窗口,先采用第一层分类器进行判断,如果能通过第一层分类器,则采用第二层分类器继续进行判断,否则,直接拒掉。同理,进行后续各层处理,将能够通过所有分类器处理的矩形区域作为最终的人脸区域。 \n[0023] 进一步,为了能够检测到不同大小、不同位置的人脸,Viola采用基于特征放缩的方式进行处理。首先设定人脸检测器模型的宽度和高度分别为MW和MH(Viola采用的MW=24,MH=24),采用割取并放缩为此尺度的人脸样本和非人脸样本,训练层次型AdaBoost人脸检测模型。假定放缩比例为SR,则采用特征放缩的方式放缩得到的一系列不同尺度的s s\n分类器的宽度和高度分别为ROUND(MW*SR)和ROUND(MH*SR)。其中,s为大于0的整数,ROUND()表示对括号内的数值进行四舍五入取整运算。为了检测到不同大小的人脸,对输入图像计算一次积分图像,然后,采用上述得到的不同尺度的人脸检测器分别进行遍历搜索,从而检测到不同大小,不同位置的人脸,并将所有通过层次型检测器的候选矩形添加到人脸检测队列中记录下来。 \n[0024] 考虑到一个人脸可能会因为尺度、位移变化而对应多个检测结果,因此,一般人脸检测算法都会采用后处理步骤来融合检测结果,使得一个人脸位置只 输出一个检测结果。\n同时,通过融合还能合并某些误检结果,从而减少误检率。上述处理步骤中,已经将通过人脸检测器的人脸候选位置(称作候选人脸框)添加到人脸检测队列中,下面需要合并交叠的候选人脸框。 \n[0025] 每个候选人脸框对应一个矩形,对任意两个候选人脸框,首先计算两个对应矩形区域的交叠区域面积;其次,计算交叠区域面积与两矩形区域平均面积之比(称作交叠度)。将交叠度与阈值进行比较,如果大于阈值,则认为两个候选人脸框交叠,为同一个人脸,否则认为没有交叠。将与某候选人脸框交叠的所有候选人脸框与该候选人脸框合并,具体步骤包括:将所有矩形的左边框横坐标、右边框横坐标、上边框纵坐标和下边框纵坐标分别进行平均得到最终合并矩形的左边框横坐标、右边框横坐标、上边框纵坐标和下边框纵坐标。 \n[0026] Viola提出的人脸检测方法虽然具有很多优点,但是该方法采用了基于特征放缩的分类器构造方式,对于训练的比较复杂的人脸检测器,弱特征数目很多,大概要几千个,每个弱特征需要记录两个矩形框的坐标信息,因此对内存的需求很大。 \n[0027] 参见图5,现有技术中基于金字塔型图像结构的图像检测方式,为了检测到不同尺度的人脸,对输入图像进行放缩,得到多个连续尺度的图像;然后,采用固定大小的人脸检测器模型对其进行处理,使得在最小的图像上,可以检测到最大的人脸,而在最大的图像上,可以检测到最小的人脸。 \n[0028] 但是,基于金字塔型图像结构的图像检测方式,需要保存放缩得到的每个尺度的图像;并且,需要对每个尺度的图像进行计算并保存相应的积分图像,因此,需要的内存也很大。 \n发明内容\n[0029] 本发明实施例提供了一种图像检测方法及装置,用以减少图像检测的运算量,提高图像检测速度,节省图像检测所需内存。 \n[0030] 本发明实施例提供的图像检测方法包括: \n[0031] 根据预先设置的放缩比例,对输入图像进行放缩处理; \n[0032] 对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置; \n[0033] 对所述候选框位置进行反放缩后添加到候选队列中; \n[0034] 根据所述候选队列中的各个候选框位置,确定输入图像的物体位置。 [0035] 本发明实施例提供的图像检测装置包括: \n[0036] 放缩单元,用于根据预先设置的放缩比例,对输入图像进行放缩处理; [0037] 候选框单元,用于对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置; \n[0038] 反放缩单元,用于对所述候选框位置进行反放缩后添加到候选队列中; [0039] 后处理单元,用于根据所述候选队列中的各个候选框位置,确定输入图像的物体位置。 \n[0040] 本发明实施例,根据预先设置的放缩比例,对输入图像进行放缩处理;对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置;\n对所述候选框位置进行反放缩后添加到候选队列中;根据所述候选队列中的各个候选框位置,确定所述输入图像的物体位置。通过该技术方案,在保证检测效果的前提下,仅需保存连续的两次放缩得到的图像,以及当前放缩得到的图像的积分图像和平方积分图像,避免了现有技术需要保存放缩得到的每个尺度的图像,以及需要保存每个尺度的图像的相应积分图像和平方积分图像的操作所引起的内存占用过大的问题,因此,通过本发明实施例提供的技术方案,节省了图像检测芯片的片内内存,减少了运算量,检测速度也得到了提高。 [0041] 附图说明\n[0042] 图1为现有技术中Viola等提出的人脸检测技术所采用的微结构特征示意图; [0043] 图2为现有技术中的积分图像示意图; \n[0044] 图3为现有技术中采用积分图像求取任意矩形像素灰度和的示意图,其中,点1、\n2、3、4分别为区域A、B、C、D的右下角顶点; \n[0045] 图4为现有技术中的层次型人脸检测器结构示意图; \n[0046] 图5为现有技术中的基于金字塔型图像结构的图像检测示意图; \n[0047] 图6为本发明实施例提供的图像检测方法流程示意图; \n[0048] 图7为本发明实施例提供的微结构特征示意图; \n[0049] 图8为本发明实施例提供的并行判定候选框是否能通过当前层分类器的流程示意图; \n[0050] 图9为本发明实施例提供的判定微结构特征是否有效的流程示意图。 具体实施方式\n[0051] 本发明实施例,针对芯片设计的特点,从减少内存占用和简化算法运算量的角度,以基于金字塔型的多尺度图像检测为基础,提出了一种适合于硬件实现的图像检测方法及装置。 \n[0052] 本发明实施例中,以检测图像中的人脸区域为例进行说明,当然,在物体检测领域中,人脸检测是物体检测的一个子领域,汽车检测,行人检测等其他应用和人脸检测类似,均属于模式识别领域的两类分类技术。因此,本发明实施例提出的方案,不仅仅适用于检测图像中的人脸区域,还可以根据实际需要应用于检测图像中的其他类型物体所占的区域。\n例如,可以检测图像中的汽车所在区域,还可以检测图像中的各个人体或动物所在的区域等等。 \n[0053] 为了减少内存的占用,本发明实施例以基于金字塔型的多尺度图像检测为基础,只针对连续两次放缩后得到的图像分配内存,从而避免现有技术需要针对连续放缩后得到的各个尺度的图像分别分配内存的问题。 \n[0054] 本发明实施例中,将连续两次放缩后得到的两个图像中第一次放缩得到的图像称为第一放缩后图像,将下一次放缩得到的图像称为第二放缩后图像。 \n[0055] 下面结合附图,详细说明本发明实施例的具体实施方式。 \n[0056] 参见图6,本发明实施例提出的一种图像检测方法包括: \n[0057] S601、预先设置对输入图像进行放缩得到的图像的最大尺度。 \n[0058] 本发明实施例中,需要对输入图像进行连续放缩,每次将输入图像缩小一定比例,得到若干连续尺度的放缩后图像。那么,最大尺度也就是对输入图像进行的第一次放缩处理所得到的图像尺度。 \n[0059] S602、根据所述最大尺度预先为图像分配内存,共分配四个内存,第一内存用于存储积分图像;第二内存用于存储平方积分图像;第三内存用于存储经过连续两次放缩得到的两个放缩后图像中的一个放缩后图像,那么,另外一个放缩后图像存储在第四内存中。 [0060] 其中,第一内存的存储量最小为最大尺度的放缩后图像的积分图像的大小;第二内存的存储量最小为最大尺度的放缩后图像的平方积分图像的大小;第三内存的存储量最小为最大尺度的放缩后图像的大小;第四内存的存储量最小为第二大尺度的放缩后图像的大小,即最大尺度的次大尺度的放缩后图像的大小,也就是对输入图像进行的第二次放缩后得到的图像的大小。 \n[0061] S603、确定第一放缩后图像,其中,对于第一次放缩,则按照预先设置的放缩比例,对输入图像进行放缩,得到第一放缩后图像,并且,将该第一放缩后图像存储在第三内存中。 \n[0062] 第一次放缩得到的图像的尺度为步骤S601中预先设置的最大尺度。 [0063] S604、对第一放缩后图像进行图像检测,确定候选框,并对候选框进行反放缩后加入候选队列中。具体包括: \n[0064] 步骤一:对第一放缩后图像(当前放缩后图像)计算积分图像和平方积分图像,分别存储在第一内存和第二内存中。 \n[0065] 步骤二:采用预先训练得到的固定尺度大小的人脸检测器对第一放缩后图像(当前放缩后图像)进行判定,得到候选人脸框。 \n[0066] 步骤三:根据第一放缩后图像(当前放缩后图像)的尺度和最大尺度的比 例关系,对候选人脸框的尺度进行相反放缩,得到原始尺度的候选人脸框,并将该候选人脸框添加到人脸队列中。 \n[0067] S605、按照预先设置的放缩比例,对上一次放缩得到的第一放缩后图像进行放缩,得到第二放缩后图像,并将该第二次放缩后图像存储在第四内存中。 \n[0068] S606、对第二放缩后图像进行图像检测,确定候选框,并对候选框进行反放缩后加入候选队列中。具体包括: \n[0069] 步骤一:对第二放缩后图像(当前放缩后图像)计算积分图像和平方积分图像,分别存储在第一内存和第二内存中,从而更新第一内存和第二内存。 \n[0070] 步骤二:采用预先训练得到的固定尺度大小的人脸检测器对第二放缩后(当前放缩后图像)图像进行判定,得到候选人脸框。 \n[0071] 步骤三:根据第二放缩后图像(当前放缩后图像)的尺度和最大尺度的比例关系,对候选人脸框的尺度进行相反放缩,得到原始尺度的候选人脸框,并将该候选人脸框添加到人脸队列中。 \n[0072] 此时的第二放缩后图像对于下一次放缩后得到的图像来说,则是第一放缩后图像,如此循环,第三内存和第四内存不断被连续的第一放缩后图像和第二放缩后图像更新,直到最后一次放缩得到的图像为止。其中,对于每次放缩得到的图像所进行的图像检测都采用相同的处理方法,包括计算积分图像和平方积分图像、采用物体检测器(人脸检测器)对放缩后图像进行判定得到候选框(候选人脸框)、对候选框进行反放缩处理,以及将反放缩处理后的候选框添加到候选队列(人脸队列)中等。 \n[0073] S607、根据人脸队列中的候选人脸框,确定输入图像的人脸区域。 [0074] 上述步骤S603到步骤S606是针对连续两次放缩得到的图像进行的处理,第一内存和第二内存不断被当前放缩得到的图像的积分图像和平方积分图像所更新占用,第三内存和第四内存则不断被连续两次放缩得到的图像所更新占用。 \n[0075] 本发明实施例以基于金字塔型的多尺度图像检测为基础,在内存占用上, 只保存一个尺度的微结构特征,节约了大量内存。而存储积分图像和平方积分图像占用的内存和基于特征放缩的方式相同,虽然多了一个保存图像的内存,但是相比微结构特征占用的内存,还是节省了很多,从而大大节省了内存,降低了芯片成本。在运算量上,虽然基于金字塔型的检测方式比基于特征放缩的检测方式多了图像放缩处理,但是,在相同步长的情况下,需要处理的候选框减少了,所以速度反而会得到提高。较佳地,为了方便处理,限定人脸检测器的步长为2个像素。 \n[0076] 较佳地,如图4所示,人脸检测器中的每层分类器都是一个强分类器,每个强分类器是由多个弱分类器构成的。本发明实施例预先训练得到的人脸检测器,在弱分类器定义方面,预先将微结构特征值定义为两个矩形区域内相同数目的像素亮度和之差。 [0077] 在弱分类器定义上,本发明实施例提出采用两个矩形区域内相同数目的像素亮度和之差,而不是Viola提出的如图1所示的灰色区域和白色区域亮度和之差。具体地,假定区域1和区域2的面积比为RA,则本发明实施例定义微结构特征值为区域1的像素亮度和除以RA后与区域2的像素亮度和之差。 \n[0078] 按照Viola的方式将微结构特征定义为灰、白两个区域像素亮度和之差,对于灰色区域和白色区域的面积不同的微结构特征(例如图1中左下角类型的特征)而言,会造成灰色区域和白色区域的亮度和相差很大,从而得到的微结构特征值远远偏离0值,需要用更高的位数才能够表示该值,不利于硬件的实现。而采用本发明实施例提供的方法,作差的亮度和来自相同数目的像素的累加,差值以零值为中心,偏离零值范围较小,表示差值时需要的数据较少,因此更利于硬件的实现。 \n[0079] 较佳地,本发明实施例中提出不同于图1中Viola所使用的微结构特征的几类微结构特征形状如图7所示。图中灰色区域为基本部分,白色区域的面积为灰色区域的面积的2的幂次倍,例如,可以为1倍、2倍或4倍,当然也可以为其他大于4的2的幂次。具体的,对a,b类形状而言,白色区域为包含 灰色区域的整个矩形区域,灰色区域与白色区域中心重合,白色区域面积为灰色区域面积的2的幂次倍;对于c,d,e,f类形状而言,白色区域为包含灰色区域的整个矩形区域,灰色区域处于白色区域的一个角(左上、左下、右上或右下),且白色区域面积为灰色区域面积的2的幂次倍;对于g类形状而言,灰色区域和白色区域上下边框纵坐标相同,但是水平方向存在一定距离(此距离可以为任意大于0的数),相互不交叠,白色区域面积为灰色区域的2的幂次倍;对于h类形状而言,灰色区域和白色区域左右边框的横坐标相同,但是垂直方向存在一定距离(此距离可以为任意大于0的数),相互不交叠,白色区域面积为灰色区域的2的幂次倍。 \n[0080] 假定上述微结构特征中,白色矩形区域面积为灰色矩形区域面积的2BS,即2的幂次为BS。那么,按照上述改进的微结构特征值定义,本发明实施例提出的微结构特征值,可以定义为白色区域中所有像素亮度和移位BS位后与灰色区域像素亮度和之差。这样设计的优点在于将除法运算转换为移位运算,以简化算法,占用更少的内存。 [0081] 更优的,限定对于图7中的a、b中的微结构特征,BS=1,即白色区域面积为灰色区域面积的2倍;对于c、d、e、f中的微结构特征,BS=2,即白色区域面积为灰色区域面积的4倍;对于g、h中的微结构特征,BS=0,即白色区域和灰色区域面积相同。则对于a、b中的微结构特征,采用整个白色矩形区域的像素亮度和右移一位与灰色区域的像素亮度和之差作为微结构特征值;对于c、d、e、f中的微结构特征,采用整个白色区域亮度和右移两位和灰色区域亮度和作差作为微结构特征值;对于g,h中的微结构特征,采用整个白色区域亮度和与灰色区域像素亮度作差作为微结构特征值。 \n[0082] 上述只是定义了各类微结构特征的形状和特征值计算方式,训练时,每类微结构特征,需要按照不同位置,不同大小,在归一化的人脸检测器大小范围内进行遍历穷举,得到成千上万个具体的微结构特征。将上述得到的各类微结构特征,组合在一起作为Viola提出的AdaBoost选择的候选弱特征。为了进一 步限定候选弱特征的数目,可以限定上述的矩形的大小范围,以及位置偏移步长。 \n[0083] 在弱分类器的构造方式上,为了提高弱分类器的分类能力,本发明实施例采用双\n1 2\n阈值的比较方式来构造弱分类器,每个弱分类器由两个阈值(θj 和θj,且 )和一个极性符号(pj,pj的值为1或-1)组成, \n[0084] 当pj为1时,分类器定义为: \n[0085] \n[0086] 当pj为-1时,分类器定义为: \n[0087] \n[0088] 其中,x为固定尺度的图像,gj(x)表示图像对应第j个微结构特征值,hj(x)表示第j个弱分类器的判决输出。 \n[0089] 上述弱分类 器的构造方式,比Viola提出的方式更 加普适。当pj\n2\n为 1,且 θj 为 正 无 穷 大 时, 转 换 为 \n1\n中pj=1的情况;当pj为1,且θj 为负无穷小时, \n转换为 中pj\n=-1的情况。也就是说本发明提出的双阈值方式涵括了Viola提出的单阈值情况。 [0090] 一种实施方式是,对Viola中的弱分类器训练算法(train a classifier hj,whichis restricted to using a single feature),将Viola的单阈值弱分类器构造算法替换为本发明实施例提出的双阈值弱分类器构造算法。即,对当前微结构特征gj(x), 选择\n1 2\npj,θj 和θj,使得该微结构特征组成的弱分类器对所有样本的加权错误率最小。 [0091] 因此,增加了候选弱分类器的可能形式,从而使得能够选择出分类能力更强的弱分类器,从而提高强分类器乃至最终层次型分类器的性能。 \n[0092] 较佳地,在上述步骤一中提到的计算积分图像的方式上,本发明实施例是按照从上到下,从左到右的顺序,采用当前放缩后图像的每行像素到当前像素的所有像素亮度和计算得到的。 \n[0093] Viola的方法需要额外的内存保存s(x,y),因此会占用W×H个s(x,y)对应的内存。而采用本发明实施例提出的计算积分图像和平方积分图像的方式,可以进一步节省内存。 \n[0094] 例如,采用rs(x,y)表示第y行到当前像素(x,y)为止(包括当前像素)的所有像素亮度和,即 采用下列公式迭代计算积分图像: \n[0095] rs(x,y)=rs(x-1,y)+I(x,y) \n[0096] II(x,y)=II(x,y-1)+rs(x,y) \n[0097] 现有技术采用每列像素到当前像素为止所有像素亮度和(即s(x,y))来递推计算积分图像,而本发明实施例采用每行到当前像素为止(包括当前像素)的所有像素亮度和(即rs(x,y))来递推计算积分图像。本发明实施例在计算积分图像时,按照从上到下,从左到右的顺序递推计算,现有技术需要保存所有位置对应的s(x,y),而本发明方法只需要保存当前像素的rs(x,y),其他像素点的rs(x,y)不需要进行保存,因此可以大大地节省内存。 \n[0098] 具体计算积分图像的方式如下: \n[0099] 对任意y=0,1,2...H-1及x=0,1,2...W-1,设定II(-1,y)=0,II(x,-1)=\n0; \n[0100] 对图像所有行,依y=0,1,2...H-1的顺序进行如下处理: \n[0101] 设定rs=0表示当前行所有像素和初始为0; \n[0102] 对图像y行中的所有像素按照x=0,1,2...W-1的顺序进行如下处理: [0103] 令rs=rs+I(x,y); \n[0104] 则当前像素(x,y)的积分图像II(x,y)=II(x,y-1)+rs; \n[0105] 计算完第y行的积分图像后接着计算第y+1行的积分图像。 \n[0106] 对图像的所有行处理完毕后,完成积分图像的计算。 \n[0107] 可见,本发明实施例只需要保存一个rs(x,y)对应的数据,对于一些内存要求较高的应用,比如芯片设计,采用本发明实施例提供的方法更具优点。 \n[0108] 对于计算平方积分图像,与计算积分图像同理。具体地,将平方积分图像的点(x,y)处的值定义为 则点(x,y)对应的平方积分图像\n为SqInteg(x,y)。假定sqrs(x,y)表示第y行到当前像素(x,y)为止(包括当前像素)所有像素亮度平方的和,即\n[0109] 采用下列公式计算平方积分图像: \n[0110] sqrs(x,y)=sqrs(x-1,y)+I(x,y)*I(x,y) \n[0111] SqInteg(x,y)=SqInteg(x,y-1)+sqrs(x,y)。 [0112] 具体计算平方积分图像的方式如下: \n[0113] 对 任 意y= 0,1,2...H-1及 x=0,1,2...W-1,设 定 SqInteg(-1,y)= 0,SqInteg(x,-1)=0; \n[0114] 对图像所有行,依y=0,1,2...H-1的顺序进行如下处理: \n[0115] 设定sqrs=0表示当前行的所有像素和的初始值为0; \n[0116] 对图像y行中的所有像素依x=0,1,2...W-1的顺序进行如下处理: [0117] 令sqrs=sqrs+I(x,y)*I(x,y); \n[0118] 则当前像素(x,y)的平方积分图像SqInteg(x,y)=SqInteg(x,y-1)+sqrs; [0119] 计算完第y行的平方积分图像后接着计算第y+1行的平方积分图像。 [0120] 对所有行处理完毕后,完成平方积分图像的计算。 \n[0121] Viola训练的人脸检测器的尺度为24×24,为了计算方便,本发明实施例采 用2的幂次作为预先训练得到的人脸检测器的固定尺度(包括宽和高)。采用公式和 计算归一化系数时,需要进行除法运算,即除以\nN,N为该固定尺度的图像中所有像素数目和。而本发明实施例将人脸检测器的宽和高都取为2的幂次,可以将除法运算转换为移位运算,从而大大节省了计算量。其中,高度和宽度可以相同,也可以不同。 \n[0122] 对于人脸检测技术而言,由于采用不同尺度的人脸检测器进行全图范围内的搜索,常常会在同一个真实人脸位置附近检测到多个候选人脸框,所以需要进行合并操作。 [0123] 较佳地,上述步骤三中提到的将反放缩后的候选人脸框添加到人脸队列时,自动进行候选人脸框的合并操作,以节省保存人脸队列所需要的内存。 \n[0124] 本发明实施例初始化人脸队列为空,将候选人脸框添加到人脸队列时,具体包括: \n[0125] 判断人脸队列是否为空,如果是,则直接将反放缩后的候选人脸框(以下称为添加人脸框)添加到人脸队列;否则,判断该候选人脸框是否和人脸队列中已保存的候选人脸框(以下称为记录人脸框)相似,如果与某个记录人脸框相似,则将二者合并,否则,将添加人脸框作为新的记录项添加到人脸队列中。 \n[0126] 较佳地,一种判定添加人脸框和记录人脸框是否相似的方法是当两个矩形框的大小相近且位置交叠时,认为二者相似。 \n[0127] 例如,假设待添加的候选人脸框表示为R(i,j,TWidthn,THeightn),其中,i表示待添加的候选人脸框的左边框横坐标,j表示待添加的候选人脸框的上边框纵坐标,TWidthn表示待添加的候选人脸框的宽,THeightn表示待添加的候选人脸框的高。假定人脸队列中,第m个记录人脸框为Rm(l,t,wd,ht),其中,1为记录人脸框的左边框横坐标,t为记录人脸框的上边框纵坐标,wd为记录人脸框的宽,ht为记录人脸框的高。一种判定二者大小是否相近的方法如下: \n[0128] 如果满足 则认为二者相近,否则,认为二者\n不相近。其中ENLARGE0和ENLARGE1分别为相近宽度比例区间的上限和下限。 [0129] 一种判定二者的位置是否交叠的方式如下: \n[0130] 令 li = max(i,l),ti = max(j,t),ri = min(i+TWidthn,l+wd),bi =min(j+THeightn,t+ht),则交叠面积为areai=(ri-li)*(bi-ti),人脸队列中第m个记录人脸框的矩形区域面积为 则如果满足 认为二者位置交\n叠,否则,认为二者位置不交叠。其中,ENLARGE2为阈值,min表示取最小值,max表示取最大值。 \n[0131] 将两个大小相近且位置交叠的矩形区域合并的操作,即将添加人脸框的信息和人脸队列中的相似的记录人脸框的信息进行融合,作为新的记录人脸框。一种可行的合并方式为:将添加人脸框和记录人脸框的左边框横坐标、上边框横坐标、宽度、高度分别取平均作为新的记录人脸框的左边框横坐标、上边框横坐标、宽度、高度。 \n[0132] 在上述合并处理完成后,较佳地,步骤S607中根据人脸队列中的候选人脸框确定输入图像上的人脸区域位置时,具体包括:判断人脸队列中任意两个记录人脸框之间是否存在位置上的包含关系(即一个矩形框处于另外一个矩形框中),如果存在包含关系,则删除置信度小的记录人脸框,如果置信度相同,删除面积小的记录人脸框。将经过上述合并操作和删除操作后,保存在人脸队列中的记录人脸框的位置作为最终检测到的输入图像上的人脸框位置。 \n[0133] 一种判定两个记录人脸框是否存在包含关系的方法包括: \n[0134] 假定两个记录人脸框分别为Rm(l,t,wd,ht)和Rm′(l′,t′,wd′,ht′),则二者交叠矩形框的左边框横坐标、上边框纵坐标、右边框横坐标、下边框纵坐标分 别为:li=max(l,l′),ti=max(t,t′),ri=min(l+wd,l′+wd′),bi=min(t+ht,t′+ht′)。 [0135] 如果满足li==l,ti==t,ri==(l+wd),bj==(t+ht)或li==l′,ti==t′,ri==(l′+wd′),bj==(t′+ht′),则认为二者存在包含关系。 [0136] 上述人脸框的置信度可以定义为该人脸框在合并过程中合并的所有添加人脸框的数目。 \n[0137] 较佳地,为了减少归一化处理时的除法运算量,在对归一化后的微结构特征值和阈值进行比较时,可以将阈值和归一化参数相乘作为新的阈值,将没有进行归一化后的微结构特征值与新的阈值进行比较,可以达到同样的判定结果,但是却将运算量大的除法转化为了运算量小的乘法。 \n[0138] 较佳地,芯片设计中,可以采用分配更多的运算单元的方式加速处理。此时,需要将运算进行并行化和流水线处理。具体如下: \n[0139] 计算积分图像和平方积分图像的过程可以和图像放缩的过程并行处理;进一步,还可以和图像采集和其他图像处理过程并行处理。 \n[0140] 积分图像和平方积分图像在运算上是相互独立,无时间上的先后关系,因此可以并行处理,针对每行的放缩后图像,读取或计算得到该行图像的每个像素点的亮度值;并行迭代计算积分图像和平方积分图像,得到该行图像对应的积分图像和平方积分图像。 [0141] 为了提高处理速度,本发明实施例在计算完成部分的积分图像和平方积分图像后,就开始验证完全处于已经计算得到的积分图像范围内的矩形框是否为候选人脸框,即对候选框的验证过程和积分图像及平方积分图像的计算过程是并行的,而不是等待放缩后图像的积分图像和平方积分图像全部计算完毕后,再进行候选框的验证过程。 [0142] 例如,用THeight表示人脸检测器的高度,在对放缩后图像完成了k行的积分图像和平方积分图像的计算后,判断人脸检测器的高度是否满足公式: \n[0143] THeight≤k \n[0144] 如果满足上述公式,则在计算放缩后图像的下面各行的积分图像和平方积分图像时,同时验证下边框纵坐标为k-1,横坐标为0:W-THeight,宽度和高度均为THeight的所有矩形框是否为候选框。同理,待k+deltan行的积分图像和平方积分图像计算完成后,再在继续计算放缩后图像的下面各行的积分图像和平方积分图像的同时,验证下边框纵坐标为k-1+deltan,横坐标为0:W-THeight的所有矩形框是否为候选框。 \n[0145] 这样,对底部在不同行的各个候选框的验证过程和积分图像及平方积分图像的计算过程就实现了并行处理。 \n[0146] 当然,也可以采用其他方式进行处理,例如,每计算一行的积分图像和平方积分图像,就进行一次判断,判断是否满足公式THeight≤k,如果满足,则进行候选框的验证过程。 \n[0147] 在判定候选框是否为人脸框时,需要采用层次型的分类器对该候选框进行逐级判定。各层分类器的处理有先后顺序,但是可以采用流水线结构对各个候选框进行处理,以提高对候选框验证的速度,具体包括: \n[0148] 对于层次型的分类器的每层分类器都设置一套独立的运算单元,用以对不同候选框进行流水线处理。 \n[0149] 例如:第1个候选框先占用第0层运算单元,当第0层运算单元处理完第1个候选框时,第2个候选框开始占用第0层运算单元,当第0层运算单元处理完第2个候选框时,第3个候选框开始占用第0层运算单元。同样,第1个通过第0层运算单元判定的候选框会占用第1层运算单元,处理完成后,则下一个通过第0层运算单元判定的候选框会占用第\n1层运算单元。因此,共需要CascNum套运算单元,其中,CascNum表示分类器的总层数。但是,在实际应用中,如果认为这样做需要的硬件资源过多,可以部分采用这种方式。例如,考虑到前面各层分类器需要处理的候选框比较多,而后续各层分类器处理的候选框较少,可以在前面各层分类器分配较多的运算单元,后面各层分类器分配 较少的运算单元。 [0150] 较佳地,还为各层分类器设置相应的候选框数据结构队列(FIFO),用于记录候选框的坐标信息等,例如包括候选框的左边坐标、上边坐标,候选框所在尺度的序号,以及归一化参数(stdDev)。各层分类器的判定模块,读取相应的FIFO中的候选框的坐标信息,并根据尺度序号,获取对应尺度的分类器参数,对该候选框进行判定。 \n[0151] 其中,第0层分类器的处理方式和后面各层的分类器的处理方式略有不同,在第0层分类器中需要求取归一化参数,并将归一化参数记录在第0层的FIFO中,并依次传递给后续各层的FIFO,以便后续分类器的使用。 \n[0152] 例如,判定人脸检测器的高度小于或等于2k+1,并将该尺度的当前行所有候选框添加到第0层分类器的FIFO中,具体而言,对于所有可能的左边框横坐标,即i=0;\ni<=maxx;i+=deltan,其中maxx=W-TWidth,将当前候选框R(i,2k+1-THeight,TWidth,THeight)添加到第0层分类器的FIFO中。其中,i表示候选框的左边框横坐标,\n2k+1-THeight表示候选框的上边框纵坐标,TWidth表示候选框的宽,THeight表示候选框的高。 \n[0153] 在验证候选框的具体步骤中,假定在固定尺度的人脸检测器中,当前层分类器包含weakNumstageOrder个微结构特征,则这些微结构特征之间相互独立,只共享积分图像内存和归一化参数。因而,为了进一步提高验证速度,可以采用并行处理方式,并行计算不同微结构特征值,计算完毕再求和,如图8所示。 \n[0154] 较佳地,具体在计算某个微结构特征时,求取两个矩形区域的亮度和,以及计算阈值的步骤也可以并行处理,如图9所示。较佳地,可以设置一个硬件单元用于计算矩形区域亮度和。 \n[0155] 进一步,在计算归一化参数方面,也可以进行并行处理,同时对积分图像和平方积分图像进行相关运算,得到归一化参数。 \n[0156] 下面介绍一下本发明实施例提供的装置。 \n[0157] 本发明实施例提供的图像检测装置包括: \n[0158] 放缩单元,用于根据预先设置的放缩比例,对输入图像进行放缩处理。 [0159] 候选框单元,用于对当前放缩得到的图像,采用预先训练得到的物体检测器进行检测,得到该放缩后图像的候选框位置。 \n[0160] 反放缩单元,用于对所述候选框位置进行反放缩后添加到候选队列中。 [0161] 后处理单元,用于根据所述候选队列中的各个候选框位置,确定所述输入图像的物体位置。 \n[0162] 综上所述,通过本发明实施例提供的技术方案,在保证图像检测效果的前提下,简化图像检测算法,提高了图像检测速度,降低图像检测芯片的内存占用,从而更加适合于硬件实现,降低产品成本。 \n[0163] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2015-02-04
未缴年费专利权终止
IPC(主分类): G06K 9/00
专利号: ZL 200710179241.7
申请日: 2007.12.11
授权公告日: 2011.02.16
- 2011-02-16
- 2008-07-09
- 2008-05-14
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-05-23
|
2006-11-14
| | |
2
| |
2006-02-08
|
2005-08-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |