NAME

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

SYNOPSIS

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

     Image *Ypmean_filter(Image *imageP, int mask_size, int p)
          <imageP> - pointer to Image structure.
          <mask_size> - size of the filtering window (3->3x3).
          <p> - filter order.

PATH

     $CVIPHOME/SPATIALFILTER/spatial_filter.c

DESCRIPTION

     Calculates the sum of the pixels in the filter window raised
     to  the power of p, then divided by N*N.  Returns this value
     raised to the  power  of  3/p.  Good  at  removing  positive
     outliers  for negative values of p and negative outliers for
     positive values of p.  Size  of  filter  should  be  an  odd
     integer limited from < 3 - 31 >, and order of filter is lim-
     ited from <-5 to +5>.

TIPS

     Works well on images containing positive  outlier  noise  if
     the  parameter P is negative, and on images containing nega-
     tive outlier noise if the parameter P is positive.  P should
     remain small (3-3) for better performance.  Keep filter mask
     size small to reduce 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;

      (void) 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 non-linear mean
      filter in every 3 x 3 window */
      cvipImage = Ypmean_filter(cvipImage,3,2);
      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.