如何使用 GLCM 检索纹理并使用 SVM 分类器进行分类?

信息处理 图像处理 计算机视觉 分类
2021-12-25 08:28:54

我正在进行肝肿瘤分割和分类的项目。我分别使用 Region Growing 和 FCM 进行肝脏和肿瘤分割。然后,我使用灰度共生矩阵进行纹理特征提取。我必须使用支持向量机进行分类。但我不知道如何规范化特征向量,以便可以将其作为 SVM 的输入。谁能告诉我如何在 Matlab 中编程?

对于 GLCM 程序,我将肿瘤分割图像作为输入。我是对的吗?如果是这样,我认为,那么,我的输出也将是正确的。

据我尝试,我的 glcm 编码是,

I = imread('fzliver3.jpg');
GLCM = graycomatrix(I,'Offset',[2 0;0 2]);
stats = graycoprops(GLCM,'all')
t1= struct2array(stats)


I2 = imread('fzliver4.jpg');
GLCM2 = graycomatrix(I2,'Offset',[2 0;0 2]);
stats2 = graycoprops(GLCM2,'all')
t2= struct2array(stats2)

I3 = imread('fzliver5.jpg');
GLCM3 = graycomatrix(I3,'Offset',[2 0;0 2]);
stats3 = graycoprops(GLCM3,'all')
t3= struct2array(stats3)

t=[t1,t2,t3]
xmin = min(t); xmax = max(t);
scale = xmax-xmin;
tf=(x-xmin)/scale

这是一个正确的实现吗?另外,我在最后一行得到一个错误。

我的输出是:

stats = 

   Contrast: [0.0510 0.0503]
Correlation: [0.9513 0.9519]
     Energy: [0.8988 0.8988]
Homogeneity: [0.9930 0.9935]
t1 =

Columns 1 through 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988
Columns 7 through 8

0.9930    0.9935
stats2 = 

   Contrast: [0.0345 0.0339]
Correlation: [0.8223 0.8255]
     Energy: [0.9616 0.9617]
Homogeneity: [0.9957 0.9957]
t2 =

Columns 1 through 6

0.0345    0.0339    0.8223    0.8255    0.9616    0.9617
Columns 7 through 8

0.9957    0.9957
stats3 = 

   Contrast: [0.0230 0.0246]
Correlation: [0.7450 0.7270]
     Energy: [0.9815 0.9813]
Homogeneity: [0.9971 0.9970]
t3 =

Columns 1 through 6

0.0230    0.0246    0.7450    0.7270    0.9815    0.9813
Columns 7 through 8

0.9971    0.9970

t =

第 1 至 6 列

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

第 7 至 12 列

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

第 13 至 18 列

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

第 19 至 24 列

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

??? Error using ==> minus
    Matrix dimensions must agree.

输入图像是:

fzliver1 fzliver2 fzliver3

2个回答

你用的是matlab吗?如果是这样,那么您将需要包含 SVM 分类器的 Bioinformatics Toolbox,或者您可以下载 libsvm,其中包含用于训练和测试的 Matlab 包装器。

然后你将需要一些标记的数据。您是否将肝脏肿瘤与健康肝脏分类?然后你需要肝脏肿瘤和健康肝脏的图像,每个都被标记为这样。

然后你需要计算一些特征。这些是什么,取决于问题的性质。纹理特征似乎是一个好的开始。考虑使用共现矩阵或局部二进制模式。

编辑: 从 R2014a 版本开始,Statistics and Machine Learning Toolbox 中有一个fitcsvm函数,用于训练二进制 SVM 分类器。还有fitcecoc用于训练多类 SVM。

本文完全处理基于标记GLCM类的相同类型的监督分类:GLCM Textural Features for Brain Tumor Classification