一种目标检测方法及装置与流程

文档序号:18032503发布日期:2019-06-28 22:50阅读:212来源:国知局
一种目标检测方法及装置与流程

本发明涉及一种检测方法及装置,更具体涉及一种目标检测方法及装置。



背景技术:

图像目标检测已经成为机器视觉中的重要研究课题,它将图像处理、模式识别等学科有机结合,形成了一种从视频图像中发现、检测并判断目标状态的技术。目前,一种比较常用的检测算法是harr特征的检测(见第五章详细介绍),harr特征检测是在目标检测中一种行之有效的技术方法,需要配合积分图进一步处理,具备运算低,有一定的识别准确率等特点。

目前,在进行harr特征检测时,需要将待检测图像中每一个像素点的积分值都计算出来存储在内存中,然后使用检测框对计算积分值后的待检测图像进行滑动检测,根据积分图特性,图片越大,积分图取值越大。以高度为h,宽度为w的图像为例,harr特征值需要同时保存sum、sqsum(用于计算方差)两类特征值的完整积分图结果,因此,一次积分图需要保存完整数据大小为h*w*(sum的位宽+sqsum的位宽)。由于上述数据的数量较多,因此需要占用较多的内存空间。因此,现有技术存在,占用内存较多的技术问题。



技术实现要素:

本发明所要解决的技术问题在于提供了一种目标检测方法及装置,以解决现有技术中内存占用较多的技术问题。

本发明是通过以下技术方案解决上述技术问题的:

本发明提供了一种目标检测方法,所述方法包括:

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

根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的像素点,并计算每一个像素点的积分值;

判断所述检测框区域内的像素点的积分值是否大于设定门限值;

若是,按照水平滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述检测框滑动至所述待检测图像的边缘;

若否,按照水平滑动方向,将所述检测框滑动第二步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述检测框滑动至所述待检测图像的边缘;

按照竖直滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述待检测图像中的目标被检测完成。

可选的,所述按照水平滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,包括:

将检测框在水平方向上滑动第一步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

可选的,所述按照水平滑动方向,将所述检测框滑动第二步长,获取对应尺寸范围内的像素点,包括:

将检测框在水平方向上滑动第二步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

可选的,所述获取每一个像素点的积分值,包括:

获取新增像素点的积分值,并将所述新增像素点的积分值与所述原像素点的积分值的集合作为所获取的每一个像素点的积分值。

可选的,在按照竖直滑动方向,将所述检测框滑动第一步长时,将与所述检测框移动时脱离所述检测框的第一步长数量的像素行中像素点积分值的数据,从内存中清除。

本发明实施例还提供了一种目标检测装置,所述装置包括:

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

计算模块,用于根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的像素点,并计算每一个像素点的积分值;

判断模块,用于判断所述检测框区域内的像素点的积分值是否大于设定门限值;

第一滑动模块,用于在所述判断模块的判断结果为是的情况下,按照水平滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块;

第一滑动模块,用于在所述判断模块的判断结果为否的情况下,按照水平滑动方向,将所述检测框滑动第二步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块;

第二滑动模块,用于按照竖直滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块。

可选的,所述第一滑动模块,用于:

将检测框在水平方向上滑动第一步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

可选的,所述第一滑动模块,用于:

将检测框在水平方向上滑动第二步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

可选的,所述第一滑动模块,用于:

获取新增像素点的积分值,并将所述新增像素点的积分值与所述原像素点的积分值的集合作为所获取的每一个像素点的积分值。

可选的,第二滑动模块,用于在按照竖直滑动方向,将所述检测框滑动第一步长时,将与所述检测框移动时脱离所述检测框的第一步长数量的像素行中像素点积分值的数据,从内存中清除。

本发明相比现有技术具有以下优点:

应用本发明实施例,在进行harr特征识别时,通过每一个检测框单独计算每一个检测框内的积分值的大小,每一次计算的像素点的数量较少,所需的内存空间也较少,相对于现有技术中首先计算所有像素点的积分值的大小,然后存储在内存中,减少了内存的占用。

附图说明

图1为本发明实施例提供的一种目标检测方法的流程示意图;

图2为本发明实施例提供的一种目标检测方法的原理示意图;

图3为本发明实施例提供的一种harr特征检测的效果图;

图4为本发明实施例提供的一种目标检测方法的第一种滑动检测的示意图;

图5为本发明实施例提供的一种目标检测方法的第一种滑动检测的示意图;

图6为本发明实施例提供的一种目标检测方法中的内存控制示意图;

图7为本发明实施例提供的一种目标检测装置的结构示意图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

本发明实施例提供了一种目标检测方法及装置,下面首先就本发明实施例提供的一种目标检测方法进行介绍。

图1为本发明实施例提供的一种目标检测方法的流程示意图,图2为本发明实施例提供的一种目标检测方法的原理示意图,如图1和图2所示,所述方法包括:

s101:获取待检测图像,以及针对所述待检测图像的检测框尺寸,且所述检测框尺寸不大于待检测图像的尺寸。

示例性的,获得待检测的完整图像的图像数据,其中宽度为w,高度为h,本实施例中h的取值为640,w的取值为480。

定义滑动积分图,积分图区域固定宽为完整积分图宽度w,高为检测窗高度。定义检测窗区域宽度为detect_w,高度为detect_h,本实施例中detec_w为25,detec_h为35。

s102:根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的像素点,并计算每一个像素点的积分值。

示例性的,针对检测框区域25*35尺寸内的像素点,计算每一个像素点的积分值。通常情况下,每一个像素点的积分值可以为:

sum[x][y]表示对应坐标的积分值,则新增积分点的积分值为当前行前一个点的积分值加上当前列前面所有点数值的累加(包含当前点),其中,x为该坐标或者该像素点对应的行号;y为该坐标或者该像素点对应的列号。

s103:判断所述检测框区域内的像素点的积分值是否大于设定门限值;若是,执行s104;若否,执行s105;

示例性的,图3为本发明实施例提供的一种harr特征检测的效果图。可以设置一个检测单元,使用检测单元进行积分值的检测;即使用检测单元判断检测框对应区域是否满足harr特征值。

图4为本发明实施例提供的一种目标检测方法的第一种滑动检测的示意图,如图4所示,

以harr特征值中的sum特征值为例,加粗的框所框选的区域为检测框对应的像素点的区域,整个框线内的区域为待检测图像的所有像素点;src[y]表示第y列坐标的数值,sum[x][y]表示坐标为第x行第y列的积分值。

首先计算检测框第一次框选的区域中各个像素点的积分值,例如,可以按照从左到右的顺序计算每一列的积分值,每计算完一列像素点的积分值,同时更新序列号:integral_col_num++;

然后,当integral_col_num等于检测窗宽度detect_w时(对应图中a点),触发检测装置单元,同时将触发标志detect_trig=1,即表明检测单元已经被触发正在进行检测操作。通常情况下,在检测单元结束操作后,会将触发标志清零:detect_trig=0。

同时,根据检测结果更新下一次触发的条件,即下一次需要在积分图完成至哪一列才能触发next_trig_col_num(下一列的列号)。

然后,当该检测区域的harr特征大于或等于预定义的门限时,执行s104步骤,

当该检测区域的harr特征小于预定义的门限时,执行s105步骤。

每当完成对应检测窗区域的积分图,触发一次检测单元,检测单元和积分图的计算可并行执行。

s104:按照水平滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述检测框滑动至所述待检测图像的边缘。

具体的,可以将检测框在水平方向上滑动第一步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

示例性的,在本步骤中,滑动步长为1,next_trig_col_num对应至图4中b列,即图4中第二列至第b列之间的区域为滑动后的检测框区域。

由于新增像素点的积分值为当前行前一个点的积分值加上当前列前面所有点数值的累加,因此,新增像素点的计算可在原有积分图上进行递增:

第1个点:sum[m+1][0]=sum[m][0]+src[0];

第2个点:sum[m+1][1]=sum[m][1]+src[0]+src[1];

依次类推。

下面对检测框的滑动过程进行详细的说明,例如,开始时刻,检测框框选的像素点区域为第一行至第五行,且第一列至第五列的区域;如果第一步长为1个像素点时,则滑动后的检测框包括了:第一行至第五行,且第二列至第六列的区域,然后以此类推。

然后,判断next_trig_col_num是否不大于integral_col_num,即当前正在被计算积分值的列(当前列)达到或者超过了滑动后的检测框的最后一列;

若是,说明满足下一次检测装置单元的触发条件,进行下一次检测单元的触发,同时将触发标志detect_trig=1。

若否,说明满足触发条件的积分列未计算完成,中断判断。

然后,完成当前列积分图计算后,判断标志detect_trig是否为1,为1说明检测装置单元正在调用,则直接进行下一列积分图运算;在检测装置被调用完成后再进行调用。若detect_trig=0,说明检测装置单元空闲,next_trig_col_num不大于integral_col_num,触发检测单元进行滑动后的检测框内像素点积分值的检测。然后继续行下一列积分图运算。

按照上述方式循环往复,直至图4中的检测框的右侧边界达到图4所示的待检测图像的右侧边缘。

图5为本发明实施例提供的一种目标检测方法的第一种滑动检测的示意图,如图5所示,图5所示的检测过程与图4所示的检测过程原理相同,区别仅是滑动方向的不同。

进一步的,可以获取新增像素点的积分值,并将所述新增像素点的积分值与所述原像素点的积分值的集合作为所获取的每一个像素点的积分值。

需要说明的是,在检测框进行滑动时,通常会在竖直以及水平方向同时进行滑动,即检测框的滑动方向为相互正交的两个方向。

应用本发明上述实施例,每滑动一次,仅计算新增像素点的积分值,相对于计算检测框内所有像素点的积分值,可以减少积分值的计算量。

s105:按照水平滑动方向,将所述检测框滑动第二步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述检测框滑动至所述待检测图像的边缘。

具体的,可以将检测框在水平方向上滑动第二步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

下面对检测框的滑动过程进行详细的说明,例如,开始时刻,检测框框选的像素点区域为第一行至第五行,且第一列至第五列的区域;如果第一步长为1个像素点,第二步长为2个像素点时,则滑动后的检测框包括了:

第二行至第五行,且第三列至第七列的区域,然后依次类推。

在本步骤中,滑动步长为2,next_trig_col_num对应至图中c列。即图4中第三列至第c列之间的区域为滑动后的检测框区域。

示例性的,s105步骤中的计算原理与s104步骤中的计算原理相同,区别仅仅是滑动步长的区别,本发明实施例在此不再赘述。

s106:按照竖直滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并返回执行所述判断所述检测框区域内的像素点的积分值是否大于设定门限值的步骤,直至所述待检测图像中的目标被检测完成。

示例性的,在s104步骤或者s105步骤中,如图4所示,检测框的右侧边界达到图4所示的待检测图像的右侧边缘,说明本次水平方向滑动已经结束。

将检测框在垂直方向滑动第一步长,如果第一步长为1个像素点,则,检测框垂直滑动后包括的像素区域可以为:

第二行至第六行,且第一列至第六列的区域的像素点;

或者为,图4中所示的,第二行至第六行,且第10列至第15列的区域的像素点。

在检测框垂直滑动后,然后在第二行至第六行的区域内进行水平滑动,然后,在检测框的最右侧边缘达到待检测图像的最右侧边缘后,或者在检测框的最左侧边缘达到待检测图像的最左侧边缘后,再进行垂直滑动,以此类推,直至完成带检测图像中所有哈尔特征值(目标)的检测。可以理解的是,哈尔特征值的检测方法为现有技术,本发明实施例在此不再赘述。

应用本发明图1所示实施例,在进行harr特征识别时,通过每一个检测框单独计算每一个检测框内的积分值的大小,每一次计算的像素点的数量较少,所需的内存空间也较少,相对于现有技术中首先计算所有像素点的积分值的大小,然后存储在内存中,减少了内存的占用。

在本发明实施例的一种具体实施方式中,在按照竖直滑动方向,将所述检测框滑动第一步长时,将与所述检测框移动时脱离所述检测框的第一步长数量的像素行中像素点积分值的数据,从内存中清除。

图6为本发明实施例提供的一种目标检测方法中的内存控制示意图,如图6所示,第一次使用内存时对应图6中的第一次检测buffer起始地址开始,在第一次检测完成后,将该次检测中第一列或者第一行的积分值所占用的内存释放,由第二次检测中新增像素点的积分值调用,因此,图6中的第二次检测buffer起始地址实际上位于第一次检测buffer结束地址之前。依次类推,直至待检测图像被检测完成。

下面对内存的清除过程进行详细的说明,

(1)、如图4所示,检测框先进行从左至右的水平滑动,例如,开始时刻,检测框框选的像素点区域为第一行至第五行,且第一列至第四列的区域。此时内存中存储了第一行至第五行,且第一列至第四列的所包围的区域中像素点的积分值。

如果检测框在水平方向上滑动的步长为第一步长时,若第一步长为一个像素点,则水平滑动后的检测框框选的像素点区域为第一行至第五行,且第二列至第五列的区域。

如果检测框在水平方向上滑动的步长为第二步长时,若第一步长为两个像素点,则水平滑动后的检测框框选的像素点区域为第一行至第五行,且第三列至第六列的区域。

以此类推,直至检测框的右侧边缘抵达待检测图像的右侧边缘。

(2)、在每一次水平滑动结束后,检测框在竖直方向的滑动第一步长,例如,滑动后的检测框包括了:第二行至第六行,且第一列至第六列的区域,检测框在垂直滑动后进行水平滑动,水平滑动的方式与前述(1)中的方式相同,本发明实施例在此不再赘述。此时将内存中存储的第一行的像素点的积分值清除;在检测框进行下一次垂直滑动后,将内存中存储的第二行的像素点的积分值清除,依次类推。

通过滑动积分图的方式将原有方案积分图内存开销h*w*(sum的位宽+sqsum的位宽),降低至detect_h*w*(sum的位宽+sqsum的位宽),同时对滑动积分图采用基于完整图片积分图进行计算的方式,不增加新的运算复杂度;

对检测装置单元和滑动积分并行处理的方式提高了目标检测的运行效率。

综上,该装置在工程实现过程中降低了积分图的内存开销,提高了目标检测的运行效率,有效果的降低芯片功耗以及成本。

应用本发明图6所示实施例,从内存使用的角度来看,原有积分图的第一行积分值占用的内存被释放,被新增行的积分值复用,因此完成整幅图片滑动积分,仅需要内存detect_h*w*(sum的位宽+sqsum的位宽)。

可以理解的是,如果检测框区域25*35尺寸内的像素点均未被计算积分值的话,计算每一个像素点的积分值。

与本发明图1所示实施例相对应,本发明实施例还提供了一种目标检测装置。

图7为本发明实施例提供的一种目标检测装置的结构示意图,如图7所示,所述装置包括:

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

计算模块702,用于根据所述检测框的尺寸在所述待检测图像中获取对应尺寸范围内的像素点,并计算每一个像素点的积分值;

判断模块703,用于判断所述检测框区域内的像素点的积分值是否大于设定门限值;

第一滑动模块704,用于在所述判断模块的判断结果为是的情况下,按照水平滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块703;

第一滑动模块704,用于在所述判断模块的判断结果为否的情况下,按照水平滑动方向,将所述检测框滑动第二步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块703;

第二滑动模块705,用于按照竖直滑动方向,将所述检测框滑动第一步长,获取对应尺寸范围内的像素点,获取每一个像素点的积分值,并触发所述判断模块703。

应用本发明实施例,在进行harr特征识别时,通过每一个检测框单独计算每一个检测框内的积分值的大小,每一次计算的像素点的数量较少,所需的内存空间也较少,相对于现有技术中首先计算所有像素点的积分值的大小,然后存储在内存中,减少了内存的占用。

在本发明实施例的一种具体实施方式中,所述第一滑动模块704,用于:

将检测框在水平方向上滑动第一步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

在本发明实施例的一种具体实施方式中,所述第一滑动模块704,用于:

将检测框在水平方向上滑动第二步长,将所述检测框框选的新像素点作为新增像素点,将检测框滑动后仍然位于检测框区域内的像素点作为原像素点,将所述新增像素点与所述原像素点的集合作为所获取的对应尺寸范围内的像素点。

在本发明实施例的一种具体实施方式中,所述第一滑动模块704,用于:

获取新增像素点的积分值,并将所述新增像素点的积分值与所述原像素点的积分值的集合作为所获取的每一个像素点的积分值。

在本发明实施例的一种具体实施方式中,第二滑动模块705,用于在按照竖直滑动方向,将所述检测框滑动第一步长时,将与所述检测框移动时脱离所述检测框的第一步长数量的像素行中像素点积分值的数据,从内存中清除。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1