Histograms of Oriented Gradient
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi all I have applied HOG into a video sequence without SVM classifier.But I am not getting any result.my code is here.
clc;
close all;
source='campus_raw.AVI';
vidobj=videoreader(source);
Height=vidobj.Height;
Width=vidobj.width;
frames=vidobj.NumberOfFrames;
threshold=10;
nbins=9;
for f=1:frames
thisframe=read(vidobj,f);
figure(1);imshow(thisframe);
[Rows Cols Colors]=size(thisframe);
nwin_x=3;
nwin_y=3;
H=zeros(nwin_x*nwin_y*nbins);
m=sqrt(Rows/2);
step_x=floor(m/(nwin_x+1));
step_y=floor(m/(nwin_y+1));
cont=0;
% Gamma/Color Normalization..
if Colors>1
GrayImage=rgb2gray(thisframe);
GrayImage=double(GrayImage);
else
GrayImage=thisframe;
end
% Gradient Computation
Gx=[-1 0 1];
Gy=-Gx;
Grad_ImageX=imfilter(double(GrayImage),Gx);
Grad_ImageY=imfilter(double(GrayImage),Gy);
MagImage=((Grad_ImageX.^2)+(Grad_ImageY)).^0.5;
%figure(3);imshow(MagImage);
DirImage=atan2(Grad_ImageY,Grad_ImageX);
%figure(4);imshow(DirImage);
nbins=9;
for n=0:nwin_y-1
for m=0:nwin_x-1
cont=cont+1;
DirImage1=DirImage(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x);
MagImage1=MagImage(n*step_y+1:(n+2)*step_y,m*step_x+1:(m+2)*step_x);
v_angles=DirImage1(:);
v_magnit=MagImage1(:);
K=max(size(v_angles));
B=0;
Hist=zeros(nbins,1);
for ang_lim=-pi+2*pi/nbins:2*pi/nbins:pi;
B=B+1;
for k=1:K
if v_angles(k)<ang_lim
v_angles(k)=100;
Hist(B)=Hist(B)+v_magnit(k);
end
end
end
Hist=Hist/(norm(Hist)+0.01);
H((cont-1)*nbins+1:cont*nbins,1)=Hist;
end
figure(3);imshow(Hist(B));
end
end
figure(3);imshow(Hist(B)) shows nothing to me.Why?Any help please.
Thanks .
0 Commenti
Risposte (1)
Walter Roberson
il 3 Gen 2013
You are using B as a counter, and Hist is a vector, so Hist(B) would be a single element out of the vector. You then try to show that single element as if it were an entire image. If you are sure that is what you want, then what you probably need to do is change your imshow(Hist(B)) to imshow(Hist(B),[])
1 Commento
Walter Roberson
il 3 Gen 2013
Please put a breakpoint in at the line
Hist(B)=Hist(B)+v_magnit(k);
and verify that you do reach that sometimes, and that the v_magnit(k) is non-zero.
Also, please go back through your code and indent it consistently. e.g., currently your "cont=cont+1;" line is indented at the same level as "for m". It is a strain to debug someone else's code when the indentation is inconsistent.
Vedere anche
Categorie
Scopri di più su Histograms in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!