Sei sulla pagina 1di 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;
}

Potrebbero piacerti anche

  • 3
    3
    Documento1 pagina
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 4
    4
    Documento1 pagina
    4
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 5
    5
    Documento2 pagine
    5
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 4
    4
    Documento4 pagine
    4
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 2
    2
    Documento2 pagine
    2
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 5
    5
    Documento2 pagine
    5
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 2
    2
    Documento2 pagine
    2
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 3
    3
    Documento2 pagine
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 3
    3
    Documento2 pagine
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 4
    4
    Documento1 pagina
    4
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 3
    3
    Documento2 pagine
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 1
    1
    Documento1 pagina
    1
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 1
    1
    Documento2 pagine
    1
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 2
    2
    Documento2 pagine
    2
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 1
    1
    Documento1 pagina
    1
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 5
    5
    Documento2 pagine
    5
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 2
    2
    Documento1 pagina
    2
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 5
    5
    Documento1 pagina
    5
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 4
    4
    Documento1 pagina
    4
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 1
    1
    Documento1 pagina
    1
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 3
    3
    Documento2 pagine
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 3
    3
    Documento1 pagina
    3
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • A
    A
    Documento1 pagina
    A
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • A
    A
    Documento1 pagina
    A
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • 001
    001
    Documento3 pagine
    001
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • Pruebas Memotesis
    Pruebas Memotesis
    Documento1 pagina
    Pruebas Memotesis
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • S 03
    S 03
    Documento2 pagine
    S 03
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • Scripbd 01
    Scripbd 01
    Documento1 pagina
    Scripbd 01
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • S 02
    S 02
    Documento2 pagine
    S 02
    Anonymous Q1FszcRVPg
    Nessuna valutazione finora
  • Configuración del router Regesta1 para SCADA y telecontrol industrial
    Configuración del router Regesta1 para SCADA y telecontrol industrial
    Documento49 pagine
    Configuración del router Regesta1 para SCADA y telecontrol industrial
    Encarnación Medina
    Nessuna valutazione finora
  • Taller de Mantenimiento Industrial
    Taller de Mantenimiento Industrial
    Documento3 pagine
    Taller de Mantenimiento Industrial
    Oscar Guaje
    Nessuna valutazione finora
  • Cuestionario Sobre Programación Solucion (1) Fernando
    Cuestionario Sobre Programación Solucion (1) Fernando
    Documento8 pagine
    Cuestionario Sobre Programación Solucion (1) Fernando
    jose fernando
    Nessuna valutazione finora
  • Inbound 1695532251506168304
    Inbound 1695532251506168304
    Documento3 pagine
    Inbound 1695532251506168304
    Complicade He Perfehitina
    Nessuna valutazione finora
  • Analisis de La Seguridad de La Informacion
    Analisis de La Seguridad de La Informacion
    Documento8 pagine
    Analisis de La Seguridad de La Informacion
    Bryan Joao Gallito
    Nessuna valutazione finora
  • Guia de Registro g57
    Guia de Registro g57
    Documento26 pagine
    Guia de Registro g57
    Adrian Diaz
    Nessuna valutazione finora
  • Funcionamiento de Embalse
    Funcionamiento de Embalse
    Documento8 pagine
    Funcionamiento de Embalse
    M.I. Bda
    Nessuna valutazione finora
  • El Sistema Operativo Es El Programa o Software Más Importante de Un Ordenador
    El Sistema Operativo Es El Programa o Software Más Importante de Un Ordenador
    Documento17 pagine
    El Sistema Operativo Es El Programa o Software Más Importante de Un Ordenador
    Nelly Rozas Sullca
    Nessuna valutazione finora
  • Simulador de balance de masa en procesos alimentarios
    Simulador de balance de masa en procesos alimentarios
    Documento5 pagine
    Simulador de balance de masa en procesos alimentarios
    angela maria hidalgo diaz
    Nessuna valutazione finora
  • Práctica de Mouse
    Práctica de Mouse
    Documento7 pagine
    Práctica de Mouse
    marisolramosvargas
    Nessuna valutazione finora
  • Configurar Wan1 y Wan2
    Configurar Wan1 y Wan2
    Documento48 pagine
    Configurar Wan1 y Wan2
    ROMULO
    Nessuna valutazione finora
  • Sesión 16 Vectores en Java
    Sesión 16 Vectores en Java
    Documento29 pagine
    Sesión 16 Vectores en Java
    DAVID ALFONSO SAN JOSE SIERRA
    Nessuna valutazione finora
  • Ejemplo Dictamen de La Auditoria 2017
    Ejemplo Dictamen de La Auditoria 2017
    Documento4 pagine
    Ejemplo Dictamen de La Auditoria 2017
    mauriciopatino
    Nessuna valutazione finora
  • Que Es El Metaverso
    Que Es El Metaverso
    Documento6 pagine
    Que Es El Metaverso
    Ronald Ramirez
    Nessuna valutazione finora
  • Levantamiento geodésico RTK
    Levantamiento geodésico RTK
    Documento31 pagine
    Levantamiento geodésico RTK
    Diego Fernando Paredes Saldaña
    Nessuna valutazione finora
  • Programacion EstructuraDatos II Rev2
    Programacion EstructuraDatos II Rev2
    Documento129 pagine
    Programacion EstructuraDatos II Rev2
    STEVEN JUAN BARRUETO CORPUS
    Nessuna valutazione finora
  • Cronómetro HH:MM:SS con inicio, parada y reinicio
    Cronómetro HH:MM:SS con inicio, parada y reinicio
    Documento3 pagine
    Cronómetro HH:MM:SS con inicio, parada y reinicio
    Marito Saavedra
    Nessuna valutazione finora
  • YII 2 Guia
    YII 2 Guia
    Documento452 pagine
    YII 2 Guia
    Diren
    Nessuna valutazione finora
  • CV Jordany Agosto 22
    CV Jordany Agosto 22
    Documento1 pagina
    CV Jordany Agosto 22
    Majo Cancino
    Nessuna valutazione finora
  • Pasos para Elaborar Presentación en Power Point
    Pasos para Elaborar Presentación en Power Point
    Documento5 pagine
    Pasos para Elaborar Presentación en Power Point
    maxi juarez
    Nessuna valutazione finora
  • Guía para Nuevos Usuarios REDCap - UCh
    Guía para Nuevos Usuarios REDCap - UCh
    Documento16 pagine
    Guía para Nuevos Usuarios REDCap - UCh
    Cristóbal Salas Ortíz
    Nessuna valutazione finora
  • Actividad 4 SGBD
    Actividad 4 SGBD
    Documento17 pagine
    Actividad 4 SGBD
    Angelica Fajardo
    Nessuna valutazione finora
  • Manual RWC1000 Español
    Manual RWC1000 Español
    Documento52 pagine
    Manual RWC1000 Español
    Annie Ortiz Sepulveda
    100% (3)
  • Eclipse Xampp DCU
    Eclipse Xampp DCU
    Documento6 pagine
    Eclipse Xampp DCU
    mcgmc
    Nessuna valutazione finora
  • Principales Formatos de Codificación de Video
    Principales Formatos de Codificación de Video
    Documento7 pagine
    Principales Formatos de Codificación de Video
    Amaru Inti Jesus Charcas
    Nessuna valutazione finora
  • Estructura de Datos 3-19-6383
    Estructura de Datos 3-19-6383
    Documento16 pagine
    Estructura de Datos 3-19-6383
    Manuel Emilio Genao
    Nessuna valutazione finora
  • 1 - Informe Del Trabajo Final - Grupo 3
    1 - Informe Del Trabajo Final - Grupo 3
    Documento57 pagine
    1 - Informe Del Trabajo Final - Grupo 3
    elvis martinez
    Nessuna valutazione finora
  • 05 Ciberseguridad
    05 Ciberseguridad
    Documento23 pagine
    05 Ciberseguridad
    David Esteban Romero Zuñiga
    Nessuna valutazione finora
  • Informatica 10º A y B, II Parcial
    Informatica 10º A y B, II Parcial
    Documento3 pagine
    Informatica 10º A y B, II Parcial
    KATERIN MARIA AGUILAR ESPINOZA
    Nessuna valutazione finora
  • Nexus DB
    Nexus DB
    Documento36 pagine
    Nexus DB
    Elizabeth Ramirez
    Nessuna valutazione finora