Ich arbeite an einem Projekt zur Segmentierung und Klassifizierung von Lebertumoren. Ich habe Region Growing und FCM für die Segmentierung von Leber und Tumor verwendet. Dann verwendete ich eine Graustufen-Koexistenzmatrix zur Extraktion von Texturmerkmalen. Ich muss Support Vector Machine für die Klassifizierung verwenden. Ich weiß aber nicht, wie ich die Merkmalsvektoren normalisieren soll, damit ich sie als Eingabe für die SVM verwenden kann. Kann jemand sagen, wie man es in Matlab programmiert?
Dem GLCM-Programm gab ich das tumorsegmentierte Bild als Eingabe. Habe ich recht? Wenn ja, denke ich, dann wird meine Ausgabe auch korrekt sein.
Soweit ich es versucht habe, ist meine GLCM-Codierung:
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
War das eine korrekte Implementierung? Außerdem erhalte ich in der letzten Zeile einen Fehler.
Meine Ausgabe ist:
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 =
Spalten 1 bis 6
0.0510 0.0503 0.9513 0.9519 0.8988 0.8988
Spalten 7 bis 12
0.9930 0.9935 0.0345 0.0339 0.8223 0.8255
Spalten 13 bis 18
0.9616 0.9617 0.9957 0.9957 0.0230 0.0246
Spalten 19 bis 24
0.7450 0.7270 0.9815 0.9813 0.9971 0.9970
??? Error using ==> minus
Matrix dimensions must agree.
Die Eingabebilder sind:
Antworten:
Verwenden Sie Matlab? In diesem Fall benötigen Sie entweder die Bioinformatics Toolbox, die einen SVM-Klassifikator enthält, oder Sie können libsvm herunterladen, das Matlab-Wrapper für Schulungen und Tests enthält.
Dann benötigen Sie einige beschriftete Daten. Klassifizieren Sie Lebertummoren im Gegensatz zu gesunder Leber? Dann bräuchten Sie Bilder von Lebertumoren und gesunden Lebern, die jeweils als solche gekennzeichnet sind.
Dann müssen Sie einige Funktionen berechnen. Was das ist, hängt von der Art des Problems ab. Textur-Features scheinen ein guter Anfang zu sein. Erwägen Sie die Verwendung von Co-Auftritts-Matrizen oder lokalen Binärmustern.
Bearbeiten: Ab dem Release R2014a gibt es in der Statistics and Machine Learning Toolbox eine Fitcsvm- Funktion zum Trainieren eines binären SVM-Klassifikators. Es gibt auch fitcecoc zum Trainieren einer SVM mit mehreren Klassen.
quelle
Dieser Artikel befasst sich genau mit der gleichen Art der überwachten Klassifizierung basierend auf gekennzeichneten
GLCM
Klassen: GLCM-Texturmerkmale für die Klassifizierung von Gehirntumorenquelle