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.