Hello,
I am learning the ropes with orienting dicoms, so I am using some well known softwares as a ground of truth, among them I’m using Slicer.
Through math formulas I obtained the same data found under Volume Information (origin and rotation matrix).
What I am struggling to catch are the points coordinates shown in Data Probe that show up when moving the cursor [CT.xxxxxx (coord1, coord2, coord3) ], this are the coordinates in unscaled dicom coordinates with RAS orientation?
Given a point P_ijk (should be in not oriented raw data coordinates right?), and having the IJK_TO_RAS_matrix, to obtain the probe position I should do: IJK_TO_RAS_direction_matrix * P_ijk?
As an example, I have a CT dicom of a patient in a prone position, the header data are:
image_patient_position = [134.716796875, 313.716796875, -78.5]
image_orientation_patient = [-1,0,0,0,-1,0]
rows = columns = 512
spacing = [0.566, 0.566]
calculated_spacing_between_slices = 0.7
n_slices = 177
Extent = [0, 512, 0, 512, 0, 177]
In Slicer upon loading the dicom i have:
the origin in [-134.716796875, -313.716796875, -78.5] and
the IJKtoRAS_direction_matrix =
[1.0, 0.0, 0.0]
[0.0, 1.0, 0.0]
[0.0, 0.0, 1.0].
I have the same numbers using my formulas, so to obtain the ijk position of the upper_left_corner Pnt[0.0, 0.0, 0.0] in IJK i did [IJKtoRAS_direction_matrix * Pnt] and obviously I get the same point as the rotation matrix is an Identity, but in probes coordinates it’s [512, 512, 0] and not [0, 0, 0].
What am I missing?