一种目标的快速检测方法及装置转让专利

申请号 : CN201910174066.5

文献号 : CN109919228B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘若堃肖立波张涛

申请人 : 旺微科技(浙江)有限公司

摘要 :

本发明公开了一种目标的快速检测方法,方法包括:1)、获取待检测图像,以及针对待检测图像的检测框尺寸,且检测框尺寸不大于待检测图像的尺寸;2)、将特征子集的特征权重与比值对应的其他特征子集的特征权重合并;3)、计算每一个特征子集的积分值;4)、判断检测框区域内的特征子集的积分值是否大于设定门限值;5)、若是,按照检测框的滑动方向,将检测框滑动第一步长,并返回执行步骤3),直至待检测图像中的目标被检测完成;6)、若否,按照检测框的滑动方向,将检测框滑动第二步长并返回执行步骤3),直至待检测图像中的目标被检测完成。本发明公开了一种目标的快速检测装置。应用本发明实施例,可以降低运算复杂度。

权利要求 :

1.一种目标的快速检测方法,其特征在于,所述方法包括:

1)、获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸;

2)、针对每一个哈尔特征的特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重;

所述步骤2),包括:

A:针对每一个特征子集,在特征子集的特征值的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;

B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;

C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,执行所述步骤3);

3)、根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算检测框区域内的每一个特征子集的积分值;

4)、判断所述检测框区域内的特征子集的积分值是否大于设定门限值;

5)、若是,按照检测框的滑动方向,将所述检测框滑动第一步长,并返回执行所述步骤

3),直至所述待检测图像中的目标被检测完成;

6)、若否,按照检测框的滑动方向,将所述检测框滑动第二步长并返回执行所述步骤

3),直至所述待检测图像中的目标被检测完成。

2.根据权利要求1所述的一种目标的快速检测方法,其特征在于,所述根据合并后的特征权重计算检测框区域内的每一个特征子集的积分值,包括:预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。

3.根据权利要求1所述的一种目标的快速检测方法,其特征在于,所述判断所述检测框区域内的特征子集的积分值是否大于设定门限值,包括:利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值,node对应每个特征子集的下标。

4.根据权利要求3所述的一种目标的快速检测方法,其特征在于,所述判断所述检测框区域内的特征子集的积分值是否大于设定门限值,包括:利用公式, 判断所述检测框区域内的特征子集

的积分值是否大于设定门限值,其中,

if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。

5.一种目标的快速检测装置,其特征在于,所述装置包括:

获取模块,用于获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸;

合并模块,用于针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重;

所述合并模块,用于:

A:针对每一个特征子集,在特征子集的特征权重的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;

B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;

C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,触发计算模块;

计算模块,用于根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算完整图像区域内的每一个特征子集的积分值,即特征权重*原始积分值;

判断模块,用于判断所述检测框区域内的特征子集的积分值是否大于设定门限值;

第一滑动模块,用于在所述判断模块的判断结果为是的情况下,按照检测框的滑动方向,将所述检测框滑动第一步长,并触发所述计算模块,直至所述待检测图像中的目标被检测完成;

第二滑动模块,用于在所述判断模块的判断结果为否的情况下,按照检测框的滑动方向,将所述检测框滑动第二步长,并触发所述计算模块,直至所述待检测图像中的目标被检测完成。

6.根据权利要求5所述的一种目标的快速检测装置,其特征在于,所述计算模块,用于:预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。

7.根据权利要求5所述的一种目标的快速检测装置,其特征在于,所述判断模块,用于:利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值。

8.根据权利要求7所述的一种目标的快速检测装置,其特征在于,所述判断模块,用于:利用公式, 判断所述检测框区域内的特征子集

的积分值是否大于设定门限值,其中,

if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。

说明书 :

一种目标的快速检测方法及装置

技术领域

[0001] 本发明涉及一种目标检测方法及装置,更具体涉及一种目标的快速检测方法及装置。

背景技术

[0002] 多目标检测技术需要在图片中检测出多个目标在图像中的位置,在视觉检测识别领域被广泛应用,其流程通常包括以下步骤:1、通过训练得到Harr特征,通常情况下Harr特征包括:用于计算方差的sum特征、sqsum特征;以及tilted特征三类特征值。2、计算完整图像的积分图,以矩阵积分sum特征为例,由于sum为矩阵积分,采取的是逐级累加的方式,因此,一次完整图像积分图运算复杂度为:H*W*2次加法。3、再定义检测窗区域,该区域大小固定为宽detec_w,高detec_h,在完整图像中以一定的步长滑动,然后计算检测区域是否满足Harr特征值,判断该区域的Harr特征是否大于预定义的门限,方法为:a.利用公式计算检测窗方差值,detec_nf=detec_w*detec_h*valsqsum‑valsum*valsum,计算检测窗方差值,其中valsum为检测窗区域内每个点的积分,valsqsum为检测窗区域内每个点平方的积分。b.由于Harr特征包含nstages个集合,每个集合分别包括ntrees[i]个子集,其中i=0…nstage‑1,总的特征数为harr_num。利用公式,
[0003] featureValue=SUM
[0004] (weight[0]*featureEvaluator[0],…weight[n‑1]*featureEvaluator[n‑1]),分别计算ntrees[i]个子集中的每个tree子集中的特征值,其中,featureEvaluator为特征窗的积分,weight为加权值,不同子集的weight和featureEvaluator分别独立。图1为本发明实施例提供的Harr特征中的sum特征的计算原理示意图,如图1所示,以本发明图1为例说明(n=3),其中P[m][0]~P[m][3]分别对应sum特征的4个积分图端点,m=0…2,结果如下所示,
[0005] featureValue[0]=P[0][0]+P[0][3]‑P[0][1]‑P[0][2];
[0006] featureValue[1]=P[1][0]+P[1][3]‑P[1][1]‑P[1][2];
[0007] featureValue[2]=P[2][0]+P[2][3]‑P[2][1]‑P[2][2];
[0008] 如果,Wight[0]=3,Wight[1]=2,Wight[2]=‑1,则将上述参数代入公式,[0009] featureValue=SUM
[0010] (weight[0]*featureEvaluator[0],…weight[n‑1]*featureEvaluator[n‑1])中,计算每一个tree子集中的特征值。
[0011] c.再判断tree子集中的Harr特征是否大于预定义的门限,即if(featureValue[node]/detec_nf>th_node[node]),将大于门限的位置筛选用于后续处理,其中node=0…ntrees[i],且每个tree子集中的th_node门限独立。由上描述可知,每个检测窗区域的运算复杂度为:加法:12次;乘法:3次;浮点除法:1次(featureValue[node]/detec_nf,保证精度不过度丢失,通常实现过程中采用浮点运算)。4、如果大于门限记录该区域在图像中的位置。最后遍历图像的每个检测区域,计算对所有记录的区域,通过位置信息进行筛选,筛选出有效位置。总综上所述,由于滑动检测窗的处理,本实施例种滑动步长为1,则总的检测窗运算复杂度为:特征数*像素数*(12次加法+3次乘法+1次浮点除法)。其中像素数为H*W。
[0012] 发明人发现,现有技术存在运算复杂度较高的技术问题。

发明内容

[0013] 本发明所要解决的技术问题在于提供了一种目标的快速检测方法及装置,以解决现有技术中存在的运算复杂度较高的技术问题。
[0014] 本发明是通过以下技术方案解决上述技术问题的:
[0015] 本发明实施例提供了一种目标的快速检测方法,所述方法包括:
[0016] 1)、获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸;
[0017] 2)、针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重;
[0018] 3)、根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算检测框区域内的每一个特征子集的积分值;
[0019] 4)、判断所述检测框区域内的特征子集的积分值是否大于设定门限值;
[0020] 5)、若是,按照检测框的滑动方向,将所述检测框滑动第一步长,并返回执行所述步骤3),直至所述待检测图像中的目标被检测完成;
[0021] 6)、若否,按照检测框的滑动方向,将所述检测框滑动第二步长并返回执行所述步骤3),直至所述待检测图像中的目标被检测完成。
[0022] 可选的,所述步骤2),包括:
[0023] A:针对每一个特征子集,在特征子集的特征值的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;
[0024] B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;
[0025] C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,执行所述步骤3)。
[0026] 可选的,所述根据合并后的特征权重计算检测框区域内的每一个特征子集的积分值,包括:
[0027] 预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。
[0028] 可选的,所述判断所述检测框区域内的特征子集的积分值是否大于设定门限值,包括:
[0029] 利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0030] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值。
[0031] 可选的,所述判断所述检测框区域内的特征子集的积分值是否大于设定门限值,包括:
[0032] 利用公式, 判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0033] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。
[0034] 本发明实施例还提供了一种目标的快速检测装置,所述装置包括:
[0035] 获取模块,用于获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸;
[0036] 合并模块,用于针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重;
[0037] 计算模块,用于根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算检测框区域内的每一个特征子集的积分值;
[0038] 判断模块,用于判断所述检测框区域内的特征子集的积分值是否大于设定门限值;
[0039] 第一滑动模块,用于在所述判断模块的判断结果为是的情况下,按照检测框的滑动方向,将所述检测框滑动第一步长,并触发所述计算模块,直至所述待检测图像中的目标被检测完成;
[0040] 第二滑动模块,用于在所述判断模块的判断结果为否的情况下,按照检测框的滑动方向,将所述检测框滑动第二步长,并触发所述计算模块,直至所述待检测图像中的目标被检测完成。
[0041] 可选的,所述合并模块,用于:
[0042] A:针对每一个特征子集,在特征子集的特征值的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;
[0043] B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;
[0044] C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,触发计算模块。
[0045] 可选的,所述计算模块,用于:
[0046] 预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。
[0047] 可选的,所述判断模块,用于:
[0048] 利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的像素点的积分值是否大于设定门限值,其中,
[0049] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值。
[0050] 可选的,所述判断模块,用于:
[0051] 利用公式, 判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0052] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。
[0053] 本发明相比现有技术具有以下优点:
[0054] 应用本发明实施例,针对每一个像素点,根据所述像素点的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述像素点的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述像素点的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重,减少了用于计算的特征权重的数量,进而减少了积分图的数量,进而降低了运算复杂度。

附图说明

[0055] 图1为现有技术中的一种特征值计算的原理的示意图;
[0056] 图2为本发明实施例提供的一种目标的快速检测方法的流程示意图;
[0057] 图3为本发明实施例提供的一种积分值的计算方法的原理示意图;
[0058] 图4为本发明实施例提供的一种积分图计算的原理示意图;
[0059] 图5为本发明实施例提供的一种Harr特征检测的效果图;
[0060] 图6为本发明实施例提供的一种目标的快速检测装置的结构示意图。

具体实施方式

[0061] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0062] 本发明实施例提供了一种目标的快速检测方法及装置,下面首先就本发明实施例提供的一种目标的快速检测方法进行介绍。
[0063] 图2为本发明实施例提供的一种目标的快速检测方法的流程示意图,如图2所示,所述方法包括:
[0064] S101:获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸。
[0065] 示例性的,获得待检测的完整图像的图像数据,其中宽度为W,高度为H,本实施例中H的取值为640,W的取值为480。
[0066] 定义滑动积分图,积分图区域固定宽为完整积分图宽度W,高为检测窗高度。定义检测窗区域宽度为detect_w,高度为detect_h。
[0067] S102:针对每一个哈尔特征的特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重。
[0068] 具体的,S102步骤可以包括:A:针对每一个特征子集,在特征子集的特征值的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,执行所述步骤S103。
[0069] 示例性的,统计所有Harr特征的特征子集对应的weight(特征权重)的取值的种类的数量。特征权重的种类数量仍然为3;即,特征权重的种类的数量为,特征权重取值中存在的互不相同的取值的数量,例如,特征权重可以为0.1、0.2、0.3,则特征权重的种类的数量为3;如果特征权重可以为0.1、0.2、0.3、0.1。可以理解的是,哈尔特征的特征子集的获取方法为现有技术,这里不再赘述。
[0070] 在实际应用中,可以定义weight共weight_num个取值,以一定的策略进行合并,限定合并后的权值个数不超过weight_num_max,合并原则如下:
[0071] (1)、当weight_num<weight_num_max时,不需要合并;
[0072] (2)、当weight_num>weight_num_max时,将两者比值更接近的尽可能合并成一组,例如:
[0073] 设定初始比例范围a=1.1,当weight[m]/weight[n]<a时,其中m,n=0…weight_num‑1;任意满足以上不等式的特征值权重合并为一组,合并方法为weight[m]以及weight[n]的平均值;
[0074] 当合并后的组数小于weight_num_max时,则合并完成。当合并后的组数大于weight_num_max时,调大比例范围a=1.2,按照上述原理进行进一步的合并,直至合并后的特征值权重的数量不大于weight_num_max。
[0075] 在实际应用中,合并后的权值个数可以为com_weight_num,其取值范围可以为com_weight[0]、…、com_weight[com_weight_num‑1],且com_weight[0]为第1组所有weight的平均值,依次类推。
[0076] 例如,合并后的com_weight的值仅存在‑1、2、3这3种取值的可能,则com_weight_num的取值为3。
[0077] S103:根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算检测框区域内的每一个特征子集的积分值。
[0078] 示例性的,针对检测框区域25*35尺寸内的特征子集,计算每一个特征子集的积分值。通常情况下,每一个特征子集的积分值可以如图3所示:
[0079] 在图3中,sum[x][y]表示对应坐标的像素点的积分值,则新增积分点的积分值为当前行前一个点的积分值加上当前列前面所有点数值的累加(包含当前点),其中,x为该坐标或者该像素点对应的行号;y为该坐标或者该像素点对应的列号。
[0080] 图3为本发明实施例提供的一种积分值的计算方法的原理示意图;如图3所示,可以预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。
[0081] 图3中部的图像表示完整图像,从该图衍生出com_weight分别为‑1(左下角)、2(左上角)、3(右侧)的3张积分图,即每一个特征权重对应一张积分图。
[0082] 每一张衍生出来的积分图中的每个点分别表示com_weight值乘以完整图像对应的积分值,每一张积分图分别定义为wight_tab[0]、wight_tab[1]、wight_tab[2]。
[0083] 然后,再根据每一个衍生出来的积分图中的检测框区域内的像素点的积分值与特征权重的乘积计算每一个哈尔特征的特征值,再对特征子集中每一个哈尔特征的特征值进行累加,得到每一个检测框区域内的特征子集的特征值。
[0084] 一次com_weight积分图运算复杂度为:
[0085] com_weight*W*H*2次加法+com_weight*W*H次乘法
[0086] 如果合并后的com_weight仅存在[‑1,2,3]这3种取值,则com_weight_num=3。
[0087] S104:判断所述检测框区域内的特征子集的积分值是否大于设定门限值;若是,执行S105;若否,执行S106。
[0088] 图4为本发明实施例提供的一种积分图计算的原理示意图,如图4所示,以sum特征为例说明积分图的处理过程,以检测窗为单位分别计算每个weight的积分图,如下图:
[0089] 示例性的,利用如下公式计算检测框区域内的特征子集的积分值,[0090] featureValue=SUM
[0091] (weight_tab[weight_idx[0]]‑>featureEvaluator[0],…weight_tab[weight_idx[n‑1]]‑>featureEvaluator[n‑1]),其中,
[0092] weight_tab[]为S103步骤中得到的针对不同的com_weight所得到的积分图;
[0093] weight_idx[i]为更新后的特征权重在weight_tab中的索引,且i=0、1、…、n‑1;n为Harr特征中子集的数量;
[0094] weight_tab[weight_idx[0]]‑>featureEvaluator[0]为赋值语句,即根据特征权重在weight_tab中的索引所得到的该特征子集的积分值。
[0095] 例如,com_weight=‑1时,weight_idx[i]=0;
[0096] com_weight=2时,weight_idx[i]=1;
[0097] com_weight=3时,weight_idx[i]=2;其中i=0…n‑1。
[0098] 如图4所示,P[m][0]~P[m][3]分别对应第i个特征的4个积分图端点,m=0…n‑1:
[0099] 现有技术在特征权值计算时,每一次使用检测框选择像素区域时,都要根据特征权重与特征子集的积分值之积计算检测框区域内所有的特征子集的积分值;导致乘法占用了较大的比重,一次检测框所对应的计算复杂度为:
[0100] 特征数*像素数*(12次加法+3次乘法+1次乘法+1次移位)。
[0101] 而应用本发明上述实施例,本方案通过使用weight积分表的方式,即,预先根据特征权重与特征子集的积分值之积计算待检测图像内所有的特征子集的积分值,然后在S104步骤中,根据检测框选择的区域直接调用该部分中的特征子集的积分值,相对于现有技术中每一次框选都要重新计算,避免了重复计算的计算量。虽然新增weight积分图引入了com_weight_num*像素数*2次加法+com_weight_num*像素数次乘法的运算,但是节省了上述特征数*像素数*3次乘法,计算复杂度为:
[0102] 一次com_weight积分图运算复杂度为:com_weight*W*H*2次加法+com_weight*W*H次乘法,显然,小于现有技术中的计算复杂度,因此,本发明实施例总体上降低了计算复杂度。
[0103] 由上可知,要达到运算优化的效果,最大合并权值数weight_num_max不应超过特征数。因此,由于合并weight的方式有效限制了com_weight_num个数,使得在工程实现过程中很好的降低了乘法运算,有效降低了检测窗的运算复杂度,最终能有效的降低芯片功耗。
[0104] 然后,判断检测框区域内的特征子集的积分值是否大于设定门限值,若是,将积分值大于设定门限值的特征子集的集合做为目标所在区域。
[0105] 具体的,可以利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0106] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值。
[0107] 在实际应用中,可以将Harr特征是否大于预定义的门限中的除法浮点运算if:featureValue[node]/detec_nf>th_node[node],
[0108] 转换为if(featureValue[node]>th_node[node]*detec_nf),则运算复杂度为:
[0109] 特征数*H*W*(12次加法+3次乘法+1次浮点乘法)。
[0110] 应用本发明上述实施例,除法浮点运算改为浮点乘法运算,可以减少总体运算开销。
[0111] 进一步的,具体的,为了保证其精度并减少浮点运算,将该值由浮点转为定点表示方式,可以利用公式, 判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0112] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。
[0113] 示例性的,将门限th_node[node]转换为定点表达方式,
[0114] 即: a,b均为整数;
[0115] 则,th_node[node]*detec_nf可表示为
[0116] 由于(a*detec_nf)>>b,则S103步骤与S104步骤的总运算复杂度为:
[0117] 特征数*H*W*(12次加法+3次乘法+1次乘法+1次移位)。
[0118] 应用本发明上述实施例,可以更进一步的节省运算开销。
[0119] S105:按照检测框的滑动方向,将所述检测框滑动第一步长,并返回执行所述步骤S103,直至所述待检测图像中的目标被检测完成;
[0120] 示例性的,S105步骤中的计算原理与S104步骤中的计算原理相同,区别仅仅是滑动步长的区别。
[0121] S106:按照检测框的滑动方向,将所述检测框滑动第二步长并返回执行所述步骤S103,直至所述待检测图像中的目标被检测完成。
[0122] 应用本发明实施例,S101步骤至S104步骤的总计算复杂度为:
[0123] com_weight_num*W*H*2次加法+com_weight_num*W*H次乘法+特征数*H*W*(12次加法+1次乘法+1次移位)显然,本发明实施例中的计算复杂度低于现有技术的计算复杂度:
[0124] 特征数*W*H*(12次加法+3次乘法+1次浮点除法)。
[0125] 应用本发明图1所示实施例,针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重,减少了用于计算的特征权重的数量,进而减少了积分图的数量,进而降低了运算复杂度。
[0126] 另外,本发明实施例,降低了运算复杂度,进而降低了目标查找过程对内存的占用。
[0127] 与本发明图1所示实施例相对应,本发明实施例还提供了一种
[0128] 图6为本发明实施例提供的一种目标的快速检测装置的结构示意图,如图6所示,所述装置包括:
[0129] 获取模块601,用于获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸;
[0130] 合并模块602,用于针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重;
[0131] 计算模块603,用于根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的特征子集,并根据每一个特征子集的特征权重计算检测框区域内的每一个特征子集的积分值;
[0132] 判断模块604,用于判断所述检测框区域内的特征子集的积分值是否大于设定门限值;
[0133] 第一滑动模块605,用于在所述判断模块的判断结果为是的情况下,按照检测框的滑动方向,将所述检测框滑动第一步长,并触发所述计算模块603,直至所述待检测图像中的目标被检测完成;
[0134] 第二滑动模块606,用于在所述判断模块的判断结果为否的情况下,按照检测框的滑动方向,将所述检测框滑动第二步长,并触发所述计算模块603,直至所述待检测图像中的目标被检测完成。
[0135] 应用本发明图6所示实施例,针对每一个特征子集,根据所述特征子集的特征权重与除自身之外的其他特征子集特征权重之间的比值,将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重合并,并将所述特征子集的特征权重与所述比值对应的其他特征子集的特征权重更新为合并后的特征权重,减少了用于计算的特征权重的数量,进而减少了积分图的数量,进而降低了运算复杂度。
[0136] 在本发明实施例的一种具体实施方式中,所述合并模块602,用于:
[0137] A:针对每一个特征子集,在特征子集的特征值的种类数大于设定数量时,判断根据所述特征子集的特征权重与除自身之外的其他特征子集的特征权重之间的比值是否大于第一预设阈值;
[0138] B:若是,将所述特征子集的特征权重与除自身之外的其他特征子集的特征权重均更新为,所述特征子集的特征权重与除自身之外的其他特征子集的特征权重的平均值,并更新特征子集的特征值的种类数;
[0139] C:若否,判断更新后的特征子集的特征值的种类数是否大于设定数量,若是,按照设定步长调大所述第一预设阈值,得到第二预设阈值,并将所述第一预设阈值更新为第二预设阈值,返回执行所述A步骤,直至更新后的特征子集的特征值的种类数不大于设定数量;若否,触发计算模块603。
[0140] 在本发明实施例的一种具体实施方式中,所述计算模块603,用于:预先将待检测图像中的每一个特征子集的特征值更新为,合并后的特征权重与完整图像中每一像素的积分值的乘积作为新的积分值;再根据每一个特征子集的特征权重与对应的像素点的新的积分值的积,计算检测框区域内的每一个特征子集的积分值。
[0141] 在本发明实施例的一种具体实施方式中,所述判断模块604,用于:
[0142] 利用公式,if(featureValue[node]>th_node[node]*detec_nf),判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0143] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;th_node[node]为设定门限值;detec_nf为检测框的方差值。
[0144] 在本发明实施例的一种具体实施方式中,所述判断模块,用于:
[0145] 利用公式, 判断所述检测框区域内的特征子集的积分值是否大于设定门限值,其中,
[0146] if()为判断函数;featureValue[node]为所述检测框区域内的特征子集的积分值;b为整数;a为整数;detec_nf为检测框的方差值,node对应每个特征子集的下标。
[0147] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。