X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=tools%2FpjHinterp.cpp;h=0a49c6722cdb6294741ce707bee3153cc3748df2;hp=2f0b9dfeecd05537dfdf180f0cb9d2ef46abf90b;hb=f13a8c004b8f182b42d9e4df2bcd7c7f030bf1ad;hpb=b8684b11cc5a573c333bb5ddee682b323005a91a diff --git a/tools/pjHinterp.cpp b/tools/pjHinterp.cpp index 2f0b9df..0a49c67 100644 --- a/tools/pjHinterp.cpp +++ b/tools/pjHinterp.cpp @@ -1,29 +1,27 @@ /***************************************************************************** -* ** FILE IDENTIFICATION -* ** -* ** Name: phm2helix.cpp -* ** Purpose: Take projections of a phantom object -* ** Programmer: Ian Kay -* ** Date Started: Aug 2001 -* ** -* ** This is part of the CTSim program -* ** Copyright (C) 1983-2000 Kevin Rosenberg -* ** -* ** $Id: pjHinterp.cpp,v 1.2 2002/05/01 14:33:59 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 -* ** published by the Free Software Foundation. -* ** -* ** This program is distributed in the hope that it will be useful, -* ** but WITHOUT ANY WARRANTY; without even the implied warranty of -* ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* ** GNU General Public License for more details. -* ** -* ** You should have received a copy of the GNU General Public License -* ** along with this program; if not, write to the Free Software -* ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -* ******************************************************************************/ + ** FILE IDENTIFICATION + ** + ** Name: phm2helix.cpp + ** Purpose: Take projections of a phantom object + ** Programmer: Ian Kay + ** Date Started: Aug 2001 + ** + ** This is part of the CTSim program + ** Copyright (C) 1983-2009 Kevin Rosenberg + ** + ** 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 + ** published by the Free Software Foundation. + ** + ** This program is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with this program; if not, write to the Free Software + ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ******************************************************************************/ #include "ct.h" #include "timer.h" @@ -34,34 +32,30 @@ enum { O_INTERPVIEW, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION}; static struct option my_options[] = { - {"interpview", 1, 0, O_INTERPVIEW}, - {"trace", 1, 0, O_TRACE}, - {"debug", 0, 0, O_DEBUG}, - {"verbose", 0, 0, O_VERBOSE}, - {"help", 0, 0, O_HELP}, - {"version", 0, 0, O_VERSION}, - {0, 0, 0, 0} + {"interpview", 1, 0, O_INTERPVIEW}, + {"trace", 1, 0, O_TRACE}, + {"debug", 0, 0, O_DEBUG}, + {"verbose", 0, 0, O_VERBOSE}, + {"help", 0, 0, O_HELP}, + {"version", 0, 0, O_VERSION}, + {0, 0, 0, 0} }; -static const char* g_szIdStr = "$Id: pjHinterp.cpp,v 1.2 2002/05/01 14:33:59 kevin Exp $"; +static const char* g_szIdStr = "$Id$"; void pjHinterp_usage ( const char *program ) { - std::cout << "usage: " << fileBasename(program) << " raysum-file interp-raysum-file [OPTIONS]" << std::endl; + std::cout << "usage: " << fileBasename(program) << " projection-file interp-projection-file [OPTIONS]" << std::endl; std::cout << "Interpolation of helical data in raw data space" << std::endl; - std::cout << " raysum-file Input raysum file" << std::endl; - std::cout << " interp-file Output interpolated raysum file " << std::endl; - std::cout << " --trace Set tracing to level" << std::endl; - std::cout << " none No tracing (default)" << std::endl; - std::cout << " console Text level tracing" << std::endl; - std::cout << " phantom Trace phantom" << std::endl; - std::cout << " proj Trace allrays" << std::endl; - std::cout << " plot Trace plotting" << std::endl; - std::cout << " clipping Trace clipping" << std::endl; - std::cout << " --verbose Turn on verbose mode" << std::endl; - std::cout << " --debug Turn on debug mode" << std::endl; - std::cout << " --version Print version" << std::endl; - std::cout << " --help Print this help message" << std::endl; + std::cout << " projection-file Input projection file" << std::endl; + std::cout << " interp-file Output interpolated projection file " << std::endl; + std::cout << " --trace Set tracing to level" << std::endl; + std::cout << " none No tracing (default)" << std::endl; + std::cout << " console Text level tracing" << std::endl; + std::cout << " --verbose Turn on verbose mode" << std::endl; + std::cout << " --debug Turn on debug mode" << std::endl; + std::cout << " --version Print version" << std::endl; + std::cout << " --help Print this help message" << std::endl; } @@ -75,23 +69,23 @@ pjHinterp_main(int argc, char * const argv[]) bool bOptDebug = 1; int optTrace = Trace::TRACE_NONE; char *endptr = NULL; - char *endstr; + char *endstr; int opt_interpview=-1; - + while (1) { int c = getopt_long(argc, argv, "", my_options, NULL); - + if (c == -1) break; - + switch (c) { case O_INTERPVIEW: opt_interpview = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); - if (endptr != endstr) { - std::cerr << "Error setting --interpview to %s" << optarg << std::endl; - pjHinterp_usage(argv[0]); - return(1); + if (endptr != endstr) { + std::cerr << "Error setting --interpview to %s" << optarg << std::endl; + pjHinterp_usage(argv[0]); + return(1); } break; case O_VERBOSE: @@ -101,23 +95,23 @@ pjHinterp_main(int argc, char * const argv[]) bOptDebug = true; break; case O_TRACE: - if ((optTrace = Trace::convertTraceNameToID(optarg)) - == Trace::TRACE_INVALID) { - pjHinterp_usage(argv[0]); - return (1); + if ((optTrace = Trace::convertTraceNameToID(optarg)) + == Trace::TRACE_INVALID) { + pjHinterp_usage(argv[0]); + return (1); } break; case O_VERSION: #ifdef VERSION - std::cout << "Version " << VERSION << std::endl << - g_szIdStr << std::endl; + std::cout << "Version " << VERSION << std::endl << + g_szIdStr << std::endl; #else std::cout << "Unknown version number" << std::endl; #endif return (0); - + case O_HELP: - case '?': + case '?': pjHinterp_usage(argv[0]); return (0); default: @@ -125,33 +119,33 @@ pjHinterp_main(int argc, char * const argv[]) return (1); } // end switch } // end while - + if (optind + 2 != argc) { pjHinterp_usage(argv[0]); return (1); } - + pszProjFilename = argv[optind]; - + pszInterpFilename = argv[optind + 1]; - + Projections projections; - if ( projections.read(pszProjFilename) != true ){ - std::cerr << "Error reading input file " << pszProjFilename << std::endl; + if ( projections.read(pszProjFilename) != true ){ + std::cerr << "Error reading input file " << pszProjFilename << std::endl; return (1); } - if (bOptVerbose) { - ostringstream os; + if (bOptVerbose) { + std::ostringstream os; projections.printScanInfo(os); std::cout << os.str(); } - + int status = projections.Helical180LI(opt_interpview); if ( status != 0 ) return (1); status = projections.HalfScanFeather(); if ( status != 0 ) return (1); projections.write( pszInterpFilename ); - + return (0); }