/* file bhidet.c */
#include "cips.h"
main(argc, argv)
int argc;
char *argv[];
{
char image_name[80], water_name[80];
int i, j;
short factor;
short **the_image, **out_image;
struct tiff_header_struct image_header1;
struct tiff_header_struct image_header2;
...
/* code to interpret the command line - not shown */
...
read_tiff_header(image_name, &image_header1);
read_tiff_header(water_name, &image_header2);
...
/* code to check that the two images are the same size -
not shown */
...
/* Allocate the two image arrays. */
the_image =
malloc(image_header1.image_length * sizeof(short *));
for(i=0; i<image_header1.image_length; i++){
the_image[i] =
malloc(image_header1.image_width * sizeof(short ));
if(the_image[i] == '\0'){
printf("\n\tmalloc of the_image[%d] failed", i);
exit(0);
} /* ends if */
} /* ends loop over i */
out_image =
malloc(image_header2.image_length * sizeof(short *));
for(i=0; i<image_header2.image_length; i++){
out_image[i] =
malloc(image_header2.image_width * sizeof(short ));
if(out_image[i] == '\0'){
printf("\n\tmalloc of out_image[%d] failed", i);
exit(0);
} /* ends if */
} /* ends loop over i */
/* Read the images; add the factor to the image per the
watermark image; write the resulting image */
bread_tiff_image(image_name, the_image);
bread_tiff_image(water_name, out_image);
for(i=0; i<image_header1.image_length; i++){
for(j=0; j<image_header1.image_width; j++){
if(out_image[i][j] != 0){
the_image[i][j] = the_image[i][j] + factor;
if(the_image[i][j] > GRAY_LEVELS)
the_image[i][j] = GRAY_LEVELS;
} /* ends if */
} /* ends loop over j */
} /* ends loop over i */
bwrite_tiff_image(image_name, the_image);
free_image_array(the_image, image_header1.image_length);
free_image_array(out_image, image_header2.image_length);
} /* ends main */
...
/***********************************************
*
* file bsub.c
*
*************************************************/
#include "cips.h"
main(argc, argv)
int argc;
char *argv[];
{
char min_name[80], sub_name[80];
int i, j;
short **the_image, **out_image;
struct tiff_header_struct image_header1;
struct tiff_header_struct image_header2;
...
/* code to read interpret the command line - not shown */
...
read_tiff_header(min_name, &image_header1); /* minuend image */
read_tiff_header(sub_name, &image_header2); /* subtrahend */
...
/* code to ensure image files are same size - not shown */
...
/* Allocate the two image arrays. */
the_image =
malloc(image_header1.image_length * sizeof(short *));
for(i=0; i<image_header1.image_length; i++){
the_image[i] =
malloc(image_header1.image_width * sizeof(short ));
if(the_image[i] == '\0'){
printf("\n\tmalloc of the_image[%d] failed", i);
exit(0);
} /* ends if */
} /* ends loop over i */
out_image =
malloc(image_header2.image_length * sizeof(short *));
for(i=0; i<image_header2.image_length; i++){
out_image[i] =
malloc(image_header2.image_width * sizeof(short ));
if(out_image[i] == '\0'){
printf("\n\tmalloc of out_image[%d] failed", i);
exit(0);
} /* ends if */
} /* ends loop over i */
/* Read the images; subtract one image from the other; write the
resulting image */
bread_tiff_image(min_name, the_image);
bread_tiff_image(sub_name, out_image);
for(i=0; i<image_header1.image_length; i++){
for(j=0; j<image_header1.image_width; j++){
the_image[i][j] = the_image[i][j] - out_image[i][j];
if(the_image[i][j] < 0)
the_image[i][j] = 0;
} /* ends loop over j */
} /* ends loop over i */
bwrite_tiff_image(min_name, the_image);
free_image_array(the_image, image_header1.image_length);
free_image_array(out_image, image_header2.image_length);
} /* ends main */
/* End of File */