X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fctsim-textui.tex;h=0c123cccd421daee7e0fac5067325bacd63b5912;hb=e5c753200f28fdf5542a48051ad79c7c7dfbb299;hp=dae488620352eaad31c406d87afaca8bc5d076e0;hpb=14703961237e3bc231dbc06aeea7fdd921eee970;p=ctsim.git diff --git a/doc/ctsim-textui.tex b/doc/ctsim-textui.tex index dae4886..0c123cc 100644 --- a/doc/ctsim-textui.tex +++ b/doc/ctsim-textui.tex @@ -1,73 +1,101 @@ -\chapter{ctsimtext}\label{ctsimtext}\index{ctsimtext}% +\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}% \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% +\ctsimfooter% + +\ctsimtext\ is a master shell for all of the command-line utilities. + +\usage \ctsimtext\ can be invoked via three different +methods. +\begin{enumerate}\itemsep=3pt +\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...} \\ +as a shortcut rather than the equivalent command \\ +\texttt{ctsimtext pjrec parameters...} + +\end{enumerate} + +\section{Parallel Processing With a Computer Cluster} +\ctsimtext\ can be used to spread it's processing over a cluster. Specifically, +\ctsimtext\ supports the \urlref{LAM}{http://www.mpi.nd.edu/lam} version of +the MPI environment. On platforms with LAM installed, a parallel version of +\ctsimtext\ is created. The name of this program is \texttt{ctsimtext-lam}. +The functions that take advantage of the parallel processing are +\texttt{phm2if}, \texttt{phm2pj}, \texttt{pjrec}. + +This parallel processing version has been tested with excellent results on +a 16-CPU \urlref{Beowulf}{http://www.beowulf.org} cluster. -\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 \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 -\texttt{ctsimtext function-name parameters...}. - -The available functions are: \section{if1}\label{if1}\index{ctsimtext,if1}% -Perfoms math functions on a single image. +Performs math functions on a single image. \usage \begin{itemize}\itemsep=0pt - \item --invert - \item --log - \item --exp - \item --sqr - \item --sqrt + \item \doublehyphen{invert} + \item \doublehyphen{log} + \item \doublehyphen{exp} + \item \doublehyphen{sqr} + \item \doublehyphen{sqrt} \end{itemize} \section{if2}\label{if2}\index{ctsimtext,if2}% -Perfoms math functions on a two images. +Performs 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 + \item \doublehyphen{add} + \item \doublehyphen{sub} + \item \doublehyphen{mul} + \item \doublehyphen{comp} + \item \doublehyphen{column-plot} + \item \doublehyphen{row-plot} \end{itemize} \section{ifexport}\label{ifexport}\index{ctsimtext,ifexport}% -Export an imagefile to a standard graphics file. +Export an image file to a standard graphics file. \usage \begin{itemize}\itemsep=0pt - \item --format + \item \doublehyphen{format} \begin{itemize}\itemsep=0pt - \item --pgm - \item --pgmasc - \item --png - \item --png16 + \item \texttt{gm} + \item \texttt{pgmasc} + \item \texttt{png} + \item \texttt{png16} \end{itemize} - \item --center + \item \doublehyphen{center} \begin{itemize}\itemsep=0pt - \item median - \item mode - \item mean + \item \texttt{median} + \item \texttt{mode} + \item \texttt{mean} \end{itemize} - \item --auto + \item \doublehyphen{auto} \begin{itemize}\itemsep=0pt - \item --full - \item --std0.1 - \item --std0.5 - \item --std1 - \item --std2 - \item --std3 + \item \texttt{full} + \item \texttt{std0.1} + \item \texttt{std0.5} + \item \texttt{std1} + \item \texttt{std2} + \item \texttt{std3} \end{itemize} - \item --scale - \item --min - \item --max + \item \doublehyphen{scale} + \item \doublehyphen{min} + \item \doublehyphen{max} \end{itemize} \section{ifinfo}\label{ifinfo}\index{ctsimtext,ifinfo}% @@ -76,53 +104,55 @@ Displays information about an imagefile. \usage \begin{itemize}\itemsep=0pt - \item --labels - \item --no-labels - \item --stats - \item --no-stats - \item --help + \item \doublehyphen{labels} + \item \doublehyphen{no-labels} + \item \doublehyphen{stats} + \item \doublehyphen{no-stats} + \item \doublehyphen{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} +\texttt{phm2pj projection-file-name number-of-detectors number-of-views [options...]} - \item --phmfile - Load a phantom definition definition +\begin{twocollist} +\twocolitem{\doublehyphen{phantom}}{Select a standard phantom. +\begin{itemize}\itemsep=0pt +\item \texttt{herman} +\item \texttt{shepp-logan} +\item \texttt{unit-pulse} +\end{itemize} +} +\twocolitem{\doublehyphen{phmfile}}{Load a phantom definition definition} - \item --geometry +\twocolitem{\doublehyphen{geometry}}{ \begin{itemize}\itemsep=0pt - \item parallel - \item equiangular - \item equilinear + \item \texttt{parallel} + \item \texttt{equiangular} + \item \texttt{equilinear} \end{itemize} +} - \item --nray - Number of samples per each detector +\twocolitem{\doublehyphen{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. +\twocolitem{\doublehyphen{rotangle}}{Sets the rotation amount as a multiple of pi. +For parallel geometries use a rotation angle of \texttt{1} and for equilinear and equiangular +geometries use a rotation angle of \texttt{2}. The default is to use to +appropriate rotation angle based on the geometry.} - \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. +\twocolitem{\doublehyphen{view-ratio}}{Sets the field of view as a ratio of the diameter of the phantom. + For normal scanning, a default value of \texttt{1.0} is optimal.} - \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} +\twocolitem{\doublehyphen{scan-ratio}}{Sets the length of scanning as a ratio of the view diameter. + For normal scanning, a value of \texttt{1.0} is optimal.} + +\twocolitem{\doublehyphen{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 \texttt{1.0} is optimal. For other + geometries, this should be at least \texttt{2.0} to avoid artifacts.} +\end{twocollist} -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 @@ -130,80 +160,97 @@ 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} +\begin{twocollist} + \twocolitem{\doublehyphen{nsamples}}{Number of samples in x \& y directions per pixel} + \twocolitem{\doublehyphen{view-ratio}}{Sets the view ration. For normal scanning, + the default value of \texttt{1.0} is optimal.} +\end{twocollist} \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} +\texttt{pj2if projection-file-name image-file-name x-size ysize [options...]} + +\begin{twocollist} +\twocolitem{\doublehyphen{help}}{Print brief online help} +\end{twocollist} \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 + \item \doublehyphen{binaryheader} + \item \doublehyphen{binaryview} + \item \doublehyphen{startview} + \item \doublehyphen{endview} + \item \doublehyphen{dump} \end{itemize} \section{pjrec}\label{pjrec}\index{ctsimtext,pjrec}% Reconstructs the interior of an object from a projection file. -\usage \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. +\twocolitem{\doublehyphen{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 +\item \texttt{abs\_bandlimit} +\item \texttt{abs\_cosine} +\item \texttt{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. +} \twocolitem{\doublehyphen{filter-parameter}}{Sets the alpha level +for Hamming window. At setting of \texttt{0.54}, this equals +the Hanning window.} + +\twocolitem{\doublehyphen{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 \texttt{convolution} +\item \texttt{fourier} +\item \texttt{fourier-table} +\item \texttt{fftw} +\item \texttt{rfftw} \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. + +\twocolitem{\doublehyphen{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. + +\twocolitem{\doublehyphen{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{idiff3} is optimal. + +\twocolitem{\doublehyphen{backprojection}}{Selects the +backprojection technique. A setting of \texttt{idiff} is optimal. \begin{itemize}\itemsep=0pt \item trig \item table \item diff -\item diff2 -\item idiff2 -\item idiff3 +\item idiff \end{itemize} } -\twocolitem{\textbf{--zeropad}}{Zeropad factor. A setting of \texttt{1} is optimal.} -\twocolitem{\textbf{--preinterpolate}}{Selects preinterpolation interpolation technique and sets the preinterpolation factor. Currently, this is experimental and does not work well.} -\end{twocollist} +\twocolitem{\doublehyphen{zeropad}}{Zeropad factor. A setting of +\texttt{1} is optimal.} +\end{twocollist}