NAME
harmonic_filter - a non-linear mean filter which is better
at removing gaussian type noise and preserving edge features
than the mean filter. Good at removing positive outliers.
SYNOPSIS
#include <CVIPtoolkit.h>
#include <CVIPdef.h>
#include <CVIPspfltr.h>
#include <float.h>
Image *harmonic_filter(Image *imageP, int mask_size)
<imageP> - pointer to Image structure.
<mask_size> - size of the filtering window (e.g., 3-
>3x3).
PATH
$CVIPHOME/SPATIALFILTER/spatial_filter.c
OPTIONS
None.
DESCRIPTION
Returns a value equal to N*N divided by the inverse of the
sum of the pixels in the filter window. The filter size
should be an odd integer limited from < 3 - 31>.
TIPS
Works best on short tailed types of noise such as Gaussian
noise. Keep the filter mask small to minimize blurring.
DIAGNOSTICS
Returns a pointer to the modified Image structure on suc-
cess. Returns a NULL pointer if the input Image datatype is
not CVIP_BYTE and can't be cast to CVIP_FLOAT.
EXAMPLE
#include <CVIPtoolkit.h>
#include <CVIPimage.h>
#include <CVIPdef.h>
#include <CVIPspfltr.h>
#include <CVIPconvert.h>
#include <CVIPview.h>
#define VIEWER "picture"
#define VIDEO_APP "SunVideo &"
void main()
{
Image *cvipImage;
IMAGE_FORMAT format;
char *inputfile,*outputfile;
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 a harmonic filter
operation with the mask size equal to 3 */
cvipImage = harmonic_filter(cvipImage,3);
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);
}
BUGS
None
AUTHOR
Copyright (C) 1992, 1996 SIUE - by Scott E. Umbaugh and John
A Creighton.