2010-05-05 20 views
11

Per un m x n matrice di elementi con alcune immagini rumorose, voglio eseguire Gaussian smoothing. Come faccio a farlo in MATLAB?Lisciatura gaussiana in MATLAB

Ho letto che la matematica riguarda il livellamento di tutto con un kernel su una certa scala, ma non ho idea di come farlo in MATLAB.

+0

Dovresti accettare la risposta migliore se ritieni di aver risolto il problema (che di sicuro sembra essere il caso). Per farlo basta fare clic sul segno di spunta accanto alla risposta. Benvenuto nella community :) –

risposta

27

Si spera che si disponga della casella degli strumenti Elaborazione immagini. Se è così, allora si può creare un filtro gaussiano con la fspecial function in questo modo:

myfilter = fspecial('gaussian',[3 3], 0.5); 

ho utilizzato i valori predefiniti per hsize ([3 3]) e sigma (0,5) qui, ma si potrebbe desiderare di giocare in giro con loro. hsize è solo la dimensione del filtro, in questo caso è una matrice 3 x 3. Sigma è il sigma della funzione gaussiana (vedi la parte inferiore della pagina delle funzioni speciali).

Ora è possibile utilizzare imfilter per filtrare l'immagine:

myfilteredimage = imfilter(unfilteredimage, myfilter, 'replicate'); 

qui ho semplicemente passata nel unfilteredimage, il filtro, e un parametro che dice come il filtro dovrebbe gestire i confini. In questo caso, ho scelto la replica che imposta i valori degli array di input al di fuori dei limiti dell'array sul valore del bordo dell'array più vicino, ma è possibile provare altri valori (o lasciare tale opzione imposta tutti i valori di valori esterni a 0).

Problemi correlati