Está en la página 1de 3

Algebra lineal Tecnologas de la informacion Universidad Politcnica de Victoria DESCRIPCIN DEL PROYECTO FINAL DEL CURSO Un archivo de imgenes

en formato PGM almacena las imgenes en escala de grises, es ampliamente utilizado por investigadores en el tema del procesamiento de imgenes, por su simplicidad y eficiencia. A continuacin se describe su formato. Primera Lnea (Tal como suena primera lnea, es decir debe aparecer al final un salto de lnea): Aparece una cadena mgica que identifica el tipo de formato, las cadenas validas son: a) P2: Los valores de los pxeles vienen en formato ASCII (es decir como cifras numricas enteras entre 0 y 255). b) P5: Los valores de los pxeles vienen en formato Binario (es decir la informacin de cada pxel viene expresada en un byte). Segunda Lnea: A partir de esta lnea pueden venir una o varias lneas que si traen como primer carcter #, son consideradas comentarios (si, ley bien comentarios al interior de la imagen, analice la importancia y relevancia de esto). Lnea Siguiente al ltimo comentario: Aparecen dos nmeros enteros separados por un espacio en blanco y que corresponden al ancho y al alto de la imagen en pxeles. Lnea Siguiente: Viene un nmero entero que indica la mxima cantidad de niveles de grises que soporta la imagen. Generalmente es 255 que indica el mximo espectro de niveles de grises. Desde Aqu en adelante viene la informacin de cada uno de los pxeles de la imagen. Debe tener en cuenta la cadena mgica para poder darle sentido a los valores que vienen a continuacin. Si la cadena mgica es P2, viene una serie de nmeros enteros separados por un espacio en blanco. La cantidad de nmeros que aparecen es de Ancho x Alto pxeles. Ejemplo, si los valores que aparecen son: 64 40 230 Esto significa que el primer pxel tiene un valor de gris igual a 64, el segundo pxel tiene un valor de gris igual a 40, el tercer pxel tiene un valor de gris igual a 230, etc. (Observe que esta forma de almacenar la informacin de los pxeles es muy poco eficiente, por cada pxel debe agregar un carcter blanco.)

Si la cadena mgica es P5, viene una serie de bytes (uno tras otro sin ningn tipo de separador), la cantidad de byte es igual a Ancho x Alto pxeles. Ejemplo, si los bytes que aparecen son: A< En este caso aparece el carcter A, que corresponde al valor ASCII 65 que ser el valor del nivel de gris del primer pxel, el carcter <, le corresponde el valor ASCII 40 que ser el nivel de gris del segundo pxel, el tercer byte es el carcter que tiene como valor ASCII 230 que ser el valor del nivel de gris del tercer pxel, etc. Observe que en este caso solo se necesita un byte para almacenar los valores de los pxeles, valores que se encuentran entre 0 que corresponde al negro y 255 que corresponde al blanco. Los dos ejemplo entregan los mismos valores de grises para los pxeles, pero en el caso P5 se hace una mejor uso del espacio utilizado para almacenar la imagen, con los tres pxeles del ejemplo en el formato P2 se utilizaron 9 bytes, en cambio en el formato P5 slo se necesitaron 3 bytes para almacenar la misma informacin. TRABAJO SOLICITADO Realizar un programa que permita decodificar una imagen en formato PGM. El programa recibe como entrada el nombre de un archivo de imagen, verifica que sea un archivo de imagen .PGM y despliega toda la informacin asociada a la imagen. Para efectos de prueba, use las imgenes PGM que se encuentran en el sitio: http://iie.fing.edu.uy/ense/asign/codif/material.htm El programa podr realizar operaciones bsicas con la imagen, entre ellas. 1) Rotar la imagen a. 90 grados b. 180 grados c. 270 grados 2) Reducir la imagen con escala 2:1, 4:1, 8:1 Todo el procesamiento se realiza manipulando los bytes que conforman el archivo PGM y respetando el formato en el que se codifican estas imgenes. Para validar sus programas, puede utilizar un programa visor de imgenes PGM.

Entregar:

Un reporte que cumpla cada uno de los puntos indicados al principio del curso (en pdf). Una presentacin en PowerPoint sobre el proyecto. Describir claramente la estrategia adoptada para resolver el problema planteado. Soportar dicha estrategia con diagramas, pseudocdigo o diagramas de flujo. Se tomar en cuenta el uso de memoria dinmica, apuntadores, estructuras y el uso de elementos del lenguaje C++. El lenguaje es opcional . Todo el trabajo es con matrices