NAME

     CVIPhalftone - converts a grayscale image to a binary image

SYNOPSIS

      #include <stdio.h>
      #include <math.h>
      #include <stdlib.h>
      #include "CVIPimage.h"
      #include "dithers.h"
      #include "CVIPhalftone.h"

     Image *CVIPhalftone(Image  *cvip_Image,  int  halftone,  int
     maxval,   float   fthreshval,   CVIP_BOOLEAN   retain_image,
     CVIP_BOOLEAN verbose)

      <cvip_Image> - pointer to input image
      <halftone> - indicates method used to convert  from  grays-
     cale  to  binary.  (one  of  QT_FS,  QT_THRESH,  QT_DITHER8,
     QT_CLUSTER3, QT_CLUSTER4, QT_CLUSTER8)
      <maxval> - specifies maximum range of input image  (usually
     255)
      <fthreshval> - threshold value (for QT_THRESH) between [0.0
     ... 1.0].
      <retain_image> - retain image after  writing  (CVIP_YES  or
     CVIP_NO)?
      <verbose> - shall I be verbose (CVIP_YES or CVIP_NO)?

PATH

     $CVIPHOME/CONVERSION/halftone.c

DESCRIPTION

     Quantizes a grayscale image to two levels (a binary  image).
     Possible  methods  of quantization are: (1) QT_FS -- Floyd -
     Steinberg  error  diffusion, (2) QT_THRESH -- simple  thres-
     holding,  (3)  QT_DITHER8  -- Bayer's ordered dither and (4)
     QT_CLUSTER3, QT_CLUSTER4 and QT_CLUSTER8 -- three  different
     sizes  of  45-degree   clustered-dot dither. Floyd-Steinberg
     will almost always  give  the  best looking results.

TYPES AND CONSTANTS


RETURN VALUES

     Pointer to a binary image

HISTORY

     History information recorded: None

EXAMPLE

      include <CVIPtoolkit.h>
      #include <CVIPimage.h>
      #include <CVIPdef.h>
      #include <CVIPconvert.h>
      #include <CVIPview.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 gray level to binary
      conversion using the QT_THRESH method with threshold
      value equal to 0.5 */
      cvipImage = CVIPhalftone(cvipImage,QT_THRESH,255,0.5,
      CVIP_NO,CVIP_NO);
      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

     libconverter

NOTES

     See Jef Poskanzer's "PBMPLUS"

AUTHOR

     Copyright (C) 1996 SIUE -  by  Scott  E.  Umbaugh  and  Greg
     Hance.