X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fctsim-gui.tex;h=94d02ec1c6076ffc0317771094b42cbdb862c015;hb=17f20398d8bb0e4b97b5884b999bbe8d58c5254f;hp=a8df9fefd88a13aec50fe38c7f34f637c3a5fb70;hpb=f692b2d39f56ffbafc04283f32233c098aa2978b;p=ctsim.git diff --git a/doc/ctsim-gui.tex b/doc/ctsim-gui.tex index a8df9fe..94d02ec 100644 --- a/doc/ctsim-gui.tex +++ b/doc/ctsim-gui.tex @@ -1,28 +1,499 @@ -\chapter{ctsim - the Graphical User Interface}\label{ctsim}\index{ctsim}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% +\chapter{The Graphical User Interface}\label{ctsim}\index{ctsim}% +\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% +\ctsimfooter% -\section{Overview} -\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. +\section{Overview}\index{Graphical interface} +\ctsim\ is the graphical shell for the CTSim project. This shell uses +the \urlref{wxWindows}{http://www.wxwindows.org} library for +cross-platform compatibility. The graphical shell is compatible +with Microsoft Windows, \urlref{GTK}{http://www.gtk.org}, and +\urlref{Motif}{http://www.openmotif.org} graphical environments. -\usage -ctsim [OPTIONS] [files to open...] +\usage \texttt{ctsim [files to open...]} + +You can invoke \ctsim\ by itself on the command line, or include +any number of files that you want \ctsim\ to +automatically open. \ctsim\ can open projection files, image +files, phantom files, and plot files. + + +\section{File Types}\index{File types} -\section{Files Supported} \subsection{Phantom} +Besides loading phantom files from the disk, the Herman and +Shepp-Logan phantoms are built-in to \ctsim. Phantom files can be +read and stored on the disk. Phantom files are stored in a simple +ASCII format. A text editor is required to +create and edit these files. + \subsection{Image} +Image files are 2-dimensional files that store 4-byte floating +point values. Images files can be either real or complex valued. +Typically, all images are real except for images that have been +processed by Fourier transforms. As you might expect, +complex-valued images are twice the size of real-valued images +since both a real and imaginary component need to be store. When +complex-valued images are viewed on the screen, only the real +component is displayed. + +Images files can also store any number of text labels. \ctsim\ uses +these labels for storing history information regarding +the creation and modifications of images. + \subsection{Projection} +Projection files are created from phantom files during the +projection process. Numerous options are available for the +creation of the these files. The files are stored in a binary +format with cross-platform compatibility on little and big endian +architectures. + \subsection{Plot} +Plot files are created by \ctsim\ during analysis of image files. +They can be read and stored on the disk. They are stored as ASCII +files for easy cross-platform support and editing. + +\section{Global Menu Commands} +These global commands are present on the menus of all windows. + +\subsection{File - Create Phantom}\label{IDH_DLG_PHANTOM}\index{Dialog!Create phantom} +This command brings up a dialog box showing the phantoms that are preprogrammed +into \ctsim. After selecting one of these phantoms, the new window with that +phantom will be generated. The preprogrammed phantoms are: + +\begin{twocollist} +\twocolitem{\textbf{Herman}}{The Herman head phantom\cite{HERMAN80}} +\twocolitem{\textbf{Shepp-Logan}}{The head phantom of Shepp \& Logan\cite{SHEPP74}} +\twocolitem{\textbf{Unit pulse}}{A phantom that has a value of \texttt{1} for the +center of the phantom and \texttt{0} everywhere else.} +\end{twocollist} + +\subsection{File - Create Filter}\label{IDH_DLG_FILTER}\index{Dialog!Create filter} +This command brings up a dialog box showing the pre-programmed filters +of \ctsim. This command will create a 2-dimensional image of the selected filter. +The center of the filter is at the center of the image. + +These filters can be created in their natural frequency domain or in their spatial domain. + +\begin{twocollist} +\twocolitem{\textbf{Filter}}{Selects the filter to generate.} +\twocolitem{\textbf{Domain}}{Selects either the \texttt{Frequency} or \texttt{Spatial} domains. The filters have the +frequency domain as their natural domain.} +\twocolitem{\textbf{X Size}}{Number of columns in the output image.} +\twocolitem{\textbf{Y Size}}{Number of rows in the output image.} +\twocolitem{\textbf{Hamming Parameter}}{ This parameter adjusts the smoothing of the Hamming +filter and can range from \texttt{0} to \texttt{1}. +At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter. +At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning +window.} +\twocolitem{\textbf{Bandwidth}}{Sets the bandwidth of the filter.} +\twocolitem{\textbf{Axis (input) Scale}}{Sets the scale for the filter input. By default, the input to the filter is +the distance in pixels from the center of the image. By changing this value, one can set a scale the input to the filter. +For example, if the output image is \texttt{101} pixels and thus the center of the image is at \texttt{(50,50)}, then a pixel +lying at point \texttt{100,50} would be 50 units from the center of the filter. By applying an \texttt{Axis scale} of +\texttt{0.1}, then that point would be scaled to 5 units from the center of the filter.} +\twocolitem{\textbf{Filter (output) Scale}}{Multiplies the output of the filter by this amount. By default, the filter has a maximum +value of \texttt{1}.} +\end{twocollist} + +\subsection{File - Preferences}\label{IDH_DLG_PREFERENCES}\index{Dialog!Preferences} +This command displays a dialog box that allows users to control +the behavior of \ctsim. These options are saved across \ctsim\ sessions. +Under Microsoft Windows environments, they are stored in the registry. +On UNIX and Linux environments, they are stored in the user's home +directory with the filename of \texttt{.ctsim}. + +\begin{twocollist} +\twocolitem{\textbf{Advanced options}}{By default, this is turned off in new installations. +These advanced options are not required for normal simulations. When \texttt{Advanced +Options} is set, \ctsim\ will display more options during scanning of phantoms and +the reconstruction of projections.} + +\twocolitem{\textbf{Ask before deleting new documents}}{By default, this is turned on in +new installations. With this option set, \ctsim\ will ask before closing +documents that have been modified or never saved on disk. By turning off +this option, \ctsim\ will never ask if you want to save a file -- you'll +be responsible for saving any files that you create.} + +\end{twocollist} + +\subsection{File - Open} +This command opens a file section dialog box. Of special consideration +is the \texttt{File Type} combo box on the bottom of the dialog. You need +to set the \texttt{File Type} combo box to to the type of file that you wish to open. + +\subsection{File - Save} +This command saves the contents of the active window. If the window hasn't +been named, a dialog box will open asking for the file name to use. + +\subsection{File - Close} +As one would expect, this closes the active window. + +\subsection{File - Save As} +Allows the saving of the contents of a window to any filename. + +\subsection{Help - Contents} +This command displays the online help. + +\subsection{Help - About} +This command shows the version number of \ctsim. + \section{Phantom Menus} +\subsection{Properties} +Displays the properties of a phantom which includes: + +\begin{itemize}\itemsep=0pt +\item Overall dimensions of a phantom +\item A list of all component phantom elements +\end{itemize} + +\subsection{Rasterize Dialog}\label{IDH_DLG_RASTERIZE}\index{Dialog!Rasterize} +This creates an image file from a phantom. Technically, it +converts the phantom from a vector (infinite resolution) object +into a 2-dimension array of floating-point pixels. The parameters +to set are: + +\begin{twocollist} +\twocolitem{\textbf{X size}}{Number of columns in image file} +\twocolitem{\textbf{Y size}}{Number of rows in image file} +\twocolitem{\textbf{Samples per pixel}}{Numbers of samples taken +per pixel in both the x and y directions. For example, if the +\texttt{Samples per pixel} is set to \texttt{3}, then for every +pixel in the image file 9 samples \latexonly{($3\times3$)}\latexignore{(3 x 3)} +are averaged.} +\end{twocollist} + +\subsection{Projection Dialog}\label{IDH_DLG_PROJECTIONS}\index{Dialog!Projections} +This creates a projection file from a phantom. The options +available when collecting projections are: + +\begin{twocollist} +\twocolitem{\textbf{Geometry}}{Selects the scanner geometry. + \begin{itemize}\itemsep=0pt + \item \texttt{Parallel} + \item \texttt{Equiangular} + \item \texttt{Equilinear} + \end{itemize}} +\twocolitem{\textbf{Number of detectors}}{Sets the number of +detectors in the detector array.} + +\twocolitem{\textbf{Number of views}}{Sets the number of views +collected} + +\twocolitem{\textbf{Samples per detector}}{Sets the number of +samples collected for each detector} + +\twocolitem{\textbf{View Ratio}}{Sets the field of view as a ratio +of the diameter of the phantom. For normal scanning, use a value of +\texttt{1.0}.} + +\twocolitem{\textbf{Scan Ratio}}{Sets the length of scanning as a +ratio of the view diameter. For normal scanning, use a value of \texttt{1.0}.} + +\twocolitem{\textbf{Focal length ratio}}{Sets the distance between the +radiation source and the center of the phantom as a +ratio of the radius of the phantom. 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} + +\textbf{Advanced Options} + +\begin{twocollist} +\twocolitem{\textbf{Rotation Angle}}{Sets the rotation amount as a +multiple of \latexonly{$\pi$.}\latexignore{pi.} For parallel geometries use a rotation angle of \texttt{1} +and for equilinear and equiangular geometries use a rotation angle +of \texttt{2}. Using any other rotation angle will lead to artifacts.} +\end{twocollist} + + + \section{Image Menus} +\subsection{File - Properties} +Properties of image files include +\begin{itemize}\itemsep=0pt + \item Whether the image is real or complex valued + \item Numeric statistics (minimum, maximum, mean, median, mode, and standard deviation) + \item History labels (text descriptions of the processing for this image) +\end{itemize} + +\subsection{File - Export}\label{IDH_DLG_EXPORT}\index{Image!Export} +This command allows for exporting image files to a standard +graphics file format. This is helpful when you want to take an +image and import it into another application. The current +\helprefn{intensity scale}{intensityscale} is used when exporting +the file. The supported graphic formats are: + +\begin{twocollist} +\twocolitem{\textbf{PNG}}{Portable Network Graphics format. This uses 8-bits or +256 shades of gray.} +\twocolitem{\textbf{PNG-16}}{This is a 16-bit version of PNG which allows for +65536 shades of gray.} +\twocolitem{\textbf{PGM}}{Portable Graymap format. This is a common format used on +UNIX systems.} +\twocolitem{\textbf{PGM}}{ASCII version of PGM.} +\end{twocollist} + + +\subsection{View}\label{intensityscale}\index{Intensity scale} +These commands are used change the intensity scale for viewing the image. +These commands do not change the image data. When the minimum intensity is +set, then the color pure black is assigned to that image intensity. Similarly, +when the maximum intensity is set, the the color pure white is assigned to that +image value. + +Changing the intensity scale is useful when examining different image features. +In clinical medicine, the intensity scale is often changed to examine bone +(high intensity) verses soft-tissue (medium intensity) features. + +\subsubsection{Set}\label{IDH_DLG_MINMAX} +This command displays a dialog box that allows you to set the lower +and upper intensities to display. + +\subsubsection{Auto}\label{IDH_DLG_AUTOSCALE} +This command displays a dialog box that allows \ctsim\ to automatically +make an intensity scale. The parameters that \ctsim\ needs to make this +automatic scale are: + +\begin{twocollist} +\twocolitem{\textbf{Center}}{This sets the center of the intensity scale. Currently, +\ctsim\ allows you to use either the mean, mode, or median of the image +as the center of the intensity scale.} + +\twocolitem{\textbf{Width}}{This sets the half-width of the intensity scale. The width +is specified as a ratio of the standard deviation.} +\end{twocollist} + +As an example, if \texttt{median} is selected as the center and +\texttt{0.5} is selected as the width, the the minimum intensity will +be \latexonly{$median - 0.5 \times standardDeviation$}\latexignore{\emph{median - 0.5 x standardDeviation}} +and the maximum will be \latexonly{$median + 0.5 \times standardDeviation$.}\latexignore{\emph{ +median + 0.5 x standardDeviation}.} + +\subsubsection{Full} +This command resets the intensity scale to the full scale of the image. + +\subsection{Image} +These commands create a new image based upon the current image, +and for some commands, also upon a comparison image. + +\subsubsection{Add, Subtract, Multiply, Divide} +These are simple arithmetic operations. \ctsim\ will display a dialog +box showing all of the currently opened image files that are the +same size as the active image. After the selection of a compatible image, +\ctsim\ will perform the arithmetic operation on the two images and +make a new result image. + +\subsubsection{Image Size} +This command will generate a new image based on the current image. The new +image can be scaled to any size. A dialog +appears asking for the size of the new image. Bilinear interpolation +is used when calculating the new image. + +\subsubsection{3-D Conversion} +Generates a 3-dimensional view of the current phantom. This view can be +rotated in three dimensions. The left and right arrow control the z-axis +rotation, the up and down arrows control the x-axis rotation. The y-axis +rotation is controlled by the \texttt{T} and \texttt{Y} keys. Other options +are presented on the \texttt{View} menu and include: + +\begin{itemize} +\item Surface plot versus wireframe plot. +\item Smooth shading versus flat shading. +\item Lighting on or off. +\item Color scale on or off. +\end{itemize} + +\subsection{Filter}\index{Image!Filter} +These commands filter and modify the image + +\subsubsection{Arithmetic} +These commands operate on the image on a pixel-by-pixel basis. The commands +support both real and complex-valued images. The available arithmetic commards are: + +\begin{twocollist} + \twocolitem{\textbf{Invert}}{Negate pixel values.} + \twocolitem{\textbf{Log}}{Take natural logrithm of pixel values.} + \twocolitem{\textbf{Exp}}{Take natural exponent of pixel values.} + \twocolitem{\textbf{Square}}{Take square of pixel values.} + \twocolitem{\textbf{Square root}}{Take square root of pixel values.} +\end{twocollist} + + +\subsubsection{Frequency Based} +This commands allow the Fourier and inverse Fourier transformations of +images. By default, the transformations will automatically convert +images between Fourier to natural orders as expected. For example, \texttt{2-D FFT} +will transform the points into natural order after the Fourier transform. +Similarly the inverse, \texttt{2-D IFFT}, will reorder the points from +natural order to Fourier order before applying the inverse Fourier transformation. + +As you would expect, images that undergo frequency filtering will be complex-valued +images. Normally, only the real component is shown by \ctsim. However, \ctsim\ does +have options for converting a complex-valued image into a real-valued image via +the \texttt{Magnitude} and \texttt{Phase} filtering commands. + + +\subsection{Analyze} +These commands are used for analyzing an image. + +\subsubsection{Plotting} +The commands plot rows and columns of images. There are also commands +that perform FFT and IFFT transformations prior to plotting. + +\subsubsection{Image Comparison}\label{IDH_DLG_COMPARISON}\index{Image!Comparison} +This command performs statistical comparisons between two images. An option +also exists for generating a difference image from the two input images. + +There are also commands for comparison plotting of rows and columns from two images. +This is quite helpful when comparing a phantom to a reconstruction. + +The three distance measures are: + +\begin{twocollist} +\twocolitem{\textbf{$d$}}{The normalized root mean squared distance measure.} +\twocolitem{\textbf{$r$}}{The normalized mean absolute distance measure.} +\twocolitem{\textbf{$e$}}{The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.} +\end{twocollist} \section{Projection Menus} +\subsection{File - Properties} +The displayed properties include: + +\begin{itemize} +\item Number of detectors in the projections. +\item Number of views. +\item The variables used when generating the projections from the phantom. +\end{itemize} + +\subsection{Process - Convert Polar Dialog}\label{IDH_DLG_POLAR}\index{Polar conversion} +Creates an image file with the polar conversion of the projection data. The options to set are: + +\begin{twocollist} +\twocolitem{\textbf{X Size}}{Number of columns in output image.} +\twocolitem{\textbf{Y Ssize}}{Number of rows in output image.} +\twocolitem{\textbf{Interpolation}}{Selects the interpolation method. +Currently, the \texttt{bilinear} option provides the highest +quality interpolation.} +\end{twocollist} + +\subsection{Process - Convert FFT Polar Dialog} +The parameters for this option are the same as the \helprefn{Convert +Polar Dialog}{convertpolardialog}. For this command, though, the +projections are Fourier transformed prior to conversion to polar +image. + +\subsection{Reconstruct - Filtered Backprojection Dialog}\label{IDH_DLG_RECONSTRUCTION}\index{Dialog!Reconstruction} +This dialog sets the parameters for reconstructing an image from projections +using the filtered backprojection technique. The parameters available are: + +\begin{twocollist} +\twocolitem{\textbf{Filter}}{Selects which filter to apply to each +projection. To properly reconstruct an image, this filter should +be consist of the the absolute value of distance from zero +frequency optionally multiplied by a smoothing filter. The optimal +filters to use are: +\begin{itemize}\itemsep=0pt +\item \texttt{abs\_bandlimit} +\item \texttt{abs\_cosine} +\item \texttt{abs\_hamming} +\item \texttt{abs\_hanning} +\end{itemize} +} \twocolitem{\textbf{Hamming parameter}}{Sets the alpha level for +Hamming window. This parameter adjusts the smoothing of the Hamming +filter and can range from \texttt{0} to \texttt{1}. +At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter. +At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning +window.} +\end{twocollist} + +\begin{twocollist} +\twocolitem{\textbf{Filter Method}}{Selects the filtering method. +For large numbers of detectors, \texttt{rfftw} is optimal. For +smaller numbers of detectors, \texttt{convolution} can be +faster. +\begin{itemize}\itemsep=0pt +\item \texttt{convolution} +\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} +} +\twocolitem{\textbf{Interpolation}}{Interpolation technique. +\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 also many times faster than cubic interpolation. + +\begin{itemize}\itemsep=0pt +\item nearest +\item linear +\item cubic +\end{itemize} +} +\end{twocollist} + +\textbf{Advanced Options} + +These options are only visible if \emph{Advanced Options} has been +selected in the \texttt{File - Preferences} dialog. These parameters +default to optimal settings and don't need to be adjusted except +by expert users. + +\begin{twocollist} +\twocolitem{\textbf{Backprojection}}{Selects the backprojection +technique. A setting of \texttt{idiff} is optimal. +\begin{itemize}\itemsep=0pt +\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 techique. +\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 \texttt{direct} +\item \texttt{inverse-fourier} +\end{itemize} +} + +\twocolitem{\textbf{Zeropad}}{Zeropad factor when using +frequency-based filtering. A setting of \texttt{1} is optimal whereas +a setting of \texttt{0} disables zero padding. Settings greater than \texttt{1} +perform larger amounts of zero padding but without any significant benefit.} + +\end{twocollist} + \section{Plot Menus} +\subsection{File - Properties} +The displayed properties include: + +\begin{itemize}\itemsep=0pt +\item the number of curves in the plot and the number of points per curve. +\item the EZPlot commands used to format the plot are displayed. +\item history labels from the originating image(s) and the plot function. +\end{itemize} + +\subsection{View Menu} +These commands set the scaling for the y-axis. They are analogous +to the options used for setting the intensity scale for images. + +\subsubsection{Set} +This command sets the upper and lower limits for the y-axis. + +\subsubsection{Auto} +This command automatically sets the upper and lower limits for the +y-axis. Please refer to the \texttt{View - Auto} documentation for +image files for the details. + +\subsubsection{Full} +The command resets the upper and lower limits of the y-axis to the +minimum and maximum values of the curves.