X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=doc%2Fctsim-concepts.tex;h=32d60c83bd67b2f180637f1be1c3c09e93c9538b;hb=512a128ce9bc1d4a4477df791d2a1e63148752af;hp=ba0c2ad689650aff00f4b1669ded96d152cf3acb;hpb=103b084776d861a93e851ebff9c72798019b7561;p=ctsim.git diff --git a/doc/ctsim-concepts.tex b/doc/ctsim-concepts.tex index ba0c2ad..32d60c8 100644 --- a/doc/ctsim-concepts.tex +++ b/doc/ctsim-concepts.tex @@ -3,20 +3,314 @@ \setfooter{\thepage}{}{}{}{}{\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 +projection data simulated. Finally 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 and Shepp-Logan. \ctsim\ also reads text +files of user-defined phantoms. + +The types of phantom elements and their definitions are taken from +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, one +of {\tt rectangle}, {\tt ellipse}, {\tt triangle}, {\tt sector}, or {\tt segment}. +{\tt cx}, {\tt cy}, {\tt dx} and {\tt dy} have different meanings depending on the element type. + +{\tt r} is the rotation applied to the object in degrees counterclockwise, +and {\tt 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} +Also note that the overall dimensions of the phantom are increased by +1\% above the specified sizes to avoid clipping due to round-off +errors from polygonal sampling. 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 diameter}, \emph{scan diameter}, and \emph{focal length}. +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},} +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{\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} +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{\emph{VR}.} +The \emph{view diameter} is then set 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. + + +\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 diameter ratio} and +the \emph{scan diameter 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}, +\latexonly{$\alpha$,}\latexignore{\emph{alpha},} +from the diameter of the \emph{scan diameter} and the \emph{focal length} +\latexignore{\\$$\emph{alpha = 2 x asin ( (Sd / 2) / f)}$$\\} +\latexonly{$$\alpha = 2 \sin^{-1} ((s_d / 2) / f)$$} +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. + +$$s_d = p_d v_R s_R$$ +If $v_r = 1$ and $s_R = 1$, then $s_d = p_d$. Further, $f = f_R v_R (p_d / 2)$ +Plugging these equations into the above equation, +$$\alpha = 2\,\sin^{-1} \frac{p_d / 2}{f_R (p_d / 2)}$$ +$$\alpha = 2\,\sin^{-1} (1 / f_R)$$ + +Thus, $\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. The size of the +detector array depends upon the \emph{focal length} and the +\emph{scan diameter}. In general, increasing the \emph{focal length} +decreases the size of the detector array and 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{$\alpha$.}\latexignore{\emph{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{$$\mathrm{detLengh} = 4\,f \tan (\alpha / 2)$$} +\latexignore{\\$$\emph{detLength} = 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} +Consider increasing the focal length ratio to two leaving the +field of view ratio as 1, as in Figure 4. Now the detectors array is +denser, and the real field of view is closer to that specified, but note +again that the field of view is not used. Instead, the focal length is +used to give a distance from the center of the phantom to the source, and +the detector array is adjusted to give an angular coverage to include the +whole phantom. + + \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. +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 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. +In general, the trade-off is between quality and execution time.