Intuizione per la convoluzione nell'elaborazione delle immagini


9

Ho letto molti documenti sulla convoluzione nell'elaborazione delle immagini e molti di loro dicono della sua formula, alcuni parametri aggiuntivi. Nessuno spiega l'intuizione e il significato reale dietro a fare la convoluzione su un'immagine. Ad esempio, l'intuizione della derivazione sul grafico è renderla più lineare, ad esempio.

Penso che un breve riassunto della definizione sia: la convoluzione si moltiplica sovrapponendo il quadrato tra immagine e kernel, dopo quella somma di nuovo e mettendola in ancoraggio. E questo non ha alcun senso con me.

Secondo questo articolo sulla convoluzione, non riesco a immaginare perché la convoluzione possa fare alcune cose "incredibili". Ad esempio, il rilevamento di linee e bordi nell'ultima pagina di questo collegamento. Basta scegliere il kernel di convoluzione appropriato in grado di produrre effetti piacevoli (rilevare linea o rilevare bordo).

Qualcuno può fornire qualche intuizione (non è necessario che sia una prova accurata) su come può farlo?

Risposte:


13

Penso che il modo più semplice di pensare alla Convoluzione sia come un metodo per cambiare il valore di un pixel in un nuovo valore basato sul peso dei pixel vicini.

È facile capire perché Box Blur:

_____________
|1/9|1/9|1/9|
|1/9|1/9|1/9|
|1/9|1/9|1/9|
-------------

lavori. Convolgere questo kernel equivale a passare attraverso ogni pixel di una foto e rendere il nuovo valore del pixel la media di se stesso e gli otto pixel circostanti.

Se lo capisci, puoi capire perché Gaussian Blur funziona:

_____________________
|.01|.04|.07|.04|.01|
|.04|.16|.26|.16|.04|
|.07|.26|.41|.26|.07|
|.04|.16|.26|.16|.04|
|.01|.04|.07|.04|.01|
---------------------

È fondamentalmente la stessa cosa, tranne per il fatto che la media è ponderata più fortemente verso i pixel più vicini. La funzione che definisce la velocità con cui i pesi cadono man mano che ci si allontana è la funzione gaussiana , ma non è necessario conoscere i dettagli della funzione per poterla utilizzare per la sfocatura.

Il kernel di rilevamento dei bordi nell'articolo collegato ha senso se lo fissi abbastanza a lungo:

__________
|-1|-1|-1|
|-1|.8|-1|
|-1|-1|-1|
----------

In pratica sta dicendo che il valore di qualsiasi pixel inizia a 8 / 9s del suo valore originale. Quindi sottrai i valori di ogni pixel attorno ad esso per arrivare al tuo nuovo pixel.

Quindi se il valore di un pixel è alto e anche il valore dei pixel circostanti è alto, si annulleranno a vicenda. Se il valore del pixel è basso e anche tutti i pixel circostanti sono bassi, si annulleranno a vicenda. Se il valore del pixel è alto e il valore dei pixel circostanti è basso (come in un pixel sul bordo di un oggetto), il nuovo valore del pixel sarà alto.


6

Un modo di pensare alla convoluzione / crosscorrelation è come se stessi cercando un segnale nei tuoi dati. Più i dati assomigliano al kernel, maggiore sarà il valore risultante. In realtà prendo il contrario del kernel, cioè come nella correlazione incrociata, ma sostanzialmente è la stessa cosa.

Ad esempio, supponiamo che tu stia cercando un passaggio direzionale nei tuoi dati 1d.

Il kernel potrebbe essere

[-1 1]

e applichiamolo ai dati

[2 2 2 2 2 1 1 1 1 1]

Il risultato sarà

[0 0 0 0 0 1 0 0 0 0]

Che rileva la posizione del passaggio. Un passo più grande darebbe un valore più grande.

Questo funziona perché quando moltiplichi un pattern per quello che appare nel kernel ottieni un valore elevato.

Il rilevamento dei bordi (o qualsiasi altro rilevamento di modelli) funziona allo stesso modo, ad esempio con il kernel

[-1 2 -1]

In questo modo si possono anche considerare estensioni a dimensioni superiori.

Questo dovrebbe darti intuizione almeno su alcune delle applicazioni dell'elaborazione delle immagini di convoluzione.


4

Se pensi che la convoluzione sia un po 'troppo difficile da capire, ti consiglio di iniziare a cercare Morfologia Matematica applicata all'elaborazione delle immagini, la grande idea dietro Morfologia Matematica è che farai un'operazione molto vicino alla convoluzione, per "cambiare" il morfologia dell'immagine, ma conservando le informazioni sulla topologia, in questo modo, è possibile creare un'immagine di un essere umano in piedi, uno scheletro, che è praticamente un bastone umano, provare ad applicare l'operazione di erosione, quindi dilatare l'operazione, quindi andare all'aperto / operazione di chiusura, inizierai a capire cosa può fare una maschera applicata a ogni pixel dell'immagine e come possono essere utilizzati in un grande scenario per ottenere grandi risultati (come trovare un punto per iniziare qualcosa usando l'ultima erosione), una volta capisci la morfologia matematica, la convoluzione è un po 'più difficile,perché è basato sul calcolo e definito dopo l'integrazione, ma ancora, un sacco di convoluzione sono facili da capire, come la sfocatura mediana, la sfocatura gaussiana, la nitidezza, il rilevamento dei bordi, il posto, il gradiente, ecc.

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.