- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从标准尺寸(512 x 512 或 256 x 256)numpy 数组创建一个新的 dicom 图像。
import dicom, dicom.UID
from dicom.dataset import Dataset, FileDataset
def write_dicom(pixel_array,filename):
file_meta = Dataset()
ds = FileDataset(filename, {},file_meta = file_meta,preamble="\0"*128)
ds.PixelData = pixel_array.tostring()
ds.save_as(filename)
return
if __name__ == "__main__":
import numpy as np
pixel_array = np.tile(np.arange(256).reshape(16,16), (16,16)) * 4
write_dicom(pixel_array,'pretty.dcm')
最佳答案
2020 年更新:)
这些答案都不适合我。这就是我最终保存一个有效的单色 16bpp MR 切片的结果,它至少在 Slicer、Radiant 和 MicroDicom 中正确显示:
import pydicom
from pydicom.dataset import Dataset, FileDataset
from pydicom.uid import ExplicitVRLittleEndian
import pydicom._storage_sopclass_uids
image2d = image2d.astype(np.uint16)
print("Setting file meta information...")
# Populate required values for file meta information
meta = pydicom.Dataset()
meta.MediaStorageSOPClassUID = pydicom._storage_sopclass_uids.MRImageStorage
meta.MediaStorageSOPInstanceUID = pydicom.uid.generate_uid()
meta.TransferSyntaxUID = pydicom.uid.ExplicitVRLittleEndian
ds = Dataset()
ds.file_meta = meta
ds.is_little_endian = True
ds.is_implicit_VR = False
ds.SOPClassUID = pydicom._storage_sopclass_uids.MRImageStorage
ds.PatientName = "Test^Firstname"
ds.PatientID = "123456"
ds.Modality = "MR"
ds.SeriesInstanceUID = pydicom.uid.generate_uid()
ds.StudyInstanceUID = pydicom.uid.generate_uid()
ds.FrameOfReferenceUID = pydicom.uid.generate_uid()
ds.BitsStored = 16
ds.BitsAllocated = 16
ds.SamplesPerPixel = 1
ds.HighBit = 15
ds.ImagesInAcquisition = "1"
ds.Rows = image2d.shape[0]
ds.Columns = image2d.shape[1]
ds.InstanceNumber = 1
ds.ImagePositionPatient = r"0\0\1"
ds.ImageOrientationPatient = r"1\0\0\0\-1\0"
ds.ImageType = r"ORIGINAL\PRIMARY\AXIAL"
ds.RescaleIntercept = "0"
ds.RescaleSlope = "1"
ds.PixelSpacing = r"1\1"
ds.PhotometricInterpretation = "MONOCHROME2"
ds.PixelRepresentation = 1
pydicom.dataset.validate_file_meta(ds.file_meta, enforce_standard=True)
print("Setting pixel data...")
ds.PixelData = image2d.tobytes()
ds.save_as(r"out.dcm")
注意以下几点:
关于python - 从 numpy 数组创建 pydicom 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350675/
我有以下问题。我尝试使用以下命令(windows、anaconda 安装程序)在 python 2.7 中安装 pydicom 包: conda install -c conda-forge pydi
我无法理解 pydicom 中 Sequence 类的用途。 我阅读了 pydicom 文档页面上提供的示例:https://pydicom.github.io/pydicom/stable/auto
尝试加载具有 JPEG2000 压缩的胸部 X 射线 DICOM 文件,提取像素阵列,裁剪它,然后另存为新的 DICOM 文件。在 Windows10 和 MacOS 机器上试过这个,但得到类似的错误
当我读取 dicom 文件时,所有私有(private)标签都显示为“UN”的 VR,而不是它们应有的任何内容。 import pydicom filename = 'H:\Fuji.dcm' ds
我正在使用 pydicom 1.0.0a1,从 here 下载,当我运行以下代码时: ds=pydicom.read_file('./DR/abnormal/abc.dcm',force=True)
我正在尝试使用 freesurfer 的 dcm2nii 实用程序将大量 DTI siemens DICOM 转换为 NifTi,但在某些文件上失败,因为它们缺少 DiffusionGradientD
我正在尝试从标准尺寸(512 x 512 或 256 x 256)numpy 数组创建一个新的 dicom 图像。 import dicom, dicom.UID from dicom.dataset
我正在尝试使用 pydicom 获取给定 DICOM 实例的所有属性(标签)的列表。 该列表应包括属性键/id、它的vr、值以及相应的名称。 例如: Tag: (2,0) VR: UL Name: F
我正在使用 pydicom,我的代码非常简单: image = np.stack([s.pixel_array for s in scans]) 但这会产生运行时错误: RuntimeError: T
我在给定路径中存在的 DICOM 文件上使用 dcmread() 时遇到问题。我不确定出了什么问题。这是我的代码: import pydicom f = "/exact/path/hi.dcm" fn
我正在处理一组 dicom 图像。我想创建一个标题与现有图像相似的新图像。但是,我已经在 numpy 数组中传播了图像,因此为了避免重复,我在没有 PixelData 的情况下传播 header :
我正在处理一组 dicom 图像。我想创建一个标题与现有图像相似的新图像。但是,我已经在 numpy 数组中传播了图像,因此为了避免重复,我在没有 PixelData 的情况下传播 header :
我正在尝试使用pydicom创建JPEG压缩的DICOM图像。关于彩色 DICOM 图像的精彩源 Material 可以在 here 找到。 ,但主要是理论和C++。在下面的代码示例中,我在 outp
我将 DICOM 与 Python 和 Pydicom 库一起使用,当我使用 .dcm 文件时我没有问题。但我现在使用的是 DICOMDIR 数据集。 我的代码是下一个: ds = dicom.rea
我尝试使用未知压缩(也许没有)访问 DICOM 文件的 RGB 像素阵列。提取灰度像素阵列完全没问题。 但是,使用 import dicom import numpy as np data_set =
我正在使用 pydicom 库查看 DICOM 文件,如图 2 所示,但我想计算出数字 3。我不知道如何去做。你帮忙指导一下。我谢谢你 import matplotlib.pyplot as plt
我想读取一些 DICOM 文件,所以我正在为我的工作测试 pydicom,我认为这非常有用。 现在我想加载现有的 DICOM 文件,将像素数据数组替换为另一个像素数组(例如预处理或字面上的另一个 DI
我正在使用 dcm4chee 作为 PACS 服务器,我正在尝试根据患者姓名检索研究。 相关代码为: ae = AE() ae.add_requested_context(PatientRootQue
我是一名优秀的程序员,十分优秀!