Home Tutorials Matlab Matlab per l'elaborazione delle immagini digitali: filtri passa alto HP e passa basso LP gaussiani

Google Translator

 

Effettua una donazione

 

 

 

 

 

Page Rank Check    

 

 

Ultimi articoli

Matlab per l'elaborazione delle immagini digitali: filtri passa alto HP e passa basso LP gaussiani
Tutorials - Matlab
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 13:39

Matlab per l'elaborazione delle immagini digitali: filtri passa alto HP e passa basso LP gaussiani

Questo script apre un file immagine, 'immagine.jpg', e mostra a video due immagini, derivanti dall'applicazione dei filtri LP e HP (low-pass e high-pass, cioè passa-basso e passa-alto) gaussiani.


L'operazione viene effettuata nel dominio di Fourier, per cui è necessario ricavare lo spettro di Fourier dell'immagine tramite fft (fast fourier transform), creare i filtri gaussiani per tale spettro, applicarli allo spettro dell'immagine e riconvertire il tutto passando, mediante l'antitrasformata, al dominio spaziale.


Ebook, videocorsi e tutorials di RedBaron85 su Blender, Java3D e altro su effe12.com


Per alcuni comandi di manipolazione delle immagini in forma di matrici (size, cicli for, ...) si rimanda all'articolo, pubblicato precedentemente, sulle basi dell'elaborazione delle immagini digitali mediante Matlab.


NOTA IMPORTANTE: utilizzare, con questo script, solo immagini in scala di grigi a 8 bit, o Matlab restituirà un errore per via delle dimensioni delle matrici, che non coincideranno.

 


Ecco lo script:

% Operazioni di base: caricamento dell'immagine, passaggio al dominio di Fourier

clear;

immagine = imread('immagine.jpg');

fourier = fft2(immagine);

[M,N] = size(immagine);

% Le istruzioni che seguono servono a costruire una gaussiana

u=0:(M-1);

v=0:(N-1);

idx = find(u>M/2);

u(idx) = u(idx)-M;

idy = find(v>N/2);

v(idy) = v(idy)-N;

[V,U] = meshgrid(v,u);

% Passiamo quindi alla definizione e all'applicazione dei filtri gaussiani, partendo dall'equazione della stessa (la teoria non viene qui trattata):

d0 = 25;        % Imposto 25 come frequenza di taglio dei filtri

D = sqrt(U.^2+V.^2);

H_LP_GAUSS = exp(-(D.^2)./(2*(d0^2)));

G1 = H_LP_GAUSS.*fourier;

passaBasso = real(ifft2(G1));

H_HP_GAUSS=1-exp(-(D.^2)./(2*(d0^2)));

G2 = H_HP_GAUSS.*fourier;

passaAlto = real(ifft2(G2));

% Conversione a uint8 delle immagini ottenute

passaBasso = uint8(passaBasso);

passaAlto = uint8(passaAlto);

% Mostro a video le tre immagini: originale, con passaBasso, con passaAlto

subplot(1,3,1);    imshow(immagine);    subplot(1,3,2);    imshow(passaBasso);    subplot(1,3,3);    imshow(passaAlto); .


E' tutto, a presto!

 


Risorse consigliate su Matlab:


                 

 

Tags:     tutorial      matlab      script      scripting      elaborazione      immagini digitali      filtro      passa basso      passa alto      gaussiano      hp      lp
Ultimo aggiornamento Martedì 05 Febbraio 2013 22:52
 

 

Ricerca personalizzata

 

Milanese Francesco - Partita IVA: 04950350878

Copyright © 2013 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.
AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials