目标跟踪基于matlab帧差法结合卡尔曼滤波行人姿态识别含Matlab源码 1127期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标跟踪基于matlab帧差法结合卡尔曼滤波行人姿态识别含Matlab源码 1127期相关的知识,希望对你有一定的参考价值。
一、基于人体特征识别和卡尔曼滤波的行人跟踪算法简介
1 基于体型和行为姿态特征的人体识别算法
从红外图像中可以得到目标与背景之间的灰度级差别,从而区分出有生命特征的运动物体,但仅从亮度特征无法区别出该运动物体是人类还是其他动物,例如狗等哺乳类动物的红外波长与人类相差不大,且外表毛皮的热辐射作用没有受到衣物遮挡的影响,一样可以通过灰度级之差来从背景中区别出。从红外图像中一般能得到目标自身的两个信息点:目标身上的亮度分布区域,即目标的体型特征;相邻帧之间相同目标的动作变化,即目标的行为姿态特征。根据对这两个信息点的研究,通过具体分析来得出识别人体的判断标准。
1.1 体型特征研究
设定一个灰度级阈值,用于检测目标的边缘像素,并在x轴得出该目标边缘的最左、最右像素点,在y轴方向上得出目标边缘的最上、最下像素点。用这4个点形成一个包围目标的最小矩形,并以矩形中点为中心点向两边平行扩展,把矩形区域分为面积均等的上半部分和下半部分。图1所示的目标行走模型,把矩形区域划分为若干个3×3像素的矩形元素,通过计算目标像素所占矩形元素个数就可以算出目标身体区域的面积。矩形元素的大小可以由用户所需的识别精准度决定,矩形元素越小识别精度越大,但在后续操作中算法的运算负担会增大。大多数陆栖动物都是四肢行走,重心偏下。从图1a动物的行走模型可以看出,其上半部分面积占的矩形元素较多,所以上半部分的身体区域面积与矩形面积之比较大,约为26.1%31.7%,而下半部分与矩形面积之比较小,约为14.3%17.1%,上半部分与下半部分之比约为152%221%。人是双腿行走,直立行走时重心位于小腹区域,上半身与下半身面积之比相差较小,图1b中,正面行走时上半部分的身体区域面积与矩形面积之比约为41.3%42.8%,下半部分与矩形面积之比约为29.7%32.5%,上半部分与下半部分之比约为127%144%。图1c中,侧面行走时上半部分的身体区域面积与矩形面积之比约为23.6%25.8%,下半部分与矩形面积之比约为21.0%22.8%,上半部分与下半部分之比约为103%~122%。按照这种体型分布差异,先计算出目标上半、下半部分面积分别为A和B,矩形区域的面积为D,得到体型特征值Q为
图1 目标行走模型
1.2 行为姿态特征识别
将行人与动物的体型分布差异作为识别人体的标准并不全面,为了提高人体识别的精准性,通过研究人与动物的行为姿态特征差异,设计一种基于高斯混合模型的前后帧像素点概率匹配的方法,再结合人体体型特征来提高识别人体目标的成功概率。在1.1节中提到,大多数陆栖动物是四肢行走,因此这些动物在行走时的行为姿态变化主要集中在身体的下半部分,即前后帧相同目标的上半部分对应的像素点匹配概率大,而下半部分对应的像素点的匹配概率小。人是通过双腿行走,而且在行走过程中会通过双臂的摇摆来保持身体的平衡,因此,前后帧相同人体目标的上半部分与下半部分对应的像素点的匹配概率相差较小。通过求出人体目标上半身部分和下半身部分在前后帧图像中对应像素的平均匹配概率,得出它们之间的比值,与设置的阈值T进行对比从而确定行为姿态特征值。
在文献中提到利用高斯混合模型的概率密度函数对分类任务进行概率估算和选择的有效性。以前一帧红外图像出现的目标身体上、下两部分分别作为匹配模板,建立相对应的高斯概率模型,计算下一帧图像目标身体上、下两部分的像素点分别与前一帧对应的像素点能够进行匹配的概率。以目标身体的上半部分为例,计算这部分区域在x轴和y轴方向上的均值和方差,分别设为μx,μy和σx2,σy2,并用高斯混合密度函数g(xi;μ,Σ)来描述任意一个像素点xi处于该区域的概率为
式中,d表示维度;Σ为此密度函数的共变异矩阵,为了简化讨论,Σ表示为
此时高斯密度函数表示为
得到目标身体上半部分的概率匹配模型后,计算下一帧中目标对应身体部分的n个像素点的匹配概率总和ρ(A),再求得像素点的平均匹配概率ρ(A)/n,同理,求出目标身体下半部分像素点的平均匹配概率为ρ(B)/m,对于设置的阈值T1,T2,行为姿态特征值S为
结合体型特征值Q和行为姿态特征值S,得到人体识别的判定算式为
当R=2时,当前目标确定为人体目标,R≠2时,则排除目标为人体目标的可能性,不进行警报和后续的跟踪操作。
2 基于方向梯度直方图和卡尔曼滤波器的目标跟踪
当确定运动目标为行人后则开始进行跟踪操作,在一个监控场景中往往会有多个行人目标,要对多个目标分别进行检测跟踪,需要区别每一个行人目标的活动位置,并通过方向梯度直方图(HOG)对不同行人目标进行检测,在最后阶段采用卡尔曼滤波器估计行人的运动状态,并去除无用的测量值噪声,实现跟踪的准确性。
在监控区中,不同的行人目标所处的位置与摄像头之间的距离会有差异,这种差异可以通过包围目标的矩形面积与该帧图像的面积之比体现,可作为区别不同目标活动位置的一个特征,而包围目标的矩形面积如1.1节所述,求出目标在x轴的最小、最大坐标(xmin,y),(xmax,y)和y轴上的最小、最大坐标(x,ymin),(x,ymax),设该监控帧图像的面积D大小是固定的,则二者比值为(xmax-xmin)(ymax-ymin)/D。
2.1 方向梯度直方图(HOG)
HOG descriptors首先由DALAL N和TRIGGS B于2005年提出 ,它是通过计算目标局部图像梯度的方向信息的统计值来进行目标检测的特征描述器。利用方向梯度直方图技术 ,将目标分成小的细胞单元,计算每个细胞单元中边缘的方向直方图,接着让细胞单元中的每一个像素点都为基于方向的直方图通道投票,且每一票都是带权值的,而权值则通过该像素点的梯度幅度计算得出。为了使检测的效果达到最好,采用矩形状的细胞单元、无向的梯度和9个直方图通道。
由于监控过程中背景与目标之间的亮度对比可能会发生变化,这样会导致梯度强度的变化范围增大,需要对梯度强度采用归一化操作。把各个细胞单元组合成大的、空间上连通的矩形区间(R-HOG),区间主要通过3个参数表征,即每个区间的细胞单元数,每个细胞单元的像素点数量,每个细胞的直方图通道数。分别把这3个参数设置为3×3细胞/区间,6×6像素/细胞以及9个直方图通道,接着对区间进行归一化,用v表示一个还没有被归一化的向量,它包含了给定区间的所有直方图信息,‖v‖k表示一个v的k阶范数,归一化方式采用文献中提到的L2-Hys,L2-norm,则
2.2 卡尔曼滤波
卡尔曼滤波在物体互相遮挡和测量值带噪声的情况下仍然可以实现实时目标跟踪的效果 。用目标运动速率的线性随机微分方程来描述系统,用坐标位置(x,y)和包围目标的矩形的宽度l和高度h表示目标在某个时刻的系统状态。假设目标在监控区内匀速行走,离散控制过程的系统方程为
λ为微测热传感器的数据采集周期;G(k)表示速率变动(加速度),即过程的高斯白噪声。系统测量值为z(k)=H(k)x(k)+C(k),H表示测量系统的参数,C(k)表示测量噪声。行人的姿势 和相关联的误差协方差矩阵P使用卡尔曼滤波器预测得出
式中,Q是过程噪声的协方差。结合预测值和测量值,可以得到现在状态(k)的最优化估算值为
并更新k状态下x(k| k)的误差协方差
式中,K(k)为卡尔曼增益。
式中,R(k)是指测量噪声的协方差,测量协方差的值较低时意味着在当前的测量值上具有更大的加权,此时跟踪系统的灵敏度更高。当一个新目标刚进入监控区时,往往只是身体部分进入监控的摄像头视域,此时的第一帧并不会显示一个完整的目标,可能会造成目标检测失真,无法确定跟踪。为了提高跟踪系统的鲁棒性,对于出现在监控区的新目标,经过3张连续的帧图像检测后再确认是否为有效的目标并进行跟踪。
二、部分源代码
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]万智萍.基于人体特征识别和卡尔曼滤波的行人跟踪算法[J].电光与控制. 2016,23(11)
以上是关于目标跟踪基于matlab帧差法结合卡尔曼滤波行人姿态识别含Matlab源码 1127期的主要内容,如果未能解决你的问题,请参考以下文章
FPGA目标跟踪基于FPGA的帧差法和SAD匹配算法的目标跟踪实现
图像检测基于帧差法实现人脸实时检测与跟踪matlab源码含 GUI