一种基于距离的多相机多目标匹配方法与流程

文档序号:18798679发布日期:2019-09-29 20:16阅读:678来源:国知局
一种基于距离的多相机多目标匹配方法与流程

本发明属于多相机目标匹配技术领域,涉及一种基于距离的多相机多目标匹配方法。



背景技术:

目标检测,多目标跟踪与多相机多目标的匹配研究是近年来的一大热点。目标检测在日常生活中应用十分广泛。一般可以检测所需要的目标的位置及类别。目标检测传统的方法发展时间长,但发展的速度慢,到后期想依靠手工选取的特征来提高精度已逐渐不可行。之后随着深度学习方法的提出,基于深度学习的目标检测的方法越来越多,常见的有yolo、rcnn、ssd、retinanet等。rcnn是muti-stage方法,检测精度低,检测速度慢。rcnn延伸出来的方法fastr-cnn和fasterr-cnn是two-stage方法,检测精度较高,检测速度较慢。yolo、ssd、retinanet是one-stage的方法,检测精度较高而且检测速度较快。rcnn系列的方法需要先生成候选框,而yolo、ssd、retinanet不需要。一般来说,工程应用要讲究实时性,较多采用one-stage的yolo、ssd等方法。而如果更在意性能指标,可以采用two-stage的方法。yolo的设计是以实时性为基础,运算速度快,运用较为广泛。

多目标跟踪可以同时跟踪视频中的多个目标。在自动驾驶,智能监控等领域都有着广泛应用。多目标跟踪算法可以进行轨迹特征的自动分析和提取,在一定程度上可以提升目标检测的性能。多目标跟踪所跟踪的目标,位置变化一般较大,个数也不确定,但目标一般属于一类。目标跟踪算法分类方式有很多种,有按关联方式的跟踪和按预测校正跟踪,按照在线方式跟踪和按照离线方式关联跟踪,按照概率统计最大化跟踪和按照确定性推导的跟踪。在线跟踪是指以逐帧的方式进行跟踪,对图像的每一帧进行进行检测,然后关联已有的跟踪轨迹。离线跟踪算法需要获取完整视频以及视频的检测结果。概率统计最大化的跟踪包括贝叶斯推导算法,能量最小化算法和概率图优化算法等。确定性推导的跟踪包括二部图匹配点算法,机器学习算法和网络流优化算法等。在概率统计最大化的跟踪算法里,将轨迹与检测结果通过概率模型形式化。在确定性推导的算法中,将轨迹和检测的匹配视为二元变量,构造相应的目标函数,通过求目标函数的最优得到轨迹与检测的最佳匹配。

在多相机目标匹配的算法中要将不同相机中出现的相同目标进行匹配。首先需要对相机进行标定,然后将两个相机中的目标位置映射至同一个坐标系中,再基于目标映射到同一个坐标系之后的距离关系进行匹配。常用的匹配算法是最近邻匹配算法。在传统算法的匹配逻辑中,针对已匹配过的目标是否需要再次进行匹配有两种处理方法,第一种是已匹配之后就不在进行匹配,这样会导致某帧匹配错误之后,错误无法被纠正。第二种是每帧都匹配,那么某一帧的误匹配会带来id的立即切换;而且容易发生切换为相同id的情况。这两种匹配方式都不能满足实际工程运用需求。



技术实现要素:

本发明的目的在于:为解决由于匹配过程中目标被遮挡,产生误匹配之后,匹配效果较差的问题。具体体现在针对已匹配过的目标,如果每帧都匹配,某一帧的误匹配会导致id的立即切换,而且容易切换为相同id的情况,如果不需要匹配,那么一旦某一帧匹配错了,错误不会再被纠正。本发明提供一种基于距离的多相机多目标匹配方法。

本发明的技术方案如下:

一种基于距离的多相机多目标匹配方法,根据工程实际需要,提供一种可以提升匹配效果的匹配逻辑。

进一步地,包括如下步骤:

s1:初始化匹配频率m,控制标号更新的阈值n,决定匹配是否稳定的阈值l。

s2:两个相机a和b所得的多帧目标检测的结果。

s3:判断当前帧是否是第一帧。是,则执行s5;否,则执行s4。

s4:判断当前帧是否与上一次进行匹配的帧相隔了m帧。是,则执行s5;否,则执行s6。

s5:判断两个相机的目标检测结果是否已有标号。是,则执行s7;否,则执行s8。

s6:进入下一帧,执行s4。

s7:检测目标使用上一帧的标号。执行s9。

s8:检测目标分配新的标号。

s9:利用km匹配算法对两个相机中的目标进行基于距离的匹配。

s10:判断两个相机中的目标是否能够匹配。是,则执行s11;否,则执行s12。

s11:为两个相机中能够匹配的目标分配相同的标号,执行s13。

s12:为两个相机中不能匹配的目标分配不同的标号。

s13:将计数值n的值设为1。

s14:查看目标an的标号更新情况。

s15:判断目标的标号与上次匹配的结果是否相同。是,则执行s16;否,则执行s17。

s16:该目标的匹配次数加1。执行s18。

s17:该目标的匹配次数设为1。

s18:判断目标的匹配次数是否达到n。是,则执行s19;否,则执行s22。

s19:更新该目标标号。

s20:判断目标匹配的次数是否达到l*n。是,则执行s21;否,则执行s22。

s21:将该目标标号固定。

s22:判断是否已匹配所有目标。是,则执行s23;否,则执行s24。

s23:判断是否所有帧都已匹配完毕。是,则结束;否,则执行s6。

s24:将计数值n的值加1,执行s14。采用上述方案后,本发明的有益效果在于:

在进行多相机多目标的匹配时,以前的基于距离的方法主要采用的最近邻匹配算法,针对已匹配的目标点的匹配逻辑仅仅是不再匹配或每一帧都匹配。这使得某帧匹配错了也不会被纠正或由于误匹配导致id切换过于频繁,无法有效地在工程中投入实用。本发明设计的匹配逻辑能够根据需要调整全局标号的更新速度和稳定程度,使用km匹配算法代替最近邻匹配算法,实现全局代价的最小化。本发明使基于距离的匹配具有更高的稳定性与准确性,能够较好地在工程中进行应用。

附图说明

图1为本发明的流程图;

图2为利用深度学习框架进行单相机行人检测的结果,本发明不限定检测的目标类型;

图3为本发明实际进行多相机多目标匹配的结果。

具体实施方式

为了验证该方法的有效性,基于本发明的方法进行了如下实验。

本发明的方案中使用了km匹配算法对两个相机中的目标进行基于距离的匹配,为了便于理解,对该匹配算法进行如下说明:

单相机跟踪算法使用deepsort模型。deepsort通过目标检测器检测出每一帧的行人,并根据行人的特征进行前后帧目标的关联。考虑到速度和性能之间的均衡,目标检测器由不使用fasterrcnn而使用yolov3;而行人的特征使用一个重识别网络获得。相机可使用普通光学数码相机,两个相机的拍摄区域应有重叠,且需要提前进行标定。以两个相机为例,相机a识别目标为a1,a2,…,am,相机b识别目标为b1,b2,…,bn,现在需要将相机a和相机b的目标配对。通过标定两个相机视野中k对对应的点,得到相应的单应矩阵,再将相机a中的目标和相机b中的目标转换至一个坐标系中。求出相机a中每个目标和相机b中每个目标两两之间的欧式距离,记为dij,将dij取为相反数。此时,问题转化为二分图带权最大匹配问题,使用kuhn-munkres(km)算法,即可求出此时的带权最大匹配,即当dij为正数时的距离和(全局代价)最小的匹配。基于windows操作系统,使用darknet和tensorflow深度运行框架在geforce1080gpu上运行。

本发明具体包括如下步骤:

s1:初始化匹配频率m,控制标号更新的阈值n,决定匹配是否稳定的阈值l。

s2:两个相机a和b所得的多帧目标检测的结果。

s3:判断当前帧是否是第一帧。是,则执行s5;否,则执行s4。

s4:判断当前帧是否与上一次进行匹配的帧相隔了m帧。是,则执行s5;否,则执行s6。

s5:判断两个相机的目标检测结果是否已有标号。是,则执行s7;否,则执行s8。

s6:进入下一帧,执行s4。

s7:检测目标使用上一帧的标号。执行s9。

s8:检测目标分配新的标号。

s9:利用km匹配算法对两个相机中的目标进行基于距离的匹配。

s10:判断两个相机中的目标是否能够匹配。是,则执行s11;否,则执行s12。

s11:为两个相机中能够匹配的目标分配相同的标号,执行s13。

s12:为两个相机中不能匹配的目标分配不同的标号。

s13:将计数值n的值设为1。

s14:查看目标an的标号更新情况。

s15:判断目标的标号与上次匹配的结果是否相同。是,则执行s16;否,则执行s17。

s16:该目标的匹配次数加1。执行s18。

s17:该目标的匹配次数设为1。

s18:判断目标的匹配次数是否达到n。是,则执行s19;否,则执行s22。

s19:更新该目标标号。

s20:判断目标匹配的次数是否达到l*n。是,则执行s21;否,则执行s22。

s21:将该目标标号固定。

s22:判断是否已匹配所有目标。是,则执行s23;否,则执行s24。

s23:判断是否所有帧都已匹配完毕。是,则结束;否,则执行s6。

s24:将计数值n的值加1,执行s14。

表1本发明的相机图像坐标转地面坐标之后的误差情况

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