1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y56Yl55q
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
目标表观模型是跟踪器的重要组成部分,用来描述目标表观的特征.基于判别式模型的表观模型用来区分目标和背景;基于生成式模型的表观模型用来描述目标本身,提取出目标的特征.本文合理地融合了判别式模型和生成式模型来对目标进行描述,并利用L2范数最小化对目标表观系数进行求解,取得了比较好的结果.
4.部分源码
............................................................................
rand('state',0); randn('state',0);
temp = importdata([dataPath 'datainfo.txt']);
LoopNum = temp(3);%number of frames
frame = imread([dataPath '1.jpg']);
if size(frame,3) == 3
framegray = double(rgb2gray(frame))/255;
else
framegray = double(frame)/255;
end
%% p = [px, py, sx, sy, theta];
param0 = [p(1), p(2), p(3) /opt.tmplsize(1), p(5), p(4)/p(3), 0];
param0 = affparam2mat(param0);
..............................................................................
B=randblock(sz,opt.blockSizeSmall,opt.blockNumSmall);%% generate squre templates
for f = 1:LoopNum
CurrentFrame=f
frame = imread([dataPath int2str(f) '.jpg']);
if size(frame,3) == 3
framegray = double(rgb2gray(frame))/255;
else
framegray = double(frame)/255;
end
%% do tracking
opt.frameNum = f;
[param,opt] = L2_Tracker(framegray, tmpl, param, opt,P,B);
result = [ result; param.est' ];
if param.wimg~=zeros(opt.tmplsize(1),opt.tmplsize(2));
wimgs= [wimgs, param.wimg(:)];
end
%%Update Model
if (size(wimgs,2) >= opt.batchsize)
%%(1)Incremental SVD
[tmpl.basis, tmpl.eigval, tmpl.mean, tmpl.numsample] = ...
sklm(wimgs, tmpl.basis, tmpl.eigval, tmpl.mean, tmpl.numsample, opt.ff);
%%(2)Clear Data Buffer
wimgs = [];
%%(3)Keep "opt.maxbasis" Number Basis Vectors
if (size(tmpl.basis,2) > opt.maxbasis)
tmpl.basis = tmpl.basis(:,1:opt.maxbasis);
tmpl.eigval = tmpl.eigval(1:opt.maxbasis);
W=tmpl.basis;
Mu=tmpl.mean;
end
D=[tmpl.basis,B]; %dictionay
P=inv(D'*D+lambda*eye(size(D,2)))*D';% project matrix
end
end
duration = duration + toc;
fps =f/duration;
%%
TotalFrameNum=LoopNum;
L2RLSCenterAll = cell(1,TotalFrameNum);
L2RLSCornersAll = cell(1,TotalFrameNum);
for num = 1:TotalFrameNum
if num <= size(result,1)
est = result(num,:);
[ center corners ] = p_to_box([32 32], est);
end
L2RLSCenterAll{num} = center;
L2RLSCornersAll{num} = corners;
end
..........................................................
A300