医学图像开窗操作

准备工作

读取DICOM格式图像

#首先要安装pydicom

#pip install pydicom

#读取DICOM文件

ds=pydicom.dcmread("ChestDCM.dcm")

#像素值矩阵

im=ds.pixel_array

后续操作可以对im进行处理,完成骨窗抽取等

 一、开窗及其原理

将给定的肺部医学图像ChestDCM(dicom格式)开骨窗,即开窗后的图像只显示图像中的骨骼。

开窗的原理:通过调整图像的灰度值范围,将骨骼的灰度值范围突出显示,以便更清晰地观察和诊断骨骼结构。

对于DICOM格式的医学图像,可以利用其包含的像素灰度值信息和窗宽(Window Width)与窗位(Window Level)两个参数来实现开骨窗操作。窗宽定义了显示图像中灰度值范围的宽度,而窗位定义了该范围的中心位置。通过调整这两个参数,可以将骨骼的灰度值范围置于窗宽内,并将窗位调整到合适的位置,从而使骨骼结构更加清晰地显示出来。

import cv2
import numpy as np
import matplotlib.pyplot as plt  # 用于显示图像


# 读取DICOM图像
def read_dicom_image(file_path):
    import pydicom
    dicom_image = pydicom.dcmread(file_path)
    image_array = dicom_image.pixel_array
    return image_array


# 应用窗宽窗位
def apply_window(image, window_width, window_level):
    image = image.astype(np.float32)  # 转换为浮点数以避免数据溢出
    windowed_image = (image - window_level) / (window_width / 2)
    # 将结果裁剪到0-255范围,并转换为8位无符号整数
    windowed_image = np.clip(windowed_image, -1, 1) * 255
    windowed_image = windowed_image.astype(np.uint8)
    return windowed_image


# 显示图像
def display_images(original_image, windowed_image):
    plt.figure(figsize=(12, 6))
    plt.subplot(1, 2, 1)
    plt.title('Original Image')
    plt.imshow(original_image, cmap='gray', vmin=np.min(original_image), vmax=np.max(original_image))
    plt.axis('off')

    plt.subplot(1, 2, 2)
    plt.title('Bone Windowed Image')
    plt.imshow(windowed_image, cmap='gray')
    plt.axis('off')
    plt.show()


# 主函数
def main():
    file_path = 'D:\pycharm\image\ChestDCM.dcm'  # 假设的DICOM文件路径
    dicom_image = read_dicom_image(file_path)

    window_width = 1500  # 窗宽
    window_level = 1500  # 窗位
    bone_windowed_image = apply_window(dicom_image, window_width, window_level)

    display_images(dicom_image, bone_windowed_image)


if __name__ == '__main__':
    main()

开窗结果:

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

塔塔o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值