/*Spike noise, Salt and Pepper */ #include <stdio.h> #include <math.h> #define MAX #include "lib.h" double drand32(); int main (int argc, char *argv[]) { //spike definições aqui int x, nivbruit1, nivbruit2, densite ; int pixel, pixbruit, bruit, bruit1, bruit2 ; int i=0, j=0, k=0, kk=0; int image[1024][1024]; FILE *f; IMAGE im=0; if (argc < 5) { printf ("Entre com: nivel_ min <nivbruit1> nivel_max <nivbruit2> densidade <densite> \n"); exit (1); } im = Input_PBM (argv[1]); if (im == 0) { printf ("No input image ('%s')\n", argv[1]); exit (2); } //entrando com spike aqui nivbruit1 = atoi( argv[2]); nivbruit2 = atoi( argv[3]); densite = atoi( argv[4]); printf("vc entrou com %d, %d e %d\n",nivbruit1,nivbruit2, densite); k = 0; f = fopen ("spike_res.pgm", "w"); fprintf (f, "P2\n%d %d 255\n", im->info->nc, im->info->nr); for (i=0; i < im->info->nr; i++) for (j=0; j < im->info->nc; j++) { pixel = random(densite)/1000000 +1 ; if(pixel <= densite) { bruit1 = random(nivbruit1); bruit2 = random(nivbruit2) ; bruit = (random(bruit1) - random(bruit2))/10000000 ; pixbruit = im->data [i][j] + bruit ; if(pixbruit > 255) pixbruit = 255 ; if(pixbruit < 0) pixbruit = 0 ; image[i][j] = pixbruit ; // printf ("xxxx ----->>> %f , %f , %f\n",bruit1, bruit2, densite); } else { image[i][j] = im->data [i][j]; } // if(pixbruit > 255) pixbruit = 255 ; // if(pixbruit < 0) pixbruit = 0 ; // image[i][j] = pixbruit ; // printf ("xxxx ----->>> %d , %d\n", i, j); fprintf (f, "%3d ", image[i][j]); k++; if (k > 15) { k = 0; fprintf (f, "\n"); } } fprintf (f, "\n"); fclose (f); }