\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}%
%\input{psbox.tex}
\usepackage{times}
\usepackage{hyperref}

\newcommand{\ctsim}{{\tt CTSim}}
\newcommand{\ctsimtext}{{\tt CTSimText}}
\newcommand{\usage}{{\bf Usage}{\par}}

\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}%
\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}%
\newcommand{\commandpageref}[2]{\latexignore{\helprefn{{\tt $\backslash$#1}}{#2}}\latexonly{{\tt $\backslash$#1} {\it page \pageref{#2}}}\index{#1}}%
\newcommand{\indexit}[1]{#1\index{#1}}%
\newcommand{\inioption}[1]{{\bf {\tt #1}}\index{#1}}%
\parskip=10pt%
\parindent=0pt%
%\backgroundcolour{255;255;255}\textcolour{0;0;0}% Has an effect in HTML only
\winhelpignore{\title{Manual for CTSim 3.0}%
\author{Kevin Rosenberg, M.D.}%
\date{January 2001}%
}%
\winhelponly{\title{Manual for CTSim 3.0}%
\author{by Kevin Rosenberg, M.D.\\$$\image{3cm;3cm}{logo-huge.bmp}$$}%
}%
\makeindex%
\begin{document}%
\maketitle%
\pagestyle{fancyplain}%
\bibliographystyle{plain}%
\pagenumbering{roman}%

\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\tableofcontents%

\chapter*{Copyright notice}%
\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

Copyright (c) 1983-2001 Kevin Rosenberg, M.D.

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose is hereby granted without fee, provided that the
above copyright notice, author statement and this permission notice appear in
all copies of this software and related documentation.

THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT SHALL KEVIN ROSENBERG BE LIABLE FOR ANY
SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

\chapter{Introduction}\label{introduction}%
\pagenumbering{arabic}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\winhelponly{$$\image{3cm;3cm}{logo-huge}$$}%
\htmlonly{$$\image{3cm;3cm}{logo-huge.gif}$$}%
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.
\rtfsp\ctsim simulates the process of projecting X-rays through a phantom object.
\rtfsp\ctsim can then reconstruct the interior of the object from the projections
collected around the phantom object.

The \ctsim package has two executable files: the graphical \helprefn{ctsim}{ctsim} and text \helprefn{ctsimtext}{ctsimtext} programs.

\chapter{Installation}\index{Installation}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\section{Download}\label{download}\index{Installation,Download}%

The latest version of CTSim, plus source code, can be accessed from:

\begin{verbatim}
http://www.ctsim.org
ftp://ftp.ctsim.org
\end{verbatim}

It is available in Windows 95/NT/2000 and Linux GUI versions and non-GUI versions.

\section{Installing Linux RPM}\index{Installation,Linux}%

\section{Installing Windows Binary}\index{Installation,Windows}%

\section{Build From Sources}\label{build}\index{Installation,Build}%

See the INSTALL file included in the source distribution for instructions.

\section{Web Requirements}\label{installreq}\index{Installation,Requirements}%
  \begin{itemize}\itemsep=0pt
  \item zlib Library (optional)
        \par Used for PNG file export.

  \item libpng Library (optional)
        \par Used for PNG file export.
	\par www.libpng.org

  \item FFTW library (optional)
	\par Used for frequency-based filtering and fourier transformations of images.
	\par www.fftw.org

  \item readline library (optional)
	\par Used for \ctsimtext interactive shell.

  \item dmalloc library (optional)
	\par Used for debugging memory allocation
	\par www.dmalloc.com

  \item wxWindows library (optional) 
  \par Used for platform-independent graphical interface. The graphical-shell
  program \ctsim requires this library.  
  \par www.wxwindows.org
\end{itemize}

\chapter{ctsim - the Graphical User Interface}\label{ctsim}\index{ctsim}% 
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\ctsim is the graphical shell for the CTSim project. It is
written using the wxLibrary for cross-platform compatibility with GTK,
Motif, and Microsoft Windows. It includes all of the functionality of
the command-line tool {\tt ctsimtext} as well as image processing and visualization features.

\ctsim can open projection files, image files, phantom definition files, and plotfiles.

\usage
ctsim [OPTIONS] [files to open...]

\chapter{ctsimtext}\label{ctsimtext}\index{ctsimtext}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\ctsimtext is a master shell for all of the command-line utilities. 

\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.

\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...}.

The available functions are:

\section{if1}\label{if1}\index{ctsimtext,if1}%
Perfoms math functions on a single image.

\usage
\begin{itemize}\itemsep=0pt
  \item --invert
  \item --log
  \item --exp
  \item --sqr
  \item --sqrt
\end{itemize}

\section{if2}\label{if2}\index{ctsimtext,if2}%
Perfoms math functions on a two images.

\usage
\begin{itemize}\itemsep=0pt
  \item --add
  \item --sub
  \item --mul
  \item --comp
  \item --column-plot
  \item --row-plot
\end{itemize}

\section{ifexport}\label{ifexport}\index{ctsimtext,ifexport}%
Export an imagefile to a standard graphics file.

\usage
\begin{itemize}\itemsep=0pt
  \item --format
  \begin{itemize}\itemsep=0pt
    \item --pgm
    \item --pgmasc
    \item --png
    \item --png16
  \end{itemize}
  \item --center
  \begin{itemize}\itemsep=0pt
    \item median
    \item mode
    \item mean
  \end{itemize}
  \item --auto
  \begin{itemize}\itemsep=0pt
     \item --full
     \item --std0.1
     \item --std0.5
     \item --std1
     \item --std2
     \item --std3
  \end{itemize}
  \item --scale
  \item --min
  \item --max
\end{itemize}

\section{ifinfo}\label{ifinfo}\index{ctsimtext,ifinfo}%

Displays information about an imagefile.

\usage
\begin{itemize}\itemsep=0pt
  \item --labels
  \item --no-labels
  \item --stats
  \item --no-stats
  \item --help
\end{itemize}

\section{phm2pj}\label{phm2pj}\index{ctsimtext,phm2pj}%
Simulates collection of X-rays data (projections) around a phantom object.

\usage
phm2pj projection-file-name number-of-detectors number-of-views [options...]
\begin{itemize}\itemsep=0pt
  \item --phantom
  Select a standard phantom 
  \begin{itemize}\itemsep=0pt
    \item herman
    \item herman-b
    \item shepp-logan
    \item shepp-logan-b
  \end{itemize}

  \item --phmfile
  Load a phantom definition definition

  \item --geometry
  \begin{itemize}\itemsep=0pt
    \item parallel
    \item equiangular
    \item equilinear
  \end{itemize}

  \item --nray
    Number of samples per each detector

  \item --rotangle
    Sets the rotation amount as a multiple of pi. For parallel geometries use
a rotation angle of 1 and for equilinear and equiangular geometries use a rotation angle of 2.

  \item --field-of-view
    Sets the field of view as a ratio of the diameter of the phantom. For parallel geometries, using a value of 1.0 is fine. For other geometies, this should be at least 1.3 to avoid artifacts.

  \item --focal-length
    Sets the distance of the radiation source and detectors from the center of the object as a ratio of the radius of the object. For parallel geometries, a value of 1.0 is fine. For other geometries, this should be at least 2.0 to avoid artifacts.
\end{itemize}

The Herman phantom is taken with permission from Gabor Hermans 1980 book\cite{HERMAN80}. The Shepp-Logan phantom was published in 1974\cite{SHEPP74}.

\section{phm2if}\label{phm2if}\index{ctsimtext,phm2if}%
Converts a geometric phantom object into an imagefile. The size of the
imagefile in pixels must be specified as well as the number of samples
to average per pixel.

\usage
\begin{itemize}\itemsep=0pt
  \item --nsamples
\end{itemize}

\section{pj2if}\label{pj2if}\index{ctsimtext,pj2if}%
Convert a projection file into an imagefile.

\usage
\begin{itemize}\itemsep=0pt
\end{itemize}

\section{pjinfo}\label{pjinfo}\index{ctsimtext,pjinfo}%
Displays information about a projection file.

\usage
\begin{itemize}\itemsep=0pt
  \item --binaryheader
  \item --binaryview
  \item --startview
  \item --endview
  \item --dump
\end{itemize}

\section{pjrec}\label{pjrec}\index{ctsimtext,pjrec}%
Reconstructs the interior of an object from a projection file.

\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 
by the absolute value of distance from zero frequency.
  \begin{itemize}\itemsep=0pt
    \item abs_bandlimit
    \item abs_cosine
    \item abs_hamming
  \end{itemize}}
  \twocolitem{{\bf --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. 
\begin{itemize}\itemsep=0pt
\item convolution
      \item fourier
      \item fourier_table
      \item fftw
      \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.
\begin{itemize}\itemsep=0pt
\item direct
      \item inverse-fourier
\end{itemize}
}
  \twocolitem{{\bf --interpolation}}{Interpolation technique. {\tt 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.
\begin{itemize}\itemsep=0pt
\item trig
\item table
\item diff
\item diff2
\item idiff2
\item idiff3
\end{itemize}
}
\twocolitem{{\bf --zeropad}}{ Zeropad factor. A setting of {\tt 1} is optimal.}

  \twocolitem{{\bf --preinterpolate}}{Selects preinterpolation interpolation technique and sets the preinterpolation factor. Currently, this is experimental and does not work well.}
\end{twocollist}

\chapter{The Web Browser CGI Interface}\label{webinterface}\index{Web Interface}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\section{Overview}\index{Web Interface,Overview}%
The CGI program {\tt 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
statistics as described by Herman\cite{HERMAN80}.

\section{Requirements}\index{Web Interface,Requirements}%
   \begin{itemize}\itemsep=0pt
      \item Apache or other CGI compatible web server

      \item Perl (version 4.0 or higher)

      \item A client web browser than can display PNG files. Most
      current web browsers support PNG.
  \end{itemize}

\newpage

\bibliographystyle{plain}
\bibliography{ctsim}
\addcontentsline{toc}{chapter}{Bibliography}
\setheader{{\it REFERENCES}}{}{}{}{}{{\it REFERENCES}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%

\addcontentsline{toc}{chapter}{Index}
\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\printindex%

\end{document}%
 
