Comment récupérer la texture à l'aide de GLCM et classer à l'aide de SVM Classifier?


12

Je suis sur un projet de segmentation et de classification des tumeurs hépatiques. J'ai utilisé Region Growing et FCM pour la segmentation hépatique et tumorale respectivement. Ensuite, j'ai utilisé la matrice de coïncidence des niveaux de gris pour l'extraction des caractéristiques de texture. Je dois utiliser Support Vector Machine pour la classification. Mais je ne sais pas comment normaliser les vecteurs de caractéristiques afin de pouvoir les donner en entrée au SVM. Quelqu'un peut-il dire comment le programmer dans Matlab?

Au programme GLCM, j'ai donné l'image segmentée de la tumeur en entrée. J'avais raison? Si c'est le cas, je pense que ma sortie sera également correcte.

Mon codage glcm, pour autant que j'ai essayé est,

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

S'agit-il d'une mise en œuvre correcte? De plus, j'obtiens une erreur à la dernière ligne.

Ma sortie est:

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 =

Colonnes 1 à 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Colonnes 7 à 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Colonnes 13 à 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Colonnes 19 à 24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

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

Les images d'entrée sont:

fzliver1 fzliver2 fzliver3


Qu'avez-vous utilisé pour implémenter l'algorithme Fuzzy C-Means?
Spacey

@Mohammad je ne vous comprends pas monsieur. Si vous posez des questions sur le logiciel, j'ai utilisé Matlab.
Gomathi

Oui, je le sais, mais je veux dire, avez-vous utilisé une bibliothèque intégrée pour l'implémentation de la segmentation Fuzzy-C-Means, ou avez-vous écrit la vôtre, ou importé une bibliothèque tierce? Je pose la question parce que je suis également intéressé par l'implémentation d'un algo de segmentation, et ma plateforme est aussi MATLAB.
Spacey

@Mohammad Non monsieur, je n'ai installé aucune bibliothèque spécifique à FCM. J'ai utilisé FCM Thresheholding. Reportez-vous à Matlab Central File Exchange. J'espère que cela vous sera utile.
Gomathi

bonne méthode mais j'ai le logiciel ENVI 4.0. Je veux que l'imagerie satellite Landsat 7 de processus évalue le volume d'arbre

Réponses:


8

Utilisez-vous Matlab? Si c'est le cas, vous auriez besoin de la boîte à outils Bioinformatics, qui inclut un classificateur SVM, ou vous pouvez télécharger libsvm, qui a des wrappers Matlab pour la formation et les tests.

Ensuite, vous allez avoir besoin de données étiquetées. Êtes-vous en train de classer les tumeurs du foie par opposition à un foie sain? Ensuite, vous auriez besoin d'images de tumeurs du foie et de foies sains, chacune étiquetée comme telle.

Ensuite, vous devez calculer certaines fonctionnalités. La nature de ces problèmes dépend de la nature du problème. Les fonctionnalités de texture semblent être un bon début. Pensez à utiliser des matrices de cooccurrence ou des modèles binaires locaux.

Edit: Depuis la version R2014a, il existe une fonction fitcsvm dans la boîte à outils Statistics and Machine Learning pour former un classificateur SVM binaire. Il existe également fitcecoc pour la formation d'un SVM multi-classes.


Je vous remercie. J'ai téléchargé libsvm. J'ai également calculé des caractéristiques de texture en utilisant des matrices de co-occurrence de niveau de gris. Mais je ne sais pas comment donner une entrée au programme svm. Veuillez vous référer à stackoverflow.com/questions/9751265/… Veuillez me guider.
Gomathi

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.