在医学影像分析中,纹理(texture)特征被广泛地应用于定量化描述病灶的特性。相比病灶影像的统计学特征和形状特征,纹理特征的计算往往较为复杂,不易于搞懂其背后的原理。然而,学习过程中建立对概念直观的认识(intuition)对理解问题的本质很有帮助,这也是本文的出发点。
本文尝试解决如下问题:
- 医学影像特征包的官方文档给了纹理特征数学定义,但是理解起来不够直观
- 网络上有许多介绍纹理特征的帖子,但是每个帖子介绍的内容有限;
- 少有文章关注不同类型纹理特征之间的比较,不易于理解纹理特征背后的逻辑
本文希望通过一个统一的描述,为研究医学影像的入门者提供帮助。如有疏漏还请大佬们多多指正。
0 简介
在介绍具体的特征之前,我们先说明一下什么是“致密的”和“粗糙的”和纹理。下图中,左侧的纹理相对致密,右侧的纹理相对粗糙,因为右侧的图中相邻区域的颜色变化相对较小,我们肉眼可见若干个子区域。但是这种对于纹理的描述是定性的,不利于我们建立数学模型来对图像的性质做出判断,因此需要引入定量的纹理特征。
简单来说,纹理特征是一种“二阶特征”,他们不是从图像上直接得出的,而是先通过某种计算将原始图像的特性提取出来并存在一个中间矩阵中,之后在这个中间矩阵上定义一系列的统计量,作为图像的纹理特征。在医学影像研究中,根据所用的中间矩阵的不同,可以将纹理特征的分为若干类别。这里使用影像特征提取包pyradiomics中对于纹理特征的分类:
- Gray-level co-occurrence matrix (GLCM) based features
- Gray-level size zone matrix (GLSZM) based features
- Gray-level run length matrix (GLRLM) based features
- Gray-level dependence matrix (GLDM) based features
- Neighboring gray tone difference matrix (NGTDM) based features
我们一个一个来看。
1 GLCM与相关纹理特征
灰度共生矩阵 (GLCM) 是最常用的计算图像纹理的手段。这里通过MATLAB帮助文档里的一个例子说明GLCM是怎么计算的:
图的左侧是原始图像矩阵,右侧是计算出的GLCM。所谓“灰度共生”,顾名思义是研究两个灰阶同时出现的情况。那么这里就产生了两个问题:1. 要考虑哪两个灰阶;2. 在图上怎么考虑两个灰度。
第一个问题的答案很简单,所有的灰阶组合我们都考虑。GLCM是一个方阵,矩阵的维度是原始图像的灰阶数。上面例子中原图一共有8个灰度值,因此GLCM的维度是8。要考虑的两个灰度分别作为行和列,比如灰度1和2的共生次数是2,这个值就保存在GLCM(1,2)中。
第二个问题需要我们设定“共生灰度”对应像素的距离