## NAME

         Ideal_Band_Pass - perform ideal bandpass filtering

## SYNOPSIS

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

         Image  *Ideal_Band_Pass(Image  *in_Image,int  block_size,int
         dc,int inner,int  outer)

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

## PATH

         $CVIPHOME/XFORMFILTER/filter.c

## DESCRIPTION

         Ideal_Band_Pass() performs  two-dimensional  ideal  bandpass
         filtering in transform domain on input image.  All frequency
         components that are in the band enclosed by the  circle  (or
         1/4  circle if dc component is on the upper left-hand corner
         of its transform plane) with radius  inner  and  the  circle
         with  radius  outer  will be passed with no attenuation. All
         frequencies outside the circular band (or 1/4 circular band)
         are  completely attenuated. If dc equals 1, the dc component
         will be retained, if dc equals 0, it will be dropped

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         A filtered image

## HISTORY

         History information recorded: None

## DIAGNOSTICS

          The Ideal_Band_Pass 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  cutoff  frequencies can range from 1 to blocksize/2 and
         the Ideal_Band_Pass 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_Band_Pass()
         with filtertype=5.  The cutoff frequencies 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
         bpf_setup()  is  to  be  used to call Ideal_Band_Pass(), the
         transform must be setup and recognized by bpf_setup(),  oth-
         erwise   the   setup   program   automatically  assumes  the
         transform's dc component is on the center (dcpos=1).

## 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, "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 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 band pass
          filtering on the transformed image with the lower cut off
          equal to 0 and the higher cut off equal to 64 */
          cvipImage = (Image *)Ideal_Band_Pass(cvipImage,256,1,0,64);
          /* the following call performs the inverse fft_transform in
          the filtered image with the block size equal to 256 */
          cvipImage = (Image *)ifft_transform(cvipImage,256);
          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

         libxformfilter

## AUTHOR

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