NAME

     single_filter - performs single filter

SYNOPSIS

      #include "CVIPimage.h"
      #include "CVIPspfltr.h"

     Image *single_filter (Image *orig_image,  float  s_c,  float
     s_r,  int  r_cen,      int c_cen, float rot, float beta, int
     N, float *h, int choice)

      <orig_image> - pointer to an Image
      <s_c> - horizontal sizing factor, 1 for no change
      <s_r> - vertical sizing factor, 1 for no change
      <r_cen> - row coordinate for new center, 0 for no change
      <c_cen> - column coordinate for new center, 0 for no change
      <rot> - angle of rotation, 0 for no change
      <beta> - value for beta, typically 0.3 - 0.8
      <N> - kernel size (3,5,7,...)
      <h> - kernel array (of size N*N)
      <choice> - operation of filter (see DESCRIPTION, below):
                     1 = -,-
                     2 = +,+
                     3 = +,-
                     4 = -,+

PATH

     $CVIPHOME/SPATIALFILTER/single_filter.c

DESCRIPTION

     Performs manipulation and enhancement of an image in a  sin-
     gle  filter, after C.B. Chittineni. This implementation of a
     single filter is based on the following equation:

         f(x,y)=[(1+/-alpha)g(x,y)]-/+[(alpha)g(x,y)*h(x,y)]

     The parameter '<choice> - operation of filter' refers to the
     selection  of  arithmetic  signs  for the +/- and -/+ in the
     equation above.

TYPES AND CONSTANTS

     None

RETURN VALUES

     A filtered image

HISTORY

     History information recorded: None

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;
      float  h[9]={1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0};
      float *a=h;

      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 single filter operation.
      The original size  of the image,the center of the image
      is not changed.beta is chosen as 0.5 and the kernel
      size is chosen as 3 */
      cvipImage = single_filter(cvipImage,1,1,0,0,0,0.5,3,a,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);
      }

SEE ALSO

     libspatialfilter

AUTHOR

     Copyright (C) 1996 SIUE - by Scott E. Umbaugh, Joseph  Tsai,
     and Kun Luo.