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:
Odpowiedzi:
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.
źródło
Ten artykuł dotyczy dokładnie tego samego rodzaju nadzorowanej klasyfikacji opartej na
GLCM
klasach oznaczonych : Funkcje teksturalne GLCM dla klasyfikacji nowotworów mózguźródło