\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\ctsimfooter%

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

\usage \ctsimtext\ can be invoked via three different
methods.
\begin{itemize}\itemsep=0pt
\item \ctsimtext\ can 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
\texttt{quit} command.

\item \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\\ \texttt{ctsimtext function-name parameters...}.

\item Using operating systems that support soft or hard linking of
files (such as UNIX and Linux), the executable file \ctsimtext\ can
be linked to the function names. This is automatically done by
the installation file for Linux. Thus, to use \ctsimtext\ with the
function name \texttt{pjrec}, the below command can be executed:\\
\texttt{pjrec parameters...}

\end{itemize}

\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 shepp-logan
    \item unit-pulse
  \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. The default is to use to
appropriate rotation angle based on the geometry.

  \item -\,-view-ratio
    Sets the field of view as a ratio of the diameter of the phantom.
    For normal scanning, a value of 1.0 is fine.

  \item -\,-scan-ratio
    Sets the length of scanning as a ratio of the view diameter.
    For normal scanning, a value of 1.0 is fine.

  \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
  \item -\,-view-ratio
\end{itemize}

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

\usage
\begin{itemize}\itemsep=0pt
\item -\,-help    Print brief online help
\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.

\begin{twocollist}
\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\_cosine
\item abs\_hamming
\end{itemize}
} \twocolitem{\textbf{-\,-filter-parameter}}{Sets the alpha level
for Hamming
  window. At setting of 0.54, this equals the Hanning window.}

\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 fourier\_table
\item fftw
\item rfftw
\end{itemize}
}

\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{\textbf{-\,-interpolation}}{Interpolation technique.
\texttt{linear} is optimal.
\begin{itemize}\itemsep=0pt
\item nearest
\item linear
\item cubic
\end{itemize}
}

\twocolitem{\textbf{-\,-backprojection}}{Selects the
backprojection technique. A setting of \texttt{idiff} is optimal.
\begin{itemize}\itemsep=0pt
\item trig
\item table
\item diff
\item idiff
\end{itemize}
}

\twocolitem{\textbf{-\,-zeropad}}{Zeropad factor. A setting of
\texttt{1} is optimal.}

\end{twocollist}
