NAME

     btc2_compress, btc2_decompress - a Block  Truncation  Coding
     (BTC) scheme using multilevel coding

SYNOPSIS

      #include "CVIPtoolkit.h"
      #include "CVIPconvert.h"
      #include "CVIPdef.h"
      #include "CVIPimage.h"
      #include "CVIPhisto.h"
      #include <sys/types.h>
      #include <sys/stat.h>

     int btc2_compress(Image  *inputImage,  char  *filename,  int
     blocksize)

      <inputImage> - pointer to an Image structure
      <filename> - character array
      <blocksize> - blocksize

     Image* btc2_decompress(char *filename)

      <filename> - character array

PATH

     $CVIPHOME/COMPRESSION/m_btc.c

DESCRIPTION

     Multilevel BTC is a form of  block  truncation  coding  that
     greatly  improves  the  resulting image fidelity compared to
     the use of the standard BTC, when applied to  visually  com-
     plex  images. The improvement comes from the use of a minmax
     error criterion  in  place  of  the  conventional  two-level
     moment-preserving quantizer. This approach to implementation
     uses block quantization map encoding and decoding.

     The function code was developed from "Multilevel Block Trun-
     cation  Coding  Using  a  Minimax  Error Criterion for High-
     Fidelity Compression of Digital Images.", Yiyan Wu and David
     C.  Coll, IEEE TRANSACTIONS ON COMMUNICATIONS. VOL.41, NO.8,
     AUGUST 1993

TYPES AND CONSTANTS

     None

RETURN VALUES

     btc2_compress: 0 on success, -1 on failure

     btc2_decompression:  an  uncompressed   image   pointer   on
     success,a NULL pointer on failure

HISTORY

     History information recorded: None

EXAMPLE

      #include <CVIPtoolkit.h>
      #include <CVIPimage.h>
      #include <CVIPconvert.h>
      #include <CVIPdef.h>
      #include <CVIPhisto.h>
      #include <CVIPcompress.h>

      void main() {
        Image *cvipImage, *outImage;
        IMAGE_FORMAT format;
        char *inputfile, *outputfile;
        int blocksize;

        print_CVIP("\n\t\tEnter the Input File Name:  ");
        inputfile =(char *) getString_CVIP();

        cvipImage = read_Image(inputfile, 1);
        view_Image(cvipImage, inputfile);

        print_CVIP("\n\t\tEnter the block size:");
        blocksize = getInt_CVIP(10, 0, 64);
        print_CVIP("\n\t\tEnter the Compressed File Name:");
        outputfile =(char *) getString_CVIP();

        if (btc2_compress(cvipImage,outputfile,blocksize)<0) {
          error_CVIP("btc2_compress", "compression failed");
          exit(1);
        } else if ((outImage=btc2_decompress(outputfile))==NULL){
          error_CVIP("btc2_decompress", "decompression failed");
          exit(1);
        } else view_Image(outImage, outputfile);

        free(inputfile);
        free(outputfile);
      }

BUGS

     None at this time

SEE ALSO

     libcompress,        btc_compress(),        btc_decompress(),
     btc3_compress(), btc3_decompress()

AUTHOR

     Copyright (C) 1996 SIUE - by Scott  Umbaugh,  Zhen  Li,  and
     Hong Niu.