X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=include%2Fir.h;fp=include%2Fir.h;h=0000000000000000000000000000000000000000;hb=007a78a5e3a043cbc7e2777ab033b81b8acbbe71;hp=8af85727a19a74f874b3874efcde449ae1038966;hpb=99dd1d6ed10db1f669a5fe6af71225a50fc0ddfb;p=ctsim.git diff --git a/include/ir.h b/include/ir.h deleted file mode 100644 index 8af8572..0000000 --- a/include/ir.h +++ /dev/null @@ -1,201 +0,0 @@ -/***************************************************************************** -** FILE IDENTIFICATION -** -** Name: ir.h -** Purpose: Master Image Reconstruction Header -** Programmer: Kevin Rosenberg -** Date Started: July 1, 1984 -** -** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: ir.h,v 1.28 2000/06/17 20:12:14 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 -******************************************************************************/ - -#ifndef IR_H -#define IR_H - - -#include "phantom.h" -#include "scanner.h" -#include "projections.h" - -/*----------------------------------------------------------------------*/ -/* USER SYMBOLS */ -/*----------------------------------------------------------------------*/ - -/* Codes for Filter types */ - -typedef enum { /* filter types for filter_generate() */ - 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; - -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; - -/* interpolation methods */ -#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; - -static const char O_TRACE_NONE_STR[]= "none"; -static const char O_TRACE_TEXT_STR[]= "text"; -static const char O_TRACE_PHM_STR[]= "phm"; -static const char O_TRACE_RAYS_STR[]= "rays"; -static const char O_TRACE_PLOT_STR[]= "plot"; -static const char O_TRACE_CLIPPING_STR[]= "clipping"; - -enum { - TRACE_NONE, /* No tracing */ - TRACE_TEXT, /* Minimal status */ - TRACE_PHM, /* Show phantom */ - TRACE_RAYS, /* Show all rays */ - TRACE_PLOT, /* Plot raysums */ - TRACE_CLIPPING /* Plot clipping */ -}; - -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; - -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"; - -static const char O_INTERP_NEAREST_STR[]= "nearest"; -static const char O_INTERP_LINEAR_STR[]= "linear"; -static const char O_INTERP_BSPLINE_STR[]= "bspline"; - -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 { - O_BPROJ_TRIG, - O_BPROJ_TABLE, - O_BPROJ_DIFF, - O_BPROJ_DIFF2, - O_BPROJ_IDIFF2 -} BackprojType; - -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"; - -const static int RAYSUM_TRACE_ROW_TITLE=1; -const static int RAYSUM_TRACE_ROW_TITLE2=2; -const static int RAYSUM_TRACE_ROW_PHANT_ID=4; -const static int RAYSUM_TRACE_ROW_CHROMATIC=7; -const static int RAYSUM_TRACE_ROW_SCATTER=8; -const static int RAYSUM_TRACE_ROW_PHOT_STAT=9; -const static int RAYSUM_TRACE_ROW_NDET=12; -const static int RAYSUM_TRACE_ROW_NVIEW=13; -const static int RAYSUM_TRACE_ROW_SAMPLES=14; -const static int RAYSUM_TRACE_ROW_CURR_VIEW=17; -const static int RAYSUM_TRACE_ROW_ATTEN=18; - - - -/************************************************************************* - * FUNCTION DECLARATIONS - ************************************************************************/ - -/* convolve.cpp */ -double convolve (const double f1[], const double f2[], const double dx, const int n, const int np, const FunctionSymmetry func_type); - -/* dialogs.cpp */ -bool phm_add_pelem_kb (Phantom& phm); -const Phantom& phm_select (Phantom& phm); -int interpolation_select (void); -int filter_select (double *filter_param); - -/* filter.cpp */ -double *filter_generate (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, int numint); -double filter_spatial_response_calc (int filt_type, double x, double bw, double param, int n); -double filter_spatial_response_analytic (int filt_type, double x, double bw, double param); -double filter_frequency_response (int filt_type, double u, double bw, double param); -double sinc (double x, double mult); -double integral_abscos(double u, double w); - -/* 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); -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