MeanShift运动目标跟踪matlab程序
MeanShift运动目标跟踪matlab程序
思路简介:
1.截取跟踪目标矩阵rect
2.求取跟踪目标的加权直方图hist1
3.读取视频序列中的一帧,先随机取一块与rect等大的矩形,计算加权直方图hist2。
4.计算两者比重函数,如果后者差距过大,更新新的矩阵中心Y,进行迭代(MeanShift 是一种变步长可以迅速接近概率密度峰值的方法),直至一定条件后停止。
源程序(参考过其他程序):
[plain]view plaincopy
1.
function [] = select()
close all;
clear all;
%%%%%%%%%%%%%%%%%%根据一幅目标全可见的图像圈定跟踪目标%%%%%%%%%%%%%%%%%%%%%%%
I=imread('E:\数字图像处理\6\2\18.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
end
end
C=1/sum(sum(m_wei));%归一化系数
%计算目标权值直方图qu
%hist1=C*wei_hist(temp,m_wei,a,b);%target model
hist1=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); %计算直方图统计中每个像素点占的权重
end
end
hist1=hist1*C;
rect(3)=ceil(rect(3));
rect(4)=ceil(rect(4));
%%%%%%%%%%%%%%%%%%%%%%%%%读取序列图像
my('*.bmp');
length(myfile);
for l=1:lengthfile
Im=imread(myfile(l).name);
num=0;
Y=[2,2];
%%%%%%%mean shift迭代
while((Y(1)^2+Y(2)^2>0.5)&num<20) %迭代条件
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],[v1,v1+v3],[v2+v4,v2+v4],[v1+v3,v1+v3],[v2, v2+v4],'LineWidth',2,'Color','r');
plot(tic_x,tic_y,'LineWidth',2,'Color','b');
end
结果截图:
matlab程序设计与应用(第二版)第三章部分课后答案
第三章1. (1)A=eye(3) (2)A=100+100*rand(5,6) (3)A=1+sqrt(0.2)*randn(10,50) (4)B=ones(size(A)) (5)A+30*eye(size(A)) (6)B=diag(diag(A)) 2. B=rot90(A) C=rot90(A,-1) 3. B=inv(A) ;A的逆矩阵 C=det(A) ;A的行列式的值 D=A*B E=B*A D=E 因此A与A-1是互逆的。 4. A=[4 2 -1;3 -1 2;12 3 0]; b=[2;10;8]; x=inv(A)*b x = -6.0000 26.6667 27.3333 5. (1) diag(A) ;主对角线元素 ans = 1 1 5 9 triu(A) ;上三角阵
ans = 1 -1 2 3 0 1 -4 2 0 0 5 2 0 0 0 9 tril(A) ;下三角阵 ans = 1 0 0 0 5 1 0 0 3 0 5 0 11 15 0 9 rank(A) ;秩 ans = 4 norm(A) ;范数 ans = 21.3005 cond(A) ;条件数 ans = 11.1739 trace(A) ;迹 ans = 16 (2)略 6. A=[1 1 0.5;1 1 0.25;0.5 0.25 2] A = 1.0000 1.0000 0.5000 1.0000 1.0000 0.2500 0.5000 0.2500 2.0000
[V,D]=eig(A) V = 0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103 D = -0.0166 0 0 0 1.4801 0 0 0 2.5365
MATLAB程序设计基础
第三章MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 一、数据及数据文件(Data and Data file) 1. 数据类型:(Data mode)为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有: 数值数组(Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度 (signal), 双精度(duble)(MATLAB最常用的变量类型), 稀疏(sparce)数组。按维数分有一维、二维和多维数 组。 Int---Integrate. Uint---Unsigned Integer data 字符数组(Character array):由字符串组成的数组 单元数组(Cell array):用不同类型和大小的数组组成的数组,同 一个元胞数组中各元胞的内容可以不同。 结构数组(Structure array):与单元数组类似,但其数据的组织能 力更强,更富于变化。 Java类(Java class):由JavaAPI或第三方定义的类函数。 函数句柄(Function handle):可以在一个参数列表中传递,并使 用feval运行. 在工作空间浏览器中不同的数据类型有着不同的图标标识。2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)的主要类型及其存取方法如下述: (1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的save和load命令直接存取。 (2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat
MATLAB程序设计基础介绍
第一讲MATLAB编程基础 随机计算技术的发展,各种各样的应用软件越来越多,比如能够支持数学计算的软件就有多种:MATLAB、Mathmatica、Scilab等。MATLAB以其强大的矩阵计算能力使它在科学计算与工程设计中更具备竞争力,MATLAB集成了众多基本的数据处理功能,可以完美支持数值与非数值运算,本小节学习基于MATLAB的基本编程语法。 1、M文件 由MATLAB语句构成的程序通常作为文件保存在后缀为.m的文件中,称为M文件,可以使用任何一种文本编辑器来编写M文件。M文件的文件名不能用汉字,也不能用数字开头,只能用英文字符开头,后缀数字等,长度可达255个字符。M文件一般有两种类型:script文件(称为正本文件)与function文件(称为函数文件)。 1.1正本文件 正本文件是由用户编写的一个包含一系列MATLAB正本的文本文件,在MATLAB工作空间的命令行提示符“>>”后敲入这个M文件的文件名就可以依次执行这个M文件中的每条语句。当需要从命令行中执行多条命令时可以使用script文件,为此你只需要将希望执行的命令逐行写入script文件中,并保存在MATLAB工作目录下。概括起来正本文件有如下特点:(1)不需要任何实参代入,也不能返回任何输出参数;(2)其中的变量作用于整个工作空间; (3)使用工作空间中的数据;(4)不需要用到任何MATLAB关键字,直接在其中写可以执行的MATLAB语句;(5)可以利用百分号作注释。(6)不能包含任何自定义函数。
例题1本例说明一个script文件。如下语句计算一些三角函数在不同弧度时的函数值,并绘制花瓣的图象。由于语句较多,不方便在命令行中一条一条地执行,现在将这些语句利用文本编辑器逐行写入一个M文件petals.m 中,则形成了一个典型的script文件,并把它保存在MATLAB工作目录下。%文件名:petals.m theta=-pi:0.01:pi;%角大小 rho(1,:)=2*sin(5*theta).^2;%第一个花瓣 rho(2,:)=cos(10*theta).^3;%第二个花瓣 rho(3,:)=sin(theta).^2;%第三个花瓣 rho(4,:)=5*cos(3.5*theta).^3;%第四个花瓣 for k=1:4 polar(theta,rho(k,:))%Graphics output pause end 在命令行提示符后敲入文件名petals,则可以执行其中的每一条语句,结果产生四幅花瓣图象,见图1。如果你在命令行中敲入whos并回车,则可以看到这个文件中的所有变量,这说明script文件中的变量作用域为整个MATLAB工作空间。
《MATLAB程序设计》复习题
《MATLAB程序设计》复习题 一填空题 1 已知A=[ 2 5 6;1 7 8];B=[1 4 3;4 7 0];写出下列各指令运行的结果。 A & B 的运行结果为[1 1 1;1 1 0] 。 A== B的运行结果为[0 0 0 ;0 1 0] 。 2 产生3阶单位阵的命令为eye(3) ;产生4阶全1方阵的命令为ones(4)。 3 A=rand(5,8);b=size(A);c=length(A);则b和c的值分别为[5,8]和8。 4 求矩阵的特征值的指令为eig 。 5符号;可以使命令行不显示运算结果,% 用来表示该行为注释行。6在线形图型格式的设置中,字符r表示什么颜色(红色) 7fix函数四舍五入对数组[3.17,5.34,8.90,2.52]取整,结果为[3 5 8 2] 。 8 P, Q分别是个多项式的系数矢量,求P对应的多项式的根,使用的命令是roots(P) 9使2个plot的图形在同一个坐标显示,使用hold on 命令进行图形保持,使用grid on 命令为图形添加网格。 10 数据拟合采用___polyfit___函数;求不定积分采用___ int ___函数。 11 A=rand(2,5);b=size(A);c=length(A);则b和c的值分别为_2 5和5__ 12已知A是矩阵,求A的对角矩阵函数是___diag(A)____,求A的下三角矩阵函数是__tril(A)____。 13条形图由函数__bar___来实现。 14已知s=‘显示“hey”’,则s的元素个数是9 二解答题 1、A=[71,3,-8; 2,-9,8; 0,4,5] B=A’
MATLAB程序设计与应用
实验一 MATLAB 运算基础 第二题:已知 A=??????????7653877344-3412 B=??? ? ??????72-33021-31 求下列问题: 1) A+6*B 和A-B+I 2) A*B 和A.*B 3) A^3 A.^3 4) A/B B\A 5) [A,B] [A(1,3),:B.^2] 解: >> A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; I=[1 0 0;0 1 0;0 0 1]; (1) >> A+6*B ans = 18 52 -10 46 7 105 21 53 49 >> A-B+I ans = 12 31 -3 32 8 84 0 67 1 (2) >> A*B ans = 68 44 62 309 -72 596 154 -5 241 >> A.*B
ans = 12 102 4 68 0 261 9 -130 49 (3) >> A^3 ans = 37226 233824 48604 247370 149188 600766 78688 454142 118820 >> A.^3 ans = 1728 39304 -64 39304 343 658503 27 274625 343 (4) >> A/B ans = 16.4000 -13.6000 7.6000 35.8000 -76.2000 50.2000 67.0000 -134.0000 68.0000 >> B\A ans = 109.4000 -131.2000 322.8000 -53.0000 85.0000 -171.0000 -61.6000 89.8000 -186.2000 (5) >> [A,B] ans =
第三章 MATLAB 的程序设计基础
第三章 MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 1、数据及数据文件(Data and Data file) 1. 数据类型:(Data mode)用于编程和计算的数据类型 数组: 字符数组(Character array)、 (Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度 (signal), 双精度(duble)(MATLAB最常用的变量类 型),稀疏(sparce)数组。、 Int---Integrate. Uint---Unsigned Integer data 单元数组(Cell array)、 结构数组(Structure array) Java类(Java class) 函数句柄(Function handle) 在工作空间浏览器中不同的数据类型有着不同的图标标识, 2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)及其调用方法和返回值见(表 3—2) (1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的 MATLAB数据文件,以二进制编码形式存储。.mat文件可以由 MATLAB提供的save和load命令直接存取。 (2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat 等,可以是在MATLAB环境下存储的,也可能是其他软件的计算结
果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。可以用save和load命令进行读入和存取。 (3).图象文件:(Graphics file)扩展名为.bmp, .jpg .tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。 (4).声音文件:(Sound file) 扩展名为.wav ,用waveread和wavwrite命令进行读入和存取。 Readable file formats. Data formats Command Returns MAT- MATLAB workspace load Variables in file. CSV- Comma separated numbers csvread Double array. DAT- Formatted text importdata Double array. DLM- Delimited text dlmread Double array. TAB- Tab separated text dlmread Double array. Spreadsheet formats XLS - Excel worksheet xlsread Double array and cell array. WK1- Lotus 123 worksheet wk1read Double array and cell array. Scientific data formats CDF - Common Data Format cdfread Cell array of CDF records FITS- Flexible Image Transport System fitsread Primary or extension table data HDF - Hierarchical Data Format hdfread HDF or HDF-EOS data set Movie formats AVI - Movie aviread MATLAB movie. Image formats TIFF - TIFF image imread Truecolor, grayscale or indexed image(s). PNG - PNG image imread Truecolor, grayscale or indexed image. HDF - HDF image imread Truecolor or indexed image(s). BMP - BMP image imread Truecolor or indexed image. JPEG - JPEG image imread Truecolor or grayscale image. GIF - GIF image imread Indexed image. PCX - PCX image imread Indexed image. XWD - XWD image imread Indexed image. CUR - Cursor image imread Indexed image. ICO - Icon image imread Indexed image. RAS - Sun raster image imread Truecolor or indexed. PBM - PBM image imread Grayscale image. PGM - PGM image imread Grayscale image. PPM - PPM image imread Truecolor image. Audio formats