El enunciado del segundo control de aplicación de la primavera de

advertisement
Grupo 30
Examen Aplicación IO (mayo de 2006)
Tenemos una imagen de ordenador de tamaño 640x480 píxeles (puntos). Para su
tratamiento se divide en bloques de 160x160 píxeles (4x3 bloques). Nos piden que
hagamos las funciones que indican el nivel de luminosidad del bloque y de la imagen. Para
ello sabemos que cada píxel es un número del 0 al 255 que indica la luminosidad de dicho
punto. La luminosidad de un bloque es el promedio de luminosidad (del valor del punto) de
cada píxel que lo compone. La luminosidad de la imagen es el promedio de luminosidad de
los bloques que la componen.
Nos piden las siguientes funciones:
/********************** Funciones. Declaración ******************/
int cargarDatos (int p[FP][CP], FILE *pf);
/* Esta función lee los valores de los píxeles que están almacenados en el
* fichero apuntado por pf. Devuelve CIERTO si se ha conseguido leer todo
* correctamente (toda la pantalla) o FALSO en otro caso.
*/
/* 2,5 puntos*/
int calcLumBloque (int b[FB][CB]);
/* Esta función calcula el valor promedio de la luminosidad en un bloque b.
* Devuelve un entero entre 0 y 255.
*/
/* 2 puntos*/
void llenarBloque(int p[FP][CP],int b[FB][CB],int fb,int cb);
/* Esta función escribe el bloque (fb,cb), de los 3x4 bloques que hay, con los datos
* correspondientes extraídos de la información de la pantalla.
*/
/* 2,5 puntos*/
También haremos un programa principal /* 3 puntos*/ para poder probar si funcionan
nuestras funciones a partir de la información contenida en un fichero de prueba.
También nos proporcionan la siguiente información (una función y las constantes):
int calcLumPantalla (int rb[RFB][RCB]);
/* Esta función calcula el valor promedio de la luminosidad de la pantalla.
* Devuelve un entero entre 0 y 255. El cálculo lo hace a partir de las
* luminosidades de cada bloque almacenadas en rb.
*/
/******************* Constantes *********************************/
Grupo 30
/* FP: Filas de la Pantalla
* CP: Columnas de la Pantalla
* RFB: Resumen Filas de Bloques
* RCB: Resumen Columnas de Bloques
* FB: Filas del Bloque
* CB: Columnas del Bloque
*/
/* Para probar las constantes, de pantalla y bloque, están divididas por 10.
FACTOR =1 en lugar del valor real FACTOR = 10*/
#define FACTOR 1
#define FP 48*FACTOR
#define CP 64*FACTOR
#define RFB 3
#define RCB 4
#define FB 16*FACTOR
#define CB 16*FACTOR
#define CIERTO 1
#define FALSO 0
#define MAX 30
NOTA: Para probar se emplea un fichero con pocos datos para que sea más rápido. La
constante FACTOR nos permite ajustar las otras constantes para que tengan su valor real.
Este ajuste es irrelevante para la resolución del ejercicio.
Descargar