Jak pobrać teksturę za pomocą GLCM i sklasyfikować za pomocą SVM Classifier?

12

Jestem przy projekcie segmentacji i klasyfikacji nowotworów wątroby. Zastosowałem Region Growing i FCM odpowiednio do segmentacji wątroby i guza. Następnie użyłem matrycy współbieżności poziomu szarości do ekstrakcji cech tekstur. Muszę użyć maszyny wektorów wsparcia do klasyfikacji. Ale nie wiem, jak znormalizować wektory cech, aby móc podać je jako dane wejściowe do SVM. Czy ktoś może powiedzieć, jak go zaprogramować w Matlabie?

Do programu GLCM podałem obraz segmentowy guza jako dane wejściowe. Czy miałem rację? Jeśli tak, to myślę, że moje wyniki również będą poprawne.

Moje kodowanie glcm, o ile próbowałem,

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

Czy to była poprawna implementacja? Ponadto w ostatnim wierszu pojawia się błąd.

Moje wyniki to:

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 =

Kolumny od 1 do 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Kolumny od 7 do 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Kolumny od 13 do 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Kolumny 19–24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

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

Obrazy wejściowe to:

fzliver1 fzliver2 fzliver3

Gomathi
źródło
Czego użyłeś do wdrożenia algorytmu Fuzzy C-Means?
Spacey
@Mohammad Nie rozumiem pana. Jeśli pytasz o oprogramowanie, użyłem Matlaba.
Gomathi
Tak, zdaję sobie z tego sprawę, ale czy użyłeś wbudowanej biblioteki do implementacji segmentacji Fuzzy-C-Means, czy napisałeś własną bibliotekę lub zaimportowałeś bibliotekę innej firmy? Pytam, ponieważ jestem również zainteresowany wdrożeniem algo segmentacji, a moją platformą jest również MATLAB.
Spacey
@Mohammad Nie, proszę pana, nie zainstalowałem żadnej biblioteki specyficznej dla FCM. Użyłem FCM Thresheholding. Przejdź do centralnej wymiany plików Matlab. Mam nadzieję, że ci się przyda.
Gomathi
dobra metoda, ale mam oprogramowanie ENVI 4.0. Chcę, aby procesy obrazów satelitarnych Landsat 7 oceniały objętość drzewa

Odpowiedzi:

8

Czy używasz Matlaba? Jeśli tak, to albo potrzebujesz Bioinformatics Toolbox, który zawiera klasyfikator SVM, albo możesz pobrać libsvm, który ma opakowania Matlaba do szkolenia i testowania.

Będziesz potrzebował danych z etykietami. Czy klasyfikujesz guzy wątroby w przeciwieństwie do zdrowej wątroby? Następnie potrzebujesz zdjęć guzów wątroby i zdrowych wątroby, z których każdy jest oznaczony jako taki.

Następnie musisz obliczyć niektóre funkcje. Co to jest, zależy od charakteru problemu. Funkcje tekstur wydają się dobrym początkiem. Rozważ zastosowanie macierzy współwystępowania lub lokalnych wzorców binarnych.

Edycja: Od wersji R2014a w Zestawie statystyk i uczenia maszynowego dostępna jest funkcja fitcsvm do szkolenia binarnego klasyfikatora SVM. Istnieje również fitcecoc do szkolenia wielo-klasowego SVM.

Dima
źródło
Dziękuję Ci. Pobrałem libsvm. Obliczyłem również cechy tekstury przy użyciu macierzy współwystępowania poziomu szarości. Ale nie wiem, jak przekazać dane wejściowe do programu SVM. Prosimy odnieść się do stackoverflow.com/questions/9751265/... Prosimy o wskazówki.
Gomathi