## NAME

         pct_median_segment -  a  segmentation  algorithm  for  color
         images based on PCT and median_cut

## SYNOPSIS

          #include "CVIPtoolkit.h"
          #include "CVIPdef.h"
          #include "CVIPsegment.h"

         Image  *pct_median_segment(Image *imgP, unsigned colors)

          <impP> - pointer to Image structure
          <colors> - desired number of colors

## PATH

         $CVIPHOME/SEGMENTATION/pct_median.c

## DESCRIPTION

         This function is based on the Principal Components Transform
         (PCT)  and  median_cut  algorithms.  The PCT aligns the main
         axis along the maximum variance path in  the  data  set,  so
         that  most  of  the color information lies along a principal
         axis.  Following that, the median split part  of  the  algo-
         rithm  divides  the image into the desired number of colors.
         Finally, the inverse PCT will transform the resulting  image
         back to the RGB color space.

         This algorithm applies to color image only. However, it  can
         also  be used on grayscale images through the extract_band()
         and assemble_bands() functions.

## TYPES AND CONSTANTS

## RETURN VALUES

         An Image pointer upon success; a NULL pointer upon failure

## EXAMPLE

          #include "CVIPtoolkit.h"
          #include "CVIPdef.h"
          #include "CVIPsegment.h"

          void main()
          {
            Image  *cvipImage;
            IMAGE_FORMAT   format;
            char  *inputfile, *outputfile;
            unsigned newcolors;

            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("\nEnter the number of desired colors:");
            newcolors = getUInt_CVIP(10, 2, 1000);
            cvipImage = pct_median_segment(cvipImage, newcolors);
            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

         NONE

## SEE ALSO

         libsegment, median_cut_segment, pct

## AUTHOR

         Copyright (C) 1996 SIUE - by Scott Umbaugh and Yansheng Wei.