資源簡介
利用matlab實現運動目標跟蹤,里面有三個文件。主函數為camshift,理由調用meanshift函數。

代碼片段和文件信息
%?Adam?Kukucka
%?Zach?Clay
%?Marcelo?Molina????
%?CSE?486?Project?3
function?[?trackmov?probmov?centers?]?=?camshift?
%?******************************************************************
%?initialize?vari???ables
%?******************************************************************
rmin?=?0;?%min?row?value?for?search?window
rmax?=?0;?%max?row?value?for?search?window
cmin?=?0;?%min?col?value?for?search?window
cmax?=?0;?%max?col?value?for?search?window
numofframes?=?0;?%number?of?frames?in?the?avi
threshold?=?1;?%threshold?for?convergence
centerold?=?[0?0];?%for?convergence...?previous?center?of?window
centernew?=?[0?0];?%for?convergence...?new?center?of?window
%?******************************************************************
%?Pre?code...?load?movie?and?select?initial?frame
%?******************************************************************
%?prompt?user?for?avi?file?name
user_entry?=?input(‘Please?enter?an?avi?filename:?‘‘s‘);
%?load?the?avi?file...?handle?is?M?
M?=?aviread(user_entry);
%?get?number?of?frames
[dontneed?numberofframes]?=?size(M);
%?initialize?matrix?to?hold?center?coordinates
imagecenters?=?zeros(numberofframes?2);
%?extract?the?first?frame?from?the?avi
frame1?=?M(11);
Image1?=?frame2im(frame1);
%%%?**********?images(:?:?numberofframes)?=?G(::);
%?get?search?window?for?first?frame
[?cmin?cmax?rmin?rmax?]?=?select(?Image1?);
cmin?=?round(cmin);
cmax?=?round(cmax);
rmin?=?round(rmin);
rmax?=?round(rmax);
wsize(1)?=?abs(rmax?-?rmin);
wsize(2)?=?abs(cmax?-?cmin);
%?create?histogram
%?translate?to?hsv
hsvimage?=?rgb2hsv(Image1);
%?pull?out?the?h
huenorm?=?hsvimage(::1);
%?scale?to?0?to?255
hue?=?huenorm*255;
%?set?unit?type
hue=uint8(hue);
%?Getting?Histogram?of?Image:
histogram?=?zeros(256);
for?i=rmin:rmax
????for?j=cmin:cmax
????????index?=?uint8(hue(ij)+1);???
????????%count?number?of?each?pixel
????????histogram(index)?=?histogram(index)?+?1;
????end
end
%?******************************************************************
%?Algorithm?from?pdf
%?******************************************************************
aviobj1?=?avifile(‘example3.avi‘);
aviobj2?=?avifile(‘example4.avi‘);
%?for?each?frame
for?i?=?1:200
????disp(‘Processing?frame‘);
????disp(i);
????frame?=?M(1?i);
????I?=?frame2im(frame);
????
????%?translate?to?hsv
????hsvimage?=?rgb2hsv(I);
????%?pull?out?the?h
????huenorm?=?hsvimage(::1);
????%?scale?to?0?to?255
????hue?=?huenorm*255;
????%?set?unit?type
????hue=uint8(hue);
????
????
????
????[rows?cols]?=?size(hue);
????
????%?choose?initial?search?window
????%?the?search?window?is?(cmin?rmin)?to?(cmax?rmax)
????
????
????%?create?a?probability?map
????probmap?=?zeros(rows?cols);
????for?r=1:rows
????????for?c=1:cols
????????????if(hue(rc)?~=?0)
????????????????probmap(rc)=?histogram(hue(rc));???
????????????end
????????end??
????end
????probmap?=?probmap/max(max(probmap));
????probmap?=?probmap*255;
????
????count?=?0;
????
????rowcenter?=?0;??%?any?number?just?so?it?runs?throug
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5424??2005-11-10?15:18??genzong\camshift.m
?????文件???????1272??2005-11-09?16:43??genzong\meanshift.m
?????文件????????649??2005-11-09?16:43??genzong\select.m
?????目錄??????????0??2009-06-22?15:12??genzong
-----------?---------??----------?-----??----
?????????????????7345????????????????????4
評論
共有 條評論