• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

.IMA格式CT数据转成普通的.png或.jpg

武飞扬头像
Caicheng-Ge
帮助1

在找医学图像去噪数据集的时候,发现2016 0mayo clinic 的数据格式是.IMA,我现在像把这些.IMA格式的数据都转成为常见的.png格式或者.jpg格式的图。方法如下:

因为这些数据都是以病例形式存在的,如下图,L067、L096...、L506代表10个病例,每个病例里有若干.IMA文件。

学新通
学新通

现在我要把每个文件夹里的.IMA转成png形式的图片,同时将原来的.IMA文件简单命名为0.png、1.png.....

代码如下:

  1.  
    import pydicom
  2.  
    import numpy as np
  3.  
    import os
  4.  
    import cv2
  5.  
     
  6.  
    #下面getCtHU()是将.IMA文件转成HU形式
  7.  
    def getCtHU(dicm):
  8.  
    '''直接传入dicm文件/IMA文件'''
  9.  
    img = np.array(dicm.pixel_array).astype('int32')
  10.  
    img[img == -2000.0] = 0
  11.  
    Hu = np.array(img).astype('float64')
  12.  
    RescaleIntercept = dicm.RescaleIntercept
  13.  
    RescaleSlope = dicm.RescaleSlope
  14.  
    if RescaleSlope != 1:
  15.  
    Hu = Hu * RescaleSlope
  16.  
    Hu = RescaleIntercept
  17.  
    return Hu
  18.  
     
  19.  
    #下面的windowsLevelTransform()是将上面的HU转为numpy形式
  20.  
    def windowsLevelTransform(Hu, window, level):
  21.  
    img = Hu
  22.  
    min = level - float(window) * 0.5;
  23.  
    max = level float(window) * 0.5;#这个是CT窗口设置,相关问题百度或评论。下面调用这个函数时候,我拟定拟定窗口[-160,240]
  24.  
    img[img < min] = min
  25.  
    img[img > max] = max
  26.  
    norm_ = (img - min) / window
  27.  
    norm_.astype('float32')
  28.  
    return norm_
  29.  
     
  30.  
     
  31.  
    root = r'C:\Users\Gecaicheng\Desktop\去噪模型代码\full_3mm_sharp\L506\full_3mm_sharp' #这是每个病例的路径
  32.  
    savepath = r'C:\Users\Gecaicheng\Desktop\new CT\L506' #之后保存图片的路径
  33.  
     
  34.  
    #下面遍历每个切片
  35.  
    i=0
  36.  
    for filename in os.listdir(root):
  37.  
    img = pydicom.read_file(os.path.join (root,filename)) #.IMA文件
  38.  
    img_hu = getCtHU(img) #由.IMA文件转换成HU形式的
  39.  
    img_np = windowsLevelTransform(Hu=img_hu, window=400, level=40) #再由HU形式的转成.numpy形式的
  40.  
    cv2.imwrite(savepath '\%d.png'%i, img_np*255) #注意这里img_np要乘上255即img_np*255,不然保存起来的图片看起来不爽,一片黑
学新通

上述代码是以L506病例为例,转换前后结果如下:

学新通

转换前

学新通

转换后

就这样,手动更改代码中的病例名称,挨个转变每个病例

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcfjgc
系列文章
更多 icon
同类精品
更多 icon
继续加载