You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.7 KiB
9.7 KiB
AIDMonitor
基于检测信息构建的管道,实现目标监控,具体作用包括
- 提供最优的重捕候选,实现长时跟踪器
- 跟踪过程中判断变化情况,对主跟踪目标信息修正,增加鲁棒性
- 对主跟踪目标周围目标监控,提前进行干扰预警,抵抗相似目标,增强感知能力
计算观测区
- 计算方法:观测区当前的计算方法是以跟踪目标的7倍宽高尺寸进行计算,
- 作用:观测区的作用是对该区域内部的目标进行监控处理,目的是加快算法处理速度
计算重捕区
- 计算前提:只有在主跟踪目标丢失记忆时计算
- 计算方法:依据KCF跟踪的波门与观测区之间的回字形区域的距离,结合目标自身的运动速度、图像帧频进行外扩,最大限制的目标的15倍宽高
- 作用:在跟踪丢失后的重捕是依据短时间相信预测周边,时间较长,预测出现偏差,扩大搜寻范围
- 注意事项:重捕区域的位置是跟随主跟踪目标的预测点走,扩大的宽高需要限制边界,保证在图像内部
基于观测区添加监控管道信息
-
说明:管道缓存历史帧信息帧数较少,且其中的特性有较多和监控功能无重叠,为了不增加管道当中的非通用属性,在本模块的内部构建了缓存队列,邻居目标信息是通过管道告警编号与管道之间建立一对一关系;为了对主跟踪目标与周围邻居目标进行监控,涉及数据结构将二者进行区分,本质上包括三类对象
- 主跟踪目标的输出,其结果由 AIDMAINOBJ结构体管理
//主跟踪目标结构体,单帧信息 typedef struct FRMMAINOBJ_Tag { UINT32 unFrmId; //当前帧编号 ANGLE32F afAngle; //目标方位角、俯仰角 POINT32F pfCenPos; //区域的中心点坐标 SIZE32F snSize; //目标宽高 }FRMMAINOBJ; //主跟踪目标与周围目标的关系结构体,仅统计观测区域范围内,代表一个周围目标的多帧信息 typedef struct AIDMAINOBJ_Tag { BBOOL bOccupy; //表示被占用标记 BBOOL bMoved; //运动状态是否运动的(累计时序信息统计) UBYTE8 ubEnd; //队列尾 UINT16 ubUpdatePoint; //更新点,只有达到更新点才能更新数据 SINT16 uAIDirection; //受监控管道运动方向(累计时序信息统计) SINT32 nStatisticCnt; //帧统计次数,每次更新到帧数组进行累加 SINT32 nNoUpdateCnt; //连续未更新帧计数(用来控制监控信息被删除) FLOAT32 f3sDisMove; //目标在最近3s内的移动距离,像素衡量 ANGLE32F f3sAglMove; //目标在最近3s内的移动距离,角度衡量 ANGLE32F afBornAgl; //目标初始角度 DOUBLE64 dColorHu[9]; //主跟踪目标的颜色特征(多帧) DOUBLE64 fReIDArray[512]; //主跟踪目标的ReID特征(多帧) FRMMAINOBJ FrmRelation[AID_DEPTH_MAX];//建立主跟踪目标与周围目标关系(单帧) }AIDMAINOBJ;- AI识别管道的输出,是与主跟踪目标为同一目标的识别管道,视作为邻居目标,其结果由 NEIBOR结构体管理
- AI识别管道的输出,与主跟踪目标不为同一目标的识别管道,视作为邻居目标,其结果由 NEIBOR结构体管理
//邻居目标特征 + 邻居目标与主跟踪目标的关系结构体,单帧信息 typedef struct pipeRelationship { BBOOL bLost; //邻居目标当前状态是否在记忆 UINT32 unFrmId; //当前帧编号 ANGLE32F afAngle; //目标方位角、俯仰角 POINT32F pfCenPos; //区域的中心点坐标 SIZE32F snSize; //目标宽高 FLOAT32 fRelationIOU; //邻居目标与主跟踪目标的IOU FLOAT32 fCenDisXY; //邻居目标与主跟踪目标的中心距离 DOUBLE64 dColorHu[9]; //邻居目标的颜色特征(单帧) DOUBLE64 fReIDArray[512]; //邻居目标的ReID特征(单帧) }LONGRELATION; //邻居目标特征 + 邻居目标与主跟踪目标的关系结构体,单帧信息 typedef struct pipeShortRelationship { BBOOL bLost; //邻居目标当前状态是否在记忆 UINT32 unFrmId; //当前帧编号 ANGLE32F afAngle; //目标方位角、俯仰角 POINT32F pfCenPos; //区域的中心点坐标 SIZE32F snSize; //目标宽高 FLOAT32 fRelationIOU; //邻居目标与主跟踪目标的IOU FLOAT32 fCenDisXY; //邻居目标与主跟踪目标的中心距离 }SHORTRELATION; //邻居目标与主跟踪目标的关系结构体,仅统计观测区域范围内,代表一个周围目标的多帧信息 typedef struct NEIBORTAR { BBOOL bOccupy; //表示被占用标记 BBOOL bMoved; //运动状态是否运动的(累计时序信息统计) BBOOL bCreateBeforeLost; //创建时机是否在主目标丢失前 UBYTE8 ubShortEnd; //队列尾(控制角度位置,实时刷新) UBYTE8 ubLongEnd; //队列尾(控制角度位置,间隔刷新) UBYTE8 ubEndFeature; //队列尾(控制特征) UBYTE8 ubIndex; //在MASTERAIDMONITOR当中占据的索引 UINT16 ubUpdatePoint; //更新点,只有达到更新点才能更新数据 SINT16 uAIDirection; //受监控管道运动方向(累计时序信息统计) SINT32 nAlarmBatchID; //管道告警编号 SINT32 nRelationCnt; //邻居目标与主跟踪目标建立关系的帧计数 SINT32 nShortRecordCnt; //帧统计次数,每次更新到帧数组进行累加(间隔刷新) SINT32 nLongRecordCnt; //帧统计次数,每次更新到帧数组进行累加(间隔刷新) SINT32 nNoUpdateCnt; //连续未更新帧计数(用来控制监控信息被删除) FLOAT32 fDisStart; //开始距离,开始统计时的距离 FLOAT32 f3sDisMove; //目标在最近3s内的移动距离,像素衡量 ANGLE32F f3sAglMove; //目标在最近3s内的移动距离,角度衡量 ANGLE32F afBornAgl; //目标初始角度 SHORTRELATION ShortRelation[AID_DEPTH_MAX];//邻居目标实时存储信息数组,目的用于捕获变化(单帧) LONGRELATION LongRelation[AID_DEPTH_MAX];//邻居目标间隔存储信息数组,目的用于寻求稳定(单帧) }NEIBOR; -
计算方法:获取当前所有的管道数组信息,对管道进行遍历,区分主跟踪目标和其他邻居目标进行监控队列目标的创建、信息更新、邻居目标的删除
- 主跟踪目标的创建:首次记录的时候创建,记录帧编号、角度、位置、尺度,保存颜色特征模板
- 主跟踪目标的更新:设置更新点,控制间隔更新,记录帧编号、角度、位置、尺度,颜色特征线性更新;计算轨迹与固定方位的夹角
- 邻居目标的创建与更新:跳过管道帧数不足10帧的目标,计算当前管道与观测区的IOU,从监控队列当中查找是否存在记录;
- 有IOU无记录:将目标加入到监控队列,标识是在主跟踪目标丢失前后创建,计算与主跟踪目标的IOU,记录长短时更新的位置、尺寸等信息,计算颜色特征
- 有IOU有记录:对监控队列中的目标进行信息更新,短时信息每帧更新,长时信息依据更新点更新间隔更新,颜色特征、轨迹夹角随长时监控记录计算
- 无IOU有记录:说明监控目标出了监控区,进行删除
-
目的:动态维护监控历史信息,未后续查找目标做准备
1 获取重捕候选
- 目的:提供重捕候选,基于移动速度、移动方向、运动轨迹、颜色特征的相似度排除不相似的目标,提供有效的候选目标
- 优势:在传统算法或者Ai跟踪器无法提供候选的时候,可以发挥重捕作用
- 使用场景:主跟踪丢失,AIDMonitor模块输出候选
2 辅助主跟踪修正
- 目的:在主跟踪目标正常跟踪过程中,使用识别的监控管道与主跟踪目标进行位置和尺寸校验,当偏离程度较大时,对主跟踪目标进行修正
- 优势:可以借助于深度特征捕获到目标的变化
- 缺点:非常依赖AI识别结果,包括识别的位置、尺寸,连续性
- 使用场景:需要对管道和主跟踪目标进行同一身份确认,依据连续的监控信息,计算得到位置和尺寸存在偏差
- 注意事项:特性区分度和稳定性不如AI跟踪器,谨慎使用
3 抗相似目标干扰
- 目的:感知相似目标的到来,避免同类干扰
- 优势:监控范围广,可以在大范围区域实现监控
- 使用场景:跟踪过程中有较为相似目标与主跟踪目标产生交集,主动避开模型更新