#include <stdlib.h> #include <stdio.h> #include "basicImage.c" /* Transform image pixels */ void linearTransform( image img, int low, int high ) { int r, c, p ; for ( r=0; r<img.nrows; r++ ) for ( c=0; c<img.ncols; c++ ) { p = getPixel( img, r, c ) ; if ( p<low ) p = 0; else if ( p>high ) p = 255; else p = (255*(p-low))/(high-low); setPixel( img, r, c, (unsigned char)p ); } } int main ( int argc, char* argv[] ) { image img; int low, high; if ( argc != 5 ) { printf( "stretch oldImage newImage low high\n" ); exit( EXIT_FAILURE ); } low = atoi( argv[3] ); high = atoi( argv[4] ); /* read in the image */ readPGMimage( &img, argv[1] ); /* transform the image */ linearTransform( img, low, high ); /* write the image to disk and free memory */ writePGMimage( img, argv[2] ); freeImage( &img ); }
Comments: