Can somebody help me solve how to visualize HOG features without the predefined function (extractHOGFeatures) in matlab?
1 view (last 30 days)
Show older comments
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
0 Comments
Answers (0)
See Also
Categories
Find more on Feature Detection and Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!