X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=doc%2Fctsim-concepts.tex;h=ddf6bed819ad82cc4516a7f67239494adfef9976;hp=ba0c2ad689650aff00f4b1669ded96d152cf3acb;hb=d3fa225aa232e132cc198672c4fc148f96a1ab8c;hpb=103b084776d861a93e851ebff9c72798019b7561 diff --git a/doc/ctsim-concepts.tex b/doc/ctsim-concepts.tex index ba0c2ad..ddf6bed 100644 --- a/doc/ctsim-concepts.tex +++ b/doc/ctsim-concepts.tex @@ -1,22 +1,340 @@ \chapter{Concepts}\index{Concepts}% \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% +\setfooter{\thepage}{}{}{}{\small Version 0.2}{\thepage}% \section{Overview}\label{conceptoverview}\index{Concepts,Overview}% +The operation of \ctsim\ begins with the phantom object. A +phantom object consists of geometric elements. A scanner is +specified and the collection of x-ray data, or projections, is +simulated. That projection data can be reconstructed using various +user-controlled algorithms producing an image of the phantom +object. This reconstruction can then be statistically compared to +the original phantom object. + +In order to use \ctsim\ effectively, some knowledge of how \ctsim\ works +and the approach taken is required. \ctsim\ deals with a variety of +object, but the two objects we need to be concerned with are the +\emph{phantom} and the \emph{scanner}. \section{Phantoms}\label{conceptphantom}\index{Concepts,Phantoms}% \subsection{Overview}\label{phantomoverview}\index{Concepts,Phantoms,Overview}% -\subsection{Phantom Elements}\label{phantoelements}\index{Concepts,Phantoms,Elements} + +\ctsim\ uses geometrical objects to describe the object being +scanned. A phantom is composed a one or more phantom elements. +These elements are simple geometric shapes, specifically, +rectangles, triangles, ellipses, sectors and segments. With these +elements, standard phantoms used in the CT literature can be +constructed. In fact, \ctsim\ provides a shortcut to load the +published phantoms of Herman\cite{HERMAN80} and +Shepp-Logan\cite{SHEPP74}. \ctsim\ also reads text files of +user-defined phantoms. + +The types of phantom elements and their definitions are taken with +permission from G.T. Herman's 1980 book\cite{HERMAN80}. + +\subsection{Phantom File}\label{phantomfile}\index{Concepts,Phantoms,File} +Each line in the text file describes an element of the +phantom. Each line contains seven entries, in the following form: +\begin{verbatim} +element-type cx cy dx dy r a +\end{verbatim} +The first entry defines the type of the element, either +\rtfsp\texttt{rectangle}, \texttt{}, \texttt{triangle}, +\rtfsp\texttt{sector}, or \texttt{segment}. \texttt{cx}, +\rtfsp\texttt{cy}, \texttt{dx} and \texttt{dy} have different +meanings depending on the element type. + +\rtfsp\texttt{r} is the rotation applied to the object in degrees +counterclockwise, and \texttt{a} is the X-ray attenuation +coefficient of the object. Where objects overlap, the attenuations +of the overlapped objects are summed. + + +\subsection{Phantom Elements}\label{phantomelements}\index{Concepts,Phantoms,Elements} + \subsubsection{ellipse} +Ellipses use \texttt{dx} and \texttt{dy} to define the semi-major and +semi-minor axis lengths, with the center of the ellipse at \texttt{cx} +and \texttt{cy}. Of note, the commonly used phantom described by +Shepp and Logan\cite{SHEPP74} uses only ellipses. + \subsubsection{rectangle} +Rectangles use \texttt{cx} and \texttt{cy} to define the position of +the center of the rectangle with respect to the origin. \texttt{dx} +and \texttt{dy} are the half-width and half-height of the rectangle. + \subsubsection{triangle} -\subsubsection{sector} +Triangles are drawn with the center of the base at \texttt{(cx,cy)}, +with a base half-width of \texttt{dx} and a height of \texttt{dy}. +Rotations are then applied about the center of the base. + \subsubsection{segment} +Segments are complex. They are the portion of an circle between a +chord and the perimeter of the circle. \texttt{dy} sets the radius of +the circle. Segments start with the center of the chord located at +\texttt{(0,0)} and the chord horizontal. The half-width of the chord +is set by \texttt{dx}. The portion of an circle lying below the chord +is then added. The imaginary center of this circle is located at +\texttt{(0,-dy)}. The segment is then rotated by \texttt{r} and then +translated by \texttt{cx,cy}. + +\subsubsection{sector} +Sectors are the like a ``pie slice'' from a circle. The radius of the +circle is set by \texttt{dy}. Sectors are +defined similarly to segments. In this case, though, a chord is not +drawn. Instead, the lines are drawn from the origin of the circle +\texttt{(0,-dy)} to the points \texttt{(-dx,0)} and \texttt{(dx,0)}. +The perimeter of the circle is then draw between those two points +below the x-axis. The sector is then rotated and translated the same +as a segment. + +\subsection{Phantom Size} +The overall dimensions of the phantom are increased by 1\% above the +specified sizes to avoid clipping due to round-off errors from +sampling the polygons of the phantom elements. So, if the phantom is +defined as a rectangle of size 0.1 by 0.1, the actual phantom has +extent 0.101 in each direction. \section{Scanner}\label{conceptscanner}\index{Concepts,Scanner}% -\subsection{Geometries} -\subsection{Focal Length} -\subsection{Field of View} +\subsection{Dimensions} +Understanding the scanning geometry is the most complicated aspect of +using \ctsim. For real-world CT simulators, this is actually quite +simple. The geometry is fixed by the manufacturer during the +construction of the scanner and can not be changed. Conversely, +real-world CT scanners can only take objects up to a fixed size. + +\ctsim, being a very flexible simulator, +gives tremendous options in setting up the geometry for a scan. + +In general, the geometry for a scan all starts from the size of the +phantom being scanned. This is because \ctsim\ allows for statistical +comparisons between the original phantom image and it's reconstructions. +Since CT scanners scan a circular area, the first important +variable is the diameter of the circle surround the phantom, or the +\emph{phantom diameter}. Remember, as mentioned above, the +phantom dimensions are also padded by 1\%. + +The other important geometry variables for scanning objects are the +\emph{view ratio}, \emph{scan ratio}, and \emph{focal length ratio}. +These variables are all input into \ctsim\ in terms of ratios rather +than absolute values. + +\subsubsection{Phantom Diameter} +\begin{figure} +$$\image{5cm;0cm}{scangeometry.eps}$$ +\caption{Phantom Geometry} +\end{figure} +The phantom diameter is automatically calculated by \ctsim\ from the +phantom definition. The maximum of the phantom length and height is +used to define the square that completely surrounds the phantom. Let +\latexonly{$p_l$}\latexignore{\emph{Pl}} +be the width and height of this square. The diameter of this boundary box, +\latexonly{$p_d$,}\latexignore{\emph{Pd},} +\rtfsp is then +\latexignore{\\$$\emph{Pl x sqrt(2)}$$\\} +\latexonly{$$p_d = p_l \sqrt{2}$$} +CT scanners actually collect projections around a circle rather than a +square. The diameter of this circle is also the diameter of the boundary +square +\latexonly{$p_d$.}\latexignore{\rtfsp\emph{Pd}.} +These relationships are diagrammed in figure 2.1. + +\subsubsection{View Diameter} +The \emph{view diameter} is the area that is being processed +during scanning of phantoms as well as during rasterization of +phantoms. By default, the \emph{view diameter} \rtfsp is set equal +to the \emph{phantom diameter}. It may be useful, especially for +experimental reasons, to process an area larger (and maybe even +smaller) than the phantom. Thus, during rasterization or during +projections, \ctsim\ will ask for a \emph{view ratio}, +\latexonly{$v_r$.}\latexignore{\rtfsp \emph{VR}.} The \emph{view +diameter} is then calculated as \latexonly{$$v_d = p_d +v_r$$}\latexignore{\\$$\emph{Vd = Pd x VR}$$} + +By using a +\latexonly{$v_r$}\latexignore{\emph{VR}} +less than 1, \ctsim\ will allow +for a \emph{view diameter} less than +\emph{phantom diameter}. +This will lead to significant artifacts. Physically, this would +be impossible and is analagous to inserting an object into the CT +scanner that is larger than the scanner itself! + +\subsubsection{Scan Diameter} +By default, the entire \emph{view diameter} is scanned. For +experimental purposes, it may be desirable to scan an area either +larger or smaller than the \emph{view diameter}. Thus, the concept +of \emph{scan ratio}, \latexonly{$s_r$,}\latexignore{\emph{SR},} +is born. The scan diameter +\latexonly{$s_d$}\latexignore{\emph{Sd}} is the diameter over +which x-rays are collected and is defined as \latexonly{$$s_d = +v_d s_r$$}\latexignore{\\$$\emph{Sd = Vd x SR}$$\\} By default and +for all ordinary scanning, the \emph{scan ratio} is to \texttt{1}. +If the \emph{scan ratio} is less than \texttt{1}, you can expect +significant artifacts. + +\subsubsection{Focal Length} +The \emph{focal length}, +\latexonly{$f$,}\latexignore{\emph{F},} +is the distance of the X-ray source to the center of +the phantom. The focal length is set as a ratio, +\latexonly{$f_r$,}\latexignore{\emph{FR},} +of the view radius. Focal length is +calculated as +\latexonly{$$f = (v_d / 2) f_r$$}\latexignore{\\$$\emph{F = (Vd / 2) x FR}$$} + +For parallel geometry scanning, the focal length doesn't matter. +However, divergent geometry scanning (equilinear and equiangular), +the \emph{focal length ratio} should be set at \texttt{2} or more +to avoid artifacts. Moreover, a value of less than \texttt{1}, +though it can be given to \ctsim, is physically impossible and it +analagous to have having the x-ray source with the \emph{view +diameter}. + + +\subsection{Parallel Geometry}\label{geometryparallel}\index{Concepts,Scanner,Geometries,Parallel} + +As mentioned above, the focal length is not used in this simple +geometry. The detector array is set to be the same size as the +\emph{scan diameter}. For optimal scanning in this geometry, the +\emph{scan diameter} should be equal to the \emph{phantom +diameter}. This is accomplished by using the default values of +\texttt{1} for the \emph{view ratio} and the \emph{scan ratio}. If +values of less than \texttt{1} are used for these two variables, +significant distortions will occur. + + +\subsection{Divergent Geometries}\label{geometrydivergent}\index{Concepts,Scanner,Geometries,Divergent} +\subsubsection{Overview} +Next consider the case of equilinear (second generation) and equiangular +(third, fourth, and fifth generation) geometries. In these cases, +the x-ray beams diverge from a single source to a detector array. +In the equilinear mode, a single +source produces a fan beam which is read by a linear array of detectors. If +the detectors occupy an arc of a circle, then the geometry is equiangular. +See figure 2.2. +\begin{figure} +\image{10cm;0cm}{divergent.eps} +\caption{Equilinear and equiangular geometries.} +\end{figure} + + +\subsubsection{Fan Beam Angle} +For these divergent beam geometries, the \emph{fan beam angle} +needs to be calculated. For real-world CT scanners, this is fixed +at the time of manufacture. \ctsim, however, calculates the +\emph{fan beam angle}, $\alpha$, from the \emph{scan diameter} and +the \emph{focal length} \latexignore{\\$$\emph{alpha = 2 x asin ( +(Sd / 2) / f)}$$\\} +\latexonly{\begin{equation}\label{alphacalc}\alpha = 2 \sin^{-1} +((s_d / 2) / f)\end{equation}} This is illustrated in figure 2.3. +\begin{figure} +\image{10cm;0cm}{alphacalc.eps} +\caption{Calculation of $\alpha$} +\end{figure} + + +Empiric testing with \ctsim\ shows that for very large \emph{fan beam angles}, +greater than approximately +\latexonly{$120^\circ$,}\latexignore{120 degrees,} +there are significant artifacts. The primary way to manage the +\emph{fan beam angle} is by varying the \emph{focal length} since the +\emph{scan diameter} by the size of the phantom. + +To illustrate, the \emph{scan diameter} can be defined as +\latexonly{$$s_d = s_r v_r p_d$$}\latexignore{\\$$Sd = Sr x Vr x Pd$$\\} + +Further, $f$ can be defined as \latexonly{$$f = f_r (v_r p_d / +2)$$}\latexignore{\\$$F = FR x (VR x Pd)$$\\} + +Substituting these equations into \latexignore{the above +equation,}\latexonly{equation~\ref{alphacalc},} We have, +\latexonly{ +\begin{eqnarray} +\alpha &= 2\,\sin^{-1} \frac{s_r v_r p_d / 2}{f_r v_r (p_d / 2)} \nonumber \\ +&= 2\,\sin^{-1} (s_r / f_r) +\end{eqnarray} +} \latexignore{\\$$\alpha = 2 sin (Sr / Fr$$\\} + +Since in normal scanning $s_r$ = 1, $\alpha$ depends only upon the +\emph{focal length ratio}. + +\subsubsection{Detector Array Size} +In general, you do not need to be concerned with the detector +array size. It is automatically calculated by \ctsim. For those +interested, this section explains how the detector array size is +calculated. + +For parallel geometry, the detector length is equal to the scan +diameter. + +For divergent beam geometries, the size of the detector array also +depends upon the \emph{focal length}. Increasing the \emph{focal +length} decreases the size of the detector array while increasing +the \emph{scan diameter} increases the detector array size. + +For equiangular geometry, the detectors are spaced around a circle +covering an angular distance of +\latexonly{$2\,\alpha$.}\latexignore{\emph{2 \alpha}.} The dotted +circle in +\begin{figure} +\image{10cm;0cm}{equiangular.eps} +\caption{Equiangluar geometry} +\end{figure} +figure 2.4 indicates the positions of the detectors in this case. + +For equilinear geometry, the detectors are space along a straight +line. The length of the line depends upon +\latexonly{$\alpha$}\latexignore{\emph{alpha}} and the \emph{focal +length}. It is calculated as \latexonly{$4\,f \tan (\alpha / 2)$} +\latexignore{\emph{4 x F x tan(\alpha/2)}} +\begin{figure} +\image{10cm;0cm}{equilinear.eps} +\caption{Equilinear geometry} +\end{figure} +An example of the this geometry is in figure 2.5. + + +\subsubsection{Examples of Geometry Settings} + \section{Reconstruction}\label{conceptreconstruction}\index{Concepts,Reconstruction}% +\subsection{Overview} +\subsection{Direct Inverse Fourier} +This method is not currently implemented in \ctsim, however it is +planned for a future release. This method does not give results as +accurate as filtered backprojection. The difference is due primarily +because interpolation occurs in the frequency domain rather than the +spatial domain. + \subsection{Filtered Backprojection} +The technique is comprised of two sequential steps: +filtering projections and then backprojecting the filtered projections. Though +these two steps are sequential, each view position can be processed individually. + +\subsubsection{Multiple Computer Processing} +This parallelism is exploited in the MPI versions of \ctsim\ where the +data from all the views are spread about amongst all of the +processors. This has been testing in a 16-CPU cluster with good +results. + +\subsubsection{Filter projections} +The projections for a single view have their frequency data multipled by +a filter of $|w|$. \ctsim\ permits four different ways to accomplish this +filtering. + +Two of the methods use convolution of the projection data with the +inverse Fourier transform of $|w|$. The other two methods perform an Fourier +transform of the projection data and multiply that by the $|w|$ filter and +then perform an inverse fourier transform. + +Though multiplying by $|w|$ gives the sharpest reconstructions, in +practice, superior results are obtained by reducing the higher +frequencies. This is performed by mutiplying the $|w|$ filter by +another filter that attenuates the higher frequencies. \ctsim\ has +multiple filters for this purpose. + +\subsubsection{Backprojection of filtered projections} +Backprojection is the process of ``smearing'' the filtered +projections over the reconstructing image. Various levels of +interpolation can be specified.