python显示DICOM中overlay数据

17 篇文章 0 订阅

代码:

#!/usr/bin/env python

import numpy as np
import pydicom
import matplotlib.pyplot as plt

ds = pydicom.dcmread("MR-SIEMENS-DICOM-WithOverlays.dcm")

overlay_data = ds[0x60003000].value
rows = ds[0x60000010].value
cols = ds[0x60000011].value
overlay_frames = ds[0x60000015].value
overlay_type = ds[0x60000040].value
bits_allocated = ds[0x60000100].value

np_dtype = np.dtype('uint8')
length_of_pixel_array = len(overlay_data)
expected_length = rows * cols

if bits_allocated == 1:
    expected_bit_length = expected_length
    expected_length = int(expected_length / 8) + (expected_length % 8 > 0)

    bit = 0
    arr = np.ndarray(shape=(length_of_pixel_array * 8), dtype=np_dtype)

    for byte in overlay_data:
        for bit in range(bit, bit + 8):
            arr[bit] = byte & 1
            byte >>= 1
        bit += 1

    arr = arr[:expected_bit_length]

if overlay_frames == 1:
    arr = arr.reshape(rows, cols)

plt.imshow(arr)
plt.show()

测试数据:

https://sourceforge.net/p/gdcm/gdcmdata/ci/2bddc5695f2482ee3f4d92db7de2348b816fe64c/tree/MR-SIEMENS-DICOM-WithOverlays.dcm

测试结果:

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值