Can somebody help me solve how to visualize HOG features without the predefined function (extractHOGFeatures) in matlab?

1 view (last 30 days)
Hi, I have written the code for extracting HOG Features and I was getting a different answer when I compare with the predefined function in matlab (extractHOGFeatures). Please help me solve the problem and also I want to know the methods to visualize the HOG Features without using the predefined HOG Function (extractHOGFeatures).
Thanks in advance.
I= imread('C:\Aravind\19Spring\ACV\cameraman.png');
I= imresize(I, [128 64]);
Gx= [1, 0, -1];
Gy= Gx';
Ggx= conv2(I, Gx, 'same');
Ggy= conv2(I, Gy, 'same');
Gmag= sqrt(Ggx.^2 + Ggy.^2);
Gdir= atand(Ggy./Ggx);
Gdir= abs(Gdir);
vector= [];
v= [];
vick= [];
[i, j]= size(Gdir);
cell= 8;
block= 16;
count= 0;
for br= 1: cell: i-cell
for bc= 1: cell: j-cell
for x= br: cell: br+block-1
for y= bc: cell: bc+block-1
bin= zeros(1, 9);
for m= 0: cell-1
for n= 0: cell-1
if Gdir(x+m, y+n)>= 0 && Gdir(x+m, y+n)<= 20
bin(1)= bin(1)+ ((20- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(2)= bin(2)+ (Gdir(x+m, y+n)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 20 && Gdir(x+m, y+n)<= 40
bin(2)= bin(2)+ ((40- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(3)= bin(3)+ ((Gdir(x+m, y+n)- 20)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 40 && Gdir(x+m, y+n)<= 60
bin(3)= bin(3)+ ((60- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(4)= bin(4)+ ((Gdir(x+m, y+n)- 40)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 60 && Gdir(x+m, y+n)<= 80
bin(4)= bin(4)+ ((80- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(5)= bin(5)+ ((Gdir(x+m, y+n)- 60)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 80 && Gdir(x+m, y+n)<= 100
bin(5)= bin(5)+ ((100- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(6)= bin(6)+ ((Gdir(x+m, y+n)- 80)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 100 && Gdir(x+m, y+n)<= 120
bin(6)= bin(6)+ ((120- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(7)= bin(7)+ ((Gdir(x+m, y+n)- 100)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 120 && Gdir(x+m, y+n)<= 140
bin(7)= bin(7)+ ((140- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(8)= bin(8)+ ((Gdir(x+m, y+n)- 120)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 140 && Gdir(x+m, y+n)<= 160
bin(8)= bin(8)+ ((160- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(9)= bin(9)+ ((Gdir(x+m, y+n)- 140)/20)*Gmag(x+m, y+n);
elseif Gdir(x+m, y+n)> 160 && Gdir(x+m, y+n)<= 180
bin(9)= bin(9)+ ((180- Gdir(x+m, y+n))/20)*Gmag(x+m, y+n);
bin(0)= bin(0)+ ((Gdir(x+m, y+n)- 160)/20)*Gmag(x+m, y+n);
end
end
end
count= count+ 1;
v= [v bin];
if count== 4
count= 0;
v= v/norm(v, 2);
vector= [vector v];
v= [];
end
end
end
end
end

Answers (0)

Community Treasure Hunt

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

Start Hunting!