## NAME

         Butterworth_High - performs Butterworth highpass filtering

## SYNOPSIS

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

         Image *Butterworth_High(Image *in_Image, int block_size, int
         dc, int cutoff, int order)

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

## PATH

         $CVIPHOME/XFORMFILTER/filter.c

## DESCRIPTION

         Butterworth_High()  performs   two-dimensional   butterworth
         highpass  filtering in transform domain on input image.  The
         parameter cutoff defines  the  cut-off  frequency  locus  at
         points  for  which the filter transfer function H(u,v) is at
         0.7071 of its maximum value. All components inside the  cir-
         cle (or 1/4 circle if dc component is on the upper-left-hand
         corner of  its  transform  plane)  of  radius  "cutoff"  are
         attenuated  according  to  the  transition  from passband to
         stopband, depending on the degree of filter  order  f_order.
         All  frequencies   component outside the circle (or 1/4 cir-
         cle) are passed with no attenuation.   If dc equals  1,  the
         dc   component  will  be  retained, if dc = 0, dc componenet
         will be dropped.

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         A filtered image

## HISTORY

         History information recorded: None

## DIAGNOSTICS

          The Butterworth_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 cutoff frequency can range from 1 to blocksize/2 and the
         Butterworth_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 Butterworth_High()
         with filtertype=4. 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 Butterworth_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).

## 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 butterworth high
          pass filtering of order 2 on the transformed image with
          the cut off frequency equal to 64 */
          cvipImage = (Image *)Butterworth_High(cvipImage,256,
          1,64,2);
          /* 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.