NAME
median_cut_segment - function to map 24-bits-per-pixel
images to 2-bits-per-pixel
SYNOPSIS
#include "CVIPtoolkit.h"
#include "CVIPdef.h"
#include "median_cut.h"
Image *median_cut_segment(Image *imgP, int newcolors,
CVIP_BOOLEAN is_bg, Color bg)
<impP> - pointer to Image structure
<newcolors> - desired number of colors
<is_bg> - is background color?
<bg> - background color
PATH
$CVIPHOME/SEGMENTATION/median_cut.c
DESCRIPTION
This function is usually used in conjunction with the Prin-
cipal Components Transform (PCT) in segmenting color images.
It performs data compression from 24 bits-per-pixel to an
average of 2 bits-per-pixel. Median cut attempts to make a
histogram of the original image without clustering. New
colormaps are generated iteratively until at most 15 colors
have been chosen. When is_bg is CVIP_YES, the background
color specified in "bg" is not considered in the median_cut
process.
TYPES AND CONSTANTS
RETURN VALUES
An Image pointer upon success; a NULL pointer upon failure
EXAMPLE
#include "CVIPtoolkit.h"
#include "CVIPconvert.h"
#include "CVIPcolor.h"
#include "CVIPdef.h"
#include "median_cut.h"
void main()
{
Image *cvipImage;
IMAGE_FORMAT format;
char *inputfile, *outputfile;
unsigned newcolors;
Color bg = {0, 0, 0};
setDisplay_Image("picture", "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);
print_CVIP("0lease enter the number of desired colors: ");
newcolors = getUInt_CVIP(10, 2, 1000);
cvipImage = median_cut_segment(cvipImage, newcolors,
CVIP_NO, bg);
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(inputfile);
free(outputfile);
}
BUGS
Sometimes the function does't work properly when the bg
color is specified.
SEE ALSO
libsegment
AUTHOR
Copyright (C) 1995 SIUE - by Scott Umbaugh and Greg Hance.