我试图使用dicom库在python中获取dicom文件的像素值。
但它只返回一个带零的数组。
我的代码是这样的:
import dicom
import numpy
ds=pydicom.read_file("sample.dcm")
print(ds.pixel_array)
,结果是
[[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
...,
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]]
您是否知道如何获取像素值?
提前多多感谢。
安德拉什
答案 0 :(得分:1)
编写的代码应该有效。数组的开头和结尾可能是真正的零。
查看图像中间的某些内容通常更有意义。
E.g:
midrow = ds.Rows // 2
midcol = ds.Columns // 2
print(ds.pixel_array[midrow-20:midrow+20, midcol-20:midcol+20])
如果它到处都是真正的零,那么这就是真实的形象或某种形式的错误。如果没有尝试过,也许用dicom查看器阅读会有所帮助。
答案 1 :(得分:0)
应该有价值观。如果您使用IDE(例如Spyder),您可以在变量管理器中看到它。
答案 2 :(得分:-1)
import dicom
import dicom_numpy
dataset = dicom.read_file('sample.dcm')
pixels, ijk_to_xyz = dicom_numpy.combine_slices([dataset])
此处pixels
将包含正确缩放的像素值,ijk_to_xyz
是将索引映射到DICOM患者坐标系的4x4仿射矩阵。
此代码段使用dicom-numpy,这是在pydicom之上构建的更高级别的抽象。
它处理从一组DICOM文件中提取像素值时最常见的用例:
我们在所有需要将DICOM文件中的图像数据提取到NumPy ndarray的项目中使用它。