Как преобразовать сохраненные значения в файле DICOM в реальные единицы измерения? - PullRequest
2 голосов
/ 29 января 2020

Я пытаюсь рассчитать концентрации радиоактивности на изображении PET DICOM, используя Matlab или python. Я прочитал в стандарте DICOM, что

(0028,1053) Rescale Slope    
(0028,1052) Rescale Intercept

может использоваться для отображения сохраненных 16-битных значений (в моем случае) в реальные единицы. Файлы также содержат следующие элементы:

(0040,9096) Real World Value Mapping Sequence    
(0028,9145) Pixel Value Transformation Sequence 

как части (5200,9230) Per Frame Functional Groups Sequence (для каждого кадра в динамическом c измерении) или (5200,9229) Shared Functional Groups Sequence (для статических c измерений). Эти последовательности также содержат изменения масштаба и пересечения. Значения совпадают друг с другом (для данного кадра значения (0040,9096) Real World Value Mapping Sequence и (0028,9145) Pixel Value Transformation Sequence одинаковы), но они не совпадают со значениями "основного" наклона и точки пересечения (которые являются атрибутами модуля PET Image). ). Например, после чтения динамического c мультикадрового файла с pydicom как ds:

#This is the "main" slope, part of the PET Image module    
>ds.RescaleSlope  
Out[31]: "0.478081"

#This is a dynamic image, for a static image SharedFunctionalGroupsSequence would be used
>ds.PerFrameFunctionalGroupsSequence[0].PixelValueTransformationSequence[0].RescaleSlope
Out[34]: "104.435089"

>ds.PerFrameFunctionalGroupsSequence[0].RealWorldValueMappingSequence[0].RealWorldValueSlope
Out[38]: 104.43508911132812

У меня следующий вопрос: как правильно применить эти преобразования для получения единиц реального мира (например: Бк / мл как описано в шапке) из значений пикселей? Нужно ли умножать как ds.RescaleSlope, так и RealWorldValueSlope? (в моем случае перехваты всегда равны 0). Это кажется нелогичным, так как стандарт dicom гласит , что эти два значения на самом деле не имеют ничего общего друг с другом, но что же делает ds.RescaleSlope?

Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 января 2020

Если после David Clun ie в этом посте , в этом случае будет использоваться Real World Value Mapping Sequence, Rescale / Slope является запасным вариантом, если это не поддерживается. Я не использовал Real World Value Mapping Sequence сам (всегда применял модальность LUT в конвейере отображения, если он присутствует), поэтому я не совсем уверен в этом, хотя ...

...