Come rimuovere il rumore gaussiano da un'immagine senza distruggere i bordi?


15

Qual è il miglior filtro per rimuovere il rumore gaussiano senza distruggere i bordi? Sto usando le immagini standard di Lena con rumore gaussiano aggiuntivo e voglio denigrare prima di applicare la diffusione anisotropica. Non voglio filtrare la mediana perché i bordi diventano sfocati. Ho provato il filtro adattivo ma i risultati non sono stati soddisfacenti.


4
Mostra qualche sforzo, cosa hai provato?
0x90,

1
In realtà ho un'immagine lena standard corrotta da un rumore gaussiano. Voglio rimuovere il disturbo prima di applicare la diffusione anisotropica. Non voglio optare per il filtro mediano perché i bordi sono sfocati. Dai un input.
Aviral Kumar


1
Non proprio una risposta, ma ho trovato questo collegamento con una varietà di articoli su questo argomento: cercare di rimuovere il rumore senza eliminare le informazioni sui bordi.
Spacey

1
Puoi pubblicare alcune immagini e output, per favore, in modo da capire meglio come sarebbe un risultato (non) soddisfacente? Perché non dovresti eseguire la diffusione anisotropica per denigrare l'immagine, per esempio?
Jonas

Risposte:


10

Potrebbe essere necessario prendere in considerazione tecniche più avanzate. Ecco due recenti articoli sul denoising che preserva i bordi:

Il nostro metodo si basa su [jump regression analysis] ed è costituito da tre passaggi principali, descritti di seguito. Innanzitutto, i pixel di bordo vengono rilevati nell'intero spazio di progettazione da un rilevatore di bordi. In secondo luogo, in un quartiere di un dato pixel, una curva lineare a tratti viene stimata dai pixel del bordo rilevati da un algoritmo semplice ma efficiente, per approssimare il segmento del bordo sottostante in quel quartiere. Infine, le intensità di immagine osservate sullo stesso lato del segmento di bordo stimato, come il pixel dato, sono mediate dalla procedura di livellamento del kernel lineare locale (cfr. [35]), per stimare la vera intensità dell'immagine al pixel dato.

(I modelli di regressione Jump incorporano discontinuità usando le funzioni step. L'autore principale ha un libro su questo argomento .)


2

Come punto di partenza userei una tecnica di restringimento non lineare con una sorta di trasformata wavelet (anche se non sono specifiche delle trasformazioni wavelet). Le regole di restringimento sono concettualmente semplici, veloci e facili da implementare, con risultati eccellenti.

La premessa è che il segnale desiderato può essere rappresentato in qualche dominio in modo tale che la maggior parte dell'energia sia concentrata in un piccolo numero di coefficienti. Al contrario, il rumore viene comunque distribuito su tutti i coefficienti (che probabilmente è per AWGN). È quindi possibile "ridurre" i coefficienti - riducendo i loro valori secondo una regola non lineare - in modo tale che l'impatto sul segnale sia ridotto rispetto all'impatto sul rumore.

Le trasformazioni wavelet sono una buona trasformazione da utilizzare perché sono brave a comprimere l'energia in un piccolo numero di coefficienti. Consiglio personalmente la trasformata wavelet complessa a doppio albero (DTCWT) per le sue belle proprietà aggiuntive.

2 articoli molto validi sull'argomento sono questo e questo (entrambi degli stessi autori). Gli articoli sono una vera delizia in termini di leggibilità e chiarezza di spiegazione. (anche ci sono belle foto di Lenna che viene denunciata :)

Esistono certamente articoli più recenti, ma in genere non aggiungono molti miglioramenti quantitativi rispetto alle tecniche molto semplici descritte in quegli articoli.


Questi documenti non riguardano specificamente la conservazione dei bordi; riguardano il denoising generico delle immagini.
Emre,

Bene le wavelet sono intrinsecamente brave a preservare i bordi. La natura delle immagini naturali è che la maggior parte delle informazioni salienti si trova nei bordi, quindi discutere dei bordi come un caso speciale è piuttosto superfluo. Le immagini naturali sono definite dai bordi.
Henry Gomersall,

È discutibile se le wavelet convenzionali siano particolarmente brave a preservare i bordi. Questo problema è una delle motivazioni alla base della pletora di estensioni, inclusi ridgelets, beamlets, curvelet e contorni.
Emre,

In effetti, le wavelet hanno i loro problemi, motivo per cui ho suggerito di usare qualcosa di diverso dalle wavelet alla vaniglia. Anche se si potrebbe suggerire che ho una propensione per il DTCWT, non è senza una buona ragione. Entrambi questi documenti mostrano un'impressionante conservazione dei bordi. Come fa questo documento (vedere le figure 8 e 9 - confronto con le immagini rumorose).
Henry Gomersall,

1

Mentre ogni sfida di elaborazione del segnale non esiste nessuno adatto a tutte le soluzioni qui è un'idea:

  1. poiché stai cercando di preservare i bordi, scopri dove si trovano nell'immagine. Usa un rilevatore di bordi astuti per trovare i bordi all'interno dell'immagine.
  2. Dilatare / ingrassare i contorni dei bordi emessi dall'immagine (forse 2-5 pixel di larghezza per ciascun bordo) consente di chiamare questa "maschera"
  3. inverti la maschera.
  4. Applica la maschera all'immagine, ovvero lascia solo passare gli oggetti NON spigolosi.
  5. applicare la tecnica di de-gaussing
  6. utilizzare la maschera per bordi originale per ottenere i valori dei pixel dell'immagine in cui sono presenti i bordi
  7. Riposizionali nell'immagine sfilacciata

in alternativa, puoi applicare la tua tecnica di de-gaussing all'immagine nel suo insieme e quindi reintrodurre i pixel non de-gaussed nell'immagine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.