Introducción
Los bordes afilados son, francamente, simplemente peligrosos, por lo tanto, dado un PNG como entrada, desenfoque la imagen usando el método descrito a continuación y rompa esos malditos bordes afilados.
Método
Para obtener el valor RGB de cada píxel, use las siguientes tres ecuaciones:
Donde es la suma de los valores rojos de cada uno de los píxeles adyacentes al cuadrado. El valor de es el número de píxeles adyacentes (por ejemplo, un píxel de esquina tendrá un valor de 3, mientras que un píxel alrededor del centro de la imagen tendrá un valor de 8).
Un píxel adyacente es un píxel que está a 1 píxel de distancia del píxel original en todas las direcciones (izquierda, derecha, arriba, abajo y en todas las diagonales).
Por ejemplo, en la siguiente imagen 3 x 1:
El valor RGB borroso del píxel medio será:
donde cualquier salida decimal se redondea a la unidad más cercana. No deberías simplemente dar el resultado.
Por lo tanto, el píxel del medio será el color (0, 221, 221) o:
Resultando en la imagen:
Debe repetir este proceso para cada píxel en la imagen. (Tenga en cuenta que hace esto con los píxeles originales y no con los píxeles modificados. Básicamente, no debe sobrescribir la imagen original, y debe mantenerla completamente separada de la nueva imagen borrosa ).
Si calcula que cualquier valor es mayor que 255, suponga que su valor es 255 (es decir, un valor de 374 se establecería en 255).
El resultado resultante debe ser una imagen PNG separada (puede nombrarla como desee).
Ejemplos
Super Mario
Original:
Borroso:
Tablero de damas
Original:
Borroso:
Patatas fritas
Original
Borroso
Ya no es tan crujiente
gótico americano
Original:
Borroso:
Para ver el desenfoque en imágenes más grandes, es mejor ejecutar el programa nuevamente en la imagen borrosa:
Desafío
El código más corto para desenfocar una imagen PNG determinada gana.
Puede usar bibliotecas de procesamiento de imágenes (como PIL) pero no debe usar funciones de desenfoque integradas (Mathematica, lo estoy mirando).
Nota
Como @orlp dice a continuación:
Para el registro, (que yo sepa) este no es un método de desenfoque estándar. Este desafío no es un recurso educativo.
fuente
n
debería aparecer en el denominador.Respuestas:
Python,
354313 bytesNo es el mejor, pero bueno ...
Uso de espacio para sangría de primer nivel, Tabulador para segundo nivel, luego Tab + espacio y Tab + Tab
math.sqrt()
con()**.5
gracias a la desintegración betamin
para sujetar (¡ahorrando mucho!) Y0
porpass
gracias a Loovjo+=[]
para.append()
guardar 5 bytess
para la plantillafuente
n**0.5
es más corto queimport math;math.sqrt(n)
? ¿Hay alguna razón para esto último?v if v<256 else 255
se puede acortar amin(v,255)
pass
con0
from PIL import Image as I
.MATLAB, 130 bytes
Toma una imagen como entrada y guarda la salida como
b.png
.fuente