¿Cómo recupero textura usando GLCM y clasifico usando SVM Classifier?

12

Estoy en un proyecto de segmentación y clasificación de tumores hepáticos. Usé Region Growing y FCM para la segmentación del hígado y el tumor, respectivamente. Luego, utilicé la matriz de Coincidencia de nivel de gris para la extracción de características de textura. Tengo que usar Support Vector Machine para la clasificación. Pero no sé cómo normalizar los vectores de características para poder darlo como entrada al SVM. ¿Alguien puede decir cómo programarlo en Matlab?

Al programa GLCM, le di la imagen segmentada del tumor como entrada. ¿Estaba en lo correcto? Si es así, creo, entonces, mi salida también será correcta.

Mi codificación glcm, por lo que he intentado es,

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

¿Fue esta una implementación correcta? Además, recibo un error en la última línea.

Mi salida es:

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 =

Columnas 1 a 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Columnas 7 a 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Columnas 13 a 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Columnas 19 a 24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

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

Las imágenes de entrada son:

fzliver1 fzliver2 fzliver3

Gomathi
fuente
¿Qué utilizó para implementar el algoritmo Fuzzy C-Means?
Spacey
@Mohammad, no te entiendo señor. Si está preguntando sobre el software, usé Matlab.
Gomathi
Sí, me doy cuenta de eso, pero quiero decir, ¿usó una biblioteca integrada para la implementación de la segmentación Fuzzy-C-Means, o escribió la suya propia o importó una biblioteca de terceros? Pregunto porque también estoy interesado en implementar un algoritmo de segmentación, y mi plataforma también es MATLAB.
Spacey
@Mohammad No señor, no instalé ninguna biblioteca específica para FCM. Usé FCM Thresheholding. Consulte el Intercambio de archivos central de Matlab. Espero que te sea útil.
Gomathi
buen método pero tengo el software ENVI 4.0. Quiero procesar imágenes de satélite Landsat 7 para evaluar el volumen del árbol

Respuestas:

8

¿Estás usando Matlab? Si es así, necesitaría el Bioinformatics Toolbox, que incluye un clasificador SVM, o puede descargar libsvm, que tiene envoltorios de Matlab para capacitación y pruebas.

Entonces necesitará algunos datos etiquetados. ¿Está clasificando los tumores hepáticos en lugar de un hígado sano? Entonces necesitaría imágenes de tumores hepáticos y hígados sanos, cada uno etiquetado como tal.

Entonces necesitas calcular algunas características. Lo que son, depende de la naturaleza del problema. Las características de textura parecen un buen comienzo. Considere usar matrices de coincidencia o patrones binarios locales.

Editar: a partir de la versión R2014a, hay una función fitcsvm en la Caja de herramientas de estadísticas y aprendizaje automático para entrenar a un clasificador binario SVM. También hay fitcecoc para entrenar un SVM multiclase .

Dima
fuente
Gracias. He descargado libsvm. También calculé las características de textura usando matrices de coincidencia de nivel de gris. Pero no sé cómo dar entrada al programa svm. Consulte amablemente stackoverflow.com/questions/9751265/… Amablemente me guíe.
Gomathi