## 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.