Como recupero a textura usando o GLCM e classifico usando o SVM Classifier?

12

Estou em um projeto de segmentação e classificação de tumores hepáticos. Usei Region Growing e FCM para segmentação de fígado e tumor, respectivamente. Em seguida, usei a matriz de co-ocorrência de nível de cinza para a extração de recursos de textura. Eu tenho que usar o Support Vector Machine para classificação. Mas eu não sei como normalizar os vetores de recursos para que eu possa dar isso como uma entrada para o SVM. Alguém pode dizer como programá-lo no Matlab?

Para o programa GLCM, dei a imagem segmentada do tumor como entrada. Eu estava correto? Se sim, acho que minha saída também estará correta.

Minha codificação glcm, tanto quanto eu tentei,

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

Essa foi uma implementação correta? Além disso, recebo um erro na última linha.

Minha saída é:

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 =

Colunas 1 a 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Colunas 7 a 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Colunas 13 a 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Colunas 19 a 24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

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

As imagens de entrada são:

fzliver1 fzliver2 fzliver3

Gomathi
fonte
O que você usou para implementar o algoritmo Fuzzy C-Means?
Spacey
@ Mohamed eu não entendo você senhor. Se você está perguntando sobre o software, usei o Matlab.
Gomathi 22/03
Sim, eu percebo isso, mas quero dizer que você usou uma biblioteca embutida para implementação da segmentação Fuzzy-C-Means, ou você escreveu sua própria ou importou uma biblioteca de terceiros? Eu pergunto porque também estou interessado em implementar algo de segmentação, e minha plataforma também é MATLAB.
Spacey
@ Mohammad Não senhor, não instalei nenhuma biblioteca específica para o FCM. Eu usei FCM Thresheholding. Consulte o Matlab Central File Exchange. Espero que seja útil para você.
Gomathi 23/03
bom método, mas eu tenho o software ENVI 4.0. Quero processos Landsat imagery 7 de satélite para avaliar volume da árvore

Respostas:

8

Você está usando o Matlab? Nesse caso, você precisaria da Bioinformatics Toolbox, que inclui um classificador SVM, ou poderá fazer o download da libsvm, que possui wrappers Matlab para treinamento e teste.

Então você precisará de alguns dados rotulados. Você está classificando tumores hepáticos em vez de saudáveis? Então você precisaria de imagens de tumores hepáticos e fígados saudáveis, cada um rotulado como tal.

Então você precisa calcular alguns recursos. O que são esses, depende da natureza do problema. Os recursos de textura parecem um bom começo. Considere usar matrizes de co-ocorrência ou padrões binários locais.

Edit: A partir da versão R2014a, existe uma função fitcsvm na caixa de ferramentas de estatísticas e aprendizado de máquina para treinar um classificador SVM binário. Também existe o fitcecoc para treinar um SVM de várias classes.

Dima
fonte
Obrigado. Eu baixei o libsvm. Também calculei os recursos de textura usando matrizes de coocorrência no nível de cinza. Mas não sei como dar entrada para o programa svm. Por favor, consulte o stackoverflow.com/questions/9751265/… Por favor, me guie.
Gomathi 22/03/12