资源简介

在matlab的环境下,利用meanshift算法,对视频图像目标进行实时跟踪,最终输出跟踪视频。

资源截图

代码片段和文件信息

close all;
clear all;
% videoObj = VideoReader(‘C:\Users\liuxuxing\Desktop\meanshift\sample1.avi‘);%读视频文件
% videoObj.frameRate 
% nframes = get(videoObj ‘NumberOfframes‘);%获取视频文件帧个数
% for k = 1 : nframes
%     currentframe = read(videoObj k);%读取第i帧
%     imwrite(currentframestrcat(‘C:\Users\liuxuxing\Desktop\meanshift\sample\‘num2str(k)‘.png‘)‘png‘);% 保存帧
% end
% % 

%%%%%%%%%%%%%%%%%根据一幅目标全可见的图像圈定跟踪目标%%%%%%%%%%%%%%%%%%%%%%%
%aviobj = avifile(‘t8.avi‘);
I=imread(‘old\350.png‘);
figure(1);
imshow(I);
[temprect]=imcrop(I);
[abc]=size(temp); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算目标图像的权值矩阵%%%%%%%%%%%%%%%%%%%%%%%
y(1)=a/2;
y(2)=b/2;
tic_x=rect(1)+rect(3)/2;
tic_y=rect(2)+rect(4)/2;
m_wei=zeros(ab);%权值矩阵
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; %epanechnikov profile
    end
end
C=1/sum(sum(m_wei));%归一化系数


%计算目标权值直方图qu
%hist1=C*wei_hist(tempm_weiab);%target model
hist1=zeros(1a*b);
for i=1:a
    for j=1:b   
        %rgb颜色空间量化为16*16*16 bins
        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));
%% 
%%%%%%%%%%%%%%%%%%%%%%%%%读取序列图像

for l=1:100
    Im=imread(strcat(‘old\‘num2str(314+l)‘.png‘));  
    num=0;
    Y=[22];

     %%%%%%%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                                                                                                                                                                                                                                                             

评论

共有 条评论