发明内容
为解决现有技术中存在的问题,本发明的实施例提供了一种运动检测的方法、装置和系统,用于降低运动检测时的计算复杂度,实现复杂场景下的高精度目标的检测。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明实施例提供了一种运动检测方法,所述方法包括:
获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景;
根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标。
进一步的,所述待检测目标由所述当前场景的检测信息减去所述背景场景的检测信息后计算得到;
或者,
设置第一权重值、第二权重值和补偿系数;
将所述当前场景的检测信息与所述第一权重值的乘积,减去所述背景场景的检测信息与所述第二权重值的乘积,得到初始待检测目标检测信息;
所述待检测目标由所述初始待检测目标检测信息和所述补偿系数计算得到。
进一步的,所述检测信息为视差图像,还包括:
获取所述背景场景和/或当前场景的第一图像和第二图像;对第一图像和相应的第二图像分别进行关键点提取,获取第一图像关键点和第二图像关键点;利用所述第一图像关键点和第二图像关键点进行立体匹配,得到第一图像关键点在第二图像关键点中对应的匹配点;计算所述第一图像关键点的视差,并根据所述视差获取所述背景场景和/或当前场景的视差图像。
进一步的,还包括:
获取在第二图像的第a行中第b列起向第一图像方向一侧的预定范围内的各关键点,其中,所述a和b分别为第一图像中关键点的行坐标和列坐标;
计算所述第一图像关键点(a,b)和所述第一图像关键点(a,b)对应的第二图像中各关键点的匹配值;
根据所述匹配值确定第一图像关键点(a,b)在第二图像中的匹配点。
进一步的,还包括:
按照扫描顺序,将所述第一图像关键点后的下一个扫描点作为参考点,所述关键点、参考点在第一图像中行坐标和列坐标分别为a和b、a和d;
在第二图像的搜索范围内获取该参考点的匹配点,所述搜索范围是由第a行中从第b-DIF列至第d列构成,其中,DIF为所述第一图像关键点的视差;
计算所述参考点与该参考点的匹配点之间的视差,并将该参考点作为关键点。
进一步的,还包括:
选取第一图像中非关键点(m,n)对应的近邻关键点(o,p);
在第二图像的第二搜索范围内获取该非关键点的匹配点,所述第二搜索范围是由第m行中从第n-DIF列至第p列构成,其中,DIF为所述第一图像中近邻关键点的视差;
计算所述非关键点与该非关键点的匹配点之间的视差。
进一步的,还包括:
提取所述第一图像和第二图像的图像边缘点作为所述关键点,所述第一图像和第二图像为所述场景的双目图像。利用Census准则执行所述第一图像关键点和第二图像关键点的立体匹配;利用归一化互相关准则根据所述第一图像关键点的视差获取所述视差图像。
进一步的,所述检测信息为深度图像,还包括:
利用获取到的所述背景场景和/或当前场景的视差图像计算得到所述背景场景和/或当前场景的深度图像;或者,对所述背景场景或当前场景的同一视点下的图像进行边缘检测;根据所述边缘检测计算得到所述背景场景和/或当前场景的深度图像。
进一步的,所述待检测目标的得到,还包括确定初始待检测目标;根据去伪策略去除所述初始待检测目标中的伪目标,确定有效待检测目标。
进一步的,所述检测信息为视差图像或深度图像,还包括:
分别获取目标视差/深度图像水平方向投影和垂直方向投影中的极值点;
将所述水平方向投影的极值点和垂直方向投影的极值点分别两两配对,确定所述初始待检测目标;其中,所述目标视差/深度图像由所述背景场景的检测信息和当前场景的检测信息计算获得。
其中,所述去伪策略包括:
判断以所述初始待检测目标为中心的目标视差/深度图像中预定窗口内的视差/深度均值是否大于视差/深度阈值,若是,该初始待检测目标为有效目标,若否该初始待检测目标为伪目标;以及,
对当前未进行去伪处理的初始待检测目标,获取目标视差/深度图像中以该初始待检测目标为中心预定窗口内视差/深度均值最大的目标objPoint[maxN],计算所述所有初始待检测目标与目标objPoint[maxN]的欧氏距离,当所述初始待检测目标与目标objPoint[maxN]的欧氏距离不小于距离阈值时,该初始待检测目标为有效待检测目标,否则,该初始待检测目标为伪目标,其中,maxN为所述视差/深度均值最大的目标的序号;以及,
获取所述初始待检测目标在当前场景的相应图像中以该目标为中心预定窗口内最小灰度均值,计算所有初始待检测目标对应的灰度均值与所述最小灰度均值的比值,当所述初始待检测目标对应的比值不大于比例阈值且所述初始待检测目标对应的灰度均值不大于控制阈值时,该初始待检测目标为有效待检测目标,否则,该初始待检测目标为伪目标。
另一方面,本发明实施例还提供了一种运动检测装置,所述装置包括:
检测信息获取单元,用于获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景;
目标检测单元,用于根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标。
进一步的,所述目标检测单元,还用于由所述当前场景的检测信息减去所述背景场景的检测信息后计算得到所述待检测目标;或者,
所述目标检测单元,还用于设置第一权重值、第二权重值和补偿系数;将所述当前场景的检测信息与所述第一权重值的乘积,减去所述背景场景的检测信息与所述第二权重值的乘积,得到初始待检测目标检测信息;由所述初始待检测目标检测信息和所述补偿系数计算得到所述待检测目标。
进一步的,所述检测信息为视差图像,所述检测信息获取单元包括:
图像获取模块,用于获取背景场景或当前场景的第一图像和第二图像;
关键点提取模块,用于对第一图像和第二图像分别进行关键点提取,获取第一图像关键点和第二图像关键点;
关键点匹配模块,用于利用所述第一图像关键点和第二图像关键点进行立体匹配,得到第一图像关键点在第二图像关键点中对应的匹配点;
视差图像获取模块,用于计算所述第一图像关键点的视差并根据所述视差获取所述背景场景或当前场景的视差图像。
进一步的,所述检测信息为深度图像,所述检测信息获取单元包括:
第一深度图像计算模块,用于利用获取到的所述背景场景和/或当前场景的视差图像计算得到所述背景场景和/或当前场景的深度图像;或者,
第二深度图像计算模块,用于对所述背景场景和/或当前场景的同一视点下的图像进行边缘检测;根据所述边缘检测计算得到所述所述背景场景和/或当前场景的深度图像。
进一步的,所述关键点匹配模块,还用于获取在第二图像的第a行中第b列起向第一图像方向一侧的预定范围内的各关键点,其中,所述a和b分别为第一图像中关键点的行坐标和列坐标;计算所述第一图像关键点(a,b)和所述第一图像关键点(a,b)对应的第二图像中各关键点的匹配值;根据所述匹配值确定第一图像关键点(a,b)在第二图像中的匹配点。
进一步的,所述视差图像获取模块包括:
参考点视差获取模块,用于按照扫描顺序,将所述第一图像关键点后的下一个扫描点作为参考点,所述关键点、参考点在第一图像中行坐标和列坐标分别为a和b、a和d;在第二图像的搜索范围内获取该参考点的匹配点,所述搜索范围是由第a行中从第b-DIF列至第d列构成,其中,DIF为所述第一图像关键点的视差;计算所述参考点与该参考点的匹配点之间的视差,并将该参考点作为关键点;以及
非关键点视差获取模块,用于选取第一图像中非关键点(m,n)对应的近邻关键点(o,p);在第二图像的第二搜索范围内获取该非关键点的匹配点,所述第二搜索范围是由第m行中从第n-DIF列至第p列构成,其中,DIF为所述第一图像中近邻关键点的视差;计算所述非关键点与该非关键点的匹配点之间的视差。
进一步的,所述检测信息为视差图像或深度图像,所述目标检测单元包括:
初始目标获取模块,用于利用由所述背景场景的检测信息和当前场景的检测信息计算获得的目标视差/深度图像确定初始待检测目标;
目标真伪处理模块,用于根据去伪策略去除所述初始待检测目标中的伪目标,确定有效待检测目标;
其中,所述去伪策略包括:
判断以所述初始待检测目标为中心的目标视差/深度图像中预定窗口内的视差/深度均值是否大于视差/深度阈值,若是,该初始待检测目标为有效目标,若否该初始待检测目标为伪目标;以及,
对当前未进行去伪处理的初始待检测目标,获取目标视差/深度图像中以该初始待检测目标为中心预定窗口内视差/深度均值最大的目标objPoint[maxN],计算所述所有初始待检测目标与目标objPoint[maxN]的欧氏距离,当所述初始待检测目标与目标objPoint[maxN]的欧氏距离不小于距离阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标,其中,maxN为所述深度均值最大的目标的序号;以及,
获取所述初始待检测目标在当前场景的相应图像中以该目标为中心预定窗口内最小灰度均值,计算所有初始待检测目标对应的灰度均值与所述最小灰度均值的比值,当所述初始待检测目标对应的比值不大于比例阈值且所述初始待检测目标对应的灰度均值不大于控制阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标。
再一方面,本发明实施例还提供了一种客流检测系统,该系统包括运动检测装置和计数装置,所述计数装置,用于根据所述运动检测装置得到的待检测目标计算得到客流量,其中,所述运动检测装置包括:
检测信息获取单元,用于获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景;
目标检测单元,用于根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标。
由上所述,本发明实施例提供的技术方案,考虑到场景中原有的背景物体对待检测目标的影响,同时利用获取到的背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标,有效降低了背景物体对目标检测的影响,增强了检测的准确度。实践证明,本发明实施例提供的技术方案,解决了现有技术中由于仅使用包含待检测目标的场景的深度信息等进行目标检测所带来的问题,可以有效的克服环境影响和目标“粘连”问题,以较少的计算量实现了复杂场景下的高精度目标的检测。
具体实施方式
为了更清楚地说明本发明实施例的技术方案,下面将结合附图对本发明的实施例进行详细的介绍,下面的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些实施例获得本发明的其他的实施方式。
本发明实施例一提供了一种运动检测方法,如图2所示,所述方法包括:
步骤T1:获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景。例如,对客流自动统计系统,背景场景为不包括乘客情况下的场景,当前场景为包括流动的乘客情况下的当前场景。
上述场景的检测信息可以为视差图像或深度图像。本发明实施例一可利用场景不同视点下的图像计算视差图像,参见图3,首先采集场景的第一图像和第二图像,第一图像和第二图像中的一个为匹配图像,另一个为被匹配图像,通过该第一图像和第二图像获取场景的视差图像。对第一图像和第二图像的具体获取方式不进行限制,优选的,在此采用场景的双目图像,将背景双目图像(如左图像和右图像)分别作为背景场景的第一图像和第二图像,将当前场景的当前双目图像,分别作为当前场景的第一图像和第二图像。但不限于此,上述场景的第一图像和第二图像可以为用于获得视差图像的任何图像。
其中,双目图像是根据立体识别原理,从两个或多个视点观察同一景物,获取的物体在不同视角下的图像。根据该双目图像通过三角测量原理等,计算左右图像像素间的位置偏差,即视差。例如,利用双目摄像机拍摄的所述双目图像。根据所述双目图像利用立体匹配技术,分别获取背景视差图像和当前视差图像。
可通过多种方式获取场景的深度图像,例如,一方面本发明实施例一可以通过采集该场景同一视点的二维图像序列,如利用单目摄像机拍摄该场景的单目图像序列,对该图像序列进行边缘检测后,通过相关计算直接得到场景的深度图像。另一方面,本发明实施例一还可利用该场景不同视点下的图像计算视差图像,然后根据该视差图像计算得到相应的深度图像。
步骤T2:根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标,至少包括如下两种方式:
第一种方式:可以利用当前场景的检测信息减去背景场景的检测信息,得到目标检测信息,根据该目标检测信息进行计算得到所述待检测目标。例如,用当前场景的深度图像减去背景场景的深度图像得到目标深度图像,根据该目标深度图像进行计算得到待检测目标;或用当前场景的视差图像减去背景场景的视差图像得到目标视差图像,根据目标视差图像进行计算得到待检测目标。
第二种方式:设置第一权重值、第二权重值和补偿系数;将所述当前场景的检测信息与所述第一权重值的乘积,减去所述背景场景的检测信息与所述第二权重值的乘积,得到初始目标检测信息;根据所述初始目标检测信息和所述补偿系数计算目标检测信息,利用目标检测信息进行计算得到所述待检测目标。
例如,将当前场景的视差图像与第一权重值w1相乘,得到第一结果;将背景场景的视差图像与第二权重值w2相乘,得到第二结果;将第一结果减去第二结果得到初始目标视差图像,利用该初始目标视差图像加上或减去补偿系数,得到目标视差图像。
其中,对同一个视差图像所对应的权重值,可以取同一个常数值,或者,对该视差图像不同的部分取不同的权重值;所述补偿系数可在得到第一结果或第二结果前,直接与当前场景或背景场景的视差图像相加减。
应当注意到,上述权重值和补偿系数是可选的。
可选的,还包括,设置一个阈值,将上述两种方式获取到的目标视差图像或目标深度图像中的深度值或视差值与该阈值进行比较,当大于该阈值时,在目标深度/视差图像中保留该点;当小于阈值时,去除该点,从而获取到最终的目标视差/深度图像。
通过上述方式去除了背景中的物体对目标检测的干扰,得到了只有目标的目标检测信息,如只有乘客的目标检测信息,包括目标视差图像或目标深度图像,增强了检测的准确度。
利用所述目标视差图像或目标深度图像的投影,对所述目标进行定位,对目标进行定位的部位不进行限制,例如,目标为人员时,定位的位置并不要求必须在目标的头部,只要能定位在目标上即可。进一步的,为去除干扰点及提取正确的目标,可对初步定位获得目标进行去伪处理。
本发明实施例提供的技术方案,考虑到场景中原有的背景物体对待检测目标的影响,同时利用获取到的背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标,有效降低了背景物体对目标检测的影响,增强了检测的准确度。实践证明,本发明实施例提供的技术方案,解决了现有技术中由于仅使用包含待检测目标的场景的深度信息等进行目标检测所带来的问题,可以有效的克服环境影响和目标“粘连”问题,以较少的计算量实现了复杂场景下的高精度目标的检测。
下面对本发明实施例二提供的运动检测方法进行具体说明。在本发明实施例二中,参见图3,主要以采用不同视点的图像,得到背景场景的视差图像和当前场景的视差图像,并利用目标视差图像进行目标检测为例说明本发明实施例的技术方案。
步骤S1:获取背景视差图像和当前视差图像,所述背景视差图像为背景场景的视差图像,所述当前视差图像为包括待检测目标和同一背景场景的当前场景的视差图像;
利用第一图像和第二图像获取上述视差图像,优选的,本发明实施例二利用双目图像获取上述背景视差图像和当前视差图像,在本发明实施例二中,优选地,采用双目摄像机采集的所述双目图像,即左图像和右图像,选取左图像为被匹配图像(第一图像),右图像为匹配图像(第二图像)。由于左右两台摄相机在拍摄同一场景的时候会存在一定的视差,即相同目标在水平方向上有一定的位移,距离摄像机近的物体视差大,距离摄像机远的物体视差小,依据此原理通过立体匹配的方法从获取的双目图像中提取视差图。
立体匹配技术是立体视觉处理过程中最困难的一个环节,为了降低计算复杂度、减少计算量且获取到精确的视差图像,,从而能够保证后续对目标进行精确的定位。本发明实施例二提供了一种基于关键点的立体匹配方法。
下面对本发明实施例二提供的立体匹配方法进行说明,具体包括如下步骤处理:
步骤S11:关键点的选取
首先,在左图像和右图像中选取关键点,关键点应该是在左右图像中特征比较明显,容易被正确识别并提取的像素点,关键点影响后续图像中其它点的立体匹配,因此必须选取合适的关键点。本发明实施例中考虑到图像中特征比较明显的点一般位于物体的边缘上,优选的,选取边缘点作为关键点。分别对左图像和右图像进行边缘提取,将获取到的边缘点作为关键点。但不限于此,可以选取其它具有明显特征的点作为关键点或根据需要选取合适的关键点。
步骤S12:关键点的立体匹配及视差
选取关键点后,首先进行关键点的立体匹配,获取所述被匹配图像的关键点在匹配图像中的匹配点,包括:获取在第二图像(即匹配图像,以下皆同)的第a行中第b列起向第一图像(即被匹配图像,以下皆同)方向一侧的预定范围内的各关键点,其中,所述a和b分别为第一图像中关键点的行坐标和列坐标;计算所述第一图像关键点(a,b)和所述第一图像关键点(a,b)对应的第二图像中各关键点的匹配值;根据所述匹配值确定第一图像关键点(a,b)在第二图像中的匹配点。具体处理如下:
步骤S121:在双目摄像机采集的左图像中,按从左至右的顺序逐行扫描,寻找关键点(以下都以边缘点为例),若遇到的一个边缘点为A,其坐标为(a,b),a为行坐标,b为列坐标;
步骤S122:在双目摄像机采集的右图像中,在与A点相同位置的行,即第a行中,向第b列起至被匹配图像方向一侧的预定范围内的搜索关键点,所述预定范围为包含一定数量N像素点的范围,该范围根摄像机摄像头的具体参数及架设高度有关,如应用在公交客流自动统计系统时,N可取30。
即当左图像为被匹配图像时,在右图像中第a行中第b列起向左的30个像素点范围内搜索边缘点,假设这时找到M个边缘点。
步骤S123:在左右图像中对点A进行立体匹配。
由于边缘点具有明显的特征且细节丰富,进行立体匹配以获取关键点A的匹配点时,本发明实施例二采用在5×5的窗口中采用计算量较小的Census准则即可达到理想的效果。
即左图像中在以A为中心的5×5的窗口中计算Census值,右图像中分别在以找到的M个边缘点为中心5×5的窗口中计算的Census值,将A点的Census值分别与M个Census值进行相似度比较,获取匹配值,当相似点的个数(如25个)大于等于预定个数(如20个)时,A点与右图像M个点中哪一个点的相似度最大,即获得了最优的匹配值,则认为A点与该点匹配,可得到A点的匹配点为B点,B的坐标为(a,c);当相似点的个数小于预定个数时,将A点从关键点中清除。
由于M点的个数相对很少,搜索范围较小,并且Census的匹配准则比较简单,所以关键点的立体匹配速度很快。
步骤S124:当关键点A存在匹配点B时,计算A的视差DIF=b-c。
重复上述步骤S121至步骤124的操作,得到所有关键点的视差。
步骤S13:参考点的立体匹配及视差
为了进一步对关键点进行立体匹配,通过关键点A确定其参考点C,对该C点进行立体匹配。包括按照扫描顺序,将所述第一图像关键点后的下一个扫描点作为参考点,所述关键点、参考点在第一图像中行坐标和列坐标分别为a和b、a和d;在第二图像的搜索范围内获取该参考点的匹配点,所述搜索范围是由第a行中从第b-DIF列至第d列构成,其中,DIF为所述第一图像关键点的视差;计算所述参考点与该参考点的匹配点之间的视差,并将该参考点作为关键点。具体进行如下操作:
步骤S131:参考点的选取
本发明实施例二中选取左图像中关键点A后的下一个扫描点作为参考点,即将紧挨关键点A右侧的点选取为参考点C,其坐标为(a,d)。
再将C点右侧的点作为参考点,依次选取,直至遇到该行的下一个关键点。各行之间的操作是独立的,互不影响。
步骤S132:参考点的立体匹配及视差
在匹配图像即右图像中的搜索范围内获取该参考点的匹配点,所述搜索范围由匹配图像中由第a行中从第(b-DIF)列至第d列构成,其中,DIF为所述被匹配图像中关键点的视差,即在与C点同行(第a行)数据中,并且在第(b-DIF)列至第d列范围内搜索C的匹配点,这里,本发明实施例采用7×7窗口的归一化互相关匹配准则,获取到C点的匹配点,并计算C点的视差DIF_C。但不局限于此,包括其它适合的匹配规则。
然后将C点视为关键点,依次重复上述操作,例如,紧挨点C(a,d)的右侧的点为D点,其坐标为(a,e)。则对于D点来说,C点为其可参考的关键点,若C的视差为DIF_C,则D点在右图像中的搜索范围是第a行数据中的(d-DIF_C)列至e列,获取D点的匹配点,计算D点的视差DIF_D,将D点视为关键点;若不存在匹配点,清除D点。依次类推可计算出关键点右侧的所有的点的视差。
步骤S14:非关键点的立体匹配及视差
计算非关键点的视差包括:选取第一图像中非关键点(m,n)对应的近邻关键点(o,p);在第二图像的第二搜索范围内获取该非关键点的匹配点,所述第二搜索范围是由第m行中从第n-DIF列至第p列构成,其中,DIF为所述第一图像中近邻关键点的视差;计算所述非关键点与该非关键点的匹配点之间的视差。
通过上述步骤S12、及步骤S13的操作,左图像中已计算出视差的点都可被视为关键点,剩余的点为非关键点。在非关键点左侧的上下行中寻找关键点,利用该关键点的参照步骤S13相同的方式,即在匹配图像中与非关键点相同位置行中,利用寻找到的关键点的视差确定的列的范围内,进行非关键点的立体匹配和视差计算。
由上所述,本发明实施例二提供的立体匹配方法,将匹配过程分为三个主要层次,首先进行关键点的匹配和视差计算,利用较简单的匹配规则和较小的窗口即可获得较好的效果;然后根据关键点及其视差等信息,对其周围的参考点进行匹配,最后处理剩余的像素点。该方法在进行匹配时大大缩小了搜索的范围,提高了匹配的速度。
如图4(a)至图4(f)所示,显示了将上述立体匹配方法应用到公交自动客流统计系统的一个场景的结果图像,其中,图4(a)和图4(b)为背景场景双目图像,图4(a)为左图像,图4(b)为右图像,图4(c)为获取到的背景视差图像。图4(d)和图4(e)为当前场景双目图像,图4(d)为左图像,图4(e)为右图像,图4(f)为获取到的当前视差图像。
步骤S2:根据所述背景视差图像和当前视差图像获取目标视差图像;
通过利用当前视差图像的像素值逐点减去背景视差图像的对应像素值,获取目标视差图像,单独的相减操作获取的目标视差图像会存在一些干扰点和视差误差,在本发明实施例二中,还包括,设置一个阈值,将上述相减操作获取到的像素差值与该阈值进行比较,当大于阈值时,在目标视差图像中保留该点;当小于阈值时,去除该像素点,从而获取到最终的目标视差图像。参见图5为根据图4(c)和图4(f)获取到的目标视差图像。
优选的,在本实施例中采用直接相减的方法,获取上述目标视差图像,这种方式经实验证明可以获得理想的效果。但不限于此,例如,可以采用本发明实施例一步骤T2中的第二种方式,或其他相似、或变形的方式获取上述目标视差图像。
步骤S3:利用所述目标视差图像获取所述目标,具体包括如下处理:
步骤S31:分别获取所述目标视差图像水平方向投影和垂直方向投影中的极值点。
在此提供一种获取极值点的方法:对目标视差图像分别向水平方向(x方向)和垂直方向(y方向)进行投影得到两条投影曲线,即水平投影曲线xHist和垂直投影曲线yHist;对xHist及yHist分别计算二阶差分得到xHist极值点xPeakPoint[n],n∈[0,xNum],n为极值点的序号,此处xNum为xHist中的极值点数目;和yHist的极值点yPeakPoint[n],n∈[0,yNum],n为极值点的序号,此处yNum为yHist中的极值点数目。
步骤S32:利用所述极值点获取所述初始的目标。
通过对xPeakPoint[n]和yPeakPoint[n]两两配对得到xNum×yNum个初始的目标点,初始的目标点可以通过下式表示:objPoint[n],n∈[0,objNum],
其中,初始待检测目标点的个数objNum=xNum×yNum,通过xPeakPoint[n]、yPeakPoint[n]标定初始的目标objPoint[n]的位置。
上述利用极值点标定目标位置的方法,所标定的位置不局限于目标的某一特定部位,如头部,只要能够定位在目标上即可,从而使目标的检测不局限于对某种图形(如圆形)的匹配,提高了目标的检测精度。
根据去伪策略去除初始的目标中的伪目标得到最终的有效目标。
步骤S33:根据去伪策略去除所述初始的目标中的伪目标,确定有效目标。
下面对本发明实施例二提供的去除伪目标,确定有效目标的方法进行描述。
去伪处理过程中主要利用了三种策略:1)视差图信息去伪策略;2)欧式距离去伪策略;3)原图灰度信息去伪策略,下述对这三种策略分别进行介绍。
1、视差图信息去伪策略
由于视差图中真实目标的视差比较大,因此可以根据初始待检测目标点在视差图中的视差大小来去除一些干扰目标。设定阈值(deepThreshold),如可将阈值大小设为视差图中所有视差均值的1/2。判断以所述初始的目标为中心的目标视差图像中预定窗口内的视差均值是否大于视差阈值,若是,该初始待检测目标为有效目标,若否该初始待检测目标为伪目标。对所述预定窗口的大小不进行限定,例如,可以为5×5的窗口,也可以为7×7的窗口。
本发明实施例提供的用于获取阈值的参考C代码如下所示:
int i,j;//循环变量
double sumTmp;//临时变量
double deepThreshold;//阈值
sumTmp=0;
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
sumTmp=sumTmp+imgData[i*width+j];
}
}
deepThreshold=sumTmp/(width*height*2);//阈值为视差均值的1/2
其中,数组imgData为目标视差图像数据,width和height分别为图像的宽度和高度。
本发明实施例二提供的用于实现视差图信息去伪策略的参考C代码如下所示:
设avgRegion[n]为初始待检测目标点objPoint[n]在5×5窗口内所有视差值的均值,n为初始待检测目标点的序号,参考c代码如下所示:
double tmpSum=0;
for(i=objPoint[n].y-5;i<objPoint[n].y+5;i++)
{
for(j=objPoint[n].x-5;j<objPoint[n].x+5;j++)
{
tmpSum+=imgData[i*width+j];
}
}
avgRegion[n]=tmpSum/(10*10);
其中,数组imgData为视差图像数据,width为图像的宽度,objPoint[n].x和objPoint[n].y分别为objPoint[n]的行和列的坐标值。
当avgRegion[n]大于deepThreshold时,objPoint[n]为有效目标;否则,当avgRegion[n]小于等于deepThreshold时,objPoint[n]为伪目标,并删除该伪目标。
2、欧式距离去伪策略
由于目标(如人员头部)之间的距离不能小于一定距离,因此可利用目标之间的距离去除干扰点。
对当前未进行去伪处理的初始的目标,获取以该初始待检测目标为中心在目标视差图像中预定窗口内的视差均值最大的目标objPoint[maxN],计算所有所述初始待检测目标与目标objPoint[maxN]的欧氏距离,当所述初始待检测目标与目标objPoint[maxN]的欧氏距离不小于距离阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标,其中,maxN为所述视差均值最大的目标的序号。
重复上述处理过程,直至所有的初始待检测目标都已进行了欧式距离去伪
处理。下面以一个具体的实现方式为例进行说明。
设avgRegion[n]为初始待检测目标点objPoint[n]在预定窗口(如5×5的窗口)内所有视差值的均值,n为初始待检测目标点的序号,avgRegion[n]的获得方式参见上述视差图信息去伪部分的相关描述。
为便于距离去伪处理,可选的,为初始待检测目标点设置是否已进行距离去伪处理的标识,如标识processFlag[n],processFlag[n]的初始值设置为0,当对初始待检测目标进行过距离去伪处理后,将processFlag[n]设置为1;为初始待检测目标点设置删除标识,如设置标识deleteFlag[n],deleteFlag[n]的初始值为0,将deleteFlag[n]置1时,表示该目标点被删除。但不限于此,可以采用其它适合的方式以实现上述的距离去伪操作。
设距离阈值为dstnThreshold,对所有目标点进行一次欧式距离去伪操作,参见图6,具体步骤如下:
1)计算当前未进行去伪处理的初始的目标在预定窗口中的视差均值,找出视差均值最大的点。
遍历所有满足条件deleteFlag[n]=0且processFlag[n]=0的avgRegion[n],找到最大值max(avgRegion[n]),该最大值对应的点为n=maxN;
2)计算objPoint[maxN]与其它所有未进行距离去伪处理的点的欧式距离,即与满足条件deleteFlag[n]=0且processFlag[n]=0的目标点的欧式距离dstnVal[n]。
当计算出初始待检测目标的距离dstnVal[n]小于距离阈值dstnThreshold时,删去该目标点objPoint[n],即设置deleteFlag[n]=1,processFlag[n]=1;
3)将当前的视差值最大的初始待检测目标点的标识processFlag[maxN]置1;
4)判断是否满足所有目标点的标识processFlag[n]都为1,如果满足,转到步骤5),否则,转到步骤1);
5)结束。
3、原图灰度信息去伪策略
该策略利用了目标(头部)一般颜色较深,即灰度值较低这一特点进行伪目标去除。即一些位于乘客身体上的伪目标在灰度值上远大于位于头部上的有效目标。
获取所述初始的目标在被匹配图像中以该目标为中心预定窗口内灰度均值最小的目标,计算所有初始的目标对应的灰度均值与所述最小灰度均值的比值,当所述初始待检测目标对应的比值不大于比例阈值且所述初始待检测目标对应的灰度均值不大于控制阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标。
获取所有初始待检测目标objPoint[n]在左图像(原图像)中预定窗口(如5×5的窗口)内的灰度均值grayVal[n],n为初始待检测目标点的序号,可以遍历grayVal[n]找到最小值minVal=min(grayVal[n]),以minVal为基准值与其它目标的灰度值进行比较。
此处,为了保证能够准确去除伪目标,设定比例阈值fioThreshold和控制阈值conThreshold,通过利用两种阈值对初始待检测目标进行识别。
参见图7,进行一次原图灰度信息去伪操作可以按以下步骤进行:
1)遍历grayVal[n]找到最小值minVal=min(grayVal[n]),同时设置序号n=0;
2)计算比值fioVal[n]=grayVal[n]/minVal,如果fioVal[n]>fioThreshold同时满足grayVal[n]>conThreshold,则objPoint[n]为伪目标,去除该伪目标;否则该初始待检测目标为有效目标;
3)是否满足中止条件n=objNum,objNum为初始待检测目标的总数目。如果满足,则转入步骤4),否则,n=n+1,转入步骤2);
4)结束。
应当注意到,由于深度信息值和视差信息值具有一致性,都可用于表示目标距离摄像机的远近。显而易见的,在本发明实施例二中,根据获取到的视差值通过特定的计算关系,可得到相应的深度值,利用当前场景的深度信息减去背景场景的深度信息获得目标深度信息,并利用所述目标深度信息对应的目标深度图像的极值点确定初始待检测目标;根据上述去伪策略去除所述初始待检测目标中的伪目标,确定有效目标。
这时,上述去伪策略具体如下所述,且其具体处理方法可参见上述的视差图信息去伪策略、欧式距离去伪策略和原图灰度信息去伪策略,包括:
判断以所述初始待检测目标为中心的目标深度图像中预定窗口内的深度均值是否大于深度阈值,若是,该初始待检测目标为有效目标,若否该初始待检测目标为伪目标;以及,
对当前未进行去伪处理的初始的目标,获取目标深度图像中以该初始待检测目标为中心预定窗口内深度均值最大的目标objPoint[maxN],计算所述所有初始待检测目标与目标objPoint[maxN]的欧氏距离,当所述初始待检测目标与目标objPoint[maxN]的欧氏距离不小于距离阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标,其中,maxN为所述深度均值最大的目标的序号;以及,
获取所述初始的目标在当前场景的相应图像中以该目标为中心预定窗口内最小灰度均值,计算所有初始的目标对应的灰度均值与所述最小灰度均值的比值,当所述初始待检测目标对应的比值不大于比例阈值且所述初始待检测目标对应的灰度均值不大于控制阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标。其中,上述当前场景的相应图像为当前场景的原图像,如当利用双目图像的视差图像获取深度图像时,该原图像为双目图像中的被匹配图像,当利用单目图像获取深度图像时,该单目图像为原图像。
本发明实施例二提供了一种由视差图像计算得到深度图像的方法,包括如下处理:
利用如下公式(1)由视差图像中的视差值得到深度图像中深度值:
z=(b×f)/d (1)
其中,z表示深度值;b是基线值,是指摄像头的光心之间的距离;f是摄像头的焦距,单位是像素;d表示视差值。
通过公式(1)得到的深度值z表示了目标距离摄像头光心的距离,深度值越小表示距离摄像头越近,深度值越大表示距离摄行头越远。
进一步的,上述得到的深度值z可能过大,(如超过255),可对公式(1)得到的结果进行一定的修正,如修正公式可采用下式:
z1=z×r, (2)
其中,根据摄像头安装的高度确定r的值,r可以大于1也可以小于1,通过(2)式可将z转换成0~255的数。这样得出的深度值z1与视差值d是成反比关系,也就是在视差图像最亮的地方在深度图像中会变成最暗的地方,在视差图像最暗的地方在深度图像中会变成最亮的地方。
为了后续进行目标定位,需要将深度图与视差图的对应关系保持一致,进一步的,可进行如下公式(2)进行修正:
z2=255-z1 (3)
由得到的z2构成最后使用的目标深度信息,以进行目标检测。
上述的目标检测和去伪处理过程,进行目标定位时不局限于目标的某一部位(如头部),且采用多种去伪策略进行目标识别,去除伪目标。对客流进行检测时,不依赖头发相对周围环境灰度较黑的特性,能够准确检测出戴帽子时的目标或穿黑衣服时的目标,获得精确的客流检测结果。
为便于理解并充分说明本发明实施例的有益效果,下面通过一个简化的例子说明上述目标识别及标定的方法。参见图8,仍以公交自动客流统计系统为例进行说明,图8中图像A显示了实际的场景图像。
首先对目标视差图像进行水平方向的投影,将目标视差图像的二维数据变成一维投影图,找出水平投影图中的峰值点(即极值点);再做垂直方向上的投影,将图像二维数据变成一维投影图,找出垂直投影图中的峰值点。图8中B图像为水平投影图,在该投影图中确定出3个峰值点,如B图像中圆点所示,图8中D图像为垂直投影图,在该投影图中确定出3个峰值点,如D图像中圆点所示。由此可得到初始的目标为3×3=9个,再去伪策略去除所述初始的目标中的伪目标,可准确标定出有效目标,如图8中C图像所示。将C图像与实际场景的A图像相比较,充分证明了本发明实施例提供的运动检测方法的有效性与精确性。
由上所述,本发明实施例提供的技术方案,考虑到立体视觉技术的特点,充分利用了场景的视差图像,利用只包含待检测目标视差的目标视差图像进行运动检测,增强了检测的准确度。本发明实施例的技术方案通过一种基于关键点的立体匹配技术,获取到准确的目标视差图像以定位目标,进行目标定位时不局限于目标的某一部位,且采用多种去伪策略进行目标识别,去除伪目标。实践证明,本发明提供的技术方案,解决了现有技术中存在的问题可以有效的克服环境影响和目标“粘连”问题,避免了对目标戴帽子时或者穿黑衣服时造成误检的情况,以较少的计算量实现了复杂场景下的高精度目标的检测。
下面对本发明实施例三提供的运动检测方法进行具体说明。在本发明实施例三中,主要对所述背景场景或当前场景的同一视点下的图像进行边缘检测;根据所述边缘检测计算得到所述背景场景的深度信息或当前场景的深度信息;然后,得到目标深度信息,利用该目标深度信息获取待检测的目标。
其中,由背景场景和当前场景的深度信息,得到目标深度信息,再利用该目标深度信息获取待检测的目标的方法可参见本发明实施例一和二,下面对本发明实施例三提供的对所述背景场景或当前场景的同一视点下的图像进行边缘检测;根据所述边缘检测计算得到所述背景场景的深度信息或当前场景的深度信息的方法进行说明,至少包括如下两种方式。
方式一、利用图像序列的像素值差进行边缘检测时。
上述图像序列包括第一图像和第二图像,将第一图像的像素值与第二图像的像素值相减,得到像素值差S(x,y,n),所述像素值可以为像素点的色度C(x,y,n)和亮度I(x,y,n)中的一个,其中,I(x,y,n)为在时间n具有图像坐标x和y的像素的亮度值,S(x,y,n)为在时间n具有图像坐标x和y的像素的色度值。
为减小误差,对像素值差S(x,y,n)进行滤波得到像素值差信号SF(x,y,n)。利用像素值差信号SF(x,y,n),可选的,根据下式(5)或(6)采用线性或非线性变换进行深度映射,获取深度信息D(x,y,n):
D(x,y,n)=α*SF(x,y,n) (4)
其中,α为预定常数;
D(x,y,n)=W(i)*SF(x,y,n) (5)
其中,W(i)为加权因数,涉及像素与其邻近空间中的像素之间的空间距离i。
方式二、利用图像序列的运动矢量差进行边缘检测时。
根据第一图像和第二图像计算的运动矢量场的基础上检测边缘,该第一图像和第二图像为属于同一个视频序列。
利用上述运动矢量场的相邻运动矢量的运动矢量差来检测边缘,获取到的深度值为该运动矢量差的函数,例如,通过加权因数W(i)来进行深度值的分配。检测运动矢量场中具有相对较大运动矢量对比度的区域,这些区域与相应图像中的边缘对应。
本发明实施例提供的技术方案,考虑到立体视觉技术的特点,充分利用了场景的深度信息,利用目标深度信息进行运动检测。本发明提供的技术方案,解决了现有技术中存在的问题可以有效的克服环境影响和目标“粘连”问题,避免了对目标戴帽子时或者穿黑衣服时造成误检的情况,以较少的计算量实现了复杂场景下的高精度目标的检测。
本发明实施例四提供了一种运动检测装置,如图9所示,所述装置包括:
检测信息获取单元91,用于获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景;
目标检测单元92,用于根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标。
其中,所述目标检测单元92,还用于由所述当前场景的检测信息减去所述背景场景的检测信息后计算得到所述待检测目标;或者,
所述目标检测单元92,还用于设置第一权重值、第二权重值和补偿系数;将所述当前场景的检测信息与所述第一权重值的乘积,减去所述背景场景的检测信息与所述第二权重值的乘积,得到初始待检测目标检测信息;由所述初始待检测目标检测信息和所述补偿系数计算得到所述待检测目标。
进一步的,如图10所示,当所述检测信息为视差图像,所述检测信息获取单元91包括:
图像获取模块911,用于获取背景场景或当前场景的第一图像和第二图像;
关键点提取模块912,用于对第一图像和第二图像分别进行关键点提取,获取第一图像关键点和第二图像关键点;
关键点匹配模块913,用于利用所述第一图像关键点和第二图像关键点进行立体匹配,得到第一图像关键点在第二图像关键点中对应的匹配点;
视差图像获取模块914,用于计算所述第一图像关键点的视差并根据所述视差获取所述背景场景或当前场景的视差图像。
其中,所述关键点匹配模块913,还用于获取在第二图像的第a行中第b列起向第一图像方向一侧的预定范围内的各关键点,其中,所述a和b分别为第一图像中关键点的行坐标和列坐标;计算所述第一图像关键点(a,b)和所述第一图像关键点(a,b)对应的第二图像中各关键点的匹配值;根据所述匹配值确定第一图像关键点(a,b)在第二图像中的匹配点。
所述视差图像获取模块914包括:
参考点视差获取模块,用于按照扫描顺序,将所述第一图像关键点后的下一个扫描点作为参考点,所述关键点、参考点在第一图像中行坐标和列坐标分别为a和b、a和d;在第二图像的搜索范围内获取该参考点的匹配点,所述搜索范围是由第a行中从第b-DIF列至第d列构成,其中,DIF为所述第一图像关键点的视差;计算所述参考点与该参考点的匹配点之间的视差,并将该参考点作为关键点;以及
非关键点视差获取模块,用于选取第一图像中非关键点(m,n)对应的近邻关键点(o,p);在第二图像的第二搜索范围内获取该非关键点的匹配点,所述第二搜索范围是由第m行中从第n-DIF列至第p列构成,其中,DIF为所述第一图像中近邻关键点的视差;计算所述非关键点与该非关键点的匹配点之间的视差。
进一步的,上述图像获取模块911可利用双目摄像机实现,这时,需要对摄像机进行标定。
摄像机标定是为了确定摄像机的内部参数,如焦距、镜头失真系数、不确定性图像因子,及外部参数,如旋转矩阵、平移矢量,以便确定成像模型。标定过程精确与否,直接影响了立体视觉系统测量的精度。经过标定处理,一方面获得摄像机的内外参数并校正了镜头的非线型畸变;另一方面使得外极线水平。
在本发明实施例中,上述装置所使用的双目摄像机应满足如下要求:
使用相同型号、相同参数的两个相机,保证两个相机的一致性;设置两个相机的焦平面水平,基线平行;为了获得较大视场并使图像变形尽量小,该双目摄相器的感光器件(如cmos或者ccd传感器)的面积应在1/3英寸以上;将摄像机安装在待检测场景的上方,由上至下拍摄图像,以确保目标的头部深度最大。
进一步的,所述检测信息为深度图像,所述检测信息获取单元91包括:
第一深度图像计算模块,用于利用获取到的所述背景场景和/或当前场景的视差图像计算得到所述背景场景和/或当前场景的深度图像;或者,
第二深度图像计算模块,用于对所述背景场景和/或当前场景的同一视点下的图像进行边缘检测;根据所述边缘检测计算得到所述所述背景场景和/或当前场景的深度图像。
进一步的,所述检测信息为视差图像或深度图像,所述目标检测单元92包括:
初始目标获取模块921,用于利用由所述背景场景的检测信息和当前场景的检测信息计算获得的目标视差/深度图像确定初始待检测目标;
目标真伪处理模块922,用于根据去伪策略去除所述初始待检测目标中的伪目标,确定有效待检测目标;
其中,所述去伪策略包括:
判断以所述初始待检测目标为中心的目标视差/深度图像中预定窗口内的视差/深度均值是否大于视差/深度阈值,若是,该初始待检测目标为有效目标,若否该初始待检测目标为伪目标;以及,
对当前未进行去伪处理的初始待检测目标,获取目标视差/深度图像中以该初始待检测目标为中心预定窗口内视差/深度均值最大的目标objPoint[maxN],计算所述所有初始待检测目标与目标objPoint[maxN]的欧氏距离,当所述初始待检测目标与目标objPoint[maxN]的欧氏距离不小于距离阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标,其中,maxN为所述深度均值最大的目标的序号;以及,
获取所述初始待检测目标在当前场景的相应图像中以该目标为中心预定窗口内最小灰度均值,计算所有初始待检测目标对应的灰度均值与所述最小灰度均值的比值,当所述初始待检测目标对应的比值不大于比例阈值且所述初始待检测目标对应的灰度均值不大于控制阈值时,该初始待检测目标为有效目标,否则,该初始待检测目标为伪目标。
其中,当利用视差图像进行目标检测时,上述相应的图像为获取视差图像时的被匹配图像;当利用深度图像进行目标检测时,上述当前场景的相应图像为当前场景的原图像,如当利用双目图像的视差图像获取深度图像时,该原图像为双目图像中的被匹配图像,当利用单目图像获取深度图像时,该单目图像为原图像。
本发明实施例四中各功能模块的具体工作方式参见本发明的方法实施例。
由上所述,本发明实施例提供的技术方案,考虑到立体视觉技术的特点,充分利用了场景的视差/深度信息,利用只包含待检测目标视差/深度的目标视差/深度图像进行运动检测,增强了检测的准确度。
其中,本发明实施例的技术方案通过一种基于关键点的立体匹配技术,获取到准确的目标视差图像以定位目标,进行目标定位时不局限于目标的某一部位,且采用多种去伪策略进行目标识别,去除伪目标。
实践证明,本发明提供的技术方案,解决了现有技术中存在的问题可以有效的克服环境影响和目标“粘连”问题,避免了对目标戴帽子时或者穿黑衣服时造成误检的情况,以较少的计算量实现了复杂场景下的高精度目标的检测。
本发明实施例五还提供了一种客流检测系统,该系统包括运动检测装置和计数装置,所述计数装置,用于根据所述运动检测装置得到的待检测目标计算得到客流量,其中,所述运动检测装置包括:
检测信息获取单元,用于获取背景场景的检测信息和当前场景的检测信息,所述当前场景为包括待检测目标和同一背景场景的场景;目标检测单元,用于根据所述背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标。
该系统可用于铁路、地铁和公交等交通系统的自动客流统计,也适用于任何需要对运动物体进行检测的情况。尤其适用于对光线变化比较强烈的场所中,对目标的检测和标定等。
由上所述,本发明实施例提供的技术方案,考虑到场景中原有的背景物体对待检测目标的影响,同时利用获取到的背景场景的检测信息和当前场景的检测信息计算得到所述待检测目标,有效降低了背景物体对目标检测的影响,增强了检测的准确度。实践证明,本发明实施例提供的技术方案,解决了现有技术中由于仅使用包含待检测目标的场景的深度信息等进行目标检测所带来的问题,可以有效的克服环境影响和目标“粘连”问题,以较少的计算量实现了复杂场景下的高精度目标的检测。
本领域普通技术人员可以理解实现上述实施例中的全部或部分步骤,可以通过程序指令相关硬件完成。所述实施例对应的软件可以存储在一个计算机可存储读取的介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。