Histograms of Oriented Gradient

1 回表示 (過去 30 日間)
Algorithms Analyst
Algorithms Analyst 2013 年 1 月 3 日
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 .

回答 (1 件)

Walter Roberson
Walter Roberson 2013 年 1 月 3 日
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 件のコメント
Walter Roberson
Walter Roberson 2013 年 1 月 3 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeHistograms についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by