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?