Nx: <input type="text" name="Phantom_Nx" size="4" value="256"><br>
Ny: <input type="text" name="Phantom_Ny" size="4" value="256"><br>
<p>
-Number of Samples<br>per pixel: <input type="text" name="Phantom_NSample" size="2" value="1"><br>
+Number of Samples<br>per pixel: <input type="text" name="Phantom_NSample" size="2" value="2"><br>
<p>
Display Window:<br>
Minimum: <input type="text" name="Disp_Min" size=5 value="auto"><br>
<h3>Simulate X-Ray acquistion</h3>
Number of detectors: <input type="text" name="PJ_NDet" size="4" value="367"><p>
Number of Rotations: <input type="text" name="PJ_NRot" size="4" value="320"><p>
-Number of Rays<br>(samples) per detector: <input type="text" name="PJ_NRay" size="2" value="1"><p>
+Number of Rays<br>(samples) per detector: <input type="text" name="PJ_NRay" size="2" value="3"><p>
Rotation Angle<br>as a multiple of PI: <input type="text" name="PJ_RotAngle" size="3" value="1.0"><br>
</td><td valign="top">
<H3>Image Reconstruction</H3>
<input type="radio" name="IR_Backproj" value="trig">Trig<br>
<input type="radio" name="IR_Backproj" value="table">Trig Table<br>
<input type="radio" name="IR_Backproj" value="diff">Difference<br>
-<input type="radio" name="IR_Backproj" value="diff2" checked>Difference Optimized<br>
-<input type="radio" name="IR_Backproj" value="idiff2">Difference Optimized (integer math)<br>
+<input type="radio" name="IR_Backproj" value="diff2">Difference Optimized<br>
+<input type="radio" name="IR_Backproj" value="idiff2" checked>Difference Optimized (integer math)<br>
</td></tr></table>
<p>
<input type="submit" value="Simulate"><input type="reset" value="clear fields">
--- /dev/null
+class SignalFilter {
+ public:
+
+ SignalFilter (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, const int numInt);
+
+ ~SignalFilter (void);
+
+ double* getFilter (void) const
+ { return m_vecFilter; }
+
+ double convolve (const double f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+
+ double convolve (const float f[], const double dx, const int n, const int np, const FunctionSymmetry func_type) const;
+
+ static double spatialResponseCalc (FilterType fType, double bw, double x, double param, int n);
+
+ static double spatialResponseAnalytic (FilterType fType, double bw, double x, double param);
+
+ static double frequencyResponse (FilterType fType, double bw, double u, double param);
+
+ private:
+ double *m_vecFilter;
+ double m_bw;
+ FilterType m_filterType;
+
+ double spatialResponseCalc (double x, double param, int n) const;
+
+ double spatialResponseAnalytic (double x, double param) const;
+
+ double frequencyResponse (double u, double param) const;
+
+ static double sinc (double x, double mult)
+ { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
+
+ static double integral_abscos (double u, double w);
+
+};
+