Come applicare un kernel di filtro


8

Un filtro che può essere utilizzato per segnali digitali come l'elaborazione di audio, video o immagini può essere definito utilizzando una matrice ("kernel") che pesa l'area circostante (questa è una descrizione che ho letto nelle note delle lezioni di qualcun altro).

Il kernel definisce un filtro erode .

(111111111)

Potresti dirmi come viene applicato questo kernel ad esempio un'immagine (e quindi un campo di pixel 2D)? Grazie in anticipo!


Il termine erode "filtro" è un po 'un termine improprio in quanto è un'operazione altamente non lineare. Il filtro nel senso più rigoroso si riferisce a un'operazione invariante nel tempo lineare. La convoluzione con un kernel è un filtro, l'applicazione del processo di erode non lo è
Hilmar,

1
IMO, la risposta è una riga: convoluzione. La convoluzione della ricerca e l'equazione matematica e l'implementazione della convoluzione e questo è fatto. (in questo caso faresti una convoluzione 2d).
Trevor Boyd Smith,

1
Penso che la vera domanda dovrebbe essere "come si filtra qualcosa con un filtro FIR?" o "come funziona la convoluzione?" o "come si implementa la convoluzione?".
Trevor Boyd Smith,

Questo non è un kernel, ma un elemento strutturante. Quindi, viene applicato in modo completamente diverso. Vedi la risposta di @ kolentebert di seguito. In parole semplici, è una forma che si sovrappone a un'immagine per estrarre i massimi / minimi locali.
sansuiso,

Risposte:


2

Il tuo filtro erode non è corretto. Il link che hai indicato dice che dovrebbe trovare il massimo dei pixel adiacenti e l'array non lo fa. Invece, fornisce la somma dei pixel adiacenti. Se normalizzi il risultato (poiché tutte queste aggiunte aumenteranno la luminosità), scoprirai che il tuo filtro fa semplicemente una media uniforme dei pixel adiacenti.

Quello che faresti generalmente è prendere la tua immagine e contorcerne 3x3 blocchi (o per quanto grande sia il filtro) con il tuo filtro. Puoi anche fare questi in parallelo, per la velocità.


5

Nell'elaborazione delle immagini, per applicare un filtro di questo tipo, dovresti scorrere su tutti i pixel dell'immagine di input e ad ogni passaggio posizionare la maschera di filtro sull'immagine in modo che il suo centro si trovi sul pixel corrente. Quindi "valuta" i pixel del vicinato che sono coperti dalla maschera in qualche modo e riscrivi il risultato nel pixel corrente.

Per una normale convoluzione, moltiplichi ogni elemento del filtro per il valore del pixel corrispondente, sommi i risultati e scrivi la somma nel pixel corrente.

L'erosione è un'operazione morfologica e la implementeresti (su un'immagine binaria) controllando se tutti i valori "1" della maschera si trovano su "1" pixel nell'immagine. In tal caso, scrivi un "1" nel pixel corrente (altrimenti uno "0").

In entrambi i casi, assicurati di leggere sempre i pixel di input da una versione umodificata dell'immagine (anziché modificare l'immagine sul posto).

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.