Gabor Feature Vector Algorithm
Mostra commenti meno recenti
I have found an algorithm for generate a feature vector of Gabor Filter from one of handwritting text recogntion paper like this sentence :
Subsequently, we divide the 64 × 64 representation into 8 × 8 feature regions, resulting in 64 regions. From each, we extract one value as an element in 512 feature vector (8 × 64).
So, the 64 x 64 is a normalized (resize) image, before convoluted with one of 8 gaborArray Gabor's banks. And the total_bank is 8. And the gaborMag is a convoluted image.
Is this Matlab code could solving an algorithm above?
total_bank = length(gaborArray);
for i = 1:total_bank
subplot(4,2,i)
hasil_gabor{i} = gaborMag(:,:,i); % Convolution between image with each bank Gabor
imshow(gaborMag(:,:,i),[]);
theta = gaborArray(i).Orientation;
lambda = gaborArray(i).Wavelength;
title(sprintf('Orientation=%d, Wavelength=%d',theta,lambda));
featureVector = [];
for a = 1:jumlah_bank
gaborAbs = sum(abs(gaborMag(:,i)), 2); % sum all matrix elements in each rows
gaborAbs = gaborAbs(:);
% Normalized to zero mean and unit variance.
gaborAbs = ((gaborAbs-mean(gaborAbs))/(4.*std(gaborAbs,1))) + 0.5; % feature vector equation from Moftah Elzobi et al
featureVector = [featureVector; gaborAbs];
end
end
From algorithm above, i get right featureVector = 512 (one column). But i am not sure.
Thanks in advance. :)
9 Commenti
Walter Roberson
il 20 Gen 2016
I do not see where you split the 64 x 64 into 8 x 8 regions?
Angga Lisdiyanto
il 20 Gen 2016
Modificato: Angga Lisdiyanto
il 20 Gen 2016
Walter Roberson
il 20 Gen 2016
Then your code appears to be incorrect. You appear to be convolving the entire 64 x 64 ahead of time, before breaking it up to 8 x 8 regions. The 8 x 8 regions need to be convolved separately.
Angga Lisdiyanto
il 20 Gen 2016
Modificato: Angga Lisdiyanto
il 20 Gen 2016
Angga Lisdiyanto
il 20 Gen 2016
Walter Roberson
il 20 Gen 2016
Each 8 x 8 is be convolved separately. The results can differ compared to convolving the whole 64 x 64 at once; in particular the results along each 8 x 8 edge could be different depending on how the convolution handles the outside boundaries. In convolution it is common for the outside to be padded with 0's as if it were the only block that existed; whereas if you did all 64 x 64 at once, the values brought in would be actual values from the other 8 x 8 sub-blocks.
Angga Lisdiyanto
il 20 Gen 2016
Modificato: Angga Lisdiyanto
il 20 Gen 2016
Angga Lisdiyanto
il 20 Gen 2016
Modificato: Angga Lisdiyanto
il 20 Gen 2016
Angga Lisdiyanto
il 20 Gen 2016
Risposte (0)
Categorie
Scopri di più su Image Category Classification in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



