Imagen suavizada


Enviar solución

Puntos: 5
Tiempo límite: 1.0s
Límite de memoria: 64M

Autor:
Tipo de problema

Una imagen se puede entender como una matriz de píxeles, cada uno de ellos codificando el color de una pequeña región de la imagen. El caso más sencillo es el de las imágenes en escala de grises, donde el valor es simplemente un número en un determinado rango que índica si el píxel es más claro o más oscuro.

Una operación típica en las imágenes es suavizarlas, reemplazando cada píxel por algún tipo de operación sobre los píxeles vecinos. La opción más sencilla para hacer esto es hacer un promedio, incluyendo el propio pixel en el recuento.

Por ejemplo, si tenemos la matriz

\displaystyle \begin{matrix}
1 & 1 & 1 & 1\\
1 & \mathbf{2} & 1 & 3\\
1 & 3 & 5 & 7\\
1 & 3 & 7 & 9\\
\end{matrix}

y queremos suavizar el elemento (2,2), en negrita, lo que haríamos sería reemplazarlo por el promedio \displaystyle 
(1+1+1+1+2+1+1+3+5)/9\approx1.777\,.
En este ejercicio supondremos se permiten valores flotantes para representar los píxeles, aunque en casos reales podría ser necesario redondear a enteros.

Un problema adicional es que los elementos en el borde de la matriz no tienen 8 vecinos, por lo que habría que modificar la fórmula o, si la imagen es grande, simplemente descartarlos, que es lo que haremos aquí.

En este ejercicio se pide implementar la fórmula de suavizado por promedio de vecinos ignorando los elementos del borde de la matriz. Esto es, si la entrada es una matriz a\times b, la salida será una matriz (a-1)\times (b-1). El programa deberá mostrar una matriz de valores flotantes de la forma que muestran los ejemplos.

Entrada

Un primera línea con dos números enteros definiendo el tamaño de la matriz (filas x columnas), seguida de la matriz por filas.

Salida

La matriz de números flotantes resultado. Se puede usar cualquier precisión para la salida, aunque el número deberá ser correcto hasta la cuarta cifra decimal para pasar la evaluación.

Ejemplo de entrada 1

3 3
1 2 3
4 5 6
7 8 9

Ejemplo de salida 1

5.00000

Ejemplo de entrada 2

3 4
1 1 1 1
1 1 1 1
1 1 1 1

Ejemplo de salida 2

1.00000 1.00000

Ejemplo de entrada 3

5 5
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
6 6 6 6 6

Ejemplo de salida 3

2.00000 2.00000 2.00000
3.00000 3.00000 3.00000
4.33333 4.33333 4.33333

Ejemplo de entrada 4

5 4
1 1 2 2
3 3 4 5
4 4 4 4
7 8 9 9
9 9 9 9

Ejemplo de salida 4

2.88889 3.22222
5.11111 5.55556
7.00000 7.22222

Comentarios

No hay comentarios por el momento.