X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fct.h;h=ead95ad7381edd02fa98a2a25b8122ca912c974a;hp=4dccb3717c237403b5dc59089c0d5531b41dfb1a;hb=2d39e823ba389fc68e5317c422b55be006094252;hpb=a95e41ac40cd2f3a4401d921618604cf33f2a904 diff --git a/include/ct.h b/include/ct.h index 4dccb37..ead95ad 100644 --- a/include/ct.h +++ b/include/ct.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ct.h,v 1.20 2000/06/20 17:54:51 kevin Exp $ +** $Id: ct.h,v 1.21 2000/06/22 10:17:28 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 @@ -109,6 +109,18 @@ extern "C" { #include /* Standard ints on Linux */ #endif +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + #ifdef HAVE_MPI #include "mpi++.h" #include "mpiworld.h" @@ -122,82 +134,19 @@ extern "C" { #include "sgp.h" #endif -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace std; - #include "array2d.h" #include "fnetorderstream.h" #include "imagefile.h" #include "phantom.h" -#include "projections.h" #include "scanner.h" +#include "backprojectors.h" +#include "filter.h" +#include "projections.h" //----------------------------------------------------------------------// // USER SYMBOLS // //----------------------------------------------------------------------// -// Filter types -static const char O_FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit"; -static const char O_FILTER_ABS_SINC_STR[]= "abs_sinc"; -static const char O_FILTER_ABS_COS_STR[]= "abs_cos"; -static const char O_FILTER_ABS_HAMMING_STR[]= "abs_hamming"; -static const char O_FILTER_SHEPP_STR[]= "shepp"; -static const char O_FILTER_BANDLIMIT_STR[]= "bandlimit"; -static const char O_FILTER_SINC_STR[]= "sinc"; -static const char O_FILTER_COS_STR[]= "cos"; -static const char O_FILTER_HAMMING_STR[]= "hamming"; -static const char O_FILTER_TRIANGLE_STR[]= "triangle"; - -typedef enum { - FILTER_BANDLIMIT, - FILTER_SINC, - FILTER_G_HAMMING, - FILTER_COSINE, - FILTER_TRIANGLE, - FILTER_ABS_BANDLIMIT, // filter times |x| - FILTER_ABS_SINC, - FILTER_ABS_G_HAMMING, - FILTER_ABS_COSINE, - FILTER_SHEPP -} FilterType; - - -// Function domains -static const char D_FREQ_STR[]= "freq"; -static const char D_SPATIAL_STR[]= "spatial"; - -typedef enum { - D_FREQ = 1, - D_SPATIAL -} DomainType; - - -/* interpolation methods */ -static const char O_INTERP_NEAREST_STR[]= "nearest"; -static const char O_INTERP_LINEAR_STR[]= "linear"; -static const char O_INTERP_BSPLINE_STR[]= "bspline"; - -#undef HAVE_BSPLINE_INTERP -typedef enum { // Interpolation methods - I_NEAREST = 1, // Nearest neighbor -#if HAVE_BSPLINE_INTERP - I_BSPLINE, - I_1BSPLINE, // 1st order B-Spline - I_2BSPLINE, - I_3BSPLINE, -#endif - I_LINEAR // Linear interpolation -} InterpolationType; - - // Trace levels static const char O_TRACE_NONE_STR[]= "none"; static const char O_TRACE_TEXT_STR[]= "text"; @@ -215,45 +164,6 @@ enum { TRACE_CLIPPING /* Plot clipping */ }; -// Standard phantomsa -static const char O_PHM_HERMAN_STR[]= "herman"; -static const char O_PHM_ROWLAND_STR[]= "rowland"; -static const char O_PHM_BROWLAND_STR[]= "browland"; -static const char O_PHM_UNITPULSE_STR[]= "unitpulse"; -typedef enum { - O_PHM_HERMAN, /* Herman head phantom */ - O_PHM_ROWLAND, /* Rowland head phantom */ - O_PHM_BROWLAND, /* Bordered Rowland head phantom */ - O_PHM_UNITPULSE /* Unit pulse phantom */ -} PhantomType; - -// Backproject types -static const char O_BPROJ_TRIG_STR[]= "trig"; -static const char O_BPROJ_TABLE_STR[]= "table"; -static const char O_BPROJ_DIFF_STR[]= "diff"; -static const char O_BPROJ_DIFF2_STR[]= "diff2"; -static const char O_BPROJ_IDIFF2_STR[]= "idiff2"; - -typedef enum { - O_BPROJ_TRIG, - O_BPROJ_TABLE, - O_BPROJ_DIFF, - O_BPROJ_DIFF2, - O_BPROJ_IDIFF2 -} BackprojType; - -// Convolution symmetries -typedef enum { - FUNC_EVEN = 1, // function types, f[-n] = f[n] - FUNC_ODD, // f[-n] = -f[n] - FUNC_BOTH // function has both odd & even components -} FunctionSymmetry; - - - -#include "backprojectors.h" -#include "filter.h" - /************************************************************************* * FUNCTION DECLARATIONS @@ -267,27 +177,12 @@ int filter_select (double *filter_param); // options.cpp int opt_set_trace(const char *optarg); -const char *name_of_phantom(const int phmid); -int opt_set_phantom(const char *optarg); -InterpolationType opt_set_interpolation(const char *optarg); -const char *name_of_interpolation(int interp_type); -FilterType opt_set_filter(const char *optarg); -const char *name_of_filter(const int filter); -DomainType opt_set_filter_domain(const char *optarg); -const char *name_of_filter_domain(const DomainType domain); -BackprojType opt_set_backproj(const char *optarg); -const char *name_of_backproj(const BackprojType backproj); - -// From phm2image.cpp -void phm_to_imagefile (const Phantom& phm, ImageFile& im, const int col_start, const int col_count, const int nsample, const int trace); -// image.cpp -void image_filter_response(ImageFile& im, const DomainType domain, double bw, const FilterType filt_type, double filt_param, const int opt_trace); +// imagefile.cpp +void image_filter_response (ImageFile& im, const char* const domainName, double bw, const char* const filterName, double filt_param, const int opt_trace); int image_display (const ImageFile& im); int image_display_scale (const ImageFile& im, const int scale, const double pmin, const double pmax); -// From reconstr.cpp -ImageFile& proj_reconst (ImageFile& im, Projections& rs, const FilterType filt_type, double filt_param, InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace); #endif