Map points from patient coordinates to intrinsic coordinates
maps points from the patient coordinate system to the intrinsic coordinate system using the
spatial referencing information,
K] = worldToIntrinsic(
R. The intrinsic coordinates
K are defined by
axes aligned with the row, column, and slice subscripts of the image data array,
respectively. The patient coordinates
Z are defined by the real-world patient coordinate system
For a point, n, if the input coordinates
Zn) fall outside the image bounds,
Kn outside the image bounds in the intrinsic
Map 3-D Patient Coordinates to Intrinsic Coordinates
Map 3-D patient coordinates from a chest CT volume, saved as a directory of DICOM files, to intrinsic coordinates. The volume is part of a data set containing three CT volumes. The size of the entire data set is approximately 81 MB. Download the data set from the MathWorks® website, then unzip the folder.
zipFile = matlab.internal.examples.downloadSupportFile("medical","MedicalVolumeDICOMData.zip"); filepath = fileparts(zipFile); unzip(zipFile,filepath)
Specify the directory of the DICOM files for the first CT volume in the data set.
dataFolder = fullfile(filepath,"MedicalVolumeDICOMData","LungCT01");
Create a medical volume object that contains the image and spatial metadata for the CT volume.
medVol = medicalVolume(dataFolder);
VolumeGeometry property of the medical volume object contains a
medicalref3d object that specifies the spatial referencing for the volume. Extract the
medicalref3d object for the chest CT.
R = medVol.VolumeGeometry;
Select three sample points, and store their (x, y, z) patient coordinates, in millimeters. For example, the first point has patient coordinates of (100, 101, –200), in mm. The third point is outside the image boundary.
X = [100 100 190]; Y = [101 101.2 -190]; Z = [-200 -100 -300];
Convert the world coordinates to intrinsic coordinates. The
worldToIntrinsic function extrapolates the intrinsic coordinates of the third point outside the image boundary. The output vectors provide the (i, j, k) intrinsic coordinates, in voxels. Note that the intrinsic coordinate system is continuous, and the intrinsic coordinates can have noninteger values.
If you receive a warning that an approximate mapping is being used, then the image volume is nearly but not perfectly affine. This might be due to small numeric precision errors in how the data was encoded in the file, or due to the discrete step sizes of motors used to move the patient through the scanner. If an approximate mapping is used, you might expect small errors, on the order of millimeters in patient coordinates.
[I,J,K] = worldToIntrinsic(R,X,Y,Z)
Warning: An approximate world to intrinsic mapping is being used.
I = 1×3 394.2652 394.2652 517.8040
J = 1×3 395.6379 395.9124 -3.8043
K = 1×3 154.0894 342.5072 -34.3283
R — Spatial referencing information
Spatial referencing information, specified as a
X — Coordinates along x-dimension in patient coordinate system
Y — Coordinates along y-dimension in patient coordinate system
Z — Coordinates along z-dimension in patient coordinate system
I — Coordinates along i-dimension in intrinsic coordinate system
J — Coordinates along j-dimension in intrinsic coordinate system
K — Coordinates along k-dimension in intrinsic coordinate system
Introduced in R2022b