## NAME

         btc3_compress - a Block Truncation Coding (BTC) scheme using
         predictive 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 btc3_compress(Image  *inputImage,  char  *filename,  int
         blocksize)

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

         Image *btc3_decompress(char *filename)

          <filename> - character array

## PATH

         $CVIPHOME/COMPRESSION/m_btc.c

## DESCRIPTION

         Predictive multilevel BTC is another form of  block  trunca-
         tion  coding  (see  btc2)  that improves the resulting image
         fidelity compared to the  use  of  the  standard  BTC,  when
         applied to visually complex images. The improvement with the
         predictive method comes  from  the  use  of  interblock  and
         intrablock prediction and vector encoding/decoding, in place
         of the conventional two-level moment-preserving quantizer.

         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

         btc3_compress: 0 on success, -1 on failure

         btc3_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 (btc3_compress(cvipImage,outputfile,blocksize)<0) {
              error_CVIP("btc3_compress", "compression failed");
              exit(1);
            } else if ((outImage=btc3_decompress(outputfile))==NULL){
              error_CVIP("btc3_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(),
         btc2_compress(), btc2_decompress()

## AUTHOR

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