NAME

     speckle_noise - Add speckle noise to an image

SYNOPSIS

     #include "CVIPnoise.h"

     Image   *speckle_noise(Image   *imageP,float    *psalt,float
     *ppepper);

      <imageP> - pointer to Image structure
      <psalt> - probability of salt noise (high gray level = 255)
      <ppepper> - probability of pepper noise (low gray  level  =
     0)

PATH

     $CVIPHOME/NOISE/noise.c

DESCRIPTION

     Speckle noise, also called "salt  and  pepper"  type  noise,
     typically occurs in images that are acquired by cameras con-
     taining malfunctioning pixels.  Salt  and  Pepper  noise  is
     named  after  the  white  and  black  appearance  it adds to
     images.

     The float pblack represents the probability of a pixel being
     "black",   or  0  in  grey-level,  while  the  float  pwhite
     represents the probability of a pixel being "white", or 255.
     Note: the sum of pblack and pwhite cannot exceed 1.0.

RETURN VALUES

     The speckle_noise()  function  returns  the  modified  Image
     pointer on success, and returns a NULL pointer on failure

BUGS

     none

EXAMPLE

      #include <CVIPtoolkit.h>
      #include <CVIPimage.h>
      #include <CVIPconvert.h>
      #include <CVIPview.h>
      #include "CVIPnoise.h"
      #define VIEWER "picture"
      #define VIDEO_APP "SunVideo &"

      void main()
      {
      Image *cvipImage;
      IMAGE_FORMAT format;
      char *inputfile,*outputfile;
      float psalt=0.1;
      float ppepper=0.2;

      setDisplay_Image(VIEWER, "Default");

      print_CVIP("\n\t\tEnter the Input File Name:  ");
      inputfile =(char *) getString_CVIP();
      format = getFormat_CVIP(inputfile);
      cvipImage = read_Image(inputfile, 1);
      view_Image(cvipImage, inputfile);
      free(inputfile);
      /* the following call adds speckle noise to the input
      image with the probability of high grey levels equal
      to 0.1 and the probability of low grey levels equal to
      0.2.We can use the function speckle_noise_setup so
      that the user can  specify the inputs  */
      cvipImage = speckle_noise(cvipImage,&psalt,&ppepper);
      print_CVIP("\n\t\tEnter the Output File Name:  ");
      outputfile = getString_CVIP();
      view_Image(cvipImage,outputfile);
      write_Image(cvipImage,outputfile,CVIP_NO,CVIP_NO,format,1);
      free(outputfile);
      }

SEE ALSO

     gamma_noise(3),     gaussian_noise(3),     neg_exp_noise(3),
     rayleigh_noise(3), uniform_noise(3)

AUTHOR

     Copyright (C) 1992, 1996 SIUE -  by  Scott  E.  Umbaugh  and
     David Lyons.