## NAME

         simple_wiener - performs a practical wiener filter

## SYNOPSIS

          #include "CVIPimage.h"
          #include "CVIPtransform.h"
          #include "CVIPxformfilter.h"
          #include "CVIPdef.h"
          #include "CVIParithlogic.h"

         Image *simple_wiener(Image *degr, Image *degr_fn, float k)

          <degr> - pointer to the degraded image
          <degr_fn> - pointer to the degradation function
          <k>    - a constant

## PATH

         $CVIPHOME/XFORMFILTER/InverseFilter.c

## DESCRIPTION

                Performs the operations needed to  perform  a  simple
         Wiener Filter.
                Denoting the degraded image by G(u,v), and using
                H(u,v) for the degradation function Image, this func-
         tion calculates
                                                      2
                                              |H(u,v)|
                  F(u,v) = G(u,v)    *     --------------
                                                   2
                                           |H(u,v)|   + k

           Variables Passed:
                Image *degr - Contains the degraded image.
                Image *degr - Contains the degradation function.
                float k - constant.

         This function performs a wiener filter, (a frequency  domain
         filter).   See  any  image  processing  textbook for info on
         Wiener Filters.  The function does its  own  memory  manage-
         ment,  freeing  everything passed to it, so if you need your
         images intact, make a copy of them before calling this func-
         tion.

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         A pointer to the restored Image

## HISTORY

         History information recorded:
           - function name (SIMPLE_WIENER)
           - parameter #1 = the value of k (float).

## 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,*cvipImage1;
          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 creates a gaussian mask of size
          3  * 3 */
          cvipImage1 = (Image *)h_image(3,3,3);
          /* the following call performs the practical wiener filter
          on the input image with the gaussian mask and the
          constant k equal to 1 */
          cvipImage=(Image *)simple_wiener(cvipImage,cvipImage1,1.0);
          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  Arve
         Kjoelen.