## NAME

         threshold_segment - performs a binary threshold on an image

## SYNOPSIS

          #include "CVIPtools.h"
          #include "CVIPimage.h"
          #include "CVIPdef.h"
          #include <stdio.h>
          #include "threshold.h"

          Image *threshold_segment(Image  *inputImage,  unsigned  int
         threshval, CVIP_BOOLEAN thresh_inbyte)

          <inputImage> - pointer to Image structure
          <threshval> - threshold value
          <thresh_inbyte>
                   - CVIP_NO apply threshval directly to image data;
                   - CVIP_YES  threshval is CVIP_BYTE range; remap to
         image
                           data range before thresholding.

## PATH

         $CVIPHOME/SEGMENTATION/threshold.c

## DESCRIPTION

         This function performs a binary threshold on an input image.
         It  sets  pixels  of  value greater than <threshval> to 255;
         those less than or equal to <threshval>  are  set  to  zero.
         Each  band of a multi-band images is thresholded separately.
         If <thresh_inbyte> is 0, <threshval> is applied directly  to
         the  image  data.  If <thresh_inbyte> equals 1,  <threshval>
         is remapped to  its  corresponding  CVIP_BYTE  value  before
         thresholding according to the formula:

                        <threshval> x (max_val - min_val)
         <new_thresh> = --------------------------------- + min_val
                                      255

         where max_val and min_val are the maximum and minimum values
         found in the image.  This option is provided for consistancy
         with the method used to display histograms in  CVIPtools  --
         histograms  are  remapped to CVIP_BYTE range, 0 to 255. With
         this option the user can select a threshold  value  directly
         from the histogram.

## TYPES AND CONSTANTS

          None

## RETURN VALUES

         A thresholded image.

## BUGS

         None at this time

## 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;

          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 binary threshold
          on the input image with the threshval equal to 128 */
          cvipImage = (Image *)threshold_segment(cvipImage,128,
          CVIP_YES);
          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

         libsegment

## AUTHOR

         Copyright (C) 1995, 1996 SIUE - by Scott Umbaugh,  Kun  Luo,
         and Yansheng Wei.