Filtre passe haut Gaussien/filtre Homomorphique
Bonjour a tous, j'aurai deux questions a vous poser qui m'aideront enormement dans ce projet image processing.
La premiere est toute simple.
J'essaye de bidouiller un filter passe haut gaussien a partir de la matrice passe de base generee par matlab. Mais je comprend pas pourquoi ce ne marche pas.
Mon principe est simple: multiplier par -1 et additionner avec le max de la matrice toute les valeurs. Et bien sur remettre les zeros tout autour a la fin:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
%f est l'image
%Gaussian highs Filter
global h;
[r c]=size(f)
h = fspecial('Gaussian',[r c],1.4) %sigma is 1.4 here
for i=1:r,
for j=1:c
if h(i,j)>0
h(i,j)==-1*h(i,j)+k(round(r/2),round(c/2));
end
end
end |
Ca ne me donne pas une matrice dont la valeur centrale est 0.. pourquoi please..
---------------------------------
Mon autre question est que j'utilise ce filtre pour un filtrrage homomorphique.
En fait j'ai pas bien compris la methode que tout le monde untilise pour generer un filtre passe haut qu'il utilise ensuite dans ce filtre homomorphique (d'ou ma bidouille precedente). Du coup je voudrai avoir la confirmation que theoriquement ma methode est valable si j'utilise le filtre guaussien que je fait un peut plus haut.
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
H=fft2(h);
%H FIltering algorythme
%%%%%log of image
im_l=log2(f);
%%%%%DFT of logged image
im_f=fft2(im_l);
%%%%%Filter Applying DFT image
im_nf=H.*im_f;
%%%%Inverse DFT of filtered image
im_n=abs(ifft2(im_nf));
%%%%%Inverse log
im_e=exp(im_n);
% subplot(1,2,2);
imshow((fftshift(im_e)),[]) |
pensez vous que ca peux marcher?
Merci pour votre aide precieuse