## NAME

         dct_transform - performs Discrete Cosine Transform

## SYNOPSIS

          #include "CVIPtools.h"
          #include "CVIPtoolkit.h"
          #include "CVIPtransform.h"

         Image* dct_transform(Image* inputImage, int blocksize)

          <inputImage> - pointer to an Image structure
          <blocksize> - block size

         Image* idct_transform(Image* inputImage, int blocksize)

          <inputImage> - pointer to an Image structure
          <blocksize> - block size

## PATH

         $CVIPHOME/TRANSFORMS/dct.c

## DESCRIPTION

         dct_transform transforms an image from the  spatial  to  the
         frequency  domain  in  a  blockwise fashion using a discrete
         cosine transform.

         idct_transform   performs   the   inverse   2D-dct_transform
         transform.

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         A pointer to an image structure with transformed image  data
         in VIP format

## HISTORY

         History information  recorded:  Discrete  Cosine  Transform.
         Blocksize: #

## 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;
          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 dct_transform on the input
          image with block size equal to 8 */
          cvipImage = dct_transform(cvipImage, 8);
          print_CVIP("\n\t\tEnter the Output File Name:  ");
          outputfile = getString_CVIP();
          view_Image(cvipImage,outputfile);
          /*  note the format is VIP */
          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 performs a inverse dct_transform
          on the input image with block size equal to 8 */
          cvipImage = idct_transform(cvipImage, 8);
          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

         libtransform

## AUTHOR

         Copyright (C) 1996 SIUE - by Scott E.  Umbaugh  and  Jianxin
         Tan.