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:
Ca ne me donne pas une matrice dont la valeur centrale est 0.. pourquoi please..
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
---------------------------------
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:
pensez vous que ca peux marcher?
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)),[])
Merci pour votre aide precieuse
Partager