为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑5688855 2022-07-26 21:58:36
我必须将一些默认提供的文件转换为.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 的样子,右侧是运行此代码的结果
查看完整描述

4 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

一些 DICOM 数据集需要对原始像素强度进行窗口中心/宽度重新缩放(通过VOI LUT 模块中的 (0028,1050)窗口中心和 (0028,1051)窗口宽度元素),以便重现它们“查看”的方式.


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()。


查看完整回答
反对 回复 2022-07-26
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

分析.dcm特定图像时,图像似乎具有一定范围的亮度和对比度。在您的情况下它可能看起来有点亮的原因是您只选择了图像的特定视图。


为了使图像更暗,看起来你只需要增加你的分母值:


threshold = 500 # Adjust as needed

image_2d_scaled = (np.maximum(image_2d, 0) / (np.amax(image_2d) + threshold)) * 255.0

这将确保某些像素不会太亮。


查看完整回答
反对 回复 2022-07-26
?
狐的传说

TA贡献1804条经验 获得超3个赞

那么我也有同样的问题,你可以使用Scikit Image library 中的exposure.equalize_adapthist()。


filename = "sample.dcm"

ds = pydicom.read_file(filename)

image = ds.pixel_array

image = exposure.equalize_adapthist(image)


cv2.imshow("dicom", image)

cv2.waitKey(0)


查看完整回答
反对 回复 2022-07-26
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

你可以试试下面的方法


image = image - np.min(image)

image = (image/np.max(image))*255

在这种方法中,您在从 dicom 转换为 png/jpg 时会丢失最少的信息


查看完整回答
反对 回复 2022-07-26
  • 4 回答
  • 0 关注
  • 685 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信