Home Tutorials Matlab Matlab per l'elaborazione delle immagini digitali: il filtro di restauro di Butterworth

Google Translator

 

Effettua una donazione

 

 

 

 

 

Page Rank Check    

 

 

Ultimi articoli

Matlab per l'elaborazione delle immagini digitali: il filtro di restauro di Butterworth
Tutorials - Matlab
Scritto da RedBaron85   
Sabato 30 Gennaio 2010 13:40

Matlab per l'elaborazione delle immagini digitali: il filtro di restauro di Butterworth

In questo articolo vedremo come implementare, con uno script Matlab, un filtro di Butterworth per il restauro delle immagini digitali con degrado.


Per simulare del degrado su di un'immagine potete utilizzare il filtro di Hufnagel-Stanley, presentato in un articolo precedente su questo stesso sito.


Lo script apre un file immagine, 'immagine.jpg', ne ricava lo spettro di Fourier (con la FFT), costruisce il filtro di Butterworth (viene implementata l'equazione dello stesso) e lo applica allo spettro di Fourier dell'immagine; del risultato viene fatta, quindi, l'antitrasformata, che viene mostrata a video.


L'applicazione del filtro avviene, quindi, nello spettro di Fourier.

 

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


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.


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

 

Il codice di Butterworth utilizza due parametri: ordine e raggio; nello script implementato qui sotto, sono stati scelti i valori 10 e 70 per tali parametri.


Ecco il codice dello script:

% Istruzioni di base

clear;

immagine = imread('immagine.jpg');

fourier = fft2(immagine);

[M,N] = size(immagine);

% Le istruzioni che seguono servono a costruire il filtro di Butterworth

ordine = 10;        % Uno dei due parametri da impostare esplicitamente

raggio = 70;        % Il secondo parametro da impostare esplicitamente

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);

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

butterworthFilter = 1 ./ (1+(D./raggio).^(2.* ordine));

% Applico il filtro alla fft dell'immagine, ricavo l'antitrasformata e la mostro a video

butterworthFilter = fourier .* butterworthFilter;

antitrasformata = real(ifft2(butterworthFilter));

antitrasformata = uint8(antitrasformata);

subplot(1,2,1);    imshow(immagine);    subplot(1,2,2);    imshow(antitrasformata);


E' tutto, a presto!

 


Risorse consigliate su Matlab:


                 

 

Tags:     tutorial      matlab      script      scripting      elaborazione      immagini digitali      filtro      restauro      butterworth
Ultimo aggiornamento Martedì 05 Febbraio 2013 22:54
 

 

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