** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsimtext.cpp,v 1.20 2001/09/24 09:40:42 kevin Exp $
+** $Id: ctsimtext.cpp,v 1.21 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
// If linked to ctsimtext, but executed as another name, eg pjrec, then program will use that
// linked name as name of function.
-static const char* const g_szIdStr = "$Id: ctsimtext.cpp,v 1.20 2001/09/24 09:40:42 kevin Exp $";
+static const char* const g_szIdStr = "$Id: ctsimtext.cpp,v 1.21 2002/05/01 14:33:59 kevin Exp $";
static const char* const s_szProgramName = "ctsimtext";
static const char* const s_szProgramName2 = "ctsimtext.exe";
static const char* const s_szProgramName3 = "ctsimtext-lam";
std::cout << " if2 Dual image file conversions\n";
std::cout << " phm2if Convert a geometric phantom into an imagefile\n";
std::cout << " phm2pj Take projections of a phantom object\n";
- std::cout << " phm2helix Take projections of a phantom object\n";
+ std::cout << " phm2helix Take projections of a phantom object\n";
std::cout << " pjinfo Projection file information\n";
std::cout << " pj2if Convert an projection file into an imagefile\n";
- std::cout << " pjHinterp Interpolate helical projections of a phantom object\n";
+ std::cout << " pjHinterp Interpolate helical projections of a phantom object\n";
std::cout << " pjrec Projection reconstruction\n";
std::cout << " quit Quits shell\n";
std::cout << "All functions accept --help as parameter for online help\n\n";
return phm2if_main (argc, argv);
else if (strcasecmp (pszFunction, "phm2pj") == 0)
return phm2pj_main (argc, argv);
- else if (strcasecmp (pszFunction, "phm2helix") == 0)
- return phm2helix_main (argc, argv);
- else if (strcasecmp (pszFunction, "pjHinterp") == 0)
- return pjHinterp_main (argc, argv);
+ else if (strcasecmp (pszFunction, "phm2helix") == 0)
+ return phm2helix_main (argc, argv);
+ else if (strcasecmp (pszFunction, "pjHinterp") == 0)
+ return pjHinterp_main (argc, argv);
else if (strcasecmp (pszFunction, "pj2if") == 0)
return pj2if_main (argc, argv);
else if (strcasecmp (pszFunction, "pjinfo") == 0)
* ** This is part of the CTSim program
* ** Copyright (C) 1983-2000 Kevin Rosenberg
* **
-* ** $Id: pjHinterp.cpp,v 1.1 2001/09/24 09:40:42 kevin Exp $
+* ** $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
{0, 0, 0, 0}
};
-static const char* g_szIdStr = "$Id: pjHinterp.cpp,v 1.1 2001/09/24 09:40:42 kevin Exp $";
+static const char* g_szIdStr = "$Id: pjHinterp.cpp,v 1.2 2002/05/01 14:33:59 kevin Exp $";
void pjHinterp_usage ( const char *program )
{
- std::cout << "usage: " << fileBasename(program) << " raysum-file interp-raysum-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 << "usage: " << fileBasename(program) << " raysum-file interp-raysum-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;
}
int
pjHinterp_main(int argc, char * const argv[])
{
- Projections projGlobal;
- char* pszProjFilename = NULL;
- char* pszInterpFilename = NULL;
- bool bOptVerbose = false;
- bool bOptDebug = 1;
- int optTrace = Trace::TRACE_NONE;
- char *endptr = NULL;
- 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);
- }
- break;
- case O_VERBOSE:
- bOptVerbose = true;
- break;
- case O_DEBUG:
- bOptDebug = true;
- break;
- case O_TRACE:
- if ((optTrace = Trace::convertTraceNameToID(optarg))
- == Trace::TRACE_INVALID) {
- pjHinterp_usage(argv[0]);
- return (1);
- }
- break;
- case O_VERSION:
+ Projections projGlobal;
+ char* pszProjFilename = NULL;
+ char* pszInterpFilename = NULL;
+ bool bOptVerbose = false;
+ bool bOptDebug = 1;
+ int optTrace = Trace::TRACE_NONE;
+ char *endptr = NULL;
+ 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);
+ }
+ break;
+ case O_VERBOSE:
+ bOptVerbose = true;
+ break;
+ case O_DEBUG:
+ bOptDebug = true;
+ break;
+ case O_TRACE:
+ 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;
+ std::cout << "Unknown version number" << std::endl;
#endif
- return (0);
-
- case O_HELP:
- case '?':
- pjHinterp_usage(argv[0]);
- return (0);
- default:
- pjHinterp_usage(argv[0]);
- return (1);
- } // end switch
- } // end while
-
- if (optind + 2 != argc) {
+ return (0);
+
+ case O_HELP:
+ case '?':
+ pjHinterp_usage(argv[0]);
+ return (0);
+ default:
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;
- return (1);
- }
- if (bOptVerbose) {
- 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);
+ } // 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;
+ return (1);
+ }
+ if (bOptVerbose) {
+ 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);
}