#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