MATLAB Answers

How to convert dicom image world coordinates into Cartesian coordinates

22 ビュー (過去 30 日間)
Saman Tariq
Saman Tariq 2019 年 12 月 6 日
Commented: Rik 2019 年 12 月 8 日
I have coordinates of arteries seed points in world coordinate system how can I convert them to the Cartesian ones, by using the DICOM header information of CTA image.
E.g I have 512x512x299volume of dicom images and Ihave a seedpoint represented in world coordinates say (54.3057 56.3043 78.9999), how could I get the corresponding cartesian coordinate of this world coordinate using header information in Matlab??

  5 件のコメント

表示 2 件の古いコメント
Rik
Rik 2019 年 12 月 8 日
The PixelDimensions is probably enough. You can divide your offset by the size to convert mm to voxel location:
info=struct;
info.PixelDimensions=[0.3066 0.3066 0.4000];
coordinates_in_mm=[54.3057 56.3043 78.9999];
coordinates_in_px=coordinates_in_mm./info.PixelDimensions;
This doesn't return rounded values (nor values close to integers), so you might need to subtract ImagePositionPatient before converting to pixel units. This is all caused by poor documentation about what units the coordinates are in, and how to get there. Learn from their mistake and document your steps.
Saman Tariq
Saman Tariq 2019 年 12 月 8 日
Rik Thank you for your help but after subtracting from the ImagePositionPatient tag it still not gives integer values of coordinates.
Rik
Rik 2019 年 12 月 8 日
Are you certain they should be integers?
Contact the person who created those coordinates.

サインイン to comment.

件の回答 (1)

Walter Roberson
Walter Roberson 2019 年 12 月 8 日
I suspect that when you talk about cartesian coordinates, you are referring to row, column, layer coordinates.
Note that typically for images, what you care about is coordinates relative to corner of the volume, rather than absolute coordinates. In such cases, you can typically translate coordinate systems just by knowing the x, y, and z resolution. However, you specifically asked for world coordinates, so you will have to pay attention to the Image Position (0020,0032) and Image Orientation (0020,0037). I have to say, though, that it is very rare to see an imaging scanner with an attached GPS, as would be necessary to work with world coordinates.

  3 件のコメント

Saman Tariq
Saman Tariq 2019 年 12 月 8 日
yes I need to get row , column layer coordinate of seed points to get the voxel intensity of my image but I don't know how can I get this from these two dicom tags
Rik
Rik 2019 年 12 月 8 日
CT is generally the easiest to work with. You only need to worry about the physical dimensions of the voxels. Then you can simply use one corner voxel as the origin, and use the voxel dimensions to translate coordinates in voxel offsets.
Note that the slice thickness sounds like the distance between two slice, but that information is actually encoded in the slice interval (which is an optional tag, so you might have to calculate it from the z position of two slices).
Saman Tariq
Saman Tariq 2019 年 12 月 8 日
@Rik I only wanted to change coordinates my seedpoint (54.3057 56.3043 78.9999) so I don"t know which tag from dicom hearder is used and how it will be done.

サインイン to comment.

サインイン してこの質問に回答します。


Translated by