NAME
btc_compress, btc_decompress - 2 level Block Truncation
Coding (BTC) scheme
SYNOPSIS
#include <stdio.h>
#include <string.h>
#include "CVIPdef.h"
#include "CVIPimage.h"
#include "CVIPconvert.h"
#include "block_trunc_coding.h"
#include <sys/types.h>
#include <sys/stat.h>
int btc_compress(Image *inputImage, char *filename, int
blocksize)
<inputImage> - pointer to an Image structure
<filename> - character array
<blocksize> - blocksize
Image* btc_decompress(char *filename)
<filename> - character array
PATH
$CVIPHOME/COMPRESSION/block_trunc_coding.c
DESCRIPTION
The image is first divided into blocks, and then the digital
representation of each pixel in a block is truncated to one
bit by thresholding and moment preserving selection of
binary levels.
The function code was developed from Chapter 5 Section 6
"Block Truncation Compression" (P176 - P181) in "Digital
Picture Processing" Volume1, second edition, Azriel Rosen-
feld and Avinash C. KakYiyan. Academic Press, INC. San
Diego, CA. 1982
TYPES AND CONSTANTS
None
RETURN VALUES
btc_compress: 0 on success, -1 on failure
btc_decompression: an uncompressed image pointer on
success,a NULL pointer on failure
HISTORY
History information recorded: None
EXAMPLE
#include "CVIPdef.h"
#include "CVIPimage.h"
#include "block_trunc_coding.h"
#include "CVIPconvert.h"
void main() {
Image *cvipImage, *outImage;
IMAGE_FORMAT format;
char *inputfile, *outputfile;
int blocksize;
setDisplay_Image("picture", "Default");
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 (btc_compress(cvipImage,outputfile,blocksize)<0) {
error_CVIP("btc_compress", "compression failed");
exit(1);
} else if ((outImage=btc_decompress(outputfile))==NULL){
error_CVIP("btc_decompress", "decompression failed");
exit(1);
} else view_Image(outImage, outputfile);
free(inputfile);
free(outputfile);
}
BUGS
For gray level images, the compression ratios are not calcu-
lated correctly.
SEE ALSO
libcompress, btc2_compress(), btc2_decompress(),
btc3_compress(), btc3_decompress()
AUTHOR
Copyright (C) 1996 SIUE - by Scott Umbaugh, Kui Cai.