Обработка рентгеновских изображений (файлы .dcm) с использованием pydicom (не удалось найти атрибут SliceThickness) - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в области обработки изображений и хочу знать, как я могу предварительно обработать изображения dicom с помощью python. Я следую приведенному ниже руководству: dicom в python У меня нет атрибута SliceThickness в моих данных. Как я могу рассчитать это?

Это примерный набор данных, который у меня есть:

Dataset

Вот мой код:

import pydicom
import os
import numpy
from matplotlib import pyplot, cm

PathDicom = "xyz\images"
lstFilesDCM = []  # creating an empty list
for dirName, subdirList, fileList in os.walk(PathDicom):
    for filename in fileList:
        if ".dcm" in filename.lower():  # checking whether the file's DICOM
            lstFilesDCM.append(os.path.join(dirName,filename))

RefDs = pydicom.read_file(lstFilesDCM[0])
ConstPixelDims = (int(RefDs.Rows), int(RefDs.Columns), len(lstFilesDCM)) #Load dimensions based on the number of rows, columns, and slices (along the Z axis)
ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness)) # Load spacing values (in mm)

Это ошибка, которую я получил:

'FileDataset' object has no attribute 'SliceThickness'

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Это сработало для меня:

RefDs.pixel_array

Он преобразовал изображение непосредственно в массив Numpy.

0 голосов
/ 05 сентября 2018

Комментарий Тармо Р верен. Глядя на ваши данные, он имеет CR (компьютерную рентгенографию) в качестве модальности, которая представляет собой единое изображение, потому что в основном это цифровое рентгеновское излучение. Поэтому он никогда не будет иметь атрибута SliceThickness.

В этом случае вы можете сразу получить массив Numpy, содержащий данные пикселей:

image_pixel_data = RefDs.pixel_array
...