NAME

     harmonic_filter -  a non-linear mean filter which is  better
     at removing gaussian type noise and preserving edge features
     than the mean filter. Good at removing positive outliers.

SYNOPSIS

      #include <CVIPtoolkit.h>
      #include <CVIPdef.h>
      #include <CVIPspfltr.h>
      #include <float.h>

     Image *harmonic_filter(Image *imageP, int mask_size)
           <imageP> - pointer to Image structure.
           <mask_size> - size of the filtering window  (e.g.,  3-
     >3x3).

PATH

     $CVIPHOME/SPATIALFILTER/spatial_filter.c

OPTIONS

     None.

DESCRIPTION

     Returns a value equal to N*N divided by the inverse  of  the
     sum  of  the  pixels in the filter window.  The filter  size
     should be an odd integer limited from < 3 - 31>.

TIPS

     Works best on short tailed types of noise such  as  Gaussian
     noise.  Keep the filter mask small to minimize blurring.

DIAGNOSTICS

     Returns a pointer to the modified Image  structure  on  suc-
     cess.  Returns a NULL pointer if the input Image datatype is
     not CVIP_BYTE and can't be cast to CVIP_FLOAT.

EXAMPLE

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

      void main()
      {
      Image *cvipImage;
      IMAGE_FORMAT format;
      char *inputfile,*outputfile;
      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 performs a harmonic filter
      operation with the mask size equal to 3 */
      cvipImage = harmonic_filter(cvipImage,3);
      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);
      }

BUGS

     None

AUTHOR

     Copyright (C) 1992, 1996 SIUE - by Scott E. Umbaugh and John
     A Creighton.