1

関数を使用して、MatLab のグレイレベル共生行列 (GLCM) からさまざまな画像の特徴を計算しようとしていgraycomatrixます。

graycomatrix を使用した例

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

フィルタリングアプローチが可能かどうかはわかりません。私はあなたがこのようなsthを意味していると思います(私をあなたのグレースケール画像にしましょう):

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 に答える