The two other important variables are the field-of-view-ratio ($f_{vR}$)
and the focal-length-ratio ($f_{lR}$). These are used along with $l_p$ to
define the focal length and the field of view (not ratios) according to
-\begin{equation}
+\latexonly{\begin{equation}
f_l = \sqrt{2} (l_p/2)(f_{lR})= (l_p/\sqrt{2}) f_{lR}
\end{equation}
\begin{equation}
f_v = \sqrt{2}l_p f_{vR}
-\end{equation}
+\end{equation}}
So the field of view ratio is specified in units of the phantom diameter,
whereas the focal length is specified in units of the phantom radius. The
-factor of $\sqrt(2)$ can be understood if one refers to figure 1, where
+factor of
+\latexonly{$\sqrt(2)$}
+\latexignore{sqrt(2)}
+can be understood if one refers to figure 1, where
we consider the case of a first generation parallel beam CT scanner.
\subsubsection{Parallel Geometry}\label{geometryparallel}\index{Concepts,Scanner,Geometries,Parallel}
For these geometries, the following logic is executed: A variable dHalfSquare
$d_{hs}$ is defined as
-\begin{equation}
+\latexonly{\begin{equation}
d_{hs} = (f_v)/(2\sqrt{2}) = (l_p/2) f_{vR}
-\end{equation}
+\end{equation}}
This is then subtracted from the focal length $f_l$ as calculated above, and
assigned to a new variable $\mathrm{dFocalPastPhm} = f_l - d_{hs}$. Since $f_l$ and
$d_{hs}$ are derived from the phantom dimension and the input focal length and field of view ratios, one can write,
+\latexonly{
\begin{equation}
\mathrm{dFocalPastPhm} = f_l -d_{hs}
= \sqrt{2}(l_p/2) f_{lR} - (l_p/2) f_{vR} = l_p(\sqrt{2}f_{lR} - f_{vR})
\end{equation}
+}
If this quantity is less than or equal to zero, then at least for some
projections the source is inside the phantom. Perhaps a figure will help at
this point. Consider first the case where $f_{vR} = f_{lR} =1 $, figure 3. The
square in the figure bounds the phantom and has sides $l_p$. For this case
then,
+\latexonly{
\[
f_l=\sqrt{2}l_p/2 = l_p/\sqrt{2},
\]
\[
\mathrm{dFocalPastPhm} = ({l_p}/{2}) (\sqrt{2}-1)
\]
+}
\begin{figure}
\includegraphics[height=0.5\textheight]{ctsimfig3.eps}
\caption{Equilinear and equiangluar geometry when focal length ratio =
x-size Number of columns in image file
y-size Number of rows in image file
samples Numbers of samples taken per pixel in the x and y directions.
- For example, if the nsamples is set to {\tt 3}, then for every
+ For example, if the nsamples is set to \texttt{3}, then for every
pixel in the image file, 9 samples (3 x 3) are averaged.
\subsection{Projection Dialog}
year = {1992}
}
-@book{FOLEY80,
- author = {Foley and Van Dam},
- title = {Principles of Computer Graphics},
- year = {circa 1980}
+@book{FOLEY82,
+ author = {J.D. Foley and A. van Dam},
+ title = {Fundamentals of Interactive Computer Graphics},
+ publisher = {Addison-Wesley},
+ year = {circa 1982}
}
@article{SHEPP74,
year = {1992}
}
-@book{FOLEY80,
- author = {Foley and Van Dam},
- title = {Principles of Computer Graphics},
- year = {circa 1980}
+@book{FOLEY82,
+ author = {J.D. Foley and A. van Dam},
+ title = {Fundamentals of Interactive Computer Graphics},
+ publisher = {Addison-Wesley},
+ year = {circa 1982}
}
@article{SHEPP74,
\usage
\ctsimtext\ can be executed without any parameters. In that case, \ctsimtext\
-offers a command-line to enter the function-names and their parameters. The output of the command is displayed. Further commands may be given to \ctsimtext. The shell is exited by the {\tt quit} command.
+offers a command-line to enter the function-names and their parameters. The output of the command is displayed. Further commands may be given to \ctsimtext. The shell is exited by the \texttt{quit} command.
\ctsimtext\ can also be called to execute a single command. This is especially useful for batch files containing multiple \ctsimtext\ commands. This is invoked by calling \par
-{\tt ctsimtext function-name parameters...}.
+\texttt{ctsimtext function-name parameters...}.
The available functions are:
\usage
\begin{twocollist}
-\twocolitemruled{{\bf Parameter}}{{\bf Options}}
-\twocolitem{{\bf --filter}}
-{Selects which filter to apply to each projection. To properly reconstruct an image, this filter should be multiplied
+\twocolitemruled{\textbf{Parameter}}{\textbf{Options}}
+\twocolitem{\textbf{--filter}}{Selects which filter to apply to each projection. To properly reconstruct an image, this filter should be multiplied
by the absolute value of distance from zero frequency.
\begin{itemize}\itemsep=0pt
\item abs\_bandlimit
\item abs\_hamming
\end{itemize}
}
-\twocolitem{{\bf --filter-parameter}}{Sets the alpha level for Hamming
+\twocolitem{\textbf{--filter-parameter}}{Sets the alpha level for Hamming
window. At setting of 0.54, this equals the Hanning window.}
-\twocolitem{{\bf --filter-method}}{Selects the filtering method. For large numbers of detectors, {\tt rfftw} is optimal. For smaller numbers of detectors, {\tt convolution} might be a bit faster.
+\twocolitem{\textbf{--filter-method}}{Selects the filtering method. For large numbers of detectors, \texttt{rfftw} is optimal. For smaller numbers of detectors, \texttt{convolution} might be a bit faster.
\begin{itemize}\itemsep=0pt
\item convolution
\item fourier
\item rfftw
\end{itemize}
}
-
-\twocolitem{{\bf --filter-generation}}{Selects the filter generation. With convolution, {\tt direct} is the proper method to select. With any of the frequency methods, {\tt inverse-fourier} is the best method.
+\twocolitem{\textbf{--filter-generation}}{Selects the filter generation. With convolution, \texttt{direct} is the proper method to select. With any of the frequency methods, \texttt{inverse-fourier} is the best method.
\begin{itemize}\itemsep=0pt
\item direct
\item inverse-fourier
\end{itemize}
}
-\twocolitem{{\bf --interpolation}}{Interpolation technique. {\tt linear} is optimal.
+\twocolitem{\textbf{--interpolation}}{Interpolation technique. \texttt{linear} is optimal.
\begin{itemize}\itemsep=0pt
\item nearest
\item linear
\end{itemize}
-}
-\twocolitem{{\bf -backprojection}}{Selects the backprojection technique. A setting of {\tt idiff3} is optimal.
+}
+\twocolitem{\textbf{-backprojection}}{Selects the backprojection technique. A setting of \texttt{idiff3} is optimal.
\begin{itemize}\itemsep=0pt
\item trig
\item table
\item idiff3
\end{itemize}
}
-\twocolitem{{\bf --zeropad}}{ Zeropad factor. A setting of {\tt 1} is optimal.}
+\twocolitem{\textbf{--zeropad}}{Zeropad factor. A setting of \texttt{1} is optimal.}
-\twocolitem{{\bf --preinterpolate}}{Selects preinterpolation interpolation technique and sets the preinterpolation factor. Currently, this is experimental and does not work well.}
+\twocolitem{\textbf{--preinterpolate}}{Selects preinterpolation interpolation technique and sets the preinterpolation factor. Currently, this is experimental and does not work well.}
\end{twocollist}
+
\setfooter{\thepage}{}{}{}{}{\thepage}%
\section{Overview}\index{Web Interface,Overview}%
-The CGI program {\tt ctsim.cgi} takes projections of a standard
+The CGI program \texttt{ctsim.cgi} takes projections of a standard
phantom object, performs reconstruction, and then compares the
rasterized phantom object with the reconstruction. The comparison is
performed both visually by an image subtraction as well as by standard
+++ /dev/null
-@book{KAK87,
- author = {A. Kak and M. Slaney},
- title = {Principles of Computerized Tomographic Imaging},
- publisher = {IEEE Press, New York},
- year = {1987}
-}
-
-@book{HERMAN80,
- author = {G.T. Herman},
- title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography},
- year = {1980},
- publisher = {Academic Press, New York, 1980}
-}
-
-@book{PRESS92,
- author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery},
- title = {Numerical Recipes in C: The Art of Scientific Computing},
- publisher = {Cambridge University Press, Cambridge},
- edition = {Second},
- year = {1992}
-}
-
-@book{FOLEY80,
- author = {Foley and Van Dam},
- title = {Principles of Computer Graphics},
- year = {circa 1980}
-}
-
-@article{SHEPP74,
- author = {L. Shepp and B. Logan},
- title = {The Fourier Reconstruction of a Head Section},
- journal = {IEEE Transactions in Nuclear Science},
- volume = {NS-21},
- number = {6},
- pages = {21-43},
- year = {1974}
-}
-
-
\documentclass[11pt]{report}%
-%\input{psbox.tex}
\usepackage{graphicx}
\usepackage{texhelp}
\usepackage{fancyhea}
\usepackage{makeidx}
\usepackage{times}
\usepackage{hyperref}
+\input{psbox.tex}
-\newcommand{\ctsim}{{\tt CTSim}}
-\newcommand{\ctsimtext}{{\tt CTSimText}}
-\newcommand{\usage}{{\bf Usage}{\par}}
+\newcommand{\ctsim}{\texttt{CTSim}}
+\newcommand{\ctsimtext}{\texttt{CTSimText}}
+\newcommand{\usage}{\textbf{Usage}\par}
\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}%
\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
-$$\image{3cm;3cm}{logo-huge}$$
+\image{3cm;3cm}{logo-huge.eps}
Computed Tomography is a technique for estimating the interior of an object
from measurement of radiation collected around the object. This radiation
can be either projected through or emitted from the object.
\include{ctsim-web}
-%\include{ctsim-appendix}
+\include{ctsim-appendix}
\newpage
--------------------Configuration: ctsim - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D3.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP5B.tmp" with contents
[
/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"D:\ctsim\src\ctsim.cpp"
-"D:\ctsim\src\dialogs.cpp"
-"D:\ctsim\src\docs.cpp"
-"D:\ctsim\src\views.cpp"
+"C:\ctsim\src\ctsim.cpp"
]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D3.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D4.tmp" with contents
-[
-/nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /Zi /Od /Gy /I "\wx2.2.5\include" /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"3.0.0beta1\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0beta1\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"D:\ctsim\src\graph3dview.cpp"
-]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D4.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D5.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP5B.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP5C.tmp" with contents
[
comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib wxd.lib xpmd.lib tiffd.lib zlibd.lib pngd.lib opengl32.lib glu32.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"\wx2.2.5\lib"
.\Debug\ctsim.obj
\wx2.2.5\lib\zlibd.lib
\wx2.2.5\lib\tiffd.lib
]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D5.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP5C.tmp"
<h3>Output Window</h3>
Compiling...
ctsim.cpp
-dialogs.cpp
-docs.cpp
-views.cpp
-Compiling...
-graph3dview.cpp
Linking...
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.66 2001/02/02 23:04:06 kevin Exp $
+** $Id: ctsim.cpp,v 1.67 2001/02/06 06:57:46 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
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.66 2001/02/02 23:04:06 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.67 2001/02/06 06:57:46 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
#endif
wxMenu* help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T");
+ help_menu->Append (MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append (MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T");
#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
- help_menu->Append(MAINMENU_HELP_SECONDARY, "&Secondary Help");
+ help_menu->Append (MAINMENU_HELP_SECONDARY, "&Secondary Help");
#endif
- help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
+ help_menu->Append (MAINMENU_HELP_ABOUT, "&About");
wxMenuBar* menu_bar = new wxMenuBar;
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ctsim.h,v 1.41 2001/02/04 21:28:19 kevin Exp $
+** $Id: ctsim.h,v 1.42 2001/02/06 06:57:46 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
MAINMENU_HELP_ABOUT = 600,
MAINMENU_HELP_CONTENTS,
MAINMENU_HELP_TOPICS,
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
MAINMENU_HELP_SECONDARY,
+#endif
MAINMENU_FILE_CREATE_PHANTOM,
MAINMENU_FILE_CREATE_FILTER,