\newcommand{\ctsim}{{\tt CTSim}}
\newcommand{\ctsimtext}{{\tt CTSimText}}
-\newcommand{\usage}{{\bf Usage \par}}
+\newcommand{\usage}{{\bf Usage}{\par}}
\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}%
\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}%
\date{January 2001}%
}%
\winhelponly{\title{Manual for CTSim 3.0}%
-\author{by Kevin Rosenberg, M.D.\\$$\image{1cm;0cm}{logo-huge.bmp}$$}%
+\author{by Kevin Rosenberg, M.D.\\$$\image{3cm;3cm}{logo-huge.bmp}$$}%
}%
\makeindex%
\begin{document}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
-\winhelponly{\image{1cm;0cm}{logo-huge.bmp}\par}%
+\winhelponly{$$\image{3cm;3cm}{logo-huge}$$}%
Computed Tomography is a technique for estimating the interior of an object
from measurement of radiation collected around the object. This radiation
\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{Installing Windows Binary}\index{Installation,Windows}%
-\section{Build From Sources}%\index{Installation,Build}%
+\section{Build From Sources}\label{build}\index{Installation,Build}%
See the INSTALL file included in the source distribution for instructions.
-\section{Requirements}\index{Installation,Requirements}%
+\section{Requirements}\label{installreq}\index{Installation,Requirements}%
\begin{itemize}\itemsep=0pt
\item zlib Library (optional)
\par Used for PNG file export.
\ctsim\ can open projection files, image files, phantom definition files, and plotfiles.
-\usage\
+\usage
ctsim [OPTIONS] [files to open...]
-\chapter{ctsimtext}\index{ctsimtext}%
+\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\
+\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.
The following function names are available:
+\helprefn{if1}{if1}\par
+\helprefn{if2}{if2}\par
+\helprefn{ifexport}{ifexport}\par
+\helprefn{ifinfo}{ifinfo}\par
+\helprefn{phm2if}{phm2if}\par
+\helprefn{phm2pj}{phm2pj}\par
+\helprefn{pj2if}{pj2if}\par
+\helprefn{pjinfo}{pjinfo}\par
+\helprefn{pjrej}{pjrec}\par
+
\subsection{if1}\label{if1}\index{ctsimtext,if1}%
Perfoms math functions on a single image.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
\item --invert
\item --log
\item --sqrt
\end{itemize}
-\subsection{if2}\index{ctsimtext,if2}%
+\subsection{if2}\label{if2}\index{ctsimtext,if2}%
Perfoms math functions on a two images.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
\item --add
\item --sub
\item --row-plot
\end{itemize}
-\subsection{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}
-
-\subsection{ifexport}\index{ctsimtext,ifexport}%
+\subsection{ifexport}\label{ifexport}\index{ctsimtext,ifexport}%
Export an imagefile to a standard graphics file.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
\item --format
\begin{itemize}\itemsep=0pt
\item --max
\end{itemize}
-\subsection{phm2pj}\index{ctsimtext,phm2pj}%
+\subsection{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}
+
+\subsection{phm2pj}\label{phm2pj}\index{ctsimtext,phm2pj}%
Simulates collection of X-rays data (projections) around a phantom object.
-\usage\
+\usage
phm2pj projection-file-name number-of-detectors number-of-views [options...]
\begin{itemize}\itemsep=0pt
\item --phantom
The Herman phantom is taken with permission from Gabor Hermans 1980 book\cite{HERMAN80}. The Shepp-Logan phantom was published in 1974\cite{SHEPP74}.
-\subsection{phm2if}\index{ctsimtext,phm2if}%
+\subsection{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\
+\usage
\begin{itemize}\itemsep=0pt
\item --nsamples
\end{itemize}
-\subsection{pj2if}\index{ctsimtext,pj2if}%
+\subsection{pj2if}\label{pj2if}\index{ctsimtext,pj2if}%
Convert a projection file into an imagefile.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
\end{itemize}
-\subsection{pjinfo}\index{ctsimtext,pjinfo}%
+\subsection{pjinfo}\label{pjinfo}\index{ctsimtext,pjinfo}%
Displays information about a projection file.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
\item --binaryheader
\item --binaryview
\item --dump
\end{itemize}
-\subsection{pjrec}\index{ctsimtext,pjrec}%
+\subsection{pjrec}\label{pjrec}\index{ctsimtext,pjrec}%
Reconstructs the interior of an object from a projection file.
-\usage\
+\usage
\begin{itemize}\itemsep=0pt
- \item Filter
+ \item Filter \par
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.
\item abs_hamming
\end{itemize}
- \item Filter Parameter
- \par Sets the alpha level for Hamming
+ \item Filter Parameter \par
+ Sets the alpha level for Hamming
window. At setting of 0.54, this equals the Hanning window.
\item Filter Method
\item Preinterpolation Factor
\end{itemize}
-\chapter{The Web Browser CGI Interface}\index{Web Interface}%
+\chapter{The Web Browser CGI Interface}\label{webinterface}\index{Web Interface}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\printindex%
-\end{document}
+\end{document}%
+
** This is part of the CTSim program
** Copyright (C) 1983-2001 Kevin Rosenberg
**
-** $Id: ctglobals.h,v 1.2 2001/01/13 03:51:35 kevin Exp $
+** $Id: ctglobals.h,v 1.3 2001/01/18 21:30:22 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
#define __CTGLOBALS_H
#ifdef HAVE_WXWINDOWS
-#include "../src/ctsim.h"
class CTSimApp;
extern bool g_bRunningWXWindows; // variable defined in syserror.cpp
extern CTSimApp* theApp;
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: syserror.cpp,v 1.15 2001/01/13 03:51:35 kevin Exp $
+** $Id: syserror.cpp,v 1.16 2001/01/18 21:30:22 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
#include <ctype.h>
#include <string>
#include "ct.h"
-
+#include "../src/ctsim.h"
/* NAME
* sys_error System error handler
<pre>
<h1>Build Log</h1>
<h3>
---------------------Configuration: libctsim - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp" with contents
-[
-/nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2\include" /D "_DEBUG" /D "HAVE_WXWIN" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /FR"Debug/" /Fp"Debug/libctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
-"C:\ctsim\libctsim\backprojectors.cpp"
-"C:\ctsim\libctgraphics\dlgezplot.cpp"
-"C:\ctsim\libctsim\filter.cpp"
-"C:\ctsim\libctsim\fourier.cpp"
-"C:\ctsim\libctsim\globalvars.cpp"
-"C:\ctsim\libctsupport\hashtable.cpp"
-"C:\ctsim\libctsim\imagefile.cpp"
-"C:\ctsim\libctsim\phantom.cpp"
-"C:\ctsim\libctsupport\plotfile.cpp"
-"C:\ctsim\libctgraphics\pol.cpp"
-"C:\ctsim\libctsim\procsignal.cpp"
-"C:\ctsim\libctsim\projections.cpp"
-"C:\ctsim\libctsim\reconstruct.cpp"
-"C:\ctsim\libctsim\scanner.cpp"
-"C:\ctsim\libctsupport\syserror.cpp"
-"C:\ctsim\libctsim\trace.cpp"
-]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp" with contents
-[
-/nologo /out:"Debug\libctsim.lib"
-.\Debug\array2dfile.obj
-.\Debug\backprojectors.obj
-.\Debug\clip.obj
-.\Debug\consoleio.obj
-.\Debug\dlgezplot.obj
-.\Debug\ezplot.obj
-.\Debug\ezset.obj
-.\Debug\ezsupport.obj
-.\Debug\filter.obj
-.\Debug\fnetorderstream.obj
-.\Debug\fourier.obj
-.\Debug\getopt.obj
-.\Debug\getopt1.obj
-.\Debug\globalvars.obj
-.\Debug\hashtable.obj
-.\Debug\imagefile.obj
-.\Debug\mathfuncs.obj
-.\Debug\phantom.obj
-.\Debug\plotfile.obj
-.\Debug\pol.obj
-.\Debug\procsignal.obj
-.\Debug\projections.obj
-.\Debug\reconstruct.obj
-.\Debug\scanner.obj
-.\Debug\sgp.obj
-.\Debug\strfuncs.obj
-.\Debug\syserror.obj
-.\Debug\trace.obj
-.\Debug\transformmatrix.obj
-.\Debug\xform.obj
-]
-Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp"
-<h3>Output Window</h3>
-Compiling...
-backprojectors.cpp
-dlgezplot.cpp
-filter.cpp
-fourier.cpp
-globalvars.cpp
-hashtable.cpp
-imagefile.cpp
-phantom.cpp
-plotfile.cpp
-pol.cpp
-procsignal.cpp
-projections.cpp
-reconstruct.cpp
-scanner.cpp
-syserror.cpp
-trace.cpp
-Creating library...
-<h3>
---------------------Configuration: FFTW2st - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
---------------------Configuration: zlib - Win32 DLL--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
---------------------Configuration: libpng - Win32 DLL--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
---------------------Configuration: RFFTW2st - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
---------------------Configuration: wxvc - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
---------------------Configuration: xpm - Win32 Debug--------------------
-</h3>
-<h3>Command Lines</h3>
-<h3>
--------------------Configuration: ctsim - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2B.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D.tmp" with contents
[
/nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "\wx2\include" /I "." /I "..\..\include" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\zlib" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"2.5.0\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
"C:\ctsim\src\ctsim.cpp"
-"C:\ctsim\src\dialogs.cpp"
-"C:\ctsim\src\dlgprojections.cpp"
-"C:\ctsim\src\dlgreconstruct.cpp"
-"C:\ctsim\src\docs.cpp"
-"C:\ctsim\src\views.cpp"
]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2B.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9E.tmp" with contents
[
comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib xpmd.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" /libpath:"..\..\..\wx2\lib"
.\Debug\ctsim.obj
\wx2\lib\wxd.lib
\wx2\lib\xpmd.lib
]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9E.tmp"
<h3>Output Window</h3>
Compiling...
ctsim.cpp
-dialogs.cpp
-dlgprojections.cpp
-dlgreconstruct.cpp
-docs.cpp
-views.cpp
Linking...
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.34 2001/01/18 18:09:35 kevin Exp $
+** $Id: ctsim.cpp,v 1.35 2001/01/18 21:30:22 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.34 2001/01/18 18:09:35 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.35 2001/01/18 21:30:22 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
if (! m_pFrame->getHelpController().Initialize("ctsim"))
::wxMessageBox ("Cannot initialize the help system", "Error");
- wxAcceleratorEntry accelEntries[5];
- accelEntries[0].Set (wxACCEL_CTRL, (int) 'O', wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, (int) 'T', MAINMENU_HELP_TOPICS);
- accelEntries[2].Set (wxACCEL_CTRL, (int) 'P', MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[3].Set (wxACCEL_CTRL, (int) 'F', MAINMENU_FILE_CREATE_FILTER);
- accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- wxAcceleratorTable accelTable (5, accelEntries);
- m_pFrame->SetAcceleratorTable (accelTable);
-
+
return true;
}
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.65 2001/01/17 13:03:24 kevin Exp $
+** $Id: views.cpp,v 1.66 2001/01/18 21:30:22 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
- file_menu->Append(wxID_OPEN, "&Open...");
- file_menu->Append(wxID_SAVE, "&Save");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
+ file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O");
+ file_menu->Append(wxID_SAVE, "&Save\tCtrl-S");
file_menu->Append(wxID_SAVEAS, "Save &As...");
file_menu->Append(wxID_CLOSE, "&Close");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
wxMenu *view_menu = new wxMenu;
- view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, "Display Scale &Set...");
- view_menu->Append(IFMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...");
- view_menu->Append(IFMENU_VIEW_SCALE_FULL, "Display &Full Scale");
+ view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, "Display Scale S&et...\tCtrl-E");
+ view_menu->Append(IFMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...\tCtrl-A");
+ view_menu->Append(IFMENU_VIEW_SCALE_FULL, "Display F&ull Scale\tCtrl-U");
wxMenu* filter_menu = new wxMenu;
filter_menu->Append (IFMENU_FILTER_INVERTVALUES, "&Invert Values");
analyze_menu->Append (IFMENU_COMPARE_COL, "Compare &Column");
wxMenu *help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics");
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->Centre(wxBOTH);
+ wxAcceleratorEntry accelEntries[9];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('T'), MAINMENU_HELP_TOPICS);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
+ accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
+ accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
+ wxAcceleratorTable accelTable (9, accelEntries);
+ subframe->SetAcceleratorTable (accelTable);
+
return subframe;
}