【发布时间】:2011-06-24 20:49:30
【问题描述】:
我正在处理包含图像数据的DICOM 文件。我正在使用pydicom 从 .DCM 文件中读取元数据。现在,从 .DCM 文件中提取的像素数据以二维 numpy ndarray 的形式返回。
我正在使用的特定 DICOM 文件为每个像素保存一个强度值。在我对它们执行一些操作之后,我最终在二维 ndarray 中的每个像素上得到一个浮点值(介于 0.0 和 1.0 之间):
[
[ 0.98788927, 0.98788927 0.98788927, ..., 0.88062284 0.89532872 0.87629758],
[ 0.98788927, 0.98788927, 0.98788927, ..., 0.8884083, 0.89446367, 0.87889273],
[ 0.98788927, 0.98788927, 0.98788927, ..., 0.89100346, 0.89532872, 0.87629758],
,...,
[ 0.97491349, 0.97491349, 0.97491349, ..., 0.74480969, 0.72318339, 0.73269896],
[ 0.97491349, 0.97491349, 0.97491349, ..., 0.74913495, 0.74480969, 0.74740484],
[ 0.97491349, 0.97491349, 0.97491349, ..., 0.74913495 0.75865052, 0.75086505],]
我想通过将每个元素替换为元素序列 [R, G, B] 其中 R=G=B=intensity 值,将其转换为带有 numpy 的 3-D ndarray。
ndarray.put() 函数使排除该方法的矩阵变平。
我也试过了:
for x in range( len(a[0]) ):
for y in range( len(a) ):
a[x][y] = [ a[x][y], a[x][y], a[x][y] ]
但得到一个
ValueError: setting an array element with a sequence.
建议?由于其中一些图像很大,因此我试图尽可能轻松地进行数据操作,因此我想避免黑客/手动将所有数据复制到单独的变量中。
提前感谢您的帮助。
【问题讨论】:
-
我想我错过了一些东西。为什么
numpy.array([a,a,a])不起作用? -
numpy.array([a,a,a]) 应该快得多,因为您没有明确地迭代您的数组。
标签: python numpy matrix pydicom