Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Plain Text by Kris ( 14 years ago )
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pmg.h"

struct Obrazek wczytaj(FILE* fp)
{
  char znak,naglowek[3];
  int i,j,k;
  struct Obrazek o;

  
  fgets(naglowek,3,fp);
  if (naglowek[0] != 'P' || naglowek[1] != '2')
  printf("ZLY FORMAT PLIKU. NIE PMG!");

  znak = fgetc(fp);
  do
  {
    if ( (znak = fgetc(fp)) == '#')
        while ( fgetc(fp) != '\n');
    else
    {
      ungetc(znak,fp);
    }
  }
  while ((znak != EOF) && (znak == '#'));
  
      if ( fscanf (fp, "%d %d\n%d",&o.szerokosc,&o.wysokosc,&o.skala) != 3)
        printf (" BRAK WYSOKOSCI, SZEROKOSCI LUB SKALI SZAROSCI W PLIKU!!!");

    o.tab = (int**) calloc ( o.wysokosc, sizeof(int*));

    for (k=0; k < o.wysokosc; k++)
    {
      o.tab[k] = (int*) calloc ( o.szerokosc, sizeof(int));
    }
      
    for ( i = 0; i < o.wysokosc; i++)
    {
      for ( j = 0; j < o.szerokosc; j++)
      {
        fscanf(fp,"%d ",&o.tab[i][j]);
        printf("%d ",o.tab[i][j]);
      }
      fscanf(fp,"\n");
      printf("\n");
    }
return o;
}

struct Obrazek obrotprawo(struct Obrazek* o)
{
  struct Obrazek obrocona;
  int i,j,k;

  obrocona.wysokosc = o->szerokosc;
  obrocona.szerokosc = o->wysokosc; 
  obrocona.skala = o->skala;

  obrocona.tab = (int**)calloc(obrocona.szerokosc, sizeof(int*));
    for(k = 0; k < obrocona.szerokosc; k++)
    {
      obrocona.tab[k] = (int*)calloc(obrocona.wysokosc, sizeof(int));
    }
    
    for ( i = 0; i < obrocona.wysokosc; i++)
    {
      for ( j = 0; j < obrocona.szerokosc; j++)
        obrocona.tab[j][i] = o->tab[i][o->wysokosc-1-j];
    }

return obrocona;
}

void zapis (struct Obrazek* o, FILE* fp)
{
  int i,j;
  fprintf(fp,"P2\n#SIEMA\n%d %d\n%d\n",o->szerokosc,o->wysokosc,o->skala);

  for ( i = 0; i < o->wysokosc; i++)
  {
    for ( j = 0; j < o->szerokosc; j++)
    {
      printf("%d ",o->tab[i][j]);
      fprintf(fp,"%d ",o->tab[i][j]);
    }
    fprintf(fp,"\n");
    printf("\n");
  }
}


void kontrast (struct Obrazek* o,int ile)
{
  int LUT[256],i,j;

  for ( i = 0; i < 256; i++)
  {
    if ( i < ile )
      {
        LUT[i] = 0;
      }
    else if ( i < (255 - ile))
    {
      LUT[i] = (int)(256/(256.0-(2*ile))*(i-ile));
    }
    else if ( i >= (256-ile))
    {
      LUT[i] = 255;
    }
  }

  for ( i = 0; i < o->wysokosc; i++)
  {
    for ( j = 0; j < o->szerokosc; j++)
      {
        o->tab[j][i] = LUT[o->tab[j][i]];
      }
  }
}



void odszumed(struct Obrazek * o)
{
  int i,j,k,l,h,tablica[9],chwil;
  struct Obrazek odszum;

  odszum.szerokosc = o->szerokosc;
  odszum.wysokosc = o->wysokosc; 
  odszum.skala = o->skala;

  odszum.tab = (int**) calloc ( odszum.wysokosc, sizeof(int*));

    for (k=0; k < odszum.wysokosc; k++)
    {
      odszum.tab[k] = (int*) calloc ( odszum.szerokosc, sizeof(int));
    }

  for ( i = 1; i < o->wysokosc-1; i++)
  {
    for ( j = 1; j < o->szerokosc-1; j++)
    {
      
      
        for (k = 0; k < 3; k++)
        {
          for ( l = 0; l < 3; l++)
          {
            for ( h = 0; h <9 ; h++)
            {
            tablica[h] = o->tab[i+k-1][j+l-1];
            }
          }
        }
      

      for ( k = 0; k < 9; k++)
      {
        for ( l = 0; l < 8; l++)
        {
          if (tablica[l] > tablica[l+1])
          {
            chwil = tablica[l+1];
            tablica[l+1] = tablica[j];
            tablica[j] = chwil;
          }
        }
      }
   //przezrwa
      odszum.tab[i][j] = tablica[4];
    }
  }

  for (i = 0; i < o->wysokosc; i++)
  {
    for (j = 0; j < o->szerokosc; j++)
    {
      o->tab[i][j] = odszum.tab[i][j];
    }
  }
}

 

Revise this Paste

Your Name: Code Language: