代码:
#!/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()
测试数据:
测试结果: