gpt4 book ai didi

Python将.dcm转换为.png,图像太亮

转载 作者:行者123 更新时间:2023-12-02 05:48:49 25 4
gpt4 key购买 nike

我必须将一些默认为 .dcm 的文件转换为 .png,我在这里找到了一些代码示例来实现这一目标,但最终结果太亮了。请问有人可以看一下吗?

 def convert_to_png(file):
ds = pydicom.dcmread(file)

shape = ds.pixel_array.shape

# Convert to float to avoid overflow or underflow losses.
image_2d = ds.pixel_array.astype(float)

# Rescaling grey scale between 0-255
image_2d_scaled = (np.maximum(image_2d,0) / image_2d.max()) * 255.0

# Convert to uint
image_2d_scaled = np.uint8(image_2d_scaled)

# Write the PNG file
with open(f'{file.strip(".dcm")}.png', 'wb') as png_file:
w = png.Writer(shape[1], shape[0], greyscale=True)
w.write(png_file, image_2d_scaled)

我已经调整了代码,但似乎没有任何效果。

这就是 dicom 的实际情况,右侧是运行此代码的结果 enter image description here

最佳答案

某些 DICOM 数据集需要 window center/width rescaling原始像素强度(通过 VOI LUT Module 中的 (0028,1050) Window Center 和 (0028,1051) Window Width 元素)以重现方式他们被“查看”。

pydicom 有一个函数 apply_voi_lut()应用此窗口:

from pydicom import dcmread
from pydicom.pixel_data_handlers.util import apply_voi_lut

ds = dcmread(file)
if 'WindowWidth' in ds:
print('Dataset has windowing')

windowed = apply_voi_lut(ds.pixel_array, ds)

# Add code for rescaling to 8-bit...

根据数据集类型,您可能需要使用 apply_modality_lut()事先。

关于Python将.dcm转换为.png,图像太亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60219622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com