1

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 的滑动窗口大小,我如何将此功能应用于一系列子窗口?

4

2 回答 2

1

我不确定过滤方法是否可行。我想你的意思是这样的(让我成为你的灰度图像):

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
于 2014-07-18T10:50:16.743 回答
0

使用 nlfilter

我找到了这个特殊的配方并进行了实验。它有一些限制,但它不是一个糟糕的起点。

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);

自定义 Matlab 代码

您可能还想看看我的Sliding GLCM实现,看看您是否想对此进行扩展。

于 2015-09-13T16:33:04.397 回答