NAME
gray_linear - performs linear gray level modification
SYNOPSIS
#include <math.h>
#include "CVIPimage.h"
Image *gray_linear(Image * inputImage, double start, double
end, double s_gray, double slope, int change, int band)
<inputImage> - pointer to an Image
<start> - initial gray level to modify
<end> - final gray level to modify
<s_gray> - new initial gray level
<slope> - slope of modifying line
<change> - 0=change out-of-range pixels to black
1=don't modify out-of-range pixel values
<band> - the band number to modify
PATH
$CVIPHOME/HISTOGRAM/graylevel_mod.c
DESCRIPTION
Performs linear gray level modification on a range of values
in an image. The user specifies a range of values to change
with <start> and <end>, the new gray level to apply at the
<start> value, and the function calculates a new value for
each subsequent gray value by applying <slope> to <s_gray>,
until <end> is reached. Slope can be positive, negative, or
zero. Those values not within the range <start>...<end> can
be set to zero or left unmodified.
The parameter band specifies which band to modify, which can
be a non-negative integeter (from 0 to no_of_bands -1) for a
specific band, or -1 representing all bands. If band is
equal to or greater than no_of_bands, the function will fail
and return a NULL pointer, since the required band doesn't
exist. Usually, the user is recommended to use -1 as the
simplest way to use the function.
TYPES AND CONSTANTS
None
RETURN VALUES
Pointer to a modified image
HISTORY
History information recorded: None
EXAMPLE
#include <CVIPtoolkit.h>
#include <CVIPimage.h>
#include <CVIPconvert.h>
#include <CVIPview.h>
#include "histogram.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 a mapping for pixels
ranging from 0 to 255 with the starting pixel being
0 and the slope of the mapping being 2. The mapping
works on all bands*/
cvipImage = gray_linear(cvipImage,0.0,255.0,0.0,2.0
,0, -1);
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
libhisto
AUTHOR
Copyright (C) 1996 SIUE - by Scott E. Umbaugh and Kun Luo.