graycomatrix我正在尝试使用该函数从 MatLab 中的灰度共生矩阵 (GLCM) 计算各种图像特征。
使用灰度矩阵的示例
I = [0 0 1 1; 0 0 1 1; 0 2 2 2; 2 2 3 3];
glcm = graycomatrix(I, 'GrayLimits', [0 3], 'NumLevels', 4, 'Symmetric', true);
假设比普通示例更大的图像(例如 640x480)和 5x5 的滑动窗口大小,我如何将此功能应用于一系列子窗口?
graycomatrix我正在尝试使用该函数从 MatLab 中的灰度共生矩阵 (GLCM) 计算各种图像特征。
I = [0 0 1 1; 0 0 1 1; 0 2 2 2; 2 2 3 3];
glcm = graycomatrix(I, 'GrayLimits', [0 3], 'NumLevels', 4, 'Symmetric', true);
假设比普通示例更大的图像(例如 640x480)和 5x5 的滑动窗口大小,我如何将此功能应用于一系列子窗口?
我不确定过滤方法是否可行。我想你的意思是这样的(让我成为你的灰度图像):
for ii=3:size(im,1)-2
for jj=3:size(im,2)-2 % a loop for every pixel that a 5x5 window can be defined
temp_im=im(ii-2:ii+2,jj-2:jj+2); % crop a small window around pixel
glcm=graycomatrix(temp_im); % default parameters
glcm_feat_struct=graycoprops(glcm);
% extract features from struct and do anything you want
end
end
我找到了这个特殊的配方并进行了实验。它有一些限制,但它不是一个糟糕的起点。
function [ s ] = glcm_contrast(NHOOD)
%GLCM_CONTRAST
glcm = graycomatrix(NHOOD, 'Offset', [0 1], 'GrayLimits', [0 3], 'NumLevels', 4, 'Symmetric', true);
stats = graycoprops(glcm, 'contrast');
s = stats.Contrast;
end
window_size = 5;
I = imread('yourImage.tif');
glcmfunc = @(x) glcm_contrast(x);
gray_limits = [min(I(:)), max(I(:))];
B = nlfilter(I, [window_size, window_size], glcmfunc);
您可能还想看看我的Sliding GLCM实现,看看您是否想对此进行扩展。