问题标签 [pydicom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

python - 基于 2-D 的元素有效地将 numpy ndarray 从 2-D 重塑为 3-D

我正在使用包含图像数据的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] 将其转换为带有 numpy 的 3-D ndarray,其中 R=G=B=intensity 值。

ndarray.put() 函数使排除该方法的矩阵变平。

我也试过:

但得到一个

建议?我试图让数据操作尽可能轻松,因为其中一些图像很大,所以我想避免黑客/手动将所有数据复制到单独的变量中。

提前感谢您的帮助。

0 投票
1 回答
1571 浏览

python - 导出/保存 dicom RT 结构集

我正在寻找一种将 rt 结构集导出/保存到 dicom 文件的方法。我有一个用于分割结构的算法,它输出一组我想导出到 dicom rtstructset 的轮廓。

我的首选语言是 Python,但是如果我可以向其添加 Python 包装器,C/C++ 解决方案将起作用。

谢谢你。

0 投票
2 回答
6419 浏览

python - 将 DICOM 转换为 TIFF

我是 Python 新手,如果我没有正确的所有信息,请原谅我的无知。我正在尝试通过一个目录进行光栅化,并将其中的所有 DICOM 文件转换为 TIFF 文件。我已经让搜索功能正常工作,但我很难将图像保存为 TIFF。我正在使用 pydicom 库来读取 DICOM 并操作标头信息。另外,我尝试使用 pydicom 中的 save_as 函数保存到 TIFF,但我宁愿使用 PIL 中的保存函数来正确设置 TIFF 的压缩。我认为问题是我不能/不明白如何从 DICOM 中提取实际图像数据并将其放置在新图像中。任何帮助将不胜感激......干杯

Python 2.7 PIL 1.1.7 Pydicom 0.9.6

0 投票
1 回答
1384 浏览

python - DICOM 到 TIFF 反转 LUT ... Python 和 PIL

我正在使用frombuffer命令将 DICOM 图像数据保存为 TIFF 图像。但在整个过程中,图像强度是倒置的(倒置 LUT)。关于如何克服这个问题的任何想法?

我曾尝试使用 PIL 中的ImageOps.invert函数,但如果给我“不支持此图像模式”错误。

这是我正在使用的代码:

任何指导表示赞赏... Python 2.7 PIL 1.1.7 Pydicom 0.9.6

0 投票
1 回答
2710 浏览

python - 如何使用 pydicom 访问 DICOMDIR 文件中的单个 NumPy 数组?

我将 DICOM 与 Python 和 Pydicom 库一起使用,当我使用 .dcm 文件时我没有问题。但我现在使用的是 DICOMDIR 数据集。

我的代码是下一个:

pixel_array我尝试按如下方式访问元素:

我得到下一个错误:TypeError: No pixel data found in this dataset.

的输出print ds或多或少是下一个:

(0004, 1130) 文件集 ID CS: 'GEMS_11_10_111' (0004, 1200) 第一个目录记录的偏移量 UL: 412 (0004, 1202) 最后一个目录记录的偏移量 UL: 412 (0004, 1212) 文件集Consistency Flag US: 0 (0004, 1220) Directory Record Sequence 7 item(s) ---- (0004, 1400) 下一个 Directory Record UL 的偏移量:0 (0004, 1410) Record In-use Flag US: 65535 ( 0004, 1420) 引用的低级 Di UL: 558 (0004, 1430) 目录记录类型 CS: 'PATIENT' (0008, 0005) 特定字符集 CS: 'ISO_IR 100' (0010, 0010) 患者姓名 PN: '-----------------' (0010, 0020) 患者 ID LO: '246992' (0010, 0030) 患者出生日期 DA:'19630523' (0010, 0040) 患者性别 CS: 'F'


(0004, 1400) 下一个目录记录的偏移量 UL: 0 (0004, 1410) 记录使用中标志 US: 65535 (0004, 1420) 引用的低级 Di UL 的偏移量: 800 (0004, 1430) 目录记录类型CS: 'STUDY' (0008, 0005) 特定字符集 CS: 'ISO_IR 100' (0008, 0020) 研究日期 DA: '20111011' (0008, 0030) 研究时间 TM: '151535.000000' (0008, 0050) 入藏号SH:'1009819901'(0008,1030)研究描述LO:'MG召集'(0020,000D)研究实例UID UI:1.2.840.113564.9.1.20051212222002200222121211101106081081055555555555548.2100981981999999999999999999999999999999999990,00010,00010,00010,00010,00010,00010,00010,00010,00010、0010)


(0004, 1400) 下一个目录记录的偏移量 UL: 0 (0004, 1410) 记录使用中标志 US: 65535 (0004, 1420) 引用的低级 Di UL 的偏移量: 968 (0004, 1430) 目录记录类型CS: 'SERIES' (0008, 0005) 特定字符集 CS: 'ISO_IR 100' (0008, 0060) 模态 CS: 'MG' (0008, 103e) 系列描述 LO: 'Screen Save' (0020, 000e) 系列实例UID UI:1.2.840.113619.2.144.2347322947.2192645372.5(0020,0011)序列号是:'354'


(0004, 1400) 下一个目录记录的偏移量 UL: 1298 (0004, 1410) 记录使用中标志 US: 65535 (0004, 1420) 引用的低级 Di UL 的偏移量: 0 (0004, 1430) 目录记录类型CS: 'IMAGE' (0004, 1500) 参考文件 ID CS: ['DICOM', 'PA1', 'ST1', 'SE1', 'IM1'] (0004, 1510) 参考文件 UI 中的 SOP 类 UID:次要捕获图像存储 (0004, 1511) 文件 UI 中引用的 SOP 实例 UID:1.2.840.113619.2.144.44653394.14990.1318380911.86 (0004, 1512) F UI 中引用的传输语法 UID:显式 VR Little Endian (0008, 0005) 特定字符集CS: 'ISO_IR 100' (0008, 0008) 图像类型 CS: 'DERIVED' (0008,0023) 内容日期 DA: '20111011' (0008, 0033) 内容时间 TM: '151909.000000' (0020, 0013) 实例编号 IS: '8844' (0028, 0010) 美国行数: 2298 (0028, 0011) 美国列数: 1980 (0028, 1052) 重新调整截距 DS: '0' (0028, 1053) 重新调整斜率 DS: '1'1053) 重新调整斜率 DS:'1'1053) 重新调整斜率 DS:'1'


最后一部分重复四次。我的 DICOMDIR 数据集中有 4 张图像。

你知道如何使用 Numpy Array 访问每个图像的字段吗?

0 投票
7 回答
22613 浏览

python - 从 numpy 数组创建 pydicom 文件

我正在尝试从标准尺寸(512 x 512 或 256 x 256)numpy 数组创建一个新的 dicom 图像。

0 投票
1 回答
3054 浏览

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

这是我试图在 Python 中完成的工作(请记住,我对 Python 比较陌生):

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

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

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

这是我到目前为止所拥有的:

对此问题的任何帮助将不胜感激。

干杯 AFH

0 投票
4 回答
6549 浏览

python - 无法获取要在 python 中显示的 dicom 图像

我正在尝试在 opencv-python 中显示 DICOM 图像。我正在使用 pydicom 库,然后添加 API 以使用 DOTNET 创建一个完整的 DICOM 查看器,该查看器运行 python(C# 调用 python 与进程实例当然!!) . 我无法转换或查看未压缩的 DICOM 图像。每当我尝试加载或修改pixel_array。我收到错误消息。

请建议我转换图像的好方法,使 cv2.imshow() 函数显示图像

提前致谢!!

0 投票
1 回答
934 浏览

python - 用 Python 解析 Dicom 结果

我正在尝试从 dicom 研究中解析结果页面。我尝试过使用 pydicom,但它只解析“标题”信息(患者信息、设备信息等)。我想以文本格式从研究中提取数字结果。在以下示例中:

结果样本

我想得到一个带有这些行的文本:

R EIA 1.13m/s 53 0.14m/s 53

R CFA 0.69m/s 53 0.11m/s 53

ETC...

有没有办法以一定程度的准确性将 Python 或任何其他语言中的这些数据解析为文本?我尝试使用 pydicom 抓取 PixelData,将其转储为 TIFF 格式,然后执行 OCR。结果相当不错,但是所有的 6 和 3 都被 8 混淆了。

谢谢!

0 投票
2 回答
1239 浏览

python - pydicom 函数中的错误

我想与 pydicom 一起处理 dicom 图像。不幸的是我得到了错误

在函数中

当我打印变量format_str时,我得到uint12. 不幸的是,我无法解决这个错误。我能做些什么来解决这个问题吗?
即使我删除了所有print命令(我添加了它们以进行调试),我也会得到同样的错误。