?? track.m
字號:
video=input('Vuoi usare un video preregistrato?[1/0]');
%prendo la prima immagine per inizializzare la finestra
%e il target
if(video==1)
if(exist('mov')) clear(mov);end;
movname=input('Inserisci il nome del video:\n- ','s');
mov=aviread(movname);
img=mov(1).cdata;
else
if(exist('vid')) delete(vid); end;
vid=videoinput('winvideo',1);
triggerconfig(vid,'manual');
start(vid);
img=getsnapshot(vid);
img=getsnapshot(vid);
end
[c,r,P]=impixel(img);
target=img([r(1):r(2)],[c(1):c(2)],:);
%distribuzione di colore del target
target_hist=[imhist(target(:,:,1),8)' imhist(target(:,:,2),8)' imhist(target(:,:,3),8)'];
target_hist=target_hist./sum(target_hist);
%parametri delle particelle
if(~exist('N')) N=30; end
%parametri del motion model
if(~exist('sxy')) sxy=16; end
if(~exist('sv')) sv=16; end
%parametri dell'observation model
if(~exist('lsigma')) lsigma=.15; end
if(~exist('Hx')) Hx=15; end
if(~exist('Hy')) Hy=15; end
%parametri del prior
xy=[mean(c),mean(r)];
if(~exist('pxy')) pxy=[20,20]; end
if(~exist('vxy')) vxy=[0 0]; end
if(~exist('pvxy')) pvxy=[25 25]; end
%genero stato iniziale
x1=mvnrnd(xy(1),pxy(1),N);
x2=mvnrnd(xy(2),pxy(2),N);
x3=mvnrnd(vxy(1),pvxy(1),N);
x4=mvnrnd(vxy(2),pvxy(2),N);
x=[x1 x2 x3 x4];
[imn imm imr]=size(img);
%main loop
if(video~=1)
while(1)
%tic;
img=getsnapshot(vid);
x=predict(x,sxy,sv,imm,imn);
%toc;tic;
w=observe(x,img,lsigma,target_hist,Hx,Hy);
%toc;tic;
x=updatestates(x,w);
x(N,:)=unifrnd([1 1 -4 -4],[imm imn 4 4]);
image(img);
hold on;
plot(x(:,1),x(:,2),'bs');
estime=mean(x([1:N-1],:));
plot(estime(1),estime(2),'g*');
hold off;
pause(0.001);
%toc;
end
else
for i=1:size(mov,2);
%tic;
img=mov(i).cdata;
x=predict(x,sxy,sv,imm,imn);
%toc;tic;
w=observe(x,img,lsigma,target_hist,Hx,Hy);
%toc;tic;
x=updatestates(x,w);
x(N,:)=unifrnd([1 1 -4 -4],[imm imn 4 4]);
image(img);
hold on;
plot(x(:,1),x(:,2),'bs');
estime=mean(x([1:N-1],:));
plot(estime(1),estime(2),'g*');
hold off;
pause(0.001);
%toc;
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -