【发布时间】:2021-06-16 06:14:56
【问题描述】:
我需要编辑保存为 dicom 的医学图像。我的目标是编辑、设置阈值并将新图像保存为黑白。
ds = pydicom.dcmread(filename)
png = Image.fromarray(ds.pixel_array)
我可以通过 ImageMagic 编辑并保存图像。接下来,我必须将包含图像的 ds.PixelData 替换为字节。这就是我这样做的原因:
imgAsBytes = png.tobytes()
ds.PixelData = imgAsBytes
plt.imshow(ds.pixel_array , cmap=plt.cm.bone)
这里我收到一个错误:
数据集中像素数据的长度(237568 字节)与预期长度(475136 字节)不匹配。数据集可能已损坏或像素数据处理程序可能存在问题。
所以我补充说:
imgAsByte+= img.tobytes()
结果是:
.dcm 中的图像被复制了四次,并且不是黑白的。为什么我保存为 dicom 的图像与 .png 不同? 我试图解决这个问题的方法:
- 使用 cv2
- Open PIL image from byte file
- 更改 img.tobytes() 中的参数
.dcm 中有关原始图像的信息:
- len(ds.PixelData) = 475136
- len(ds.pixel_array[0]) = 464
- len(ds.pixel_array) = 512
保存为 .dcm 之前 .png 中的图像信息:
- img.size = (464, 512)
- img.mode = L
- len(imgAsByte) * 2 = 475136 # 乘以 2 后,我的长度与原始图像相同
【问题讨论】:
标签: python type-conversion png dicom