Compresión de Imágenes a Color
Ésta es una variación de la aplicación anterior, para poder comprimir imágenes a color. Decidimos hacer este applet porque una aplicación de compresión no es muy útil si sólo sirve para imágenes en blanco y negro. Además, no habíamos encontrado ninguna aproximación que solucionara este tema.
Las componentes de color de cada píxel de una imagen suelen venir dadas por lo que se conoce como número RGB, que es un valor que contiene el grado de rojo, verde y azul del píxel. Así, por ejemplo (simplificando el protocolo), un número RGB 100 puede querer decir que la componente R=1, G=0 y B=0. Es decir, el píxel es levemente rojo.
Teniendo esto en cuenta, si tratamos de comprimir imágenes a color con una red neuronal, el resultado que obtenemos no es el deseado. Una red neuronal basa su entrenamiento en la minimización de un error, aproximándose a los datos de entrada. Una buena aproximación para el píxel anterior (de nuevo simplificando) podría ser 99, que nos da como componentes R=0, G=9 y B=9, muy lejos del color rojo original. Luego aunque la red se está comportando del modo apropiado y nos puede ofrecer aproximaciones muy buenas, la naturaleza de los números RGB que manejamos hace que la solución no sea apropiada (a no ser, por supuesto, que la salida obtenida sea siempre idéntica a la entrada).
La solución inmediata que se nos ocurre es usar tres redes neuronales. Descomponiendo la imagen en tres "subimágenes", cada una con un componente de color, podemos utilizarla como entrada para tres redes neuronales, cada una especializada en dicha componente.
La salida de cada red se combina con las de las otras para recuperar el número RGB y, por tanto, la imagen a color.
Ésta es la idea que implementa el siguiente applet, que por lo demás es idéntico al applet anterior para imágenes en blanco y negro. Obsérvese que el applet recompone perfectamente también las imágenes en blanco y negro, aunque, al contrario que el anterior, se mezclan algunas componentes de color, con lo que no tenemos grises tan puros como antes.
Al tener que entrenar a la vez tres redes neuronales, el proceso es más lento. Como en el caso anterior, se proporciona una red entrenada con un error bajo, que se puede cargar mediante el botón Cargar Pesos.