introduction
Franchement, les bords tranchants sont tout simplement dangereux, donc, étant donné un PNG en entrée, brouillez l'image en utilisant la méthode décrite ci-dessous et émoussez ces maudits bords tranchants.
Méthode
Pour obtenir la valeur RVB de chaque pixel, utilisez les trois équations suivantes:
Où est la somme des valeurs rouges de chacun des pixels adjacents au carré. La valeur de est le nombre de pixels adjacents (par exemple, un pixel d'angle aura une valeur de 3, tandis qu'un pixel autour du centre de l'image aura un valeur de 8).
Un pixel adjacent est un pixel qui est à 1 pixel du pixel d'origine dans toutes les directions (gauche, droite, haut, bas et sur toutes les diagonales).
Par exemple, dans l'image 3 x 1 suivante:
La valeur RVB floue du pixel central sera:
où toutes les sorties décimales sont arrondies à l'unité la plus proche. Vous ne devez pas simplement étayer le résultat.
Par conséquent, le pixel du milieu sera la couleur (0, 221, 221), ou:
Résultat dans l'image:
Vous devez répéter ce processus pour chaque pixel de l'image. (Notez que vous faites cela avec les pixels d'origine et non les pixels modifiés. Fondamentalement, vous ne devez pas écraser l'image d'origine et la garder complètement séparée de la nouvelle image floue ).
Si vous calculez des valeurs supérieures à 255, supposez que sa valeur est 255 (c'est-à-dire qu'une valeur de 374 serait définie sur 255).
La sortie résultante doit être une image PNG distincte (vous pouvez la nommer comme vous le souhaitez).
Exemples
Super mario
Original:
Flou:
Damier
Original:
Flou:
Chips
Original
Flou
Plus croustillant
gothique americain
Original:
Flou:
Pour voir le flou sur des images plus grandes, il est préférable d'exécuter à nouveau le programme sur l'image floue:
Défi
Le code le plus court pour flouter une image PNG donnée l'emporte.
Vous pouvez utiliser des bibliothèques de traitement d'image (telles que PIL) mais vous ne devez pas utiliser de fonctions de flou intégrées (Mathematica, je vous regarde).
Remarque
Comme le dit @orlp ci-dessous:
Pour mémoire, (à ma connaissance) ce n'est pas une méthode de flou standard. Ce défi n'est pas une ressource éducative.
la source
n
devrait apparaître dans le dénominateur.Réponses:
Python,
354313 octetsPas le meilleur, mais bon ...
Utiliser Espace pour le retrait de 1er niveau, Tabulation pour 2e niveau, puis Tabulation + Espace et Tabulation + Tabulation
math.sqrt()
par()**.5
grâce à la désintégration bêtamin
pour le serrage (économiser beaucoup!) Et0
pourpass
remercier Loovjo+=[]
pour.append()
économiser 5 octetss
pour le gabaritla source
n**0.5
plus court queimport math;math.sqrt(n)
? Y a-t-il une raison à cela?v if v<256 else 255
peut être raccourci àmin(v,255)
pass
par0
from PIL import Image as I
.MATLAB, 130 octets
Prend une image comme entrée et enregistre la sortie sous
b.png
.la source