传统meanshift跟踪算法实现流程
一、 Meanshift算法流程图
视频流第二帧之后图像第一帧图像提取候选目标区域否手动选定跟踪目标提取候选目标的灰度加权直方图特征hist2提取目标灰度加权直方图特征hist1均值漂移得到均值漂移向量及新的候选区域位置是否满足迭代结束条件是得到当前帧目标位置 图1 meanshift流程图
二、 各模块概述
1、 手动选定目标区域:手动框出目标区域,并把该区域提取出来作为目标模板
区域;
2、 提取目标灰度加权直方图特征hist1;
2.1构造距离权值矩阵m_wei;
使用Epanechnikov核函数构造距离加权直方图矩阵:设目标区域中像素
点(i,j)到该区域中心的距离为dist,则
m_wei(i,j)?1?dist/h,这里h是核函数窗宽,h为目标区域中离区域中心
最远的像素点到中心的距离:若所选目标区域为矩形区域,区域的半宽度为
hx,半高度为hy,则h?sqrt(hx2?hy2); 2.2得到归一化系数C;
C?1/M,其中M是m_wei中所有元素值之和; 2.3计算目标的加权直方图特征向量hist1;
若图像为彩色图像,则把图像的r,g,b分量归一化到[0,15]之间(分量值与16取余,余数即为归化后的分量值),然后为不同的分量值赋予不同的权值得到每个像素点的特征值q_temp:
p256*?r16*?g b q_tem?对于像素点(i,j),设其特征值为q_temp,则另
hist1(q_temp?1)?hist1(q_temp?1)?m_wei(i,j);
若图像是灰度图像,则直接利用每个像素的灰度值作为每个像素的特征值,然后统计得到hist1;
把一维数组hist1归一化:hist1?hist1*C;归一化后的数组hist1即为目标的加权直方图特征向量;
3、 从第二帧开始的图像,通过迭代的方式找到该帧图像中目标的位置;
3.1提取候选目标区域:以上一帧图像中目标的位置或上一次迭代得到的目标位置为中心提取出目标模板区域大小的区域;
3.2提取候选目标区域的加权直方图特征向量hist2:提取方法同步骤2.3; 计算候选目标区域的特征值矩阵q_temp1:
p(,i?)j q_tem1256*r(?i,j)16g*?i(j,;)b ij3.3均值漂移到新的目标区域;
3.3.1计算候选目标区域相对于目标区域的均值漂移权值w:
rth1i(st)/i w?sq(?i时,0w(i)?0; his2t()h2i(st)),i?h2i( s2t 3.3.2 根据每个像素点所占的均值漂移权值计算漂移矩阵xw: xw?xw???w(q_temp1(i,j)?1)*[i?y(1),j?y(2)] 3.3.2得到权值归一化后的均值漂移向量Y:
i?1j?1ab
ab Y?xw/??w(q_temp1(i,j)?1)
3.3.3得到下一个候选目标区域的中心位置y: y?y?Y;
i?1j?1二、算法总结
对于输入的视频流,程序处理流程:
1、获取第一帧图像,在第一帧图像中给出要跟踪的目标矩形模板区域A,假定A的高度为a,宽度为b。根据模板区域的大小构造核函数距离加权矩阵m_wei,并根据模板区域的颜色特征构造目标的加权直方图特征向量
hist1;
2、对于第t帧图像It,假定t?1帧图像中目标所在的位置为yt?1,初始化均值漂移矩阵Y?[2,2],迭代次数num?0,下一次的迭代位置ytnum?yt?1; 3、If(Y2(1)?Y2(2)?0.5 & num?20) 3.1num??;
3.2以ytnum为中心,提取出目标模板区域大小的候选目标区域B; 3.3计算B的特征值矩阵q_temp1及加权直方图特征向量hist2; 3.4计算候选目标区域相对于目标区域的均值漂移权值w; 3.5得到权值归一化后的均值漂移向量Y; 3.6ytnum?ytnum?1?Y; 3.7转到步骤3; 4、else
4.1得到当前帧的目标位置yt?ytnum; 4.2t?t?1,转到步骤2;
相关推荐: