一阶统计量特征,或者说灰度直方图特征,主要思想是对整张图像,或者图像中的感兴趣区域进行一些统计学计算,求得相应的统计量,用于在灰度层面描述图像。需要注意的是,一阶统计量特征仅适用于单通道的灰度图像,如果想对彩色图像提取一阶统计量特征,需要先对彩色图像进行灰度化操作。
本文的代码展示的是如何对图像的感兴趣区域提取一阶统计量特征。
本文使用的例子是一例骨肿瘤患者的CT图像和它对应的肿瘤区域标记,原始CT图像数据是三维的.nii格式,在Matlab中打开和处理这种格式的数据需要借助NIFTI工具库,NIFTI工具库大家可以在GitHub中搜索下载,或者通过下面的链接下载,下载解压后将其添加到Matlab的路径中即可使用。
链接:https://pan.baidu.com/s/1giKDEtsVs-YVA5p-dtuhyA
提取码:grcm
提取三维数据中的一层进行演示,代码如下,使用的软件版本为Matlab 2018b,首先介绍数据的读取和预处理。
% 读取三维原始图像image和对应的感兴趣区域标记文件label
% image和label的尺寸为512×512×65,65是层数
image = load_nii('C:\Users\Administrator\Desktop\image.nii');
image = image.img;
label = load_nii('C:\Users\Administrator\Desktop\label.nii');
label = label.img;
% 选取原始图像和标记文件的第35层,并对标记文件进行二值化操作
% 使得标记中感兴趣区域为1,其他区域为0
img = image(:,:,35);
mask = label(:,:,35);
mask = imbinarize(mask);
% 医学影像灰度值跨度很大,所以将img的像素值归一化到0-255范围内,便于后续分析
img = double(img);
ymin = 0;
ymax = 255;
xmin = min(min(img));
xmax = max(max(img));
img = round((ymax-ymin)*(img-xmin)/(xmax-xmin) + ymin);
img = uint8(img);
% 将第35层的原图和标记展示出来
imshow(img, []);
figure
imshow(mask);
% 求原图在感兴趣区域上的灰度直方图并可视化出来
% 变量level存放的是图像的灰度级,这里为256×1的向量,存放0-255之间的整数
% 变量count存放的是感兴趣区域中每个像素值的数量
[count, level] = imhist(img(mask == 1));
figure
imhist(img(mask == 1));
上面代码得到的数据读取和预处理结果如下所示,第一幅图是像素值归一化到0-255后的第35层原始数据,第二幅图是它对应的二值化后的感兴趣区域标记图像,白色区域为手工勾画的肿瘤区域,第三幅图是将感兴趣区域投射回原图的示意图,第四幅图是原始图像感兴趣区域内的灰度直方图。
下面的代码根据感兴趣区域和灰度直方图信息对原图提取一些统计量,用于在灰度层面上描述图像。
% 变量roi中存放的是对应于感兴趣区域的原始图像中的灰度值
roi = img(mask == 1);
roi = double(roi);
% 变量pixelnum中存放的是感兴趣区域(白色区域)内的像素数
pixelnum = sum(sum(mask == 1));
% 定义第一维特征为感兴趣区域内所有像素值的平均值
histofeats(1) = sum(roi) / pixelnum;
% 定义第二维特征为感兴趣区域内所有像素值的中位数
histofeats(2) = median(roi);
% 定义第三维特征为感兴趣区域内所有像素值的标准差
histofeats(3) = std(roi);
% 定义第四维特征为感兴趣区域内所有像素值的偏度
histofeats(4) = skewness(roi);
% 定义第五维特征为感兴趣区域内所有像素值的峰度
histofeats(5) = kurtosis(roi);
% 定义第六维特征为感兴趣区域内所有像素值的最小值
histofeats(6) = min(roi);
% 定义第七维特征为感兴趣区域内所有像素值的最大值
histofeats(7) = max(roi);
% 定义第八维特征为感兴趣区域内所有像素值的熵
histofeats(8) = entropy(roi);
% 定义第九维特征为感兴趣区域内所有像素值的能量
p = count/ pixelnum;
histofeats(9) = p' * p;
% 定义第十维特征为感兴趣区域内所有像素值的范围
histofeats(10) = max(roi) - min(roi);
% 定义第十一维特征为感兴趣区域内所有像素值的平均绝对离差
minu = roi - sum(roi) / pixelnum;
histofeats(11) = sum(abs(minu)) / pixelnum;
% 定义第十二维特征为感兴趣区域内所有像素值的均方根
histofeats(12) = sqrt(sum(roi.^2) / pixelnum);
代码中的特征仅仅是例子
,大家可以发挥自己的想象力,设计出更多特征用于实际任务。
直方图
特征
值又称为
一阶
统计
量
,因为
一阶
统计
量
就是指直接基于原始
图像
的像素
灰度
分布而计算出来的
特征
值,这些
特征
值均可以通过
直方图
的分布
特征
来反应出来,因而实际应用的时候并没有特别严格的区分。
直方图
特征
共有19个,下面以上图为例,逐一解释:
为了方便大家的英文写作,把官网的英文解释一道保留了下来,大家可以重点看中文释义,英文可以写文章的时候参考。
1 最小值:minimum=min(X);最大值:The maximum gray level intensity within the ROI:m...
专题:Object Tracking1. tracking work flow 个人理解:输入
图像
作用在模型上,得到响应值,根据响应值在图片中画出边界框,然后边界框中的
图像
与输入
图像
一同作用对模型进行更新。2.相关滤波跟踪(MOSSE) 相关滤波原理:相关性(correlation),用来描述两个因素之间的联系。而相关性又分为cross-correlation(互相关,两个信号之间的联...
根据处理的
图像
,声音,文本等信息的
统计
特性,可以给出很多反映信息特性的
特征
。模式识别也是对
特征
的辨别,不管是有监督的学习分类还是无监督的聚类,都间接或者直接的对
特征
进行了提取或者表征。比如线性回归,在使用一条曲线拟合一堆数据的时候,这条曲线(或者曲线参数)就是这堆数据的
特征
,而结果和实际值的平方和就是这种
特征
和数据的接近程度。
1.
图像
的区域
特征
(1)
一阶
统计
特征
:
一幅
图像
的
一阶
统计
First OrderFeatures (19 features)
Shape Features(16 features)
Gray LevelCo-occurrence Matrix (GLCM) Features (23 features)
Gray Level SizeZone Matrix (GLSZM) F...
def gray_features(img):
hist = cv2.calcHist([img],[0],None,[256],[0,255])#得到全局
直方图
统计
数据
h,w = img.shape
hist = hist/(h*w)#将
直方图
归一化为0-1,概率的形式
grayFeature = []
煤灰分,煤完全燃烧后余下的残渣
量
。煤中灰分增加,增加了无效运输,加剧了我国铁路运输的紧张。
从相关研究中了解到通过
图像
的
特征
分析可以提取出与煤灰分相关的
特征
有:均值、标准差、能
量
、熵、偏度、峰度等。
在本文选取从
灰度直方图
中提取到均值、标准差、能
量
、熵、对比度来进行研究。
均值、标准差、熵、对比度与煤灰分的含
量
呈负相关
能
量
与煤灰分含
量
成正相关
灰度直方图
i 代表
灰度
级,L 代表
灰度
级的种
多模态的数据采集方法,使用各种成像方法的都有,不局限。
二、
图像
分割
滑降区域生长法、图割法、半自动分割算法、基于容
量
CT的分割法,目前并无可用的通用的方法,自己的数据集有自己的方法。
三、
图像
特征
提取与
量
化(这是我们在
特征
提取时可采用的方法)
影像组学
特征
可以分为:形状
特征
,
一阶
直方图
特征
,二阶
直方图
或纹理
特征
。还有一些获取于特定
图像
的影像组学特...