Está en la página 1de 3

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>

#define N 100
#define MAXCAD 200

/* Funci�n cargar: abrir� el fichero (que ser� de formato byn) y lo usar� para
inicializar
con el mismo una matriz entera N x N (excepto si la imagen que contiene el fichero
tiene
m�s de N filas o columnas). La funci�n recibir� como par�metros:
- Una cadena con el nombre del fichero (nomfich)
- Una matriz entera 100 x 100 (imagen)
- Dos par�metros enteros por referencia (filas y columnas). La funci�n debe
inicializarlos
con el n�mero de filas y columnas de la imagen que carga.

Si la funci�n puede cumplir con su cometido sin problemas devolver� 0. Si la


funci�n encuentra
alg�n problema con el fichero devolver� 1. Si el n�mero de filas o columnas de la
imagen del
fichero es mayor que 100 devolver� 2.
*/
int cargar(char nomfich[], int imagen[N][N], int *filas, int *columnas)
{
FILE *f;
int i, j, nf, nc;

f=fopen(nomfich, "r");
if (f==NULL) return 1;

fscanf(f,"%d%d",&nf,&nc);
if (nf>100 || nc>100) {
fclose(f);
return 2;
}

for (i=0; i<nf; i++)


for (j=0; j<nc; j++)
fscanf(f, "%d", &imagen[i][j]);

fclose(f);
*filas = nf;
*columnas = nc;
return 0;
}

/* funci�n que permitir� invertir una imagen. La funci�n recibir� una matriz con
una
imagen en formato byn y el n�mero de filas y columnas de dicha matriz. Para
invertir
la imagen lo que har� la funci�n ser� cambiar los p�xeles que son 1 por 0 y los que

son 0 por 1.*/


void invertir(int imagen[N][N], int filas, int columnas)
{
int i, j;
for (i=0; i<filas; i++)
for (j=0; j<columnas; j++)
if (imagen[i][j]==1)
imagen[i][j] = 0;
else
imagen[i][j] = 1;
//imagen[i][j] = (imagen[i][j]+1) % 2; /* esto con un if ser�a
m�s f�cil de ver */
}

/* La funci�n reducir recibir� los siguientes par�metros:


- Una matriz de enteros, origen.
- Dos valores enteros filas y columnas.
- Una matriz de enteros, destino.
origen es una matriz de unos y ceros (almacena una imagen byn). filas y columnas
indican el
tama�o de la matriz origen.
La funci�n no modificar� la matriz origen y devolver� 0 si el n�mero de filas o
columnas no es par.
Devolver� 1 en otro caso.
Rellenar� la matriz destino a partir de la reducci�n de la matriz origen: Si el
n�mero de filas
y columnas es par, la funci�n coger� los p�xeles en cuadrados 2x2: p�xeles (x,y),
(x,y+1),
(x+1,y), (x+1,y+1), donde x e y son pares (asumiendo que el p�xel superior
izquierda es el (0,0))
y transformar� los p�xeles de ese cuadrado de la siguiente forma:
- Si 3 p�xeles son blancos (1), cambiar� el otro p�xel a blanco (1).
- Si 3 p�xeles son negros (0), cambiar� el otro p�xel a negro (0).
- Si hay dos p�xeles blancos y dos negros, pondr� los cuatro p�xeles al mismo
color que tenga
el p�xel que est� en la posici�n superior izquierda del cuadrado.
*/
int reducir(int origen[N][N], int filas, int columnas, int destino[N][N])
{
int i, j, suma, color;

if (filas%2 || columnas%2) return 0;

for (i=0; i<filas; i+=2)


for (j=0; j<columnas; j+=2)
{
suma = origen[i][j]+origen[i+1][j]+origen[i][j+1]+origen[i+1]
[j+1];

if (suma>=3) color = 1;
else if (suma<=1) color = 0;
else color=origen[i][j];

destino[i][j]=color;
destino[i+1][j]=color;
destino[i][j+1]=color;
destino[i+1][j+1]=color;
}

return 1;
}
/* funci�n que muestra por pantalla una imagen */
void mostrar(int imagen[N][N], int filas, int columnas)
{
int i, j;
printf("\n");

for (i=0; i<filas; i++){


for (j=0; j<columnas; j++)
printf("%d ", imagen[i][j]);
printf("\n");
}
}

int main()
{
char nf1[MAXCAD]="ejemplo.byn";
int img[N][N], img2[N][N], f, c, res;
res = cargar(nf1, img, &f, &c);
if (res>0)
{
printf("Error cargando %s", nf1);
return -1;
}

/* comprobemos que se carga bien */


printf("Imagen cargada:\n");
mostrar(img, f, c);

invertir(img, f, c);

printf("\n\nImagen invertida:\n");
mostrar(img, f, c);

reducir(img, f, c, img2);

printf("\n\nImagen reducida:\n");
mostrar(img2, f, c);

return 0;
}

También podría gustarte

  • Informe Torno
    Informe Torno
    Documento8 páginas
    Informe Torno
    Qami Cx
    Aún no hay calificaciones
  • Como Ganar en La Ruleta
    Como Ganar en La Ruleta
    Documento230 páginas
    Como Ganar en La Ruleta
    Pablo Tobar
    100% (2)
  • 5
    5
    Documento2 páginas
    5
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 1
    1
    Documento2 páginas
    1
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 4
    4
    Documento4 páginas
    4
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento1 página
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 2
    2
    Documento2 páginas
    2
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento2 páginas
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento2 páginas
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento2 páginas
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 1
    1
    Documento1 página
    1
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 4
    4
    Documento1 página
    4
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 5
    5
    Documento2 páginas
    5
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 2
    2
    Documento2 páginas
    2
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 4
    4
    Documento1 página
    4
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 5
    5
    Documento2 páginas
    5
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 5
    5
    Documento1 página
    5
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 4
    4
    Documento1 página
    4
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 1
    1
    Documento1 página
    1
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento2 páginas
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 2
    2
    Documento2 páginas
    2
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 3
    3
    Documento1 página
    3
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • A
    A
    Documento1 página
    A
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 2
    2
    Documento1 página
    2
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 1
    1
    Documento1 página
    1
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 001
    001
    Documento3 páginas
    001
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • S 03
    S 03
    Documento2 páginas
    S 03
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • A
    A
    Documento1 página
    A
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • Pruebas Memotesis
    Pruebas Memotesis
    Documento1 página
    Pruebas Memotesis
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • S 02
    S 02
    Documento2 páginas
    S 02
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • Scripbd 01
    Scripbd 01
    Documento1 página
    Scripbd 01
    Anonymous Q1FszcRVPg
    Aún no hay calificaciones
  • 5
    5
    Documento4 páginas
    5
    Andre Chacon
    Aún no hay calificaciones
  • Manual Archi T I
    Manual Archi T I
    Documento7 páginas
    Manual Archi T I
    dariel collahua
    Aún no hay calificaciones
  • Cuarto Unid 4 Matem
    Cuarto Unid 4 Matem
    Documento5 páginas
    Cuarto Unid 4 Matem
    patricio Poblete
    Aún no hay calificaciones
  • 09-21-2019 000035 Am 02.-ESQUEMA DE INFORME DE PRACTICAS Detallado PDF
    09-21-2019 000035 Am 02.-ESQUEMA DE INFORME DE PRACTICAS Detallado PDF
    Documento6 páginas
    09-21-2019 000035 Am 02.-ESQUEMA DE INFORME DE PRACTICAS Detallado PDF
    Anonymous mg4i9M
    Aún no hay calificaciones
  • Codigos de Barra y QR
    Codigos de Barra y QR
    Documento4 páginas
    Codigos de Barra y QR
    henry
    Aún no hay calificaciones
  • Carpeta Fiscal Electronica
    Carpeta Fiscal Electronica
    Documento3 páginas
    Carpeta Fiscal Electronica
    Juanca Silva
    Aún no hay calificaciones
  • Pia Geomecánica Aplicada Parte 2 Equipo 5
    Pia Geomecánica Aplicada Parte 2 Equipo 5
    Documento18 páginas
    Pia Geomecánica Aplicada Parte 2 Equipo 5
    Jose Barajas
    Aún no hay calificaciones
  • Procesadores de Texto Basados en Web
    Procesadores de Texto Basados en Web
    Documento9 páginas
    Procesadores de Texto Basados en Web
    loreliji
    Aún no hay calificaciones
  • New File
    New File
    Documento5 páginas
    New File
    Julito Babo
    Aún no hay calificaciones
  • Línea Del Tiempo - Evolución de Los Negocios Electrónicos.
    Línea Del Tiempo - Evolución de Los Negocios Electrónicos.
    Documento3 páginas
    Línea Del Tiempo - Evolución de Los Negocios Electrónicos.
    Adrian Casados
    100% (1)
  • Instalar OpenERP en Ubuntu
    Instalar OpenERP en Ubuntu
    Documento7 páginas
    Instalar OpenERP en Ubuntu
    leomsd_882436920
    Aún no hay calificaciones
  • Firewall IpTables PDF
    Firewall IpTables PDF
    Documento8 páginas
    Firewall IpTables PDF
    omar-torrez9427
    Aún no hay calificaciones
  • BPL
    BPL
    Documento50 páginas
    BPL
    Ernesto Josue Mendoza Perez
    100% (1)
  • C9MQSJEUCAI3U4JL08BWY2MWBQEEB6CG
    C9MQSJEUCAI3U4JL08BWY2MWBQEEB6CG
    Documento2 páginas
    C9MQSJEUCAI3U4JL08BWY2MWBQEEB6CG
    maripa_218
    Aún no hay calificaciones
  • La Evolucion de Los Smartphones
    La Evolucion de Los Smartphones
    Documento3 páginas
    La Evolucion de Los Smartphones
    Roberto j SOTELO :3
    Aún no hay calificaciones
  • Cambiar El Idioma A Windows 8 RTM de Inglés A Español Usando El Spanish Language Pack - Conocimiento Adictivo
    Cambiar El Idioma A Windows 8 RTM de Inglés A Español Usando El Spanish Language Pack - Conocimiento Adictivo
    Documento21 páginas
    Cambiar El Idioma A Windows 8 RTM de Inglés A Español Usando El Spanish Language Pack - Conocimiento Adictivo
    potaiza
    Aún no hay calificaciones
  • Sintetizador Korg KRONOS2-61 PDF
    Sintetizador Korg KRONOS2-61 PDF
    Documento6 páginas
    Sintetizador Korg KRONOS2-61 PDF
    JavierRojas
    Aún no hay calificaciones
  • Norton Ghost 14 - Tutorial
    Norton Ghost 14 - Tutorial
    Documento6 páginas
    Norton Ghost 14 - Tutorial
    jose492432
    Aún no hay calificaciones
  • Procesos en Solaris
    Procesos en Solaris
    Documento5 páginas
    Procesos en Solaris
    Astrid Lemus
    Aún no hay calificaciones
  • Manual Articulate
    Manual Articulate
    Documento54 páginas
    Manual Articulate
    Danilo BM
    Aún no hay calificaciones
  • Unidad 2 Operaciones Basicas
    Unidad 2 Operaciones Basicas
    Documento18 páginas
    Unidad 2 Operaciones Basicas
    Roselia Juárez He
    Aún no hay calificaciones
  • Introduccion A La ISC - ISC
    Introduccion A La ISC - ISC
    Documento246 páginas
    Introduccion A La ISC - ISC
    Manuel Urbina
    Aún no hay calificaciones
  • Plan Formativo
    Plan Formativo
    Documento16 páginas
    Plan Formativo
    Natalia Hermosilla Astete
    Aún no hay calificaciones
  • BERMEJO TIRADO, J. 2015. Aplicaciones de Sintaxis Espacial en Arqueología, Una Revisión de Algunas Tendencias Actuales
    BERMEJO TIRADO, J. 2015. Aplicaciones de Sintaxis Espacial en Arqueología, Una Revisión de Algunas Tendencias Actuales
    Documento23 páginas
    BERMEJO TIRADO, J. 2015. Aplicaciones de Sintaxis Espacial en Arqueología, Una Revisión de Algunas Tendencias Actuales
    ruben
    Aún no hay calificaciones
  • Check List Requisitos
    Check List Requisitos
    Documento7 páginas
    Check List Requisitos
    Andrea Ballesteros
    Aún no hay calificaciones
  • Multimedia y Mediación en Entornos Virtuales de Aprendizaje y Los Objetos de Aprendizaje
    Multimedia y Mediación en Entornos Virtuales de Aprendizaje y Los Objetos de Aprendizaje
    Documento9 páginas
    Multimedia y Mediación en Entornos Virtuales de Aprendizaje y Los Objetos de Aprendizaje
    PERCEO
    Aún no hay calificaciones
  • Sistemas Embebidos
    Sistemas Embebidos
    Documento11 páginas
    Sistemas Embebidos
    carmoralito
    Aún no hay calificaciones
  • Tarea 2, 2do. Parcial-Introducción A La Informática.
    Tarea 2, 2do. Parcial-Introducción A La Informática.
    Documento14 páginas
    Tarea 2, 2do. Parcial-Introducción A La Informática.
    Sandra Yamileth Carranza
    Aún no hay calificaciones