gpt4 book ai didi

python - 将 DICOM 图像转换为 XYZ 坐标及其值的列表 - Python

转载 作者:行者123 更新时间:2023-11-28 18:47:29 28 4
gpt4 key购买 nike

这是我试图用 Python 完成的事情(请记住,我对 Python 比较陌生):

  1. 将 DICOM 图像转换为 xyz 坐标列表及其各自的像素值,并将该列表导出为 .csv 文件。
  2. 从上一个任务中生成的 xyz 坐标和像素值列表中重新生成相同的图像。

到目前为止,我已经能够读取 dicom 图像并通过使用 pydicom 和 numpy 将它们转换为数组。我还能够通过几个 for 循环提取像素和坐标值,并将该列表导出为 .csv。但是必须有更好的方法来保持某种质量控制,因为当我尝试重新生成图像时(通过使用另一组 for 循环),我没有得到原始图像。

我需要这两个函数在不同的 python 脚本中分别运行。

这是我目前所拥有的:

    #Raster through all pixels and copy each value and coordinates to arrays
rc_cntr = 0
for r in range(0,img_rows):
for c in range(0,img_cols):
pixel = dcmarray[r, c]
rArray[rc_cntr] = r
cArray[rc_cntr] = c
zArray[rc_cntr] = z_cntr
imgArray[rc_cntr] = dcmarray[r,c]
rc_cntr = rc_cntr + 1;

#Combine arrays into one file
XYZV = numpy.column_stack([rArray,cArray,zArray, imgArray])
numpy.savetxt(output_path,XYZV,'%0i','\t') #Save XYZV files for each image

如有任何帮助,我们将不胜感激。

干杯 AFH

最佳答案

我对DICOM不是很熟悉,但是看pydicom docs我认为以下应该有效:

import dicom
import numpy as np

ds = dicom.read_file('your_file.dcm')
planes, rows, cols = ds.NumberofFrames, ds.Columns, ds.Rows
image = ds.pixel_array # should have shape (planes, rows, cols)

# to get data and coords to write to CSV
image_data = image.ravel()
z, y, x = np.meshgrid(np.arange(planes), np.arange(rows), np.arange(cols),
indexing='ij').T

# to write CSV read image back into DICOM file
planes, rows, cols = np.ptp(z)+1, np.ptp(y)+1, np.ptp(x)+1
image = np.zeros((planes, rows, cols), dtype=image_data.dtype)
image[z, y, x] = image_data

ds.NumberofFrames, ds.Columns, ds.Rows = planes, rows, cols
ds.PixelData = image.tostring()
ds.save_as('another_file.dcm')

关于python - 将 DICOM 图像转换为 XYZ 坐标及其值的列表 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17824949/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com