|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 2994 (0xbb2)
Types: TextFile
Names: »cap.c++«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/image/vartools/cap.c++«
/*
This is the routines that take the pixels of an image and place an
upper or lower bound on them.
*/
#include <stream.h>
#include <stdio.h>
#include <string.h>
#include <double_image.h++>
#include <vartools.h++>
/*
This code places an upper bound on the values of the pixels.
If a pixel exceeds the bound it is set to the bound.
*/
double_image&
upper_bound2(double bound, double_image& input, FILE * output_file)
{
// create the image
double_image *output_pointer =
new double_image(CREATE,input.n_rows(),input.n_cols(),output_file);
double_image& output = *output_pointer;
// iterate through the images copying when it is a good idea
while(++input,++output)
{
double pixel = input();
output() = (pixel > bound) ? bound : pixel;
}
return output;
}
/*
This code places an lower bound on the values of the pixels.
If a pixel exceeds the bound it is set to the bound.
*/
double_image&
lower_bound2(double bound, double_image& input, FILE * output_file)
{
// create the image
double_image *output_pointer =
new double_image(CREATE,input.n_rows(),input.n_cols(),output_file);
double_image& output = *output_pointer;
// iterate through the images copying when it is a good idea
while(++input,++output)
{
double pixel = input();
output() = (pixel < bound) ? bound : pixel;
}
return output;
}
/*
This code is like upper_bound2 but with files (for C)
*/
void
upper_bound(double bound, FILE * input_file, FILE * output_file, char *comment)
{
// read in the input image
double_image input(READ,input_file);
// apply the upper bound to it and get the output
double_image& output = upper_bound2(bound,input,output_file);
// set up the comments
output.set_comments(comment,strlen(comment));
char *string = form("Applying Upper Bound of %e to image:\n",bound);
output.add_comment(string,strlen(string));
output.add_comment((char *) input.the_comments(),input.c_length());
// write the result to file
output.write();
}
/*
This code is like lower_bound2 but with files (for C)
*/
void
lower_bound(double bound, FILE * input_file, FILE * output_file, char *comment)
{
// read in the input image
double_image input(READ,input_file);
// apply the upper bound to it and get the output
double_image& output = lower_bound2(bound,input,output_file);
// set up the comments
output.set_comments(comment,strlen(comment));
char *string = form("Applying Lower Bound of %e to image:\n",bound);
output.add_comment(string,strlen(string));
output.add_comment((char *) input.the_comments(),input.c_length());
// write the result to file
output.write();
}
/*
Copyright (C) 1986, David Sher in the University of Rochester
Permission is granted to any individual or institution to use, copy, or
redistribute this software so long as it is not sold for profit, provided
this copyright notice is retained.
*/