MeanShift运动目标跟踪-matlab程序.docx_第1页
MeanShift运动目标跟踪-matlab程序.docx_第2页
MeanShift运动目标跟踪-matlab程序.docx_第3页
MeanShift运动目标跟踪-matlab程序.docx_第4页
MeanShift运动目标跟踪-matlab程序.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MeanShift运动目标跟踪 matlab程序思路简介:1.截取跟踪目标矩阵rect2.求取跟踪目标的加权直方图hist13.读取视频序列中的一帧, 先随机取一块与rect等大的矩形,计算加权直方图hist2。4.计算两者比重函数,如果后者差距过大, 更新新的矩阵中心Y,进行迭代(MeanShift是一种变步长可以迅速接近概率密度峰值的方法),直至一定条件后停止。源程序(参考过其他程序):plainview plaincopy1. function = select()close all;clear all;%根据一幅目标全可见的图像圈定跟踪目标%I=imread(E:数字图像处理6218.bmp);figure(1);imshow(I);temp,rect=imcrop(I);a,b,c=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(a,b);%权值矩阵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(i,j)=1-dist/h; %epanechnikov profile endendC=1/sum(sum(m_wei);%归一化系数%计算目标权值直方图qu%hist1=C*wei_hist(temp,m_wei,a,b);%target modelhist1=zeros(1,a*b);for i=1:a for j=1:b %rgb颜色空间量化为16*16*16 bins q_r=fix(double(temp(i,j,1)/16); %fix为趋近0取整函数 q_g=fix(double(temp(i,j,2)/16); q_b=fix(double(temp(i,j,3)/16); q_temp=q_r*256+q_g*16+q_b; %设置每个像素点红色、绿色、蓝色分量所占比重 hist1(q_temp+1)= hist1(q_temp+1)+m_wei(i,j); %计算直方图统计中每个像素点占的权重 endendhist1=hist1*C;rect(3)=ceil(rect(3);rect(4)=ceil(rect(4);%读取序列图像myfile=dir(*.bmp);lengthfile=length(myfile);for l=1:lengthfile Im=imread(myfile(l).name); num=0; Y=2,2; %mean shift迭代 while(Y(1)2+Y(2)20.5)&num20) %迭代条件 num=num+1; temp1=imcrop(Im,rect); %计算侯选区域直方图 %hist2=C*wei_hist(temp1,m_wei,a,b);%target candidates pu hist2=zeros(1,a*b); for i=1:a for j=1:b q_r=fix(double(temp1(i,j,1)/16); q_g=fix(double(temp1(i,j,2)/16); q_b=fix(double(temp1(i,j,3)/16); q_temp1(i,j)=q_r*256+q_g*16+q_b; hist2(q_temp1(i,j)+1)= hist2(q_temp1(i,j)+1)+m_wei(i,j); end end hist2=hist2*C; figure(2); subplot(1,2,1); plot(hist2); hold on; w=zeros(1,a*b); for i=1:a*b if(hist2(i)=0) w(i)=sqrt(hist1(i)/hist2(i); else w(i)=0; end end %变量初始化 sum_w=0; xw=0,0; for i=1:a; for j=1:b sum_w=sum_w+w(uint32(q_temp1(i,j)+1); xw=xw+w(uint32(q_temp1(i,j)+1)*i-y(1)-0.5,j-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; v1=rect(1); v2=rect(2); v3=rect(3); v4=rect(4); %显示跟踪结果% subplot(1,2,2); imshow(uint8(Im); title(目标跟踪结果及其运动轨迹); hold on; plot(v1,v1+v3,v2,v2,v1,v1,v2,v2+v4,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论