资源简介
网上下载很多均值漂移算法,代码一样,但运行老是出错,这里是自己修改后的,成功运行,运行后先在第一帧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个文件信息
- 上一篇:滑膜控制的MATLAB仿真模型
- 下一篇:图像处理经典算法matlab程序
相关资源
- 图像处理经典算法matlab程序
- 滑膜控制的MATLAB仿真模型
- 图论算法及其MATLAB实现全书+源代码
- 显著性检测—HCmatlab版
- 精通MATLAB科学计算
- 《GPU与MATLAB混合编程》
- MATLAB教学视频:详解数据拟合的MATL
- 基于彩色识别的matlab车牌识别(字符
- MATLAB R2015a crack win 64 破解
- MATLAB应用精讲:图像处理与GUI设计篇
- Deep Learning 经典文章与代码matlab
- 金融数量分析——基于MATLAB编程第4版
- MATLAB R2014a完全自学一本通(下)
- MATLAB R2014a完全自学一本通(上)
- MATLAB R2014a从入门到精通 升级版
- 基于模型的设计_MCU篇.pdfMATLAB,SIMUl
- 神经网络理论与matlab7实现PDF电子书
- 雷英杰《MATLAB 遗传算法工具箱与应用
- matlab在数学建模中的应用含源程序
- 基于MATLAB的电力电子技术和交直流调
- matlab sfm三维重建案例
- 基于MATLAB的电力电子技术和交直流调
- 先进PID控制MATLAB仿真(4th.zip
- MATLAB数学建模方法与实践第三版配套
- 数字滤波器的MATLAB与FPGA实现:Altrra
-
MATLAB/Simuli
nk系统仿真李献 - 机器学及其matlab实现—从基础到实践
- 基于matlab的三维重建代码147734
- MATLAB机器人工具箱Matlab_Robotic_Toolbox
- 先进PID控制MATLAB仿真 第4版 刘金琨 扫
评论
共有 条评论