X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=tools%2Fif1.cpp;h=9e4c1694f5a70746f853633402ab5ca14685911e;hp=dcd1dc1a3ac25eb0144d11a7ac7041610477aa86;hb=5c6b29ab4885308cc3381af6e0a68f4804956d2e;hpb=c24c1c0721df40e77822ad2b9ec01a944012ff42 diff --git a/tools/if1.cpp b/tools/if1.cpp index dcd1dc1..9e4c169 100644 --- a/tools/if1.cpp +++ b/tools/if1.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: if1.cpp,v 1.2 2000/12/23 18:12:35 kevin Exp $ +** $Id: if1.cpp,v 1.3 2000/12/29 15:45:06 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -46,7 +46,7 @@ static struct option my_options[] = {0, 0, 0, 0} }; -static const char* g_szIdStr = "$Id: if1.cpp,v 1.2 2000/12/23 18:12:35 kevin Exp $"; +static const char* g_szIdStr = "$Id: if1.cpp,v 1.3 2000/12/29 15:45:06 kevin Exp $"; void if1_usage (const char *program) @@ -67,8 +67,6 @@ if1_usage (const char *program) int if1_main (int argc, char *const argv[]) { - ImageFile *im_in; - ImageFile *im_out; char *in_file; char *out_file; int opt_verbose = 0; @@ -131,61 +129,39 @@ if1_main (int argc, char *const argv[]) in_file = argv[optind]; out_file = argv[optind + 1]; - std::string histString; if (opt_invert || opt_log || opt_exp || opt_sqr || opt_sqrt) { - int ix, iy; - - im_in = new ImageFile (); - im_in->fileRead (in_file); - int nx = im_in->nx(); - int ny = im_in->ny(); - im_out = new ImageFile (nx, ny); - - ImageFileArray vIn = im_in->getArray(); - ImageFileArray vOut = im_out->getArray(); - - if (opt_invert) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = - vIn[ix][iy]; + ImageFile im_in; + im_in.fileRead (in_file); + int nx = im_in.nx(); + int ny = im_in.ny(); + ImageFile im_out (nx, ny); + + if (opt_invert) { + im_in.invertPixelValues (im_out); histString = "Invert transformation"; } - if (opt_log) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - if (vIn[ix][iy] < 0) - vOut[ix][iy] = 0; - else - vOut[ix][iy] = log (vIn[ix][iy]); + if (opt_log) { + im_in.log (im_out); histString = "Logrithmic transformation"; } - if (opt_exp) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = exp (vIn[ix][iy]); + if (opt_exp) { + im_in.exp (im_out); histString = "Exponential transformation"; } - if (opt_sqr) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = vIn[ix][iy] * vIn[ix][iy]; + if (opt_sqr) { + im_in.square (im_out); histString = "Square transformation"; } - if (opt_sqrt) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - if (vIn[ix][iy] < 0) - vOut[ix][iy] = sqrt (-vIn[ix][iy]); - else - vOut[ix][iy] = sqrt (vIn[ix][iy]); + if (opt_sqrt) { + im_in.sqrt (im_out); histString = "Square root transformation"; } - im_out->labelsCopy (*im_in); - im_out->labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str()); - im_out->fileWrite (out_file); + im_out.labelsCopy (im_in); + im_out.labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str()); + im_out.fileWrite (out_file); } return (0);