Сохранение различных значений свойств «graycoprops» в матрице [MATLAB]

#matlab #image-processing #matrix #glcm

#matlab #обработка изображений #матрица #glcm

Вопрос:

У меня есть картинка. Я создаю матрицу совпадений ( graycomatrix ) Для извлечения из нее различных свойств (контраст, корреляция) и т. Д. ( graycoprops )

 x = []
for a lot of pictures, do the same:
    imgB = imread('currentLoopImage.jpg')

    contrast = graycoprops(graycomatrix(rgb2gray(imgB)), 'Contrast')
    correlation = graycoprops(graycomatrix(rgb2gray(imgB)), 'Correlation')
    energy = graycoprops(graycomatrix(rgb2gray(imgB)), 'Energy')
    homogeneity = graycoprops(graycomatrix(rgb2gray(imgB)), 'Homogeneity')

    x = [x;contrast;correlation;energy;homogeneity]
 

Дело в том, что мне нужно сохранить все значения в этой матрице X, но я получаю следующую ошибку:

Аргументы CAT не согласуются с именами полей структуры.

Поскольку это результат, который я получаю от каждого типа:

 homogeneity = 

    Homogeneity: 0.8587
 

Существуют разные типы, поэтому я не могу сохранить их в матрице X.
Выходная матрица X должна сохранять только числа и игнорировать эту «однородность»

Может кто-нибудь сказать мне, кто я могу это сделать?

Ответ №1:

Из graycoprops() примера:

 >> GLCM = [0 1 2 3;1 1 2 3;1 0 2 0;0 0 0 3];
>> stats = graycoprops(GLCM)

stats = 

       Contrast: 2.8947
    Correlation: 0.0783
         Energy: 0.1191
    Homogeneity: 0.5658
 

Затем просто выполните:

 >> x = struct2array(stats)

ans =

    2.8947    0.0783    0.1191    0.5658
 

Также обратите внимание, что вы можете включить все свои изображения в матрицу m x n x p и обработать их все сразу, вместо использования цикла for . Например:

 >> GLCM(:,:,2) = GLCM;
>> cell2mat(struct2cell(stats))

ans =

    2.8947    2.8947
    0.0783    0.0783
    0.1191    0.1191
    0.5658    0.5658