DICOM PS3.17 2019a  Explanatory Information 

This section provides information on the encoding of the acquisition geometry in a fixed reference system.
The operator identifies the position of an object of interest projected on the stored pixel data of an image A, and estimates the magnification of the conic projection by a calibration process.
The operator wants to know the position of the projection of such object of interest on a second image B acquired under different geometry, assuming that the patient does not move between image A and image B (i.e., the images share the same frame of reference).
The XA SOP Class encodes the information in a patientrelated coordinate system.
The Enhanced XA SOP Class additionally encodes the geometry of the acquisition system with respect to a fixed reference system defined by the manufacturer, socalled Isocenter reference system. Therefore, it allows encoding the absolute position of an object of interest and to track the projection of such object across the different images acquired under different geometry.
This section provides detailed recommendations of the key Attributes to address this particular scenario.
Table FFF.2.51. Enhanced XRay Angiographic Image IOD Modules
Table FFF.2.52. Enhanced XA Image Functional Group Macros
C.8.19.6.2 
Specifies the dimension of the Field of View as well as the flip and rotation transformations. 

C.8.19.6.13 
Specifies the acquisition geometry in a fixed reference system. 

C.8.19.6.14  
C.8.19.6.4 
Specifies the dimensions of the pixels at the image reception plane. 
The usage of this module is recommended to specify the number of rows and columns of the Pixel Data, as well as the aspect ratio.
The usage of this module is recommended to give the necessary conditions to enable the calculations of this scenario.
In case of XRay Receptor Type (0018,9420) equals "IMG_INTENSIFIER", there are some limitations that prevent the calculations described on this scenario:
As a consequence, in case of image intensifier it is impossible to relate the position of the pixels of the stored area to the isocenter reference system.
In case of XRay Receptor Type (0018,9420) equals "DIGITAL_DETECTOR" the usage of this module is recommended to specify the type and characteristics of the image detector.
The usage of this macro is recommended to specify the characteristics of the field of view.
The field of view characteristics may change perframe across the Multiframe Image.
The usage of this macro is recommended to specify the fixed reference system of the acquisition geometry.
In this example, the operator identifies the position (i, j) of an object of interest projected on the stored pixel data of an image A, and estimates the magnification of the conic projection by a calibration process.
The operator wants to know the position of the projection of such object of interest on a second image B acquired under different geometry.
The Attributes that define the geometry of both images A and B are described in the following figure:
The following steps describe the process to calculate the position (i, j)_{B} of the projection of the object of interest in the Pixel Data of the image B, assuming that (i, j)_{A} is known and is the offset of the projection of the object of interest from the TLHC of the Pixel Data of the image A, measured in pixels of the Pixel Data matrix as a column offset "i" followed by a row offset "j". TLHC is defined as (0,0).
Step 1: Calculate the point (i, j)_{A} in FOV coordinates of the image A.
Step 2: Calculate the point (i, j)_{A} in physical detector coordinates of the image A.
Step 3: Calculate the point (P_{u}, P_{v})_{A} in positioner coordinates of the image A.
Step 4: Calculate the point (P_{Xp}, P_{Yp}, P_{Zp})_{A} in positioner coordinates of the image A.
Step 5: Calculate the point (P_{X}, P_{Y}, P_{Z})_{A} in Isocenter coordinates of the image A.
Step 6: Calculate the point (P_{Xt}, P_{Yt}, P_{Zt})_{A} in Table coordinates of the image A.
Step 7: Calculate the point (P_{Xt}, P_{Yt}, P_{Zt})_{B} in Table coordinates in mm of the image B.
Step 8: Calculate the point (P_{X}, P_{Y}, P_{Z})_{B} in Isocenter coordinates in mm of the image B.
Step 9: Calculate the point (P_{Xp}, P_{Yp}, P_{Zp})_{B} in positioner coordinates of the image B.
Step 10: Calculate the point (P_{u}, P_{v})_{B} in positioner coordinates of the image B.
Step 11: Calculate the point (i, j)_{B} in physical detector coordinates of the image B.
Step 12: Calculate the point (i, j)_{B} in FOV coordinates of the image B.
Step 13: Calculate the point (i, j)_{B} in Pixel Data of the image B.
Step 1 : Image A: Point (i, j)_{A} in FOV coordinates
In this step, the FOV coordinates are calculated by taking into account the FOV rotation and Horizontal Flip applied to the FOV matrix when the Pixel Data were created:
new i = (columns 1)  i = 850  1  310 = 539
1.2: Image Rotation : 90 (clockwise)
new j = (columns 1)  i = 850  1  539 = 310
(i, j)_{A} = (122, 310) in stored pixel data.
Step 2: Image A: Point (i, j)_{A} in physical detector coordinates
In this step, the physical detector coordinates are calculated by taking into account the FOV origin and the ratio between Imager Pixel Spacing and Detector Element Spacing:
D_{i} = Imager Pixel Spacing (column) = 0.2 mm
D_{j} = Imager Pixel Spacing (row) = 0.2 mm
D_{idet} = Detector Element Spacing between two adjacent columns = 0.2 mm
D_{jdet} = Detector Element Spacing between two adjacent rows = 0.2 mm
Zoom Factor (column) = D_{i} / D_{idet} = 1.0
Zoom Factor (row) = D_{j} / D_{jdet} = 1.0
FOV Origin (column) = FOV_{idet} = 600.0
FOV Origin (row) = FOV_{jdet} = 600.0
new i = FOV_{idet} + (i + (1  D_{idet} / D_{i}) / 2) * D_{j} / D_{jdet} = 600 + 122 * 1.0 = 722
new j = FOV_{jdet} + (j + (1  D_{jdet} / D_{j}) / 2) * D_{i} / D_{idet} = 600 + 310 * 1.0 = 910
(i, j)_{A} = (722, 910) in detector elements.
Step 3: Image A: Point ( P_{u}, P_{v})_{A} in positioner coordinates
In this step, the (P_{u}, P_{v})_{A} coordinates in mm are calculated from (i, j)_{A} by taking into account the projection of the Isocenter in physical detector coordinates, and the Detector Element Spacing:
ISO_P_{idet} = Position of Isocenter Projection (column) = 1024.5
ISO_P_{jdet} = Position of Isocenter Projection (row) = 1024.5
D_{idet} = Detector Element Spacing between two adjacent columns = 0.2 mm
D_{jdet} = Detector Element Spacing between two adjacent rows = 0.2 mm
Pu = (i  ISO_P_{idet}) * D_{idet} = (722  1024.5) * 0.2 = 60.5 mm
Pv = (ISO_P_{jdet}  j) * D_{jdet} = (1024.5  910) * 0.2 = 22.9 mm
( P_{u}, P_{v})_{A} = (60.5, 22.9) in mm.
Step 4: Image A: Point (PXp, PYp, PZp)A in positioner coordinates
In this step, the positioner coordinates (P_{Xp}, P_{Yp}, P_{Zp})_{A} are calculated from (P_{u}, P_{v})_{A} by taking into account the magnification ratio, the Distance Source to Detector and the Distance Source to Isocenter:
SID = Distance Source to Detector = 1300 mm
ISO = Distance Source to Isocenter = 780 mm
Magnification ratio = SID / (ISO  P _{Yp} ) = 1.3
P _{Yp} = ISO  SID / 1.3 = 780  1300/1.3 = 220 mm
P _{Xp} = Pu / Magnification ratio = 60.5 / 1.3 = 46.54 mm
P _{Zp} = Pv / Magnification ratio = 22.9 / 1.3 = 17.62 mm
(P_{Xp}, P_{Yp}, P_{Zp})_{A} = (46.54, 220, 17.62) in mm.
Step 5: Image A: Point (P_{X}, P_{Y}, P_{Z})_{A} in Isocenter coordinates
In this step, the isocenter coordinates (P_{X}, P_{Y}, P_{Z})_{A} are calculated from the positioner coordinates (P_{Xp}, P_{Yp}, P_{Zp})_{A} by taking into account the positioner angles of the image A in the Isocenter coordinate system:
Ap_{1} = Positioner Isocenter Primary Angle = 60.0 deg
Ap_{2} = Positioner Isocenter Secondary Angle = 20.0 deg
Ap_{3} = Positioner Isocenter Detector Rotation Angle = 0.0 deg
(P_{X}, P_{Y}, P_{Z})^{T}= (R_{2} ·R_{1})^{T}·(R_{3} ^{T}·(P_{Xp}, P_{Yp}, P_{Zp})^{T})
(P_{X}, P_{Y}, P_{Z})_{A} = (150.55, 65.41, 91.80) in mm.
Step 6: Image A: Point (P_{Xt}, P_{Yt}, P_{Zt})_{A} in Table coordinates
In this step, the table coordinates (P_{Xt}, P_{Yt}, P_{Zt})_{A} are calculated from the isocenter coordinates (P_{X}, P_{Y}, P_{Z})_{A} by taking into account the table position and angles of the image A in the Isocenter coordinate system:
Tx =Table X Position to Isocenter = 10.0 mm
Ty =Table Y Position to Isocenter = 30.0 mm
Tz =Table Z Position to Isocenter = 100.0 mm
At_{1} = Table Horizontal Rotation Angle = 10.0 deg
At_{2} = Table Head Tilt Angle = 0.0 deg
At_{3} = Table Cradle Tilt Angle = 0.0 deg
(P_{Xt}, P_{Yt}, P_{Zt})^{T}= (R_{3} · R_{2} · R_{1}) · ((P_{X}, P_{Y}, P_{Z})^{T} (T_{X}, T_{Y}, T_{Z})^{T})
(P_{Xt}, P_{Yt}, P_{Zt})_{A} = (136.99, 95.41, 32.48) in mm.
Step 7: Image B: Point (P_{Xt}, P_{Yt}, P_{Zt})_{B} in Table coordinates
In this step, the table has moved from image A to image B. The table coordinates of the object of interest are the same on image A and image B because it is assumed that the patient is fixed on the table.
(P_{Xt}, P_{Yt}, P_{Zt})_{B} = (136.99, 95.41, 32.48) in mm.
Step 8: Image B: Point (P_{X}, P_{Y}, P_{Z})_{B} in Isocenter coordinates
In this step, the isocenter coordinates (P_{X}, P_{Y}, P_{Z})_{B} are calculated from the table coordinates (P_{Xt}, P_{Yt}, P_{Zt})_{B} by taking into account the table position and angles of the image B in the Isocenter coordinate system:
Tx =Table X Position to Isocenter = 20.0 mm
Ty =Table Y Position to Isocenter = 100.0 mm
Tz =Table Z Position to Isocenter = 0.0 mm
At_{1} = Table Horizontal Rotation Angle = 0.0 deg
At_{2} = Table Head Tilt Angle = 10.0 deg
At_{3} = Table Cradle Tilt Angle = 0.0 deg
(P_{X}, P_{Y}, P_{Z})^{T}= (R_{3} · R_{2} · R_{1})^{T}· (P_{Xt}, P_{Yt}, P_{Zt})^{T}+ (T_{X}, T_{Y}, T_{Z})^{T}
(P_{X}, P_{Y}, P_{Z})_{B} = (156.99, 12.11, 48.55) in mm.
Step 9: Image B: Point (P_{Xp}, P_{Yp}, P_{Zp})_{B} in positioner coordinates
In this step, the positioner coordinates (P_{Xp}, P_{Yp}, P_{Zp})_{B} are calculated from the isocenter coordinates (P_{X}, P_{Y}, P_{Z})_{B} by taking into account the positioner angles of the image B in the Isocenter coordinate system:
Ap_{1} = Positioner Isocenter Primary Angle = 30.0 deg
Ap_{2} = Positioner Isocenter Secondary Angle = 0.0 deg
Ap_{3} = Positioner Isocenter Detector Rotation Angle = 0.0 deg
(P_{Xp}, P_{Yp}, P_{Zp})^{T}= R_{3} · ((R_{2} · R_{1}) · (P_{X}, P_{Y}, P_{Z})^{T})
(P_{Xp}, P_{Yp}, P_{Zp})_{B} = (142.01, 68.00, 48.55) in mm.
Step 10: Image B: Point ( P_{u}, P_{v})_{B} in positioner coordinates
In this step, the (P_{u}, P_{v})_{B} coordinates in mm are calculated from the positioner coordinates (P_{Xp}, P_{Yp}, P_{Zp})_{B} by taking into account the Distance Source to Detector and the Distance Source to Isocenter of the image B:
SID = Distance Source to Detector = 1000 mm
ISO = Distance Source to Isocenter = 800 mm
Magnification ratio = SID / (ISO  P _{Yp} ) = 1200/(80068) = 1.366
Pu = P _{Xp} * Magnification ratio = 142.01 * 1.64 = 194.00 mm
Pv = P _{Z} p * Magnification ratio = 48.55 * 1.64 = 66.33 mm
( P_{u}, P_{v})_{B} = (194.00, 66.33) in mm.
Step 11: Image B: Point (i, j)_{B} in physical detector coordinates
In this step, the physical detector coordinates (i, j)_{B} are calculated from the positioner coordinates ( P_{u}, P_{v})_{B} by taking into account the projection of the Isocenter in physical detector coordinates, and the Detector Element Spacing of the image B:
ISO_P_{idet} = Position of Isocenter Projection (column) = 1024.5
ISO_P_{jdet} = Position of Isocenter Projection (row) = 1024.5
D_{idet} =Detector Element Spacing between two adjacent columns = 0.2
D_{jdet} =Detector Element Spacing between two adjacent rows = 0.2
i = ISO_P_{idet} + Pu / D_{idet} = 1024.5 + 194.00 / 0.2 = 1994.5
j = ISO_P_{idet}  Pv / D_{idet} = 1024.5  (66.33) / 0.2 = 1356.2
(i, j)_{B} = (1994.5, 1356.2) in detector elements.
Step 12 : Image B: Point (i, j)_{B} in FOV coordinates
In this step, the FOV coordinates are calculated from the physical detector coordinates by taking into account the FOV origin and the ratio between Imager Pixel Spacing and Detector Element Spacing of the image B:
D_{i} = Imager Pixel Spacing (column) = 0.4 mm
D_{j} = Imager Pixel Spacing (row) = 0.4 mm
D_{idet} = Detector Element Spacing between two adjacent columns = 0.2 mm
D_{jdet} = Detector Element Spacing between two adjacent rows = 0.2 mm
Zoom Factor (column) = D_{i} / D_{idet} = 2.0
Zoom Factor (row) = D_{j} / D_{jdet} = 2.0
FOV Origin (column) = FOV_{idet} = 25.0
FOV Origin (row) = FOV_{jdet} = 25.0
new i = (i  FOV_{idet}).D_{idet} / D_{i}  (1  D_{idet} / D_{i}) / 2 = (1994.5  25.0) / 2.0  0.25 = 984.5
new j = (j  FOV_{jdet}).D_{jdet} / D_{j}  (1  D_{jdet} / D_{j}) / 2 = (1356.2  25.0) / 2.0  0.25 = 665.35
(i, j)_{B} = (984.50, 665.35) in stored pixel data.
Step 13 : Image B: Point (i, j)_{B} in Pixel Data
In this step, the position (i, j)_{B} of the projection of the object of interest in the Pixel Data of the image B is calculated from the FOV coordinates by taking into account the FOV rotation and Horizontal Flip applied to the FOV matrix when the Pixel Data were created:
1.2: Image Rotation : 180 (clockwise)
new i = (columns 1)  i = 1000  1  984.50 = 14.50
DICOM PS3.17 2019a  Explanatory Information 
