X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fctsim-textui.tex;h=900c1622963b590ab9c0fc2de53232077eb124f8;hb=4ab75eaf538f5b42cf86830e44eee70590cd8c9a;hp=0c123cccd421daee7e0fac5067325bacd63b5912;hpb=e5c753200f28fdf5542a48051ad79c7c7dfbb299;p=ctsim.git diff --git a/doc/ctsim-textui.tex b/doc/ctsim-textui.tex index 0c123cc..900c162 100644 --- a/doc/ctsim-textui.tex +++ b/doc/ctsim-textui.tex @@ -1,8 +1,12 @@ \chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% +\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter% -\ctsimtext\ is a master shell for all of the command-line utilities. +\ctsimtext\ is a master shell for all of the command-line utilities. The +command-line utilities can perform most of the functions of the graphical +shell. These command-line utilities are especially appropriate for use on +systems without graphical capability, batch files, and parallel processing +with a Beowulf-type computer cluster. \usage \ctsimtext\ can be invoked via three different methods. @@ -11,7 +15,9 @@ methods. \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. +\texttt{quit} command. \ctsimtext\ uses the +\urlref{readline}{http://www.gnu.org} library on UNIX and Linux platforms +to provide command history processing. \item \ctsimtext\ can also be called to execute a single command. This is especially useful for batch @@ -29,7 +35,7 @@ as a shortcut rather than the equivalent command \\ \end{enumerate} -\section{Parallel Processing With a Computer Cluster} +\section{Parallel Processing} \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 @@ -41,50 +47,62 @@ This parallel processing version has been tested with excellent results on a 16-CPU \urlref{Beowulf}{http://www.beowulf.org} cluster. -\section{if1}\label{if1}\index{ctsimtext,if1}% -Performs math functions on a single image. +\section{if1}\label{if1}\index{if1}% +Performs math functions on a single image. The commands works with +both real and complex valued images. \usage -\begin{itemize}\itemsep=0pt - \item \doublehyphen{invert} - \item \doublehyphen{log} - \item \doublehyphen{exp} - \item \doublehyphen{sqr} - \item \doublehyphen{sqrt} -\end{itemize} +\texttt{if1 input-filename output-filename [options...]} + +\textbf{Options} +\begin{twocollist} + \twocolitem{\doublehyphen{invert}}{Negate pixel values.} + \twocolitem{\doublehyphen{log}}{Take natural logrithm of pixel values.} + \twocolitem{\doublehyphen{exp}}{Take natural exponent of pixel values.} + \twocolitem{\doublehyphen{sqr}}{Take square of pixel values.} + \twocolitem{\doublehyphen{sqrt}}{Take square root of pixel values.} +\end{twocollist} -\section{if2}\label{if2}\index{ctsimtext,if2}% -Performs math functions on a two images. +\section{if2}\label{if2}\index{if2}% +Performs math functions on a two images. The command works with both +real and complex valued images. \usage -\begin{itemize}\itemsep=0pt - \item \doublehyphen{add} - \item \doublehyphen{sub} - \item \doublehyphen{mul} - \item \doublehyphen{comp} - \item \doublehyphen{column-plot} - \item \doublehyphen{row-plot} -\end{itemize} +\texttt{if2 input-filename1 input-filename2 output-filename [options...]} + +\textbf{Options} +\begin{twocollist} + \twocolitem{\doublehyphen{add}}{Add the two images.} + \twocolitem{\doublehyphen{sub}}{Subtract the two images.} + \twocolitem{\doublehyphen{multiply}}{Multiply the two images.} + \twocolitem{\doublehyphen{divide}}{Divide the two images.} + \twocolitem{\doublehyphen{comp}}{Statistically compare the two images.} + \twocolitem{\doublehyphen{column-plot n}}{Plot the values of a particular column.} + \twocolitem{\doublehyphen{row-plot n}}{Plot the values of a particular row.} +\end{twocollist} -\section{ifexport}\label{ifexport}\index{ctsimtext,ifexport}% +\section{ifexport}\label{ifexport}\index{ifexport}% Export an image file to a standard graphics file. \usage -\begin{itemize}\itemsep=0pt - \item \doublehyphen{format} +\texttt{ifexport input-filename output-filename -\,-format }\emph{graphic-format} \texttt{ [options...]} + +\textbf{Options} +\begin{twocollist} + \twocolitem{\doublehyphen{format}}{ \begin{itemize}\itemsep=0pt - \item \texttt{gm} - \item \texttt{pgmasc} - \item \texttt{png} - \item \texttt{png16} - \end{itemize} - \item \doublehyphen{center} + \item \texttt{pgm} - Portable graymap format. + \item \texttt{pgmasc} - ASCII PGM format. + \item \texttt{png} - Portable network graphics format. + \item \texttt{png16} - 16-bit PNG format. + \end{itemize}} + \twocolitem{\doublehyphen{center}}{Set center of intensity window. \begin{itemize}\itemsep=0pt \item \texttt{median} \item \texttt{mode} \item \texttt{mean} - \end{itemize} - \item \doublehyphen{auto} + \end{itemize}} + \twocolitem{\doublehyphen{auto}}{Set half-width of intensity window as a multiple of the standard deviation. \begin{itemize}\itemsep=0pt \item \texttt{full} \item \texttt{std0.1} @@ -92,30 +110,33 @@ Export an image file to a standard graphics file. \item \texttt{std1} \item \texttt{std2} \item \texttt{std3} - \end{itemize} - \item \doublehyphen{scale} - \item \doublehyphen{min} - \item \doublehyphen{max} -\end{itemize} + \end{itemize}} + \twocolitem{\doublehyphen{scale}}{Set size of output image. A value of + \texttt{1} is default and creates an output image the same size as the input image.} + \twocolitem{\doublehyphen{min}}{Set the minimum intensity value.} + \twocolitem{\doublehyphen{max}}{Set the maximum intensity value.} +\end{twocollist} -\section{ifinfo}\label{ifinfo}\index{ctsimtext,ifinfo}% +\section{ifinfo}\label{ifinfo}\index{ifinfo}% Displays information about an imagefile. \usage -\begin{itemize}\itemsep=0pt - \item \doublehyphen{labels} - \item \doublehyphen{no-labels} - \item \doublehyphen{stats} - \item \doublehyphen{no-stats} - \item \doublehyphen{help} -\end{itemize} +\texttt{ifinfo input-filename [options...]} + +\textbf{Options} +\begin{twocollist} + \twocolitem{\doublehyphen{labels}}{Display history labels.} + \twocolitem{\doublehyphen{no-labels}}{Suppress history labels.} + \twocolitem{\doublehyphen{stats}}{Display image statistics.} + \twocolitem{\doublehyphen{no-stats}}{Suppress image statistics.} +\end{twocollist} -\section{phm2pj}\label{phm2pj}\index{ctsimtext,phm2pj}% +\section{phm2pj}\label{phm2pj}\index{phm2pj}% Simulates collection of X-rays data (projections) around a phantom object. \usage -\texttt{phm2pj projection-file-name number-of-detectors number-of-views [options...]} +\texttt{phm2pj projection-filename number-detectors number-views [options...]} \begin{twocollist} \twocolitem{\doublehyphen{phantom}}{Select a standard phantom. @@ -125,9 +146,9 @@ Simulates collection of X-rays data (projections) around a phantom object. \item \texttt{unit-pulse} \end{itemize} } -\twocolitem{\doublehyphen{phmfile}}{Load a phantom definition definition} +\twocolitem{\doublehyphen{phmfile}}{Reads a user-created phantom file.} -\twocolitem{\doublehyphen{geometry}}{ +\twocolitem{\doublehyphen{geometry}}{Sets the scanner geometry. Valid values are: \begin{itemize}\itemsep=0pt \item \texttt{parallel} \item \texttt{equiangular} @@ -137,60 +158,75 @@ Simulates collection of X-rays data (projections) around a phantom object. \twocolitem{\doublehyphen{nray}}{ Number of samples per each detector} -\twocolitem{\doublehyphen{rotangle}}{Sets the rotation amount as a multiple of pi. +\twocolitem{\doublehyphen{rotangle}}{The rotation angle 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.} \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.} + For normal scanning, the default value of \texttt{1.0} is optimal.} \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.} + For normal scanning, the default 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 +\twocolitem{\doublehyphen{focal-length}}{Sets the distance between the radiation source + and 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} -\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. +\section{phm2if}\label{phm2if}\index{phm2if}% +Converts a geometric phantom object into an imagefile. \usage +\texttt{phm2if phantom-filename image-filename [options...]} + +\textbf{Options} \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}% +\section{pj2if}\label{pj2if}\index{pj2if}% Convert a projection file into an imagefile. \usage -\texttt{pj2if projection-file-name image-file-name x-size ysize [options...]} +\texttt{pj2if projection-filename image-filename x-size y-size [options...]} +\textbf{Options} \begin{twocollist} -\twocolitem{\doublehyphen{help}}{Print brief online help} +\twocolitem{\doublehyphen{dump}}{Print all projection data to the console.} \end{twocollist} -\section{pjinfo}\label{pjinfo}\index{ctsimtext,pjinfo}% +\section{pjinfo}\label{pjinfo}\index{pjinfo}% Displays information about a projection file. \usage -\begin{itemize}\itemsep=0pt - \item \doublehyphen{binaryheader} - \item \doublehyphen{binaryview} - \item \doublehyphen{startview} - \item \doublehyphen{endview} - \item \doublehyphen{dump} -\end{itemize} +\texttt{pjinfo projection-filename [options...]} -\section{pjrec}\label{pjrec}\index{ctsimtext,pjrec}% +\textbf{Options} +\begin{twocollist} + \twocolitem{\doublehyphen{binaryheader}}{Dump the binary header to the standard output. + This option is only used when manually creating a composite projection file from + several different projection files.} + \twocolitem{\doublehyphen{binaryview}}{Dump binary view data to the standard output. + This option is only used when manually creating a composite projection file from + several different projection files.} + \twocolitem{\doublehyphen{startview}}{Sets starting view to display. Default is \texttt{0}.} + \twocolitem{\doublehyphen{endview}}{Sets ending view to display. Default is the last view.} + \twocolitem{\doublehyphen{dump}}{Print all projection data to the console.} +\end{twocollist} + +\section{pjrec}\label{pjrec}\index{pjrec}% Reconstructs the interior of an object from a projection file. +\usage +\texttt{pjrec projection-filename image-filename image-cols image-rows [options...]} + +\textbf{Options} + \begin{twocollist} \twocolitemruled{\textbf{Parameter}}{\textbf{Options}} \twocolitem{\doublehyphen{filter}}{Selects which filter to apply to @@ -212,45 +248,49 @@ For smaller numbers of detectors, \texttt{convolution} might be a bit faster. \begin{itemize}\itemsep=0pt \item \texttt{convolution} -\item \texttt{fourier} -\item \texttt{fourier-table} -\item \texttt{fftw} -\item \texttt{rfftw} -\item fftw -\item rfftw +\item \texttt{fourier} - Uses simple Fourier transform. +\item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions. +\item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library. +\item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform. \end{itemize} } +\end{twocollist} +\begin{twocollist} \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 +\item \texttt{direct} +\item \texttt{inverse-fourier} \end{itemize} } \twocolitem{\doublehyphen{interpolation}}{Interpolation technique. -\texttt{linear} is optimal. +\texttt{cubic} is optimal when the +data is smooth. Smooth data is obtained by taking many projections and/or +using a smoothing filter. In the absence of smooth data, \texttt{linear} gives better results and +is many times faster than cubic interpolation. + \begin{itemize}\itemsep=0pt -\item nearest -\item linear -\item cubic +\item \texttt{nearest} +\item \texttt{linear} +\item \texttt{cubic} \end{itemize} } \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 idiff +\item \texttt{trig} - Use trigometric functions at each image point. +\item \texttt{table} - Use precalculated trigometric tables. +\item \texttt{diff} - Use difference method to iterate within image. +\item \texttt{idiff} - Use integer iteration math. \end{itemize} } \twocolitem{\doublehyphen{zeropad}}{Zeropad factor. A setting of -\texttt{1} is optimal.} +\texttt{1} is optimal whereas a zeropad of \texttt{0} performs no zeropadding.} \end{twocollist}