NAME

     alpha_filter - used when an image contains  both  short  and
     long  tailed  types  of  noise such as Gaussian and salt and
     pepper noises. Filter varies between a  median  and  a  mean
     filter.

SYNOPSIS

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

     Image *alpha_filter(Image *imageP, int mask_size, int p)
          <imageP> - pointer to Image structure.
          <mask_size> - the size of the filtering  window  (e.g.,
     3->3x3).
          <p> - number  of  maximum  and  minimum  pixels  to  be
     excluded from the mean calculation.

PATH

     $CVIPHOME/SPATIALFILTER/spatial_filter.c

OPTIONS

     None.

DESCRIPTION

     Filter is based on order statistics. The parameter p  deter-
     mines  how  many  of  the  endpoints are eliminated from the
     ordered data. Returns the mean of the  filter  window  after
     the endpoints have been removed. Size of filter should be an
     odd integer limited from < 3 - 31 >, and  size  of  trim  is
     limited from <1-4>.

TIPS

     Works best on images that contain both short and long tailed
     type noise.  Keep filtering mask small to minimize blurring.

DIAGNOSTICS

     Returns the modified Image structure pointer on success, and
     returns  NULL  pointer  if  the input image data type 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 alpha filter operation
      with the mask size equal to 3 with the number of pixels
      skipped for mean calculation equal to 2*/
      cvipImage = alpha_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.