Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用带有GLCM的滑动窗口_Matlab_Image Processing_Feature Extraction_Glcm - Fatal编程技术网

Matlab 使用带有GLCM的滑动窗口

Matlab 使用带有GLCM的滑动窗口,matlab,image-processing,feature-extraction,glcm,Matlab,Image Processing,Feature Extraction,Glcm,我正试图使用graycomatrix函数从MatLab中的灰度共生矩阵(GLCM)计算各种图像特征 使用graycomatrix的示例 假设图像(例如640x480)比普通示例大,且滑动窗口大小为5x5,如何将此函数应用于一系列子窗口?我不确定是否可以使用过滤方法。我想你的意思是这样的(让我成为你的灰度图像): 使用nlfilter 我找到了这个特殊的配方并进行了实验。它有一些局限性,但这不是一个糟糕的起点 function [ s ] = glcm_contrast(NHOOD) %GLCM_

我正试图使用
graycomatrix
函数从MatLab中的灰度共生矩阵(GLCM)计算各种图像特征

使用graycomatrix的示例
假设图像(例如640x480)比普通示例大,且滑动窗口大小为5x5,如何将此函数应用于一系列子窗口?

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

使用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代码
您可能还想看看我的实现,看看是否需要进一步扩展。

请提供更多信息,而不是:请帮助我,我不知道如何实现。您是否阅读了链接中的说明和帮助文件?是的,我已经阅读了本文,我想对所有像素的每个移动图像窗口应用此函数。我有一个319x453图像,我想从中提取GLCM功能,我的子窗口是[5],这是一个移动窗口,逐像素移动,并为每个窗口计算这些特征,每个窗口是每个像素的2个邻域,这些特征将为每个像素收集pixel@EJG89我改进了这个问题,以解决一些人想要关闭它的愿望。你能投票重新开放吗?我想回答这个问题,但不必重新开始。我可以使用nlfilter函数吗?在您的情况下,不能使用nlfilter,因为内部函数必须返回标量。看一看。没有使用它,我不能提供一个例子,但它似乎是最合适的选择。我如何通过这些循环保存每个像素的特征向量?假设您的图像是M×N像素,并且您希望提取4个特征,如graycoprops(对比度等)提供的。然后,您可以将每个像素的特征存储在矩阵中,比如说:'feat=zeros(M,N,4);%在“双循环”之前创建它,然后将循环“提取特征…”中的注释替换为:“feat(ii,jj,1)=glcm_feat_struct.Contrast;”专长(ii,jj,2)=glcm_专长结构相关性;'等等
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);