introduzione
I bordi taglienti sono, francamente, semplicemente pericolosi, quindi, dato un PNG come input, sfocare l'immagine usando il metodo descritto di seguito e smussare quei dannati bordi taglienti.
Metodo
Per ottenere il valore RGB di ciascun pixel, utilizzare le tre equazioni seguenti:
Dove è la somma dei valori rossi di ciascuno dei pixel adiacenti al quadrato. Il valore di è il numero di pixel adiacenti (ad esempio, un pixel d'angolo avrà un valore di 3, mentre un pixel attorno al centro dell'immagine avrà un valore di 8).
Un pixel adiacente è un pixel a 1 pixel di distanza dal pixel originale in tutte le direzioni (sinistra, destra, su, giù e su tutte le diagonali).
Ad esempio, nella seguente immagine 3 x 1:
Il valore RGB sfocato del pixel centrale sarà:
dove le uscite decimali sono arrotondate all'unità più vicina. Non dovresti semplicemente esprimere il risultato.
Pertanto, il pixel centrale sarà il colore (0, 221, 221) o:
Risultato nell'immagine:
Dovresti ripetere questo processo per ogni pixel dell'immagine. (Nota che lo fai con i pixel originali e non con i pixel modificati. Fondamentalmente, non dovresti sovrascrivere l'immagine originale e tenerla completamente separata dalla nuova immagine sfocata ).
Se calcoli che qualsiasi valore sia maggiore di 255, supponi che il suo valore sia 255 (vale a dire, un valore di 374 verrebbe impostato su 255).
L'output risultante dovrebbe essere un'immagine PNG separata (puoi nominarla come preferisci).
Esempi
Super Mario
Originale:
Sfocato:
Scacchiera
Originale:
Sfocato:
Patatine
Originale
Sfocato
Non più così nitido
gotico americano
Originale:
Sfocato:
Per vedere la sfocatura su immagini più grandi, è meglio eseguire nuovamente il programma sull'immagine sfocata:
Sfida
Vince il codice più corto per sfocare una determinata immagine PNG.
Puoi utilizzare le librerie di elaborazione delle immagini (come PIL) ma non devi usare le funzioni di sfocatura incorporate (Mathematica, ti sto guardando).
Nota
Come dice @orlp di seguito:
Per la cronaca, (per quanto ne so) questo non è un metodo di sfocatura standard. Questa sfida non è una risorsa educativa.
n
dovrebbe apparire nel denominatore.