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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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