## NAME

         zon2_compress, zon2_decompress - compress and uncompress  an
         image using zonal coding

## SYNOPSIS

         int zon2_compress(Image * inputImage,  char  *filename,  int
         block_size, int choice, int mask_type, float compress_ratio)

          <inputImage> - pointer to an image
          <filename> - pointer to a character array
          <block_size> - a power of 2; kernel size is <block_size>^2
          <choice> - transform to use:
                         1=FFT 2=DCT 3=Walsh 4=Hadamard
          <mask_type> - type of kernel to use:
                         1=triangle 2=square 3=circle
          <compress_ratio> - compression ratio, from 1.0 (min)
                             to (block_size*block_size/4) (max)
                             for all kinds of transforms

         Image * zon2_decompress(char * filename)

          <filename> - pointer to a character array

## PATH

         $CVIPHOME/COMPRESSION/zonal2.c

## DESCRIPTION

         The program  consists  of  two  parts:  zon2_compress()  and
         zon2_decompress().    zon2_compress()   first   performs   a
         selected transform  on  the  input  image,  forms  a  kernel
         according    to    arguments   block_size,   mask_type   and
         compress_ratio, then uses the kernel to sample the transform
         of  the  input  image,  maps  the  result  to CVIP_BYTE data
         (unsigned char) and stores them in the file filename.

         zon2_decompress()   performs   the   inverse   process    of
         zon2_compress().

         The difference between zon_compress() and zon2_compress() is
         that  in  zon_compress(),  the DC component is included into
         local remapping; while it is not included in zon2_compress()
         coding.

## TYPES AND CONSTANTS

         None

## RETURN VALUES

         zon2_compress: 0 on success, -1 on failure

         zon2_decompression: an uncompressed image  pointer  on  suc-
         cess, a NULL pointer on failure

## HISTORY

         History information recorded: None

## DIAGNOSTICS

         The input image is a real image, it can be multi_band and of
         any    of   these   data   types:   CVIP_BYTE,   CVIP_SHORT,
         CVIP_INTEGER, CVIP_FLOAT or CVIP_DOUBLE.

## EXAMPLE

          #include <CVIPtoolkit.h>
          #include <CVIPimage.h>
          #include <CVIPdef.h>
          #include <CVIPconvert.h>
          #include <CVIPview.h>
          #include <sys/types.h>
          #include <sys/stat.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 the zonal coding of the
          input image with no dc quantisation */
          zon2_compress(cvipImage,"file1",32,2,1,2);
          /* the following call performs the zonal decoding of the
          "file1" */
          cvipImage=zon2_decompress("file1");
          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

         libcompress, zon_compress

## AUTHOR

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