Puentes entre puntos


Serie REESCALADO DE IMÁGENES / 1

Si bien más adelante me detendré en considerar la conveniencia de realizar esta tarea, ahora me voy a centrar en la descripción de los métodos que utiliza un programa como Photoshop para modificar el tamaño de una imagen y el efecto que tal procedimiento tiene sobre ella.

Cuando Photoshop reescala una imagen, debe adaptar el mosaico de píxeles que la forman a unas nuevas dimensiones. Si ampliamos la imagen, los píxeles originales “se separan” y se rellenan los huecos con píxeles nuevos; si reducimos la imagen, sencillamente se eliminarán tantos como sea necesario. Dicho así parece una tarea tremenda si pensamos en imágenes grandes… lo es, y aún más incluso. Imaginemos un caso fácil: una imagen (cuadrada para entenderse mejor) de 5 píxeles de lado que debemos ampliar hasta tener 9 píxeles de lado. La tarea consistiría en separar los cinco píxeles originales de manera que quedaran cuatro huecos entre ellos que deberán ser calculados por el programa. La lógica nos dice que seguramente los valores de color estos píxeles nuevos deben ser, de alguna manera, “la media” de los píxeles adyacentes de modo que se preserve la continuidad de los tonos de la imagen. De los nueve píxeles que encontramos en cada lado de la imagen final, cinco han permanecido igual (los originales) y cuatro han tenido que ser calculados. Pues bien, en realidad, Photoshop recalcula los valores ¡de todos! —es lo que se denomina remuestreo—. Lo mismo ocurre cuando la tarea consiste en reducir la imagen.

Photoshop utiliza tres métodos principales para reescalar una imagen:

El remuestreo por aproximación tiene como resultado una imagen en la que los píxeles nuevos proceden de la sencilla operación de elegir el mismo valor de alguno de los píxeles adyacentes. No surgen colores nuevos y por lo tanto la ampliación tendrá el aspecto de un original en el que los píxeles se han hinchado. En el caso de una reducción, se eliminan las filas y columnas de píxeles que sean necesarias.

En el ejemplo inferior se ha partido siempre de la imagen recuadrada en amarillo para ampliarla de 5 píxeles de lado a 6, 7, 8, 9 y 10, y reducirla a 4, 3, 2 y 1 píxel. A pesar de lo grosero del resultado (patente incluso en imágenes tan pequeñas), nótese la pulcritud con que se disponen las filas y columnas.



El remuestreo bilineal es un pequeño paso (de gigante) con respecto al anterior: para cada nuevo píxel generado (todos en realidad), se hace una media de las componentes de color de los cuatro píxeles que rodean en el original la posición que tendrá una vez generado. Más claro con el ejemplo inferior: la cruz blanca indica la posición que tendrá el nuevo píxel cuando ampliemos la imagen de 2 píxeles de lado a 3 (habrá que general en realidad una nueva fila y una nueva columna) y el cuadrado blanco enmarca el nuevo píxel generado tras el remuestreo. Al lado aparecen las componentes RGB de cada color, comprobándose el cálculo realizado. ¿Por qué las esquinas no muestras cambio de color si decimos que todos los píxeles son recalculados? Imagina la cruz colocada en una esquina del original: sus teóricos cuatro píxeles contiguos se reducen a uno por el hecho de estar “arrinconado”, el mismo original.



El remuestreo bicúbico consiste en realizar un cálculo bastante más complejo tomando como operandos los 16 píxeles más próximos a la posición que ocupará el píxel generado. El resultado es una imagen algo más suavizada que la conseguida por el método anterior. Observa cómo los colores de los píxeles generados en el ejemplo sí denotan que todos han sido recalculados. Para detallar este fenómeno, en el centro se ha ampliado una sencilla imagen de 4x1 píxeles a 5x1 píxeles… ¿cómo realojar cuatro puntos de color en cinco “huecos”? Aquí los colores resultantes no parecen tan dispares respecto a los originales porque en ninguno de los casos se dispone de 16 píxeles con los que realizar cálculos. A la derecha se muestra cómo quedaría la imagen original de la izquierda (la de 4x4 píxeles) si la ampliamos a 12x12 con este método. Curiosamente hay píxeles (enmarcados en blanco) que mantienen los colores originales.



Para terminar, una muestra comparativa de los tres métodos sobre una imagen real. El original es la pequeña (de 50x50 píxeles); a su lado se ha ampliado píxel a píxel para mostrarla en detalle, sin utilizar ningún algoritmo de remuestreo. En la esquina superior derecha aparece el resultado de ampliar el original a 160x160 píxeles por aproximación, abajo a izquierda el remuestreo bilineal y abajo a la derecha, el bicúbico. Detalles a destacar de cada uno: la deformación de los cuadrados blancos resultado de la copia de filas y columnas que realiza el reescalado por aproximación y el contraste entre los suavizados conseguidos por los otros dos métodos, algo más visible en los rebordes metálicos de la moto.



Para ser verdaderamente conscientes de las diferencias entre ellos, vamos a aplicarlos a una pequeña imagen ajedrezada de 5 píxeles de lado, ampliada hasta los 80.