2010-06-30 14 views
11

Quando si applica una sfocatura gaussiana a un'immagine, in genere il sigma è un parametro (esempi includono Matlab e ImageJ).Sigma ottimale per il filtraggio gaussiano di un'immagine?

Come si fa a sapere che sigma dovrebbe essere? C'è un modo matematico per capire un sigma ottimale? Nel mio caso, ho alcuni oggetti in immagini che sono brillanti rispetto allo sfondo, e ho bisogno di trovarli computazionalmente. Applicherò un filtro gaussiano per rendere il centro di questi oggetti ancora più luminoso, il che, si spera, faciliterà il loro ritrovamento. Come posso determinare il sigma ottimale per questo?

risposta

15

Non esiste una formula per determinarlo; il sigma ottimale dipenderà dai fattori di immagine, principalmente la risoluzione dell'immagine e la dimensione degli oggetti in esso contenuti (in pixel).

Inoltre, si noti che i filtri gaussiani non sono in realtà destinati a illuminare nulla; potresti voler esaminare le tecniche di massimizzazione del contrasto - sembra qualcosa di semplice come lo stretching dell'istogramma potrebbe funzionare bene per te.

modifica: Ulteriori spiegazioni - sigma fondamentalmente controlla quanto "grasso" sarà la funzione del kernel; valori di sigma più alti sfocano su un raggio più ampio. Dato che stai lavorando con le immagini, sigma più grande ti costringe anche a usare una matrice del kernel più grande per catturare abbastanza energia della funzione. Per il tuo caso specifico, vuoi che il tuo kernel sia abbastanza grande da coprire la maggior parte dell'oggetto (in modo che sia abbastanza sfocato), ma non così grande da iniziare a sovrapporre più oggetti vicini alla volta - quindi in realtà, la separazione dell'oggetto è anche un fattore insieme alla dimensione.

Dal momento che si menzionato MATLAB - si può dare un'occhiata a vari kernel gaussiana con diversi parametri usando la funzione fspecial('gaussian', hsize, sigma), dove hsize è la dimensione del kernel e sigma è, beh, Sigma. Prova a variare i parametri per vedere come cambia.

+0

@tzaman: puoi approfondire come il sigma ottimale dipende dalla risoluzione dell'immagine e dalla dimensione dei miei oggetti in pixel? o, se puoi, indicami la direzione delle letture. questo è esattamente quello che sto cercando. inoltre, ho misspoke sul ravvivamento; intendevo dire che voglio che il centro dei miei oggetti sia relativamente luminoso per tutto il resto. – sepiroth

+0

@hatorade: ho ampliato la mia risposta; spero che chiarisca le cose. – tzaman

+0

@tzaman: su un sito web (http://imaging.mrc-cbu.cam.ac.uk/imaging/PrinciplesSmoothing) Ho letto che la misura Full Width a Half Maximum (FWHM) ha un'equazione. Questo concetto vale per il kernel? Come in, in ImageJ o in Matlab, il "FWHM" del kernel si riferisce a sigma nello stesso modo? La ragione per cui lo chiedo è perché di solito i parametri sono le dimensioni del kernel, e sigma, ma continuo a leggere che sigma influenza le dimensioni del kernel ... – sepiroth

0

Devi trovare un minimo/massimo di una funzione G tale che G (X, sigma) dove X è un insieme delle tue osservazioni (nel tuo caso, i valori della scala di grigi dell'immagine), Questa funzione può essere qualsiasi cosa che mantenga l ' "ordine" delle intensità del iamge, per esempio, questo può essere fatto con il 1 ° derivato dell'immagine (come G),

fil = fspecial('sobel'); 
im = imfilter(I,fil); 
imagesc(im); 
colormap = gray; 

questo ti dà il risultato della derivata prima di un'immagine, ora vuoi trovare il massimo sigma per massimizzando G (X, sigma), ciò significa che stai provando alcuni sigma (diciamo, in ordine crescente) finché non raggiungi un sigma che rende G massimo. Questo può anche essere fatto con derivata seconda.

Problemi correlati