Main Search
Forum  Strona Główna
 
 
FAQ Members Groups Profile Private Messages

Ćwiczenia

 
Napisz nowy temat   Odpowiedz do tematu    Forum Strona Główna -> Analiza przetwarzania obrazów
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Grzesiek




Dołączył: 09 Cze 2006
Posty: 49
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Sob 16:25, 31 Mar 2007    Temat postu: Ćwiczenia

kompilowanie i uruchamianie
Kod:

$ gcc nasz_kod.c -lnetpbm -lm
$ ./a.out < plik_wejsciowy.pgm > plik_wyjsciowy.pgm


Negatyw obrazka
Kod:

//zamiana obrazka w negatyw

#include <pgm.h>

main()
{
   gray **p, **g;
   int szer, wys, maxg;
   int i, j;
   int tab[9];
   int temp=0;
   //FILE *out;
   //out=fopen("p.dat","w");
   
   p=pgm_readpgm(stdin,&szer,&wys,&maxg);
   g=pgm_allocarray(szer,wys);
   
   for(i=0; i<szer; i++)
      for(j=0; j<wys; j++)
         g[i][j] = 255 - p[i][j];
         pgm_writepgm(stdout,g,szer,wys,maxg,0);
}


Maksimum
Kod:

#include <stdio.h>
#include <pgm.h>

main(){

gray **p;
gray **g;
int szer,wys,maxg, max;
int i,j, ii, jj;

p=pgm_readpgm(stdin, &szer, &wys, &maxg);

g=pgm_allocarray(szer,wys);

for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=p[i][j];
   for(ii=-1;ii<=1;ii++){
      for(jj=-1;jj<=1;jj++){
         if (p[i+ii][j+jj]>g[i][j]) g[i][j]=p[i+ii][j+jj];
      }
   }
   }
}

pgm_writepgm(stdout, g, szer, wys, maxg, 0);
}


Średnia
Kod:

#include <stdio.h>
#include <pgm.h>

main(){

gray **p;
gray **g;
int szer,wys,maxg, max;
int i,j, ii, jj;

p=pgm_readpgm(stdin, &szer, &wys, &maxg);

g=pgm_allocarray(szer,wys);

for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=0;
   for(ii=-1;ii<=1;ii++){
      for(jj=-1;jj<=1;jj++){
         g[i][j]+=p[i+ii][j+jj];
      }
   }
g[i][j]=g[i][j]/9;
   }
}

pgm_writepgm(stdout, g, szer, wys, maxg, 0);
}


Laplac'e
Kod:

#include <stdio.h>
#include <pgm.h>

main(){

gray **p;
gray **g;
int szer,wys,maxg, max, min;
int i,j, ii, jj;
int t[3][3]={
      {0,1,0},
      {1,-4,1},
      {0,1,0}
   };
p=pgm_readpgm(stdin, &szer, &wys, &maxg);

g=pgm_allocarray(szer,wys);

for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=0;
   for(ii=-1;ii<=1;ii++){
      for(jj=-1;jj<=1;jj++){
         g[i][j]+=p[i+ii][j+jj]*t[ii+1][jj+1];
      }
      if((int)g[i][j]>max) max=g[i][j];
      if((int)g[i][j]<min) min=g[i][j];
   }
   }
}

for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=((float)(g[i][j]-min)/(float)(max-min))*255.0;
}
}
pgm_writepgm(stdout, g, szer, wys, maxg, 0);
}



Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Jajo
Administrator



Dołączył: 08 Cze 2006
Posty: 30
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Sob 17:09, 21 Kwi 2007    Temat postu:

wczytanie maski z klawiatury i przetworzenie obrazka podanego w programie (czyli ostatnie ćwiczenie Wink 21.04 Razz )

Kod:
#include <stdio.h>
#include <pgm.h>
#include <stdlib.h>

main(){

gray **p;
gray **g;
int szer,wys,maxg, max=0, min=0;
int i,ii,jj,j, temp, x,y, a,b;
x=0;
int tab[9];
int maska[3][3];
for(a=0; a<=2; a++){
   for(b=0; b<=2; b++){
      printf("maska[%d][%d]= ", a,b);
      scanf("%d",&maska[a][b]);

   }
}
for(a=0; a<=2; a++){
printf("\n");
   for(b=0; b<=2; b++){
      printf("%d",maska[a][b]);
}
}printf("\n");

   FILE *f1 = fopen("13_01.pgm", "r");
   if (f1==NULL) {
      perror("Nie udalo sie otworzyc pliku 2");
      return 1;
   }


p=pgm_readpgm(f1, &szer, &wys, &maxg);
   printf("Plik otwarty pomyslnie!\n");
   fclose(f1);
g=pgm_allocarray(szer,wys);


for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=0;
   for(ii=-1;ii<=1;ii++){
      for(jj=-1;jj<=1;jj++){
         g[i][j]+=p[i+ii][j+jj]*maska[ii+1][jj+1];
      }
      if((int)g[i][j]>max) max=g[i][j];
      if((int)g[i][j]<min) min=g[i][j];
   }
   }
}

for(i=1;i<szer-1;i++){
   for(j=1;j<wys-1;j++){
   g[i][j]=((float)(g[i][j]-min)/(float)(max-min))*255.0;
}
}

   FILE *f2 = fopen("14.pgm", "w");
   if (f2==NULL) {
      perror("Nie udalo sie otworzyc pliku 2");
      return 1;
   }
pgm_writepgm(f2, g, szer, wys, maxg, 0);
   printf("Plik zapisany pomyslnie!\n");
   fclose(f2);
}



Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Strona Główna -> Analiza przetwarzania obrazów Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Back to Top              
fora.pl - załóż własne forum dyskusyjne za darmo
Jenova Template © digital-delusion.com
Powered by phpBB © 2001, 2002 phpBB Group

Regulamin