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:
Respostas:
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.
fonte
Este artigo trata exatamente do mesmo tipo de classificação supervisionada com base nas
GLCM
classes rotuladas : Recursos texturais do GLCM para classificação de tumores cerebraisfonte