El desenfoque gaussiano es un método utilizado para desenfocar imágenes suavemente. Se trata de crear una matriz que se utilizará convolucionarla con los píxeles de una imagen. En este desafío, su tarea es construir esa matriz utilizada en el desenfoque gaussiano. Tomará una entrada r que será el radio del desenfoque y una entrada σ que será la desviación estándar para construir una matriz con dimensiones (2 r + 1 × 2 r + 1). Cada valor en esa matriz tendrá un valor ( x , y ) que depende de su distancia absoluta en cada dirección desde el centro y se usará para calcular G ( x , y ) donde la fórmulaG es
Por ejemplo, si r = 2, queremos generar una matriz de 5 x 5. Primero, la matriz de valores ( x , y ) es
(2, 2) (1, 2) (0, 2) (1, 2) (2, 2)
(2, 1) (1, 1) (0, 1) (1, 1) (2, 1)
(2, 0) (1, 0) (0, 0) (1, 0) (2, 0)
(2, 1) (1, 1) (0, 1) (1, 1) (2, 1)
(2, 2) (1, 2) (0, 2) (1, 2) (2, 2)
Luego, deje σ = 1.5 y aplique G a cada uno ( x , y )
0.0119552 0.0232856 0.0290802 0.0232856 0.0119552
0.0232856 0.0453542 0.0566406 0.0453542 0.0232856
0.0290802 0.0566406 0.0707355 0.0566406 0.0290802
0.0232856 0.0453542 0.0566406 0.0453542 0.0232856
0.0119552 0.0232856 0.0290802 0.0232856 0.0119552
Normalmente en el desenfoque de la imagen, esta matriz se normalizaría tomando la suma de todos los valores en esa matriz y dividiéndola por ella. Para este desafío, eso no es necesario y los valores brutos calculados por la fórmula es lo que debería ser la salida.
Reglas
- Este es el código de golf, por lo que gana el código más corto.
- La entrada r será un número entero no negativo y σ será un número real positivo.
- La salida debe representar una matriz. Se puede formatear como una matriz 2d, una cadena que representa una matriz 2d, o algo similar.
- Las imprecisiones de punto flotante no se contarán en su contra.
Casos de prueba
(r, σ) = (0, 0.25)
2.54648
(1, 7)
0.00318244 0.00321509 0.00318244
0.00321509 0.00324806 0.00321509
0.00318244 0.00321509 0.00318244
(3, 2.5)
0.00603332 0.00900065 0.0114421 0.012395 0.0114421 0.00900065 0.00603332
0.00900065 0.0134274 0.0170696 0.0184912 0.0170696 0.0134274 0.00900065
0.0114421 0.0170696 0.0216997 0.023507 0.0216997 0.0170696 0.0114421
0.012395 0.0184912 0.023507 0.0254648 0.023507 0.0184912 0.012395
0.0114421 0.0170696 0.0216997 0.023507 0.0216997 0.0170696 0.0114421
0.00900065 0.0134274 0.0170696 0.0184912 0.0170696 0.0134274 0.00900065
0.00603332 0.00900065 0.0114421 0.012395 0.0114421 0.00900065 0.00603332
(4, 3.33)
0.00339074 0.00464913 0.00582484 0.00666854 0.00697611 0.00666854 0.00582484 0.00464913 0.00339074
0.00464913 0.00637454 0.00798657 0.0091434 0.00956511 0.0091434 0.00798657 0.00637454 0.00464913
0.00582484 0.00798657 0.0100063 0.0114556 0.011984 0.0114556 0.0100063 0.00798657 0.00582484
0.00666854 0.0091434 0.0114556 0.013115 0.0137198 0.013115 0.0114556 0.0091434 0.00666854
0.00697611 0.00956511 0.011984 0.0137198 0.0143526 0.0137198 0.011984 0.00956511 0.00697611
0.00666854 0.0091434 0.0114556 0.013115 0.0137198 0.013115 0.0114556 0.0091434 0.00666854
0.00582484 0.00798657 0.0100063 0.0114556 0.011984 0.0114556 0.0100063 0.00798657 0.00582484
0.00464913 0.00637454 0.00798657 0.0091434 0.00956511 0.0091434 0.00798657 0.00637454 0.00464913
0.00339074 0.00464913 0.00582484 0.00666854 0.00697611 0.00666854 0.00582484 0.00464913 0.00339074
Respuestas:
Mathematica,
605450 bytes¡Gracias @GregMartin por 4 bytes!
Toma r y sigma como entrada, devuelve la matriz (números exactos).
Versión incorporada (58 bytes)
Por supuesto, Mathematica también tiene una función incorporada para esto, pero es demasiado larga.
fuente
-l
por-#
al final (Array
lo enhebrará en ambas dimensiones por usted); eso elimina la necesidad de definirl
, ahorrando 4 bytes.MATL , 20 bytes
Pruébalo en línea!
Explicación
fuente
Octava, 45 bytes
fuente
Octava, 49 bytes
¡Pruébelo en línea!
fuente
Python, 88 bytes
Utiliza la regla donde puede codificar 3.14 y 2.72 a 1 byte cada uno.
fuente
Perl 6 , 71 bytes
Técnicamente, esto puede tener más de 71 bytes si está codificado y guardado en un archivo, pero no pude resistir nombrar la entrada "sigma" con una sigma griega real. Se podría cambiar el nombre a cualquier letra ASCII simple si se quisiera.
fuente
Lenguaje de macros SAS, 296 bytes
Probablemente sea una forma mucho más eficiente de hacer esto, pero funciona :)
Este código imprime el conjunto de datos resultante.
fuente
Haskell, 59 bytes
Ejemplo de uso:
fuente
Python 2.7, 167 bytes
Una solución muy simple:
Pruébalo aquí !
Sin golf:
fuente
from __future__ import division
, ¿De Verdad?