查看全课大纲(第 74 / 93 节)
  1. 1.计算机视觉概述
  2. 2.计算机视觉应用场景
  3. 3.困难与挑战
  4. 4.开源库介绍
  5. 5.图像显示与存储
  6. 6.CLAHE
  7. 7.腐蚀膨胀与开闭运算
  8. 8.滤波与边缘填充
  9. 9.各种滤波
  10. 10.图像金字塔
  11. 11.傅里叶变换
  12. 12.短时傅里叶变换与小波变换
  13. 13.颜色特征与颜色直方图
  14. 14.几何特征_边缘
  15. 15.几何特征-角点与斑点
  16. 16.局部特征-SIFT特征描述子
  17. 17.局部特征-SURF特征描述子
  18. 18.局部特征-ORB特征描述子
  19. 19.其他特征描述子
  20. 20.传统图像分割技术
  21. 21.GraphCut
  22. 22.GrabCut
  23. 23.人脸检测的传统方法
  24. 24.行人检测的传统方法HOG+SVM
  25. 25.行人检测DPM
  26. 26.人工神经网络的架构
  27. 27.目标函数与梯度下降
  28. 28.误差反向传播
  29. 29.可手算的神经网络
  30. 30.改进目标函数与克服梯度消散
  31. 31.神经网络之传统神经网络与深度网络的差异
  32. 32.各种梯度下降算法
  33. 33.如何选择合适的梯度下降算法
  34. 34.避免过适应
  35. 35.CNN的架构
  36. 36.CNN的误差反向传播_卷积层
  37. 37.CNN的误差反向传播_池化层
  38. 38.分类所用的数据集
  39. 39.Alexnet详解
  40. 40.VGG详解
  41. 41.GoogLeNet_v1
  42. 42.BatchNormalization
  43. 43.GoogLeNet_v3v4
  44. 44.ResNet
  45. 45.ResNeXt
  46. 46.CNN设计准则
  47. 47.图像检索与推土机距离
  48. 48.基于颜色相似性
  49. 49.基于形状相似性
  50. 50.基于纹理相似性
  51. 51.基于局部特征相似性
  52. 52.DL的二值哈希编码
  53. 53.高维空间中检索KDTree
  54. 54.高维空间中检索LSH
  55. 55.目标识别任务综述
  56. 56.RCNN
  57. 57.SPP-Net
  58. 58.Fast R-CNN
  59. 59.Faster R-CNN
  60. 60.R-CNN系列模型回顾
  61. 61.R-FCN的设计思路
  62. 62.R-FCN的实现
  63. 63.YOLOv1
  64. 64.YOLOv2_9000
  65. 65.YOLOv3
  66. 66.图像分割应用场景与数据集
  67. 67.上采样的实现方式
  68. 68.FCN网络架构的由来
  69. 69.FCN构建细节
  70. 70.DeepLabv1
  71. 71.CRF
  72. 72.DeepLabv2
  73. 73.DeepLabv3
  74. 74.特定的医学影像分割任务
  75. 75.U-Net
  76. 76.3D U-Net
  77. 77.V-Net
  78. 78.DenseNet
  79. 79.病理切片分析任务及数据集
  80. 80.病理切片分析
  81. 81.图说任务及其传统处理方法
  82. 82.深度语言模型与RNN
  83. 83.LSTM及其变种
  84. 84.NIC模型
  85. 85.SAT模型
  86. 86.图说的性能指标
  87. 87.判别模型与生成模型
  88. 88.KL散度与JS散度
  89. 89.VAE
  90. 90.GAN的基本原理
  91. 91.DCGAN与CGAN
  92. 92.Wasserstein GAN
  93. 93.SRGAN

特定的医学影像分割任务

小象实战讲义 · 基于深度学习的计算机视觉

在之前的课程中,我们学习的图像分类、目标检测等任务,大多基于通用场景(如识别猫狗),无需深入了解特定行业背景。然而,当我们将目光投向医疗影像这一专业领域时,情况就变得截然不同。本节我们将开启“医疗影像分割”这一全新篇章,首先需要理解:什么是医学影像?它如何存储?以及我们即将面对的前列腺MRI分割任务,其具体目标是什么?掌握这些背景知识,是理解后续U-Net等专用分割模型的前提。

💡 核心导读

  • 医学影像的特殊性:了解X光、MRI、超声、内窥镜等不同成像方式的原理与特点。
  • 影像存储标准:掌握DICOM、MHD/RAW等主流医学影像数据格式。
  • 分割任务目标:明确在医学影像分割中,我们的目标是识别出特定器官、组织或病变区域。
  • 具体案例剖析:以PROMISE12挑战赛的前列腺MRI分割任务为例,理解其临床背景与技术挑战。

医学影像:特殊的图像世界

医学影像与我们日常处理的自然图像有本质区别。它并非为了美观或艺术表达,而是人体内部结构与功能的客观记录,是医生进行诊断的重要依据。其“特殊性”首先体现在多样化的成像原理上。

常见的医学成像方式

1. X射线成像 这是最古老也最著名的医学成像技术。其基本原理是利用人体不同组织(如骨骼、肌肉、脂肪、空气)的密度和厚度不同,对X射线的衰减程度也不同。穿透人体后,衰减少的区域(如空气所在的肺部)在成像板上接收的射线多,显示为暗区;衰减多的区域(如骨骼)接收的射线少,显示为亮区。因此,一张X光片实际上是人体内部结构的“密度投影图”。

2. 磁共振成像 磁共振成像(Magnetic Resonance Imaging, MRI)的原理则复杂得多。它利用人体组织中氢原子核(质子)在强磁场和射频脉冲作用下产生的磁共振信号来成像。MRI的优势在于:

  • 极高的软组织对比度:能清晰区分大脑灰质与白质、肌肉、韧带等。
  • 多参数、多序列成像:通过调整扫描参数,可以得到反映不同组织特性的图像,如T1加权像(T1WI)、T2加权像(T2WI)。
  • 功能成像:如弥散加权成像(DWI),可以反映水分子在组织内的随机热运动(布朗运动)。水分子的净移动程度可用表观弥散系数(Apparent Diffusion Coefficient, ADC)来描述。在肿瘤区域,细胞密度高,水分子运动受限,ADC值通常会降低。

一个形象的比喻:如果把B超比作“拍西瓜听声”判断熟度,那么MRI中的弥散加权成像(DWI)就像是摇晃一个装有清水和墨水的瓶子,突然定格,观察墨水分子扩散的形态,以此来推断瓶内的情况。要注意这个比喻只对应DWI这类反映水分子弥散的功能成像;常规的T1WI、T2WI看的仍是组织的形态结构与信号强度。

3. 超声成像 超声利用高频声波(机械波)在人体组织界面反射的回波来成像。由于其无放射性,安全性高,广泛应用于产检(B超)、心脏检查等。彩色多普勒超声(常说的“彩超”)属于D型超声,能显示血流的方向和速度。

4. 内窥镜成像 这是一种“直接观察”的方式。将带有微型摄像头的软管或硬管通过人体自然腔道(如口腔、鼻腔)或微小切口伸入体内,直接获取器官表面的视频或图像,诊断准确性极高。

5. 计算机断层扫描 计算机断层扫描(Computed Tomography, CT)并非与上述几种并列的独立成像原理,而是一种“断层重建”的技术思路:先对物体做多角度投影,再由计算机重建成横断面图像,就像把人体“切成”一片一片来观察。临床上最常见的是用X射线投影来重建,也就是通常所说的CT(也称X-CT);按所用射线不同,还有超声CT(UCT)、γ射线CT(γ-CT)等。

医学影像的存储:DICOM与其它格式

医学影像数据量大且包含丰富的元信息(如患者信息、设备参数、扫描序列),因此有专门的存储标准。

主流标准:DICOM

DICOM(Digital Imaging and Communications in Medicine)是医学数字成像和通信的国际标准。一个DICOM文件包含两部分:

  1. 文件头:存储元数据,如患者姓名、ID、检查日期、设备型号、扫描参数等。
  2. 图像数据:存储实际的像素矩阵。DICOM不仅支持静态图像,也支持动态影像序列(如心脏超声)。

DICOM标准的普及,极大地简化了不同医院、不同设备间医学影像的交换、存储与管理,并推动了图像归档与通信系统(PACS)的发展。

其它常见格式

  1. MHD/RAW格式:常见于一些公开数据集(如LUNA2016肺结节挑战赛)。这种格式将元数据与图像数据分离:
    • .mhd 文件:文本格式,存储图像尺寸、数据类型、空间方向等元数据。
    • .raw 文件:二进制格式,存储原始的图像体素(voxel)数据,通常是三维的。 使用时,需要先读取.mhd文件获取信息,再按此信息解析.raw文件,将三维数据“切割”成一系列二维切片。
  2. NRRD格式:将元数据和RAW数据整合在单个文件中,并通常进行压缩。
  3. 专用格式:如vti、GIPL等,应用相对较少。

医学影像分割的目标

医学影像分割的根本目标,是对影像中的每一个像素进行分类,判断其是否属于某个特定的解剖结构、组织类型或病变区域。

具体任务可能包括:

  • 器官分割:在CT影像中分割出肝脏、肾脏。
  • 组织分割:在MRI中区分大脑的灰质、白质。
  • 病变分割:在X光片中勾勒出肺结节的轮廓,或在病理切片中识别出癌细胞区域。

分割结果可以用于体积测量、手术规划、病灶定量分析(大小、形状)以及疾病进展的跟踪,具有重要的临床价值。

案例详解:前列腺MRI分割任务

为了将抽象的目标具体化,我们以本课程后续将深入使用的前列腺MRI分割任务为例进行说明。该任务来源于著名的PROMISE12挑战赛。

临床背景:为什么是前列腺?

前列腺是男性特有的生殖腺器官。前列腺癌是一种常见的恶性肿瘤,早期发现和治疗至关重要。在MRI影像上,前列腺癌通常表现为低信号区(在T2WI图像上颜色更暗)。

然而,直接在全幅MRI图像上寻找低信号区是低效且容易出错的,因为图像中可能存在许多其他低信号结构(如血管、其他组织边界)。因此,一个更合理的流程是:

  1. 步骤一(器官分割):首先精确分割出整个前列腺器官的区域。
  2. 步骤二(子区域/病变分析):在前列腺区域内,再进一步分析其子结构(如外周带、中央区)或寻找异常的低信号病灶。

解剖结构与任务定义

前列腺在横断面MRI上大致可分为几个区域:

  • 外周带:前列腺癌最常发生的区域。
  • 移行带:良性前列腺增生常发生于此。
  • 中央区等。

PROMISE12任务的核心是步骤一,即前列腺整体分割:给定一张前列腺的MRI横断面图像(通常是T2WI),算法需要输出一个二值掩膜(mask),其中白色像素代表属于前列腺组织,黑色像素代表背景。

数据集介绍

PROMISE12数据集包含:

  • 训练集:50个病例。
  • 测试集:30个病例。 需要注意的是,每个“病例”包含一个三维的MRI扫描序列,即由许多张连续的二维切片构成。因此,总图像数量远多于病例数,但即便如此,数据量(约1000多张有效切片)对于训练深度学习模型来说仍然稀缺,这凸显了数据增强在该领域的重要性。 数据以MHD/RAW格式存储,文件名中带有segmentation的为标注文件(即真实的分割掩膜)。

任务可视化

理想的分割结果如下图所示:算法接收原始的MRI切片(左),输出一个精确勾勒前列腺轮廓的掩膜(右),实现像素级的“器官识别”。

输入 (MRI T2WI)         输出 (分割掩膜)
   ┌────────────┐        ┌────────────┐
   │            │        │            │
   │   人体横    │        │   背景(黑)  │
   │   断面组    │        │            │
   │   织影像    │  →    │   ┌────┐   │
   │            │        │   │前列腺│   │
   │            │        │   │区域(白)│   │
   │            │        │   └────┘   │
   └────────────┘        └────────────┘

📝 动手练一练

  1. 概念辨析:医学影像分割与之前课程中学习的通用场景图像分割(如FCN对街景的分割)主要有哪些不同?(至少列举两点)
👉 点击查看参考答案

主要不同点包括:

  • 数据特性:医学影像(如MRI、CT)通常是灰度图像,对比度、纹理模式与自然彩色图像差异巨大;且常为三维体数据。
  • 任务目标:医学分割目标明确为解剖结构或病变,边界定义有明确的医学标准,对分割的精确度(尤其是边界)要求极高,直接关联临床诊断。
  • 数据挑战:标注数据稀缺,需要专业医生耗费大量时间进行精细标注;类别不平衡问题严重(目标器官可能只占图像很小部分)。
  • 评价指标:除了通用的IoU、Dice系数,可能更关注临床相关指标,如体积测量的误差、对特定病灶的检出率等。
  1. 数据理解:假设你下载了PROMISE12数据集的一个病例文件 case_01.mhd 和 case_01.raw。已知 .mhd 文件中指明图像尺寸为 512x512x30,数据类型为 MET_SHORT。请描述你如何将其转换为一个在Python中可用的三维numpy数组(仅描述思路,无需代码)。
👉 点击查看参考答案

思路如下:

  1. 读取元数据:解析 case_01.mhd 文本文件,提取关键信息,特别是 DimSize = 512 512 30 和 ElementType = MET_SHORT。MET_SHORT 通常对应 int16 数据类型。
  2. 计算数据大小:根据尺寸和数据类型计算RAW文件的理论大小:512 * 512 * 30 * 2 bytes = 15,728,640 bytes(因为int16占2字节)。
  3. 读取RAW数据:以二进制模式('rb')打开 case_01.raw 文件,读取全部字节数据。
  4. 转换为数组:使用 np.frombuffer() 将字节数据解析为 dtype=np.int16 的一维数组。
  5. 重塑形状:使用 .reshape() 方法,按照 (30, 512, 512) 的顺序重塑数组(注意:存储顺序可能是Z, Y, X,需根据mhd文件中的ElementDataFile或Transform字段确认,通常为逐切片存储)。这样就得到了一个形状为 (30, 512, 512) 的三维numpy数组,代表30张连续的512x512 MRI切片。

本章小结

本节我们跨入了专业领域——医疗影像分割的门槛。我们认识到,与通用视觉任务不同,处理医学影像必须首先理解其背后的物理成像原理、标准化的存储格式以及具体的临床任务需求。

我们详细介绍了X光、MRI、超声等多种成像技术,理解了DICOM作为数据交换基石的重要性,并最终聚焦于PROMISE12前列腺MRI分割这一具体任务。我们明确了该任务的目标是:从MRI横断面图像中,像素级地分割出整个前列腺器官,为后续的疾病诊断与分析提供基础。

今天,医学影像分割已大量采用 nnU-Net、Swin-UNet 等更强基线以及自监督预训练;但 PROMISE12 仍是理解医学分割数据组织、Dice/表面距离等评价口径的经典入口。

📋 行动清单

  • 回顾成像原理:尝试向他人简要解释MRI与X光成像的根本区别。
  • 熟悉数据格式:在脑海中梳理DICOM文件与MHD/RAW文件在结构上的异同。
  • 明确任务目标:清晰表述前列腺MRI分割任务的两阶段临床意义(先找器官,再找病变)。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第12章《医疗影像分割技术》配套课件(PDF)
    PDF · 3.0MB · 原课教辅
    下载
  • 第12章《医疗影像分割技术》配套代码包
    RAR · 1837.7MB · 原课教辅
    下载