32.6. SPECT Data Analysis
Table of Contents
Count distributions
In SPECT, the detector records individual gamma events and stores them in projection images. Each pixel (or bin) in a projection image contains a count value, which is the number of detected events assigned to that pixel during the acquisition. Analyzing how these counts are distributed is the first step to understanding image quality, sensitivity, and the impact of physics and acquisition settings.
A typical SPECT acquisition produces one 2D image per projection angle. You can think of each of these images as a 2D histogram of detected events, where the axes correspond to detector coordinates and the bin values are counts. When you load projection data from a GATE simulation, what you usually obtain is either a stack of such 2D images or a 3D array where one dimension indexes the projection angle.
It is common to start by computing simple statistics of the count distribution, such as the total number of counts in each projection, the mean and standard deviation of counts per pixel, and the maximum pixel value. These values give a quick indication of how many events you collected and how noisy the projections are. For example, projections with low total counts will display higher relative statistical noise, because the Poisson noise level scales approximately as the square root of the counts.
In SPECT, many quantities of interest are proportional to the number of detected counts. For instance, if $N$ is the number of detected events in a region of interest, and you assume Poisson statistics, then the standard deviation of $N$ is approximately $\sqrt{N}$, and the relative statistical uncertainty is about $1 / \sqrt{N}$. This helps you interpret how reliable your measurements are in each part of the projection.
For Poisson-distributed counts $N$ in a pixel or region:
Standard deviation: $\sigma \approx \sqrt{N}$
Relative uncertainty: $\sigma / N \approx 1 / \sqrt{N}$
You can inspect the spatial distribution of counts directly by displaying each projection image as a grayscale or color image. High activity regions in the phantom or patient will appear as areas with higher counts. Attenuation and collimator effects will cause gradual changes in the intensity pattern. When you inspect these images, you should look for expected symmetries or known structures from your phantom. Any unexpected asymmetry or pattern might indicate a problem in the geometry, source distribution, or acquisition setup.
Another useful analysis is to examine count profiles. A profile is created by summing or averaging counts along one axis of the detector and plotting the resulting 1D distribution along the other axis. For example, you can sum counts along the vertical axis of the projection to obtain a horizontal profile. This shows how counts vary across the detector in one dimension and can highlight features such as the object edges, hot spots, or nonuniformities caused by attenuation or detector response.
You can also compare count distributions between projections acquired at different angles. For a uniform cylindrical phantom, for instance, total counts per projection should be similar, although attenuation may produce small variations as the path length through the object changes with angle. If you see large systematic differences in total counts between angles that should be equivalent, this can reveal issues with motion, incorrect activity, or inconsistent acquisition times.
Sometimes you want to normalize projection data. Normalization can mean several different operations. You might divide counts in each projection by the total counts in that projection to compare shapes independent of absolute scale. You might scale counts by the acquisition time per projection to obtain count rates. Or you might divide by a reference measurement to correct for detector nonuniformity. Each normalization method changes the interpretation of the numbers, so it is important to keep track of whether your analysis is based on raw counts, count rates, or normalized values.
When using GATE output, you typically read projection data into Python with libraries such as NumPy, then apply these operations programmatically. For example, you might compute total counts per projection by summing over the two image axes at each angle. You can then plot these totals as a function of angle to visualize how overall sensitivity varies with rotation.
Count distributions also play a central role in estimating image noise. In Monte Carlo simulated SPECT, you can repeat the same simulation with different random seeds and compare the resulting projection images. By doing this, you can compute mean and variance of the counts in each pixel across realizations, which gives a direct estimate of statistical noise. However, even with a single realization, the Poisson model provides a practical approximation for many purposes.
Finally, count distributions are the bridge between raw Monte Carlo events and reconstructed images. Any reconstruction algorithm will treat each pixel value as a measurement influenced by the underlying activity distribution, attenuation, and system response. Understanding the statistical nature and spatial structure of your count distributions prepares you to interpret reconstruction results, compare different system configurations, and design simulations that achieve the required image quality for your application.
Angular projections
SPECT acquisition consists of multiple projection images acquired at different rotation angles of the detector around the object. Each projection corresponds to gamma photons detected along lines that are approximately perpendicular to the detector face at that specific angle. Analyzing how projection data change with angle is essential to verify the acquisition, to understand system geometry, and to prepare for image reconstruction.
From a data point of view, angular projections can be represented as a three dimensional array where two dimensions are detector coordinates and the third dimension is the projection index or angle. You will typically have associated metadata that gives the rotation angle in degrees (or radians) for each projection index. Before you start analysis, you should verify that the projection order and angles are correctly defined and consistent with the simulation configuration.
One of the simplest angular analyses is to study the total counts as a function of angle. This is done by summing the counts over detector coordinates for each projection and plotting the result against the corresponding angle. For a stationary, symmetric phantom and constant activity and acquisition time, this plot should be relatively flat, perhaps modulated by attenuation effects. Peaks or valleys at particular angles can indicate that the detector sees more or less activity because of object shape, attenuation paths, or shielding. If the system is supposed to be rotationally symmetric and you see strong angular variation, it might signal misalignment, incorrect rotation implementation, or unexpected occlusion from nearby structures.
You can extend this idea by looking at angular profiles of specific regions of interest. For instance, you can define a rectangular region on the detector and integrate counts in that region for each projection. Plotting this region count versus angle can reveal how a specific part of the object enters and leaves the field of view or changes apparent intensity due to attenuation or collimator angle response. Such analyses are particularly useful in dynamic or gated SPECT, but they are also informative in static simulations to check geometry.
Another aspect of angular analysis is consistency between opposite projections. For a uniform central object, projections at angles separated by 180 degrees should be similar, although not necessarily identical when attenuation and system asymmetries are included. Comparing projections at $\theta$ and $\theta + 180^\circ$ can help detect angular misregistration or rotation bugs. You can quantify similarity using image metrics such as mean squared difference, correlation coefficients, or by simple visual comparison of difference images.
In many workflows, projection images are stacked in angular order to form a sinogram like representation. In SPECT, sinograms are often derived by collapsing one detector dimension to represent radial position and using the angle as the second dimension. Even when you work directly with 2D projections, it can be informative to create 1D profiles at each angle and organize those in a 2D plot where one axis is position and the other is angle. Regular patterns in such plots indicate that the rotation and projection geometry are correctly modeled.
Angular sampling is a critical parameter in SPECT. The number of projections and the angular step size affect spatial resolution and artifact levels in reconstructed images. By analyzing angular projections, you can assess whether your chosen angular sampling is sufficient. For example, a sparse angular sampling might produce visible streaks or aliasing patterns in angular-domain profiles. In simulation, you can experiment by changing the number of projections and observing how the angular smoothness of count distributions changes.
You can also investigate the effect of motion on angular projections. If the object or activity distribution moves during rotation, as in cardiac or respiratory motion, projection data at different angles will not be consistent with a static object model. By plotting total counts or regional counts versus angle and time, you can see how motion modulates the measured data. In GATE simulations that include motion models, analyzing angular projections is an efficient way to verify that motion is implemented as intended.
When you plan to reconstruct SPECT images using analytical or iterative algorithms, you often need to provide the scanner geometry and projection angle list. Angular projections analysis helps confirm that this information is consistent with the reconstruction settings. A mismatch between the simulated angles and the reconstruction model can cause severe artifacts or blurring. Checking that the angles used in reconstruction match the angles in your simulated projection stack is therefore a crucial validation step.
Noise properties in angular projections are also of interest. For a fixed number of projections, distributing the total acquisition time evenly across angles leads to a certain count level per projection. If you change the number of projections but keep total scan time fixed, each projection will receive fewer counts, increasing angular noise. By examining the variability of total counts across angles, and possibly fitting it to a Poisson model, you can quantify how angular sampling choices impact noise in the data.
Finally, angular projections link directly to system performance metrics. For instance, sensitivity as a function of angle can be derived by dividing the total counts at each angle by the product of activity and acquisition time. Nonuniform angular sensitivity can inform collimator design, shielding strategy, and detector placement. Through GATE simulations, you can systematically modify geometry or physics settings, then use angular projections analysis to quantify how these changes affect the measured data prior to reconstruction.
In practice, analyzing angular projections usually involves scripting in Python. You read the stack of projection images, associate each index with an angle, compute per angle summaries such as total counts or specific profiles, and visualize these as curves or images. This helps you verify that the simulated acquisition behaves as expected and gives you confidence that subsequent image reconstruction and quantitative interpretation will be based on consistent and physically meaningful projection data.
Views: 11
KAHIBARO