Как получить текстуру с помощью GLCM и классифицировать с помощью классификатора SVM?

12

Я работаю над проектом сегментации и классификации опухолей печени. Я использовал Region Growing и FCM для сегментации печени и опухоли соответственно. Затем я использовал матрицу уровня серого для извлечения текстурных объектов. Я должен использовать опорную векторную машину для классификации. Но я не знаю, как нормализовать векторы функций, чтобы я мог использовать их в качестве входных данных для SVM. Может кто-нибудь сказать, как запрограммировать его в Matlab?

Для программы GLCM в качестве входных данных я дал сегментированное изображение опухоли. Был ли я прав? Если так, я думаю, тогда мой вывод также будет правильным.

Насколько я попробовал, мое кодирование glcm,

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

Была ли это правильная реализация? Кроме того, я получаю сообщение об ошибке в последней строке.

Мой вывод:

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

т =

Столбцы с 1 по 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Столбцы с 7 по 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Столбцы с 13 по 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Столбцы с 19 по 24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

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

Входные изображения:

fzliver1 fzliver2 fzliver3

Gomathi
источник
Что вы использовали для реализации алгоритма Fuzzy C-Means?
Спейси
@ Мохаммед, я не понимаю тебя, сэр. Если вы спрашиваете о программном обеспечении, я использовал Matlab.
Gomathi
Да, я это понимаю, но я имею в виду, вы использовали встроенную библиотеку для реализации сегментации Fuzzy-C-Means, или вы написали свою собственную, или импортировали стороннюю библиотеку? Я спрашиваю, потому что я также заинтересован в реализации алгоритма сегментации, и моя платформа также MATLAB.
Спейси
@ Мохаммед Нет, сэр, я не устанавливал библиотеку, специально предназначенную для FCM. Я использовал FCM Thresheholding. Обратитесь к Matlab Central File Exchange. Я надеюсь, что это будет полезно для вас.
Гомати
хороший метод, но у меня есть ENVI 4.0 Software. Я хочу, чтобы процессы спутниковых снимков Landsat 7 оценивали объем дерева

Ответы:

8

Вы используете Matlab? Если это так, то вам потребуется либо набор инструментов для биоинформатики, который включает в себя классификатор SVM, либо вы можете скачать libsvm, который содержит оболочки Matlab для обучения и тестирования.

Тогда вам понадобятся некоторые помеченные данные. Вы классифицируете опухоли печени в отличие от здоровой печени? Тогда вам понадобятся изображения опухолей печени и здоровой печени, каждая из которых будет помечена как таковая.

Тогда вам нужно вычислить некоторые функции. Что это такое, зависит от характера проблемы. Особенности текстуры кажутся хорошим началом. Рассмотрите возможность использования матриц совместного использования или локальных двоичных шаблонов.

Редактировать: Начиная с версии R2014a, в инструментальных средствах статистики и машинного обучения есть функция fitcsvm для обучения двоичного классификатора SVM. Существует также fitcecoc для обучения мультикласса SVM.

Дима
источник
Спасибо. Я скачал libsvm. Я также вычислил особенности текстур, используя матрицы совпадений уровня серого. Но я не знаю, как внести вклад в программу SVM. Пожалуйста, обратитесь к stackoverflow.com/questions/9751265/… Пожалуйста, направьте меня.
Гоматхи