r173: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 3 Aug 2000 09:53:09 +0000 (09:53 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Thu, 3 Aug 2000 09:53:09 +0000 (09:53 +0000)
tools/pjrec.cpp

index abf25ca89e6dbaf505bf1cf80f50547925ab0f9e..496ace5c93e4f6cc1e16afa4cdcb92e62fe0b219 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: pjrec.cpp,v 1.7 2000/08/02 18:09:11 kevin Exp $
+**  $Id: pjrec.cpp,v 1.8 2000/08/03 09:53:09 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
@@ -29,7 +29,7 @@
 #include "timer.h"
 
 
-enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
+enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_FREQUENCY_FILTER, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
 
 static struct option my_options[] =
 {
@@ -38,6 +38,7 @@ static struct option my_options[] =
   {"filter", 1, 0, O_FILTER},
   {"filter-method", 1, 0, O_FILTER_METHOD},
   {"zeropad", 1, 0, O_ZEROPAD},
+  {"frequency-filter", 1, 0, O_FREQUENCY_FILTER},
   {"filter-param", 1, 0, O_FILTER_PARAM},
   {"backproj", 1, 0, O_BACKPROJ},
   {"trace", 1, 0, O_TRACE},
@@ -91,8 +92,8 @@ pjrec_usage (const char *program)
   cout << "  --zeropad n   Set zeropad level (default = 0)\n";
   cout << "                set n to number of powers to two to pad\n";
   cout << "  --frequency-filter  Set type of frequency filter\n";
-  cout << "    direct      Use direct frequency filter\n";
-  cout << "    ifourier    Use inverse fourier transform of spatial filter\n";
+  cout << "    direct_frequency  Use direct frequency filter\n";
+  cout << "    inverse_spatial   Use inverse fourier transform of spatial filter\n";
   cout << "  --backproj    Backprojection Method" << endl;
   cout << "    trig        Trigometric functions at every point" << endl;
   cout << "    table       Trigometric functions with precalculated table" << endl;
@@ -137,6 +138,7 @@ pjrec_main (int argc, char * argv[])
   double optFilterParam = -1;
   string optFilterName (SignalFilter::convertFilterIDToName (SignalFilter::FILTER_ABS_BANDLIMIT));
   string optFilterMethodName (SignalFilter::convertFilterMethodIDToName (SignalFilter::FILTER_METHOD_CONVOLUTION));
+  string optFrequencyFilterName (SignalFilter::convertFrequencyFilterIDToName (SignalFilter::FREQUENCY_FILTER_INVERSE_SPATIAL));
   string optInterpName (Backprojector::convertInterpIDToName (Backprojector::INTERP_LINEAR));
   string optBackprojName (Backprojector::convertBackprojectIDToName (Backprojector::BPROJ_IDIFF3));
   int optPreinterpolationFactor = 1;
@@ -178,8 +180,8 @@ pjrec_main (int argc, char * argv[])
         case O_FILTER_METHOD:
          optFilterMethodName = optarg;
           break;
-       case O_BACKPROJ:
-         optBackprojName = optarg;
+       case O_FREQUENCY_FILTER:
+         optFrequencyFilterName = optarg;
          break;
        case O_FILTER_PARAM:
          optFilterParam = strtod(optarg, &endptr);
@@ -195,6 +197,9 @@ pjrec_main (int argc, char * argv[])
            return(1);
          }
          break;
+       case O_BACKPROJ:
+         optBackprojName = optarg;
+         break;
        case O_VERBOSE:
          optVerbose = 1;
          break;
@@ -209,7 +214,7 @@ pjrec_main (int argc, char * argv[])
          break;
         case O_VERSION:
 #ifdef VERSION
-         cout <<  "Version " <<  VERSION << endl;
+         cout <<  "Version " <<  VERSION << endl << "Id " << g_szIdStr << endl;
 #else
           cout << "Unknown version number" << endl;
 #endif
@@ -313,7 +318,7 @@ pjrec_main (int argc, char * argv[])
 
 #ifdef HAVE_MPI
   TimerCollectiveMPI timerReconstruct (mpiWorld.getComm());
-  projLocal.reconstruct (*imLocal, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeroPad, optInterpName.c_str(), optPreinterpolationFactor, optBackprojName.c_str(), optTrace);
+  projLocal.reconstruct (*imLocal, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeroPad, optFrequencyFilterName.c_str(), optInterpName.c_str(), optPreinterpolationFactor, optBackprojName.c_str(), optTrace);
   if (optVerbose)
       timerReconstruct.timerEndAndReport ("Time to reconstruct");
 
@@ -322,7 +327,7 @@ pjrec_main (int argc, char * argv[])
   if (optVerbose)
       timerReduce.timerEndAndReport ("Time to reduce image");
 #else
-  projGlobal.reconstruct (*imGlobal, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeroPad, optInterpName.c_str(), optPreinterpolationFactor, optBackprojName.c_str(), optTrace);
+  projGlobal.reconstruct (*imGlobal, optFilterName.c_str(), optFilterParam, optFilterMethodName.c_str(), optZeroPad, optFrequencyFilterName.c_str(), optInterpName.c_str(), optPreinterpolationFactor, optBackprojName.c_str(), optTrace);
 #endif
 
 #ifdef HAVE_MPI