## NAME

         fft_phase - extract phase of fft

## SYNOPSIS

         Image * fft_phase(Image * fftImage, int remap_norm, float k)

          <fftImage> - Pointer to a complex image structure
          <remap_norm> - 0 = remaps the phase data and returns
                             a CVIP_BYTE image
                         1 = normalizes the magnitude, using value
                             of k, returns a complex image
          <k> - constant to normalize the magnitude

## PATH

         $CVIPHOME/TRANSFORMS/fft_phase.c

## DESCRIPTION

         This function performs two types of  operations:   normalize
         magnitude by setting
                          REAL = k*cos(phase_angle)
                          IMAG = k*sin(phase_angle)
         where k is a constant, and remaps  the  phase  data  into  a
         CVIP_BYTE image:
                          phase = arctan(IMAG/REAL)

         Phase data are values between 0 -- 2*PI, values between PI/4
         --  5*PI/4  are remapped to 255 -- 0; values between -3*PI/4
         -- PI/4 are remapped to 0 -- 255.

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         Pointer to a complex or CVIP_BYTE image

## HISTORY

         History information recorded: None

## EXAMPLE

          #include <CVIPtoolkit.h>
          #include <CVIPimage.h>
          #include <CVIPconvert.h>
          #include <CVIPview.h>
          #include <CVIPtransform.h>
          #include <math.h>
          #include <sys/file.h>
          #include <float.h>
          #include <sys/types.h>
          #include <sys/uio.h>
          #define VIEWER "picture"
          #define VIDEO_APP "SunVideo &"
          void main()
          {
          Image *cvipImage,*cvipImage1;
          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);
          cvipImage = fft_transform(cvipImage,256);
          print_CVIP("\n\t\tEnter the Output File Name:  ");
          outputfile = getString_CVIP();
          view_Image(cvipImage,outputfile);
          /* VIP format because of the complex image */
          write_Image(cvipImage,outputfile,CVIP_NO,CVIP_NO,VIP,1);
          free(outputfile);
          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 extracts the phase of the
          transformed complex image,remaps the phase
          between 0 and 255 and diplays the CVIP_BYTE
          image.Since we are not normalising the magnitude,
          we use k=-1 */
          cvipImage = fft_phase(cvipImage,0,-1);
          print_CVIP("\n\t\tEnter the Output File Name:  ");
          outputfile = getString_CVIP();
          view_Image(cvipImage,outputfile);
          write_Image(cvipImage,outputfile,CVIP_NO,CVIP_NO,PGM,1);
          free(outputfile);
          }

## SEE ALSO

         libtransform

## AUTHOR

         Copyright (C) 1996 SIUE - by Scott E.  Umbaugh  and  Wenxing
         Li.