From 4d4ceac098a9ca4b78064d1368d0c8538417710a Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Sat, 31 Mar 2001 04:50:29 +0000 Subject: [PATCH] r655: *** empty log message *** --- cgi-bin/ctsim.cgi.in | 22 +++++++++------ html/simulate.html.in | 66 +++++++++++++++++++++++++------------------ 2 files changed, 52 insertions(+), 36 deletions(-) diff --git a/cgi-bin/ctsim.cgi.in b/cgi-bin/ctsim.cgi.in index 4ead487..e978881 100755 --- a/cgi-bin/ctsim.cgi.in +++ b/cgi-bin/ctsim.cgi.in @@ -41,10 +41,12 @@ if ($::single_process_only > 0) { my $Phantom_Name = FilterMetaChars($in{'Phantom_Name'}); my $Phantom_Nx = FilterToNumber($in{'Phantom_Nx'}); my $Phantom_Ny = FilterToNumber($in{'Phantom_Ny'}); +my $Phantom_ViewRatio = FilterToNumber($in{'Phantom_ViewRatio'}); my $Phantom_NSample = FilterToNumber($in{'Phantom_NSample'}); $error .= "Phantom name must not be blank
" if ($Phantom_Name eq ""); -$error .= "Phantom NX and NY must be between 5 and 512
" if ($Phantom_Nx < 5 || $Phantom_Nx > 512 || $Phantom_Ny < 5 || $Phantom_Ny > 512); +$error .= "Phantom Size must be between 5 and 512
" if ($Phantom_Nx < 5 || $Phantom_Nx > 512 || $Phantom_Ny < 5 || $Phantom_Ny > 512); $error .= "Phantom NSample must be between 1 and 5
" if ($Phantom_NSample < 1 || $Phantom_NSample > 5); +$error .= "View Ratio must be between 1 and 100
" if ($Phantom_ViewRatio < 1 || $Phantom_ViewRatio > 100); my $PJ_Geometry = FilterMetaChars($in{'PJ_Geometry'}); my $PJ_NDet = FilterToNumber($in{'PJ_NDet'}); @@ -52,11 +54,13 @@ my $PJ_NRot = FilterToNumber($in{'PJ_NRot'}); my $PJ_FocalLength = FilterToNumber($in{'PJ_FocalLength'}); my $PJ_NRay = FilterToNumber($in{'PJ_NRay'}); my $PJ_RotAngle = FilterToNumber($in{'PJ_RotAngle'}); +my $PJ_ScanRatio = FilterToNumber($in{'PJ_ScanRatio'}); $error .= "Projection NDet must be between 5 and 1000
" if ($PJ_NDet < 5 || $PJ_NDet > 1000); $error .= "Projection NRot must be between 5 and 1000
" if ($PJ_NRot < 5 || $PJ_NRot > 1000); $error .= "Projection NRay must be between 1 and 5
" if ($PJ_NRay < 1 || $PJ_NRay > 5); $error .= "Projection RotAngle must be between 0.1 and 2
" if ($PJ_RotAngle < 0.1 || $PJ_RotAngle > 2); $error .= "Focal length must be between 1.01 and 10" if ($PJ_FocalLength <= 1 || $PJ_FocalLength > 10); +$error .= "Scan Ratio must be between 0 and 10
" if ($PJ_ScanRatio <= 0 || $PJ_ScanRatio > 10); #my $IR_Nx = FilterToNumber($in{'IR_Nx'}); #my $IR_Ny = FilterToNumber($in{'IR_Ny'}); @@ -120,8 +124,8 @@ $pjrec_ver = "/opt/lam/bin/mpirun N N $::lamrundir/pjrec-lam" if $MPI; $phm2pj_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2pj-lam" if $MPI; $phm2if_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2if-lam" if $MPI; -my $gp_cmd = "$phm2if_ver $phantom_fname $Phantom_Nx $Phantom_Ny --phantom $Phantom_Name --nsample $Phantom_NSample"; -my $pj_cmd = "$phm2pj_ver $pj_fname $PJ_NDet $PJ_NRot --phantom $Phantom_Name --nray $PJ_NRay --rotangle $PJ_RotAngle --geometry $PJ_Geometry --focal-length $PJ_FocalLength"; +my $gp_cmd = "$phm2if_ver $phantom_fname $Phantom_Nx $Phantom_Ny --phantom $Phantom_Name --nsample $Phantom_NSample --view-ratio $Phantom_ViewRatio"; +my $pj_cmd = "$phm2pj_ver $pj_fname $PJ_NDet $PJ_NRot --phantom $Phantom_Name --nray $PJ_NRay --rotangle $PJ_RotAngle --geometry $PJ_Geometry --focal-length $PJ_FocalLength --view-ratio $Phantom_ViewRatio --scan-ratio $PJ_ScanRatio"; my $pj_if_cmd = "$::bindir/pj2if $pj_fname $pj_if_fname"; my $pjrec_cmd = "$pjrec_ver $pj_fname $ir_fname $IR_Nx $IR_Ny --filter $IR_Filter --filter-param $IR_Filter_Param --interp $IR_Interp --backproj $IR_Backproj --filter-method $IR_FilterMethod --zeropad $IR_Zeropad"; my $sub_cmd = "$diff_ver $phantom_fname $ir_fname $sub_fname --sub"; @@ -140,10 +144,11 @@ my $png2_cmd = "$::bindir/ifexport $ir_fname $ir_png $window_options --stats --f my $png3_cmd = "$::bindir/ifexport $pj_if_fname $pj_png --auto $auto_window_pj --stats --format png"; my $png4_cmd = "$::bindir/ifexport $sub_fname $sub_png --auto $auto_window_diff --stats --format png"; -my $title = "CT Simulation Results"; +my $title = "CTSim Results"; my $out = head(); -$out .= " $title \n"; +$out .= " $title +\n"; $out .= "\n"; $out .= "

$title


\n"; @@ -218,17 +223,18 @@ if ($error ne "") { $out .= "\n"; $out .= "\n"; $out .= "\n"; - $out .= "\n"; + $out .= "\n"; $out .= "\n"; $out .= "\n"; $out .= "
Phantom ImageReconstructed Image

$png_gp_out

$png_pjrec_out
Projection SinusoidPhantom/Reconst Error
Projection SinusoidReconstruction Error

$png_pj_out

$sub_out
$png_sub_out
"; $out .= "Execution time: $execution_time seconds\n"; - $out .= "

\nStatistics
"; + $out .= "

\nError Measurements
"; $out .= "$diff_out"; } $out .= "


\n"; -$out .= "Return to CTSim.
\n"; +$out .= "Specify another simulation.
"; +$out .= "Return to CTSim's home.
\n"; $out .= " "; $out .= "\n"; diff --git a/html/simulate.html.in b/html/simulate.html.in index 88c7abd..a379078 100644 --- a/html/simulate.html.in +++ b/html/simulate.html.in @@ -1,9 +1,17 @@ + -Perform CT Simulation + + + + +CTSim Online Simulation -

Perform CT Simulation

+

CTSim Online Simulation

+Reasonable defaults have been filled into this form. For detailed explanations of the +parameters on this form, please visit CTSim's online manual.
+
@@ -11,11 +19,13 @@ Phantom Name:
G.T. Herman
Rowland
-Bordered Rowland
Unit Pulse

-Nx:
-Ny:
+Image Size:
+Width:
+Height:
+

+View Ratio:

Number of Samples
per pixel:

@@ -23,57 +33,57 @@ Display Window:
Minimum:
Maximum:

-MPI Supercomputing:
+ +

Simulate X-Ray acquistion

Geometry:
Parallel
Equiangular
Equilinear

-Number of Detectors:

-Number of Rotations:

+Number of Detectors:

+Number of Rotations:

Focal Length:

+Scan Ratio:

Number of Rays
(samples) per detector:

-Rotation Angle
as a multiple of PI:
+Rotation Angle
as a fraction of a cricle:

Image Reconstruction

Filter Method:
Convolution
Fourier
Fourier Table
-FFT (Fast Fourier)
-FFTW (Fastest Fourier Library)
-RFFTW (Real-mode Fastest Fourier Library)
+FFT

-Zeropad: (frequency-base filtering only)
-
+Zeropad (applies to
Fourier & FFT): +

Interpolation:
-Linear
Nearest Neighbor
+Linear
+Cubic
+

+Filter:
+Bandlimit
+Cosine
+Hamming
+Hanning
+Sinc
+Shepp-Logan

-Filter for Backprojection:
-Abs*Bandlimit
-Abs*Cosine
-Abs*Hamming
-Shepp-Logan
-Bandlimit
-Hamming
-Cosine
-Sinc
-Triangle

Hamming alpha factor (0.0-1.0):

Backprojection Method:
Trig
Trig Table
Difference
-Difference Highly-optimized (integer math)
+Difference (integer math)

- +

-- 2.34.1