Ultimas Noticias

Nuevo ..!

Apps

Apps

domingo, 13 de abril de 2014

Programación lúdica: fusionando imágenes


Los efectos visuales que hoy día se pueden hacer usando una computadora son simplemente el resultado del procesamiento digital de imágenes. Para la computadora una fotografía no es más que una colección de puntos de diversos colores, que finalmente en las entrañas de la máquina no son más que valores que van de 0 a 16 millones, aproximadamente. La razón de esto es que la computadora, a través de su hardware, ve el color como una combinación de tres números que van de 0 a 255. Esos tres números representan el azul, el rojo y el verde. Esto es lo que se llama el modelo RGB (por aquello de Red, Green, Blue, por sus siglas en inglés) y es uno de los más usados a nivel mundial. Por ello mismo, cuando se hace una transformación de una imagen, ésta siempre se basa en la manipulación de los puntos de color (los pixeles), que son un reflejo de los valores internos de sus respectivas coordenadas rojo, verde y azul.
Uno de los efectos más interesantes es el del blending (término inglés que significa licuar), pero que en realidad podría considerarse como el de fusionar, en algún porcentaje, una imagen con otra. Imaginemos, por ejemplo, que tenemos una fotografía A, pero queremos sobreponerla, en un 40% (como si fuese una transparencia a un 40% del total del color), sobre otra imagen. ¿Cómo se verá el resultado de esto? ¿qué tan difícil resulta programar dicho efecto?
En realidad esto no es muy difícil de hacer. La teoría atrás del blending es muy simple. Se trata de tomar cada punto de ambas imágenes y decirle al sistema que ponga un porcentaje que le correspondería al punto en la primera imagen y el resto (del 100%) sería para el punto de la segunda imagen. Para que esto funcione, lo mejor es separar cada punto de las imágenes en sus respectivas coordenadas RGB de manera que tengamos algo como esto:
  • blendpixelR := (R1 * alpha) + (R2 * (1.0 – alpha));
  • blendpixelG := (G1 * alpha) + (G2 * (1.0 – alpha));
  • blendpixelB := (B1 * alpha) + (B2 * (1.0 – alpha));
Donde blendpixelR, blendpixelG y blendpixelB son el resultado de fusionar las coordenadas roja, verde y azul del punto en la primera imagen (R1), con las coordenadas roja, verde y azul del punto en la segunda imagen (R2), respectivamente y alpha es el porcentaje que se desea fusionar la imagen A con la B. ¿Demasiado sencillo para ser cierto? El hacer esto, pensaba ¿no me hará una especie de batidero de ambos pixeles? Me di entonces a la tarea de escribir un programita que hiciese esto para ver si esto funcionaba correctamente.
Puede verse que el efecto funciona perfectamente (ver imagen que ilustra este artículo). Pero ¿por qué funciona el programa? La respuesta es simple: estamos hablando de pixeles de color, que en la pantalla de la computadora son haces de luz de una frecuencia determinada. Por ello mismo, al combinarlos de acuerdo a la fórmula del blending, notaremos que ambas imágenes se fusionan. Cabe señalar que este comportamiento no se da en la pintura al óleo, por ejemplo, o con pinturas físicas, porque aquí la combinación de rojo, verde y azul en iguales proporciones nos daría negro, no blanco.
A quien le interese probar mi software, escríbame a morsa@la-morsa.com y le mandaré el enlace para que lo descargue.

No hay comentarios:

Publicar un comentario

Designed By Edu Design