资源简介

网上下载很多均值漂移算法,代码一样,但运行老是出错,这里是自己修改后的,成功运行,运行后先在第一帧Figure里截取要追踪的汽车目标即可,是在Matlab2016b上运行的,代码简单,适合学习。

资源截图

代码片段和文件信息

%mean shift tracking
function rgb_meanshift()
clear;
rgb=imread(‘0329.jpg‘);%读取第一帧图片
figure(1)imshow(rgb);
[temprect]=imcrop(rgb);%鼠标截取需要跟踪的目标,rect=[xywh]分别是左上角坐标和图片长宽
[abc]=size(temp);
%目标框中心点坐标
tic_x=rect(1)+rect(3)/2;
tic_y=rect(2)+rect(4)/2;
m_wei=zeros(ab);%权值矩阵初始化
%定义h为搜索窗口的大小,也可称为核函数带宽,包括长度和宽度,分别为目标长度和宽度的一半,h(xy)。
%这里的h是一个固定值,即跟踪过程中搜索窗口的大小是不变的,这导致 Mean-Shift跟踪算法在跟踪过程中不能适应目标尺寸的变化,对大小有改变的目标产生定位不准确。
y(1)=a/2;
y(2)=b/2;
h=y(1)^2+y(2)^2;%带宽模的平方
%计算权值矩阵
for i=1:a
    for j=1:b
        dist=(i-y(1))^2+(j-y(2))^2;%样本点距离中心点模的平方
        m_wei(ij)=1-dist/h;%Epannechnikov核函数
    end
end
C=1/sum(sum(m_wei));%归一化系数

%计算目标权值直方图
hist1=zeros(14096);
for i=1:a
    for j=1:b
        %rgb颜色空间量化为16*16*16 bins,降维来简化彩色颜色直方图
        %把R,G,B三个通道0-255区间内的值都分为16个区间,即将0-255转换为0-15
        q_r=fix(double(temp(ij1))/16);%fix为趋近0取整函数
        q_g=fix(double(temp(ij2))/16);
        q_b=fix(double(temp(ij3))/16);
        q_temp=q_r*256+q_g*16+q_b;%设置每个像素点红色、绿色、蓝色分量所占比重,将三维向量映射为一维的
        hist1(q_temp+1)=hist1(q_temp+1)+m_wei(ij);%计算直方图统计中每个像素点占的权重
    end
end
hist1=hist1*C;
rect(3)=ceil(rect(3));
rect(4)=ceil(rect(4));
jishu=1;
%读取序列图像
for i=0329:0380
       Im=imread([‘0‘int2str(i)‘.jpg‘]);
       jishu=jishu+1;
       %Im=medfilt2(Im);
       num=0;
       Y=[22];
       tic
    %mean shift迭代
    while((Y(1)^2+Y(2)^2>0.5)&num<20)%迭代条件
       num=num+1;
       temp1=imcrop(Imrect); 
       %计算侯选区域直方图
       %hist2=C*wei_hist(temp1m_weiab);%target candidates pu                                                                                                                                                                                                                                                                                                                                                                                                   
       hist2=zeros(14096);
       for i=1:a
         for j=1:b
        q_r=fix(double(temp1(ij1))/16);
        q_g=fix(double(temp1(ij2))/16);
        q_b=fix(double(temp1(ij3))/16);
        q_temp1(ij)=q_r*256+q_g*16+q_b;
        hist2(q_temp1(ij)+1)= hist2(q_temp1(ij)+1)+m_wei(ij);
         end
       end
       hist2=hist2*C;
       %显示直方图
       figure(2);
       subplot(121);
       plot(hist2);
       hold on;
       %bdist1 = bhattacharrya(hist1 hist2)
       w=weights(hist1hist2);
       %w=sqrt(hist1./hist2);
       
       %变量初始化
       sum_w=0;
       xw=[00];
       for i=1:a
           for j=1:b
              %bitwei(ij)=w(uint32(q_temp1(ij))+1);
               sum_w=sum_w+w(uint32(q_temp1(ij))+1);
               xw=xw+w(uint32(q_temp1(ij))+1)*[i-y(1)-0.5j-y(2)-0.5];
           end
       end
       Y=xw/sum_w;
       %中心点位置更新
       rect(1)=rect(1)+Y(2);
       rect(2)=rect(2)+Y(1);
    end
    %跟踪轨迹矩阵%
    tic_x=[tic_x;rect(1)+rect(3)/2];
    tic_y=[tic_y;rect(2)+rect(4)/2];
       v

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-26 08:45  MeanShiftTracking\
     文件       51271  2008-11-01 15:15  MeanShiftTracking\0329.jpg
     文件       51303  2008-11-01 15:15  MeanShiftTracking\0330.jpg
     文件       51393  2008-11-01 15:15  MeanShiftTracking\0331.jpg
     文件       51406  2008-11-01 15:15  MeanShiftTracking\0332.jpg
     文件       51413  2008-11-01 15:16  MeanShiftTracking\0333.jpg
     文件       51313  2008-11-01 15:16  MeanShiftTracking\0334.jpg
     文件       51406  2008-11-01 15:16  MeanShiftTracking\0335.jpg
     文件       51294  2008-11-01 15:16  MeanShiftTracking\0336.jpg
     文件       51331  2008-11-01 15:16  MeanShiftTracking\0337.jpg
     文件       51379  2008-11-01 15:16  MeanShiftTracking\0338.jpg
     文件       51210  2008-11-01 15:16  MeanShiftTracking\0339.jpg
     文件       51337  2008-11-01 15:16  MeanShiftTracking\0340.jpg
     文件       51169  2008-11-01 15:16  MeanShiftTracking\0341.jpg
     文件       51281  2008-11-01 15:16  MeanShiftTracking\0342.jpg
     文件       51367  2008-11-01 15:16  MeanShiftTracking\0343.jpg
     文件       51297  2008-11-01 15:16  MeanShiftTracking\0344.jpg
     文件       51305  2008-11-01 15:16  MeanShiftTracking\0345.jpg
     文件       51435  2008-11-01 15:16  MeanShiftTracking\0346.jpg
     文件       51305  2008-11-01 15:16  MeanShiftTracking\0347.jpg
     文件       51378  2008-11-01 15:16  MeanShiftTracking\0348.jpg
     文件       51562  2008-11-01 15:16  MeanShiftTracking\0349.jpg
     文件       51565  2008-11-01 15:16  MeanShiftTracking\0350.jpg
     文件       51663  2008-11-01 15:16  MeanShiftTracking\0351.jpg
     文件       51619  2008-11-01 15:16  MeanShiftTracking\0352.jpg
     文件       51456  2008-11-01 15:16  MeanShiftTracking\0353.jpg
     文件       51647  2008-11-01 15:16  MeanShiftTracking\0354.jpg
     文件       51472  2008-11-01 15:16  MeanShiftTracking\0355.jpg
     文件       51584  2008-11-01 15:16  MeanShiftTracking\0356.jpg
     文件       51871  2008-11-01 15:16  MeanShiftTracking\0357.jpg
     文件       51759  2008-11-01 15:16  MeanShiftTracking\0358.jpg
............此处省略95个文件信息

评论

共有 条评论