Предполагая, что вы пытаетесь измерить расстояния в объекте / животном / призраке / чем угодно, все зависит от того, хотите ли вы измерить расстояния между различными срезами или просто в одном и том же срезе.
Объемные серии DICOM обычно имеют интервал срезов (0012,0088) в дополнение к интервалу между пикселями, который необходимо учитывать. Обратите внимание, что существует также такая вещь, как толщина среза, которая различна и должна не использоваться для расчета расстояний, поскольку между последовательными срезами может быть зазор или перекрытие.
Полезно определить вектор пространственного вокселя следующим образом (псевдокод):
voxelspacing.x = first element of PixelSpacing (0028,0030), i.e. before "\"
voxelspacing.y = second element of PixelSpacing (0028,0030), i.e. after "\"
voxelspacing.z = SliceSpacing (0018,0088) or 0 if 2D and/or not specified
Некоторые производители и инструменты де-идентификации, умирающие от разрыва мозга, ломают тег интервала среза, в этом случае вам придется рассчитывать его из другого источника, такого как разница в расположении последовательного среза, положении изображения пациента и т. Д., Но это другой вопрос .
Продолжая, теперь у вас есть расстояние в миллиметрах между вокселями для каждого измерения. Затем вы можете рассчитать реальное евклидово расстояние по координатам вокселей в точке A и точке B:
delta = (pointA - pointB) * voxelspacing
distance = sqrt(delta.x^2 + delta.y^2 + delta.z^2);
Где все операторы поэлементны. Крайне важно по отдельности умножить координаты вокселей на соответствующие расстояния до вычисления расстояния, поскольку воксели обычно не являются изотропными.