NAME

     Ideal_High - perform ideal highpass filtering

SYNOPSIS

      #include <math.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include "CVIPdef.h"
      #include "CVIPimage.h"

     Image *Ideal_High(Image *in_Image,int block_size,int  dc,int
     cutoff)

      <in_Image> - pointer to an Image structure
      <block_size> - desired block size
      <dc> - drop(0) or retain(1) dc component
      <cutoff> - cutoff frequency
      .de Ss

PATH

     $CVIPHOME/XFORMFILTER/filter.c

DESCRIPTION

     Ideal_High() performs two-dimensional ideal highpass filter-
     ing  in transform domain on input image.  All frequency com-
     ponents that are inside the circle (or 1/4 circle if dc com-
     ponent  is  on  the  upper-left-hand corner of its transform
     plane) of radius "cutoff" are filtered, while  all  frequen-
     cies  outside the circle (or 1/4 circle) are left completely
     intact. If dc equals 1, the dc component will  be  retained,
     if it equals 0, it will be dropped.

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 <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);
      print_CVIP("0Enter 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 the fft_transform on the
      input image with the block size equal to 256 */
      cvipImage=(Image *)fft_transform(cvipImage,256);
      /* the following call performs the ideal high pass
      filtering on the transformed image with the cut off
      frequency equal to 64 */
      cvipImage = (Image *)Ideal_High(cvipImage,256,1,64);
      /* the following call performs the inverse fft_transform
      in the filtered image with the block size equal to 256 */
      filtered image with the block size equal to 256 */
      cvipImage = (Image *)ifft_transform(cvipImage,256);
      print_CVIP("0Enter the Output File Name:  ");
      outputfile = getString_CVIP();
      view_Image(cvipImage,outputfile);
      write_Image(cvipImage,outputfile,CVIP_NO,CVIP_NO,format,1);
      free(outputfile);
      }

DIAGNOSTICS

      The Ideal_High filter will work for  both  real-valued  and
     imaginary-valued  transform.  If the origin of the transform
     is on the center of its frequency plane (shifted), the  cut-
     off  frequency  can  range  from  1  to  blocksize/2 and the
     Ideal_High function can  be  called  directly  with  correct
     parameters.  If  the origin of the transform is on the upper
     left-hand     corner     of     its     frequency     plane,
     nonfft_xformfilter()  must be used to call Ideal_High() with
     filtertype=3.  The cutoff frequency in this case  can  range
     from 1 to blocksize since a block is treated as a quarter of
     a  regular  block  with  its  origin  on  the  center.    If
     hpf_setup()   is  to  be  used  to  call  Ideal_High(),  the
     transform must be setup and recognized by hpf_setup(),  oth-
     erwise   the   setup   program   automatically  assumes  the
     transform's dc component is on the center (dcpos=1).

SEE ALSO

     libxformfilter

AUTHOR

     Copyright (C) 1996 SIUE - by Scott E. Umbaugh and Simon Low.