Image
Image parameters
The image parameters file is defined in JSON format and looks like the following:
{
"VERSION": 1.0,
"nx": 192,
"ny": 192,
"nz": 89,
"nt" : 1,
"vx": 2.0,
"vy": 2.0,
"vz": 2.8,
"off_x": 0.0,
"off_y": 0.0,
"off_z": 0.0
}
The properties are:
nx,ny,nzis the image size in X, Y, and Z in number of voxelsntis the time dimension, which is used for dynamic reconstructionsvx,vy,vzis the voxel size in X, Y, and Z in millimetersoff_x,off_y,off_zis the X, Y and Z position of the center of the image.Optionally, one can also specify:
length_x,length_y,length_zto define the physical size of the image in millimeters.If this is not defined, the lengths are computed as
nx*vx,ny*vy,nz*vzrespectively.
The physical position of any voxel in the X dimension is:
Where \(o_x\) is off_x and \(n_x\) is nx. \(x_i\) is the logical
index of the voxel while \(x_p\) is the physical position (in millimeters)
of the voxel in dimension X. The above equation also applies in dimensions
Y and Z.
Image file format
Images are stored and read in NIfTI format. Since NifTI files include image orientation, origin and pixel spacing, The following requirements are imposed:
Input images (e.g. attenuation map, sensitivity image) must have an identity orientation matrix (no rotation)
In the reconstruction script, the origin/pixel size information is read from an image parameter file (described above), unless a sensitivity image is provided (with
--sens), in which case the orientation/origin/pixel size from the NifTI sensitivity image is used.
Fourth Dimension (Time)
The image can have a fourth dimension for time, enabling dynamic PET
reconstructions.
The nt field in ImageParams sets the number of temporal frames.
This is used in conjunction with Dynamic Framing to reconstruct an image
for each time range.
The image dimensions are (nt, nz, ny, nx). Note that time is the first
dimension.
Notes
When using dynamic framing:
Each frame is reconstructed separately (i.e., independently of other frames) but the iterative updates are calculated for all frames simultaneously
Sensitivity images can also be 4D when performing a dynamic reconstruction
For Python users and plugin developers
Note that the ImageOwned class has three constructors. One with a single
ImageParams object, one with a single string for the filename, and
one with both. The one that only takes a filename deduces the image parameters
from the NIfTI header while the one that takes both the NIfTI file and
the ImageParams object uses the latter to perform a consistency check in order
to avoid mismatches.