内容导读:医学类竞赛常常是深度学习相对比较热门的一个话题,无论是kaggle平台,还是国内一些医疗公司主办的比赛,常常会吸引数千支队伍参赛。在众多赛事中,大部分赛事主办方提供的数据集会是dicom格式,而不是传统的 jpg 或 png 格式的图片,今天我们就来剖析dicom格式的数据。更多优质内容请关注微信公众号“机器学习深度学习kaggle实战”(ID:angtkai)

为了让读者学习思路清晰,我从最近kaggle上的一个“脑溢血”比赛"RSNA Intracranial Hemorrhage Detection"的训练集中拿出一张dcm格式的影像做示例。

通过上面代码可以看到,dcm影像中存储的信息是如此丰富。为了方便描述,我们给每一行打上一个标记"info"。

看着一大堆信息,是不是有点迷乱,下面我们详解快速入门需要掌握的信息,剩下的在进阶篇中剖开来讲。

上面每行信息都可通过两种方式查看,比如 info11 的图片高度:

但是上面的方法拿不到具体的值,拿到的是一个对象,如下:

要拿到具体的值有如下两种方法:

下面开始上干货:

首先我们查看该dcm的 info22,也就是像素值:

解读上面的结果:由 info15 即 Bits Stored 可知,该影像在存储时采用16位灰阶。但由 info17可知存储方式为有符号存储,即正负号占一位。所以该影像实际的动态范围可达215即 [-32767, +32767],所以该dcm的最大灰度值为2743,最小灰度值为-2000就不难理解了。( 我们常见的图像都为[0, 255],表示8位无符号存储。)

接下来我们将该dcm的灰度值转换为CT值,CT值 (单位: Hu) 反应的是人体不同组织对X射线的吸收情况,是人体不同组织密度的反应。正常情况下 空气的CT值最低,接近-1000Hu;水的CT值是 0Hu左右;骨头等高密度组织CT值可达1000Hu左右;而嵌入人体的钢板等可达 2000-3000Hu。

灰度值转换CT值的公式在最前面的表中已经给出:CT = info22 * info21 + info20

注意:个别的dcm不存储灰度值,而是直接存储CT值,那么它必定 info21=1,  info20=0

最后,我们再探讨 info18 和 info19 窗位和窗宽:

如上所述,人体不同组织的CT值动态范围很大,而当我们只想观察具体某个组织时,其他不相干组织就会成为干扰,故dcm影像都会有建议的CT值范围,本例中 窗位 info18=30,窗宽 info19=80,代表建议观看[-10, 70],计算方式为 [ 窗位 - 窗宽 / 2, 窗位 + 窗宽 / 2 ]。

我们对比下 全CT图和设置窗位窗宽的CT图:

可以看到有效的过滤了其他组织的干扰。

常见人体组织的CT值如下表所示:(未列出的可百度搜索)

所以我们也可以不用dcm影像中建议的窗位和窗宽,而构建自己的窗位和窗宽,例如本比赛为检测 "脑溢血",我们可以构建三组窗位和窗宽:血、脑硬膜、骨头

至此,本篇关于dicom的快速入门知识就全部探讨完毕了。下一篇进阶篇我们将着重探讨窗口窗位的选择,以及影像三维重建等技巧。

重大消息!昂钛客出新课程啦!

双十一期间昂钛客新推出保证金牌,零基础直播培训,独立第一作者身份发表国际论文,助力留学申请,提升求职背景!大咖一对一指导,正规合同保证奖牌。可作为项目补充到简历,还有大厂内推,千人社群。

50名咨询报名可享受团购优惠,最高立减1000元哦!

昂钛客从事机器学习、深度学习、计算机视觉、自然语言处理与理解以及大数据等相关领域的项目研发和在线教学活动,快来扫码添加微信了解更多详情吧~

微信号:angtkbj

你也「在看」吗??

python调整dicom窗宽窗位_【基础篇】kaggle || RSNA脑溢血金牌案例技术分享!如何使用dicom格式的数据的?...相关推荐

  1. 使用pydicom实现Dicom文件读取与CT图像窗宽窗位调整

    1. 前言 为了能够在Labelme上对Dicom图像进行编辑,这里对python环境下Dicom文件的读取进行了研究.在Dicom图像中CT的窗宽窗位是一个很重要的概念,但是找了半天在pydicom ...

  2. matlab设置固定的窗宽窗位,python实现CT窗宽窗位的调整(即指定HU值保存图像)...

    最近一直在做实验,所以好久没有更新了,先把上周做的一些小的实验贴出来供大家分享. 在医生诊断时,是会将CT图像调整成不同的窗来处理的.比如说肺部CT吧,肺窗(窗宽为2000,窗位为-400)用于看小的 ...

  3. CT图像之Hu值变换与窗宽窗位调整

    今天通过分析实验结果,完善了之前的预处理代码,借此博文分享给大家,另外 点击此处可以查看预处理的完整代码,欢迎大家一起来完善. 最重要的是,欢迎大家的批评指正,您的建议和意见将会是我成长源泉. 接下来 ...

  4. 8bit黑白图像的灰度值范围是_窗宽窗位对基于互信息的医学图像

    窗宽窗位对基于互信息的医学图像 摘 要:基于互信息的配准方法具有自动化程度高.配准精度高等优点,近来已成为医学图像处理领域的热点.基于互信息的配准方法实质上是一种对灰度进行统计和计算的方法,因此同一图 ...

  5. X线DR医学图像 --- 直方图的窗宽窗位调整(Matlab篇)

    X线图像直方图的窗宽窗位的调整 图像的直方图显示了图像的灰阶分布.说白了就是,显示了图像当中每一个点的亮度分布情况(整个图像当中比较亮的点有多少个,黑的点又有多少个.反之,也可以看出某个点是落在了亮的 ...

  6. python nii 图像读取,转换成CT 值,设置窗宽窗位,保存成png 图像

    import numpy as np import os # 遍历文件夹 import nibabel as nib # nii格式一般都会用到这个包 import imageio # 转换成图像ce ...

  7. MITK中窗宽窗位相关代码

    目录 1  基本数据结构Image 2  窗宽窗位mitkLevelWindow定义类 3 窗宽窗位自动设定算法 4  窗宽窗位的属性设置LevelWindowProperty 类 5  mitkDi ...

  8. 医学图像处理涉及到的窗宽窗位 1

    先说一下CT值是什么 CT图像反映的是人体对X射线吸收的系数,但我们关心的是各组织结构的密度差异,即相对密度,如果某组织发生病变,其密度就会发生变化,但由于比较吸收系数非常繁琐,于是亨氏把组织器官对X ...

  9. ITK (1)窗宽窗位的意义与设置

    背景与意义 医学图像与传统可视化图像相比,其具有更大的"灰度"范围.如,普通图像(灰度图像)的灰度范围一般是256级(即图像中最亮的点的灰度值定义为0,最亮的定义为255,也就是2 ...

  10. CT值以及窗宽窗位(未完待续)

    1 常见人体组织的CT值(HU) 常见人体组织的CT值(HU)组织 CT值 组织 CT值骨组织 >400 肝脏 50-70 钙值 80-300 脾脏 35-60 血块 64-84 胰腺 30-5 ...

最新文章

  1. Sitecake – 可视化编辑,所见即所得的 CMS
  2. codevs 1082 线段树区间求和
  3. 物联网平台构架系列 (四):Amazon, Microsoft, IBM IoT 解决方案导论 之 平台
  4. c# websocket 心跳重连_websocket的简单使用
  5. trace与代码跟踪服务
  6. sklearn自学指南(part14)--Logistic回归
  7. 学习手记(2018.9.15~2018.11.10)——备战NOIP2018
  8. 1到10用递归c语言,为什么这个递归能输出1到10
  9. Python练习-从小就背不下来的99乘法表
  10. 《Spring技术内幕》——2.3节IoC容器的初始化过程
  11. Android创建项目java报错,创建Android工程时报错:Errors running builder 'Android resource manager' on project '项目...
  12. RTEMS 网络资料的部分翻译
  13. python分割压缩_Python读取分割压缩TXT文本文件实例
  14. .Net操作Office总结一 - 使用VS2010自带的Office模板进行开发
  15. 去掉txt文本某些字符
  16. Angular Mock Data
  17. DHCPv6技术介绍
  18. android 自动跳转市场,js判断设备,跳转app应用、android市场或者AppStore
  19. Appium基础 — uiautomatorviewer定位工具
  20. 5个免费GitHub最强前端学习资源 程序员不花一分钱也能变很强

热门文章

  1. Android 锁屏功能
  2. git bash 下backspace键无法使用的问题
  3. Java继承的特征和优势
  4. 搜索时输入关键词进行匹配
  5. 复杂网络作业二:第一题——Wikipedia vote网络的基本分析
  6. 小米和美的互投,大明湖畔的董明珠怎么办?
  7. LeetCode-----第113题-----路径总和 II
  8. Koo叔说Shader-贴图切换
  9. CC1310架构及工作原理
  10. ajax removeclass,Ajax成功后的jQuery addClass/removeClass