⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 track.m

📁 this code include particle filter techniques
💻 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 + -