我是图像处理的新手,想知道如何使用python预处理dicom图像。我正在遵循以下教程:dicom in python我的数据中没有SliceThickness属性。我该如何计算?
这是我的示例数据集:
这是我的代码:
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'
答案 0 :(得分:3)
Tarmo R的评论是正确的。在查看数据时,它具有CR(计算机放射成像)模态,它是一张照片,因为它基本上是数字X射线。因此,它将永远不会具有SliceThickness属性。
在这种情况下,您可以立即获得一个包含像素数据的numpy数组:
image_pixel_data = RefDs.pixel_array
答案 1 :(得分:0)
这对我有用:
RefDs.pixel_array
它将图像直接转换为numpy数组。