Es invierno, y ha llegado la época del año para que comience a enfriarse (y para que pronto aparezcan extraños y coloridos sombreros). ¡Escribamos un código para hacer que las imágenes de avatar y otras imágenes se congelen, para que se ajusten al tema!
Entrada
La entrada a las presentaciones para este desafío debe ser una imagen (la imagen que se congelará) y un número (el umbral, que se explicará más adelante).
Puede ingresar la imagen de cualquier manera que su idioma los admita (una ruta de archivo o URL como argumento, tomándola del portapapeles, arrastrando y soltando una imagen, etc.) y en cualquier formato enumerado aquí que exprese colores en RGB (usted puede admitir / requerir RGBA en su lugar si lo desea, pero esto no es un requisito).
También puede ingresar el número de la forma que desee (argumento de línea de comando, STDIN, diálogo de entrada, etc.), con la excepción de codificarlo en su programa (ej. n=10
). Si utiliza una ruta / URL de archivo para la imagen, también debe ingresarse de esta manera.
Salida
El programa debe procesar la imagen de acuerdo con la descripción a continuación y luego enviarla de la forma que desee (a un archivo, mostrándola en la pantalla, colocándola en el portapapeles, etc.).
Descripción
Las presentaciones deben procesar la imagen con los siguientes tres pasos. n
se refiere al número que recibió su programa como entrada junto con la imagen.
Aplique un desenfoque de radio
n
a la imagen de entrada reemplazando los valores R, G y B de cada píxel con los valores R, G y B promedio de todos los píxeles dentro de una distancia den
píxeles de Manhattan , ignorando todas las coordenadas fuera de los límites. (Es decir, todos los píxeles donde la suma de la diferencia en X y la diferencia en Y es menor o igual quen
).(nota: utilicé un desenfoque gaussiano para las imágenes de arriba porque tenía una función incorporada conveniente, por lo que sus imágenes pueden verse un poco diferentes).
Establezca cada píxel en un píxel aleatorio dentro de una distancia de
n/2
píxeles ("distancia" se define de la misma manera que en el paso anterior).Esto se debe hacer recorriendo la imagen y estableciendo cada píxel en un píxel aleatorio en este rango, de modo que algunos píxeles puedan desaparecer por completo y otros puedan duplicarse.
Todos los cambios deben aplicarse al mismo tiempo. En otras palabras, use los valores antiguos de los píxeles (después del paso 1 pero antes de este paso), no los valores nuevos después de establecerlos en un píxel aleatorio.
Multiplique el valor RGB "azul" de cada píxel por 1.5, limitándolo a 255 (o lo que sea el valor máximo para una banda de píxeles) y redondeando hacia abajo.
Reglas
Puede usar bibliotecas de imágenes / funciones relacionadas con el procesamiento de imágenes integradas en su idioma; sin embargo, no puede usar ninguna función que realice una de las tres tareas principales mencionadas en la descripción. Por ejemplo, no puede usar una
blur
función, pero unagetPixel
función está bien.Este es el código de golf , por lo que gana el código más corto en bytes.
dx <= n && dy <= n
es una representación precisa de la distancia de Manhattan, ¿no es así?