## NAME

         bit_compress, bit_decompress, bitplane_sep -  Performs  bit-
         plane runlength coding

## SYNOPSIS

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

         int bit_compress(Image  *inputImage,  char  *filename,  byte
         sect )

          <inputImage> - pointer to the image
          <filename> - pointer to a character array
          <sect> - bitmask of planes to retain

         Image *bit_decompress(char *filename)

          <filename> - pointer to a character array

         Image *bit_planeadd(char *filename)

          <filename> - pointer to a character array

         Image *bitplane_sep(Image *input_Image, char *string)

          <input_Image> - pointer to an Image
          <string> - string containing bits to retain (7,6,5,...,0)

## PATH

         $CVIPHOME/COMPRESSION/bitplane_RLC.c

## DESCRIPTION

         bit_compress  takes  three  parameters,  the   input   Image
         pointer,  the  filename  to  store the encoded data, and the
         bits to retain. This algorithm decomposes  the  input  image
         into  eight binary bitplanes each corressponding to each bit
         position in an eight bit binary. Then each bitplane is  run-
         length  coded separately and written into an individual file
         name derived from the input filename. The  user  is  advised
         not  to  provide  the extension for the filename because the
         program automaticaly appends suitable extension with numbers
         to identify the bitplane files.

         bit_decompress takes a pointer  to  the  encoded  data  file
         name,   and  returns  a  pointer  to the decompressed image.
         Since there are eight files with the  same  name  with  dif-
         ferent  extension(each  file corresponds to a bitplane), the
         program automatically derives the extension and decodes each
         file  sequentialy.  So, the user is advised not to enter the
         extension. Even the user enters a wrong extension  the  pro-
         gram  takes care of it by appending the proper extension. It
         generates seven images and returns the pointer to the  eigth
         image.  Each  image corresponds to the one of the eight bit-
         plane of the originalimage.

         bit_planeadd takes a pointer  to  the  character  array  and
         returns pointer to the image. The character array represents
         the filename to be decoded(without any extension). The  same
         explainations  for  no  extension  as discussed in the above
         paragraph  applies  here  too.  The  operation  is  same  as
         bit_decompress except it allows the user to add any combina-
         tion of bitplanes together and display the resultant  image.
         The user is advised not to add the same bitplane twice as it
         makes no sense.  It returns the  pointer  to  the  resultant
         image.

## TYPES AND CONSTANTS

## RETURN VALUES

         bit_compress: 0 on success, -1 on failure

         bit_decompress, bit_planeadd: a valid Image pointer on  suc-
         cess, a NULL pointer on failure

## HISTORY

         History information recorded: None

## DIAGNOSTICS

         The Bit plane Runlength coding and  decoding  algorithm  was
         designed  to  work  only  on  monochrome image(.pgm).  Eight
         files are derived from the filename passed  in  the  command
         line  or entered by the user, by appending proper extension.
         So, the user has to enter the filename without any extension
         wherever he or she needs to enter the filename.

## EXAMPLE

          #include <CVIPtoolkit.h>
          #include <CVIPimage.h>
          #include <CVIPdef.h>
          #include <CVIPconvert.h>
          #include <CVIPview.h>
          #include "bitplane_RLC.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;

          (void) 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 bit plane run length
          coding on the inputnput image  retaining only the most
          significant bit and the data is stored in "file1" */
          bit_compress(cvipImage,"file1",128);
          /* the following call performs the bit plane run length
          decoding of the input image */
          cvipImage=bit_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

## AUTHOR

         Muthu kumar, Southern Illinois University at Edwardsville

         Copyright (C) 1995 SIUE - by Scott Umbaugh and Muthu kumar.