Projection Data HDF5 File - rg2/xreg GitHub Wiki

HDF5 Hierarchy

The hierarchy used for storing projection data in HDF5 format is shown below:

  • num-projs: Dataset indicating the number of projections stored in this HDF5 file/group (64-bit unsigned integer)
  • proj-XXX: Group storing data for projection XXX, e.g. proj-000 for the first projection and proj-013 for the fourteenth projection.
    • cam: Group storing metadata for the projection parameters
      • num-cols: Dataset storing the number of columns in each projection (64-bit unsigned integer)
      • num-rows: Dataset storing the number of rows in each projection (64-bit unsigned integer)
      • col-spacing: Pixel spacing in column direction (mm / pixel) (e.g. 0.194 mm / pixel). This should be equal to the value stored in img/spacing[0]. (32-bit floating point)
      • row-spacing: Pixel spacing in row direction (mm / pixel) (e.g. 0.194 mm / pixel). This should be equal to the value stored in img/spacing[1]. (32-bit floating point)
      • extrinsic: Rigid mapping from world frame to camera projective frame stored as a 4x4 homogeneous matrix. (32-bit floating point)
      • intrinsic: Projective mapping from camera projective frame onto image plane stored as a 3x3 upper-triangular matrix. (32-bit floating point)
      • cam-coord-frame-type: String indicating the layout of the projective coordinate frame, usually set to "origin-at-focal-pt-det-neg-z". See below for a description of the possible values and their meanings.
    • img: Group storing image intensity data and metadata
      • pixels: Buffer of pixels, row-major order. (32-bit floating point or 16-bit unsigned integers or 8-bit unsigned integers)
      • dir-mat: 2x2 matrix indicating rotational alignment of image axes with a physical coordinate frame. This will be identity. (32-bit floating point)
      • origin: Physical point with respect to a physical coordinate frame at the zero image index. This will be a 2x1 zero-valued matrix. (32-bit floating point)
      • spacing: Pixel spacings in mm/pixel. Stored as a 2x1 matrix of 32-bit floating point values, with the first element (e.g. x) storing the spacing between column elements and the second element (e.g. y) storing the spacing between row elements.
    • landmarks: Group storing landmark locations in the 2D image
      • The name of each dataset indicates the landmark name and each value is a 2D point representing the sub-pixel location of the landmark. Each 2D point is represented as a 2x1 matrix of 32-bit floating point values, with the first element (e.g. x) storing the pixel column and the second element (e.g. y) storing the pixel row. For example, a dataset named GSN-l will represent the left greater sciatic notch and the 2x1 matrix indicates its projected location in the 2D image.
    • orig-dcm-meta: Optional group containing a subset of metadata values from the original DICOM image format. This applies only when the source image is DICOM.
    • rot-to-pat-up: Optional value, either 0, 90, 180 or 270, that indicates the rotation necessary to get the patient oriented "up." This is most commonly set to 0 or 180 and depends which side of the operating table the C-arm is positioned. When an image is collected and the image has the patient oriented "updside down" then a manual 180 degree rotation is typically applied. (32-bit integer)

Projective Coordinate Frames

  • "origin-at-focal-pt-det-neg-z" (the default option in xReg)
    • The origin is located at the X-ray source,
    • The X-axis is oriented according to increasing columns in the image plane,
    • The Y-axis is oriented according to increasing rows in the image plane,
    • The Z-axis is orthogonal to the image plane and points towards the X-ray source.
    • This is sometimes referred to as OpenGL style.
  • "origin-at-focal-pt-det-pos-z"
    • Similar to "origin-at-focal-pt-det-neg-z," except that the direction of the Z-axis is flipped to point away from the X-ray source. In order to remain right-handed, the Y-axis is also flipped, but is still oriented according to increasing rows in the image plane.
  • "origin-on-det"
    • This places the origin on the detector,
    • The Z-axis is orthogonal to the image plane and pointing towards the X-ray source,
    • The X-axis is oriented according to increasing columns in the image plane,
    • The Y-axis is oriented according to increasing rows in the image plane.

An illustration of the "origin-at-focal-pt-det-neg-z" coordinate frame layout is given below: Projective Frame