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


12

我正在进行肝肿瘤分割和分类的项目。我分别使用“区域生长”和“ 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


您用什么来实现模糊C均值算法?
Spacey 2012年

@穆罕默德,先生,我不明白。如果您在询问软件,我使用过Matlab。
Gomathi 2012年

是的,我意识到这一点,但是我的意思是您是使用内置库来实现Fuzzy-C-Means细分,还是您编写了自己的库或导入了第三方库?我问是因为我也对实现分段算法感兴趣,而且我的平台也是MATLAB。
Spacey 2012年

@Mohammad不,先生,我没有安装任何特定于FCM的库。我使用了FCM阈值处理。请参考Matlab中央文件交换。希望对您有用。
Gomathi 2012年

好的方法,但是我有ENVI 4.0软件。我希望处理Landsat 7卫星图像以评估树的体积

Answers:


8

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

然后,您将需要一些标记数据。您是否将肝脏肿瘤分类为健康肝脏?然后,您将需要肝脏肿瘤和健康肝脏的图像,每个图像均已如此标记。

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

编辑: 从R2014a版本开始,统计和机器学习工具箱中提供了一个fitcsvm函数,用于训练二进制SVM分类器。也有fitcecoc用于训练多类SVM。


谢谢。我已经下载了libsvm。我还使用灰度共生矩阵计算了纹理特征。但是我不知道如何为svm程序提供输入。请参考stackoverflow.com/questions/9751265/… 请指导我。
Gomathi 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.