How to calculate and visualize HOG Feature in MatLab?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, I'm working with HOG features to extracte the features of a hand posture image, and I want to implemente the method of HOG without using the function of "extractHOGFeatures" and there is the code of my method :
if true
% code
function [ feature] = HOG( im )
%HOG Summary of this function goes here
%Detailed explanation goes here
r=size(im,1);
c=size(im,2);
if size(im,3)==3
im=rgb2gray(im);
end
%im=double(im);
hx = [-1,0,1];
hy = [1;0;-1];
grad_xr = imfilter((im),hx,'conv');
grad_yu = imfilter((im),hy,'conv');
teta=atan2(double(grad_yu),double(grad_xr));
magnit=sqrt(double((grad_yu.^2)+(grad_xr.^2)));
angle=imadd(teta,90); %(0,180)
feature=[]
%itération par block
for i=0 : r/8-2
for j=0:c/8-2
mag_Block=magnit(8*i+1:8*i+16, 8*j+1:8*j+16)
angle_Block=angle(8*i+1:8*i+16,8*j+1:8*j+16)
block_feature=[];
%itérarions par cell
for x=0:1
for y=0:1
mag_Cell=mag_Block(8*x+1:8*x+8,8*y+1:8*y+8)
angle_Cell=angle_Block(8*x+1:8*x+8,8*y+1:8*y+8)
% hold on
% quiver(x,y, angle_Cell(x+1),angle_Cell(y+1))
H=zeros(1,9)
%itérations par pixels dans la même cellule
for p=1:8
for q=1:8
angle_Pixel=angle_Cell(p,q)
if angle_Pixel>0 && angle_Pixel<=10
H(1)=H(1)+ mag_Cell(p,q)*(angle_Pixel+10)/20;
H(9)=H(9)+ mag_Cell(p,q)*(10-angle_Pixel)/20;
elseif angle_Pixel>10 && angle_Pixel<=30
H(1)=H(1)+ mag_Cell(p,q)*(30-angle_Pixel)/20;
H(2)=H(2)+ mag_Cell(p,q)*(angle_Pixel-10)/20;
elseif angle_Pixel>30 && angle_Pixel<=50
H(2)=H(2)+ mag_Cell(p,q)*(50-angle_Pixel)/20;
H(3)=H(3)+ mag_Cell(p,q)*(angle_Pixel-30)/20;
elseif angle_Pixel>50 && angle_Pixel<=70
H(3)=H(3)+ mag_Cell(p,q)*(70-angle_Pixel)/20;
H(4)=H(4)+ mag_Cell(p,q)*(angle_Pixel-50)/20;
elseif angle_Pixel>70 && angle_Pixel<=90
H(4)=H(4)+ mag_Cell(p,q)*(90-angle_Pixel)/20;
H(5)=H(5)+ mag_Cell(p,q)*(angle_Pixel-70)/20;
elseif angle_Pixel>90 && angle_Pixel<=110
H(5)=H(5)+ mag_Cell(p,q)*(110-angle_Pixel)/20;
H(6)=H(6)+ mag_Cell(p,q)*(angle_Pixel-90)/20;
elseif angle_Pixel>110 && angle_Pixel<=130
H(6)=H(6)+ mag_Cell(p,q)*(130-angle_Pixel)/20;
H(7)=H(7)+ mag_Cell(p,q)*(angle_Pixel-110)/20;
elseif angle_Pixel>130 && angle_Pixel<=150
H(7)=H(7)+ mag_Cell(p,q)*(150-angle_Pixel)/20;
H(8)=H(8)+ mag_Cell(p,q)*(angle_Pixel-130)/20;
elseif angle_Pixel>150 && angle_Pixel<=170
H(8)=H(8)+ mag_Cell(p,q)*(170-angle_Pixel)/20;
H(9)=H(9)+ mag_Cell(p,q)*(angle_Pixel-150)/20;
end
end
end
block_feature=[ block_feature H];
end
end
block_feature= sqrt(block_feature./(norm(block_feature))^2+0.001)
feature=[ feature block_feature ];
end
end
end
end
My problem is that my function doesn't have the same value of features vector (results) like the function "extractHOGFeatures" and the other problem that I don't know how to visualize the HOG features without using "extractHOGFeatures" function. I will be thankful if some one help me :)
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Histograms finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!