0

这是我的第一篇文章,我希望我遵循惯例。

我发现 pydicom 取得了很大的成功,但被困在一个特定的应用程序上。我想做以下事情:

  1. 将 dicom 读入 numpy 数组
  2. 重塑为(帧、行、列、像素)
  3. 做一些处理,包括裁剪和转换为灰度
  4. 输出为新的 dicom 文件

我用

r = ds.Rows
c = ds.Columns
f = ds.NumberOfFrames
s = ds.SamplesPerPixel
imageC = np.reshape(img,(f,r,c,s), order='C')

获取我想要的初始 numpy 矩阵并进行处理。我已经确认这些步骤看起来是合理的。

在保存新的 dicom 之前,我使用新的正确尺寸更新 ds 行和列,并将 SamplesPerPixels 设置为 1。然后我在使用 .tostring() 重新分配给 PixelData 之前重塑 numpy 矩阵。

np.reshape(mat, (p, f, r, c), order='C')

在我的 dicom 查看器中,生成的图像是无意义的(绿色)。有没有明显的逻辑错误?如果有用的话,我可以提供更多代码。

4

1 回答 1

0

我相当猜测,因为我没有使用 pydicom 来保存文件。无论如何,如果原始图像是 RGB 图像并且您将其转换为灰度图像,那么您应该更改图像的媒体存储 SOP 类 UID,以便查看者可以正确解释它。你能检查一下价值吗?它在标签 (0002,0002) 下。这是清单。可能有更多标签要更改。你能转储这两个文件并向我们展示差异吗?

顺便说一句,从您的帖子看来,您是通过ds.PixelData. 你为什么不使用ds.pixel_array?那么你就不需要重塑了。

于 2018-01-06T11:44:13.553 回答