Di Victor Powell

Un kernel d’immagine è una piccola matrice usata per applicare effetti come quelli che potreste trovare in Photoshop o Gimp, come sfocatura, nitidezza, contorno o rilievo. Sono anche usati nell’apprendimento automatico per “l’estrazione di caratteristiche”, una tecnica per determinare le porzioni più importanti di un’immagine. In questo contesto il processo è indicato più in generale come “convoluzione” (vedi: reti neurali convoluzionali.)

Per vedere come funzionano, iniziamo ad esaminare un’immagine in bianco e nero. La matrice a sinistra contiene numeri, tra 0 e 255, che corrispondono ciascuno alla luminosità di un pixel nell’immagine di un volto. L’immagine grande e granulosa è stata ingrandita per renderla più facile da vedere; l’ultima immagine è della dimensione “reale”.

Passiamo ad applicare il seguente kernel 3×3 {{selectedKernel}} all’immagine di un volto dall’alto.

Di seguito, per ogni blocco 3×3 di pixel nell’immagine a sinistra, moltiplichiamo ogni pixel per la voce corrispondente del kernel e poi prendiamo la somma. Questa somma diventa un nuovo pixel nell’immagine a destra. Passa il mouse su un pixel di entrambe le immagini per vedere come viene calcolato il suo valore.

Una sottigliezza di questo processo è cosa fare lungo i bordi dell’immagine. Per esempio, l’angolo in alto a sinistra dell’immagine di input ha solo tre vicini. Un modo per risolvere questo problema è quello di estendere i valori dei bordi di uno nell’immagine originale, mantenendo la nostra nuova immagine della stessa dimensione. In questa demo, abbiamo invece ignorato quei valori rendendoli neri.

Ecco un parco giochi dove puoi selezionare diverse matrici di kernel e vedere come influenzano l’immagine originale o costruire il tuo kernel personale. Puoi anche caricare la tua immagine o usare un video dal vivo se il tuo browser lo supporta.

Il kernel sharpen sottolinea le differenze nei valori dei pixel adiacenti. Questo rende l’immagine più vivida.

Il kernel blur de-enfatizza le differenze nei valori dei pixel adiacenti.

Il kernel emboss (simile al kernel sobel e talvolta indicato come lo stesso) dà l’illusione della profondità enfatizzando le differenze dei pixel in una data direzione. In questo caso, in una direzione lungo una linea dall’alto a sinistra al basso a destra.

Il kernel dell’identità lascia l’immagine invariata. Che noia!

Il kernel personalizzato è qualsiasi cosa tu faccia.

I kernel di sobel sono usati per mostrare solo le differenze nei valori dei pixel adiacenti in una particolare direzione.

Un kernel di contorno (chiamato anche kernel “edge”) è usato per evidenziare grandi differenze nei valori dei pixel. Un pixel vicino a pixel vicini con quasi la stessa intensità apparirà nero nella nuova immagine, mentre uno vicino a pixel vicini che differiscono fortemente apparirà bianco.

Per saperne di più, dai un’occhiata all’eccellente documentazione di Gimp sull’uso dei kernel immagine. Puoi anche applicare i tuoi filtri personalizzati in Photoshop andando su Filter -> Other -> Custom…

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg