如何检测图像中的纹理或非纹理

问题描述 投票:0回答:2

我知道这个问题不能满足论坛的要求,但是我想我可以从许多聪明的图像处理专家那里找到帮助。我的问题是,我的图像中包含纹理和非纹理。如何检测纹理区域?您能建议我一些算法或参数来区分非纹理区域和纹理区域吗?非常感谢“在此处输入图像描述”更新:基于有关灰度矩阵的建议。我使用工具提取该纹理特征。但是,我不知道哪种方式最适合我的情况。让我看看我的结果并帮助我解释将选择哪个功能“在此处输入图像描述”@rayryeng:您能跟我说说相邻灰度依赖矩阵(NGLDM)的目的是什么。在我的情况下如何使用它?

algorithm image-processing textures image-segmentation
2个回答
0
投票
中有一个包含纹理和非纹理的图像

您可以使用诸如MPEG-7中使用的纹理描述符:

  • 均匀纹理描述符(HTD)
  • 纹理浏览描述符(TBD)
  • 边缘直方图描述符(EHD)

您可以在某些科学论文中找到详细信息,例如Evaluation and comparison of texture descriptors proposed in MPEG-7Texture Descriptors in MPEG-7

计算纹理描述符的基本方法是使用Gabor filter。一些MPEG-7描述符就是基于它的。您也可以看看Grey-Level Co-occurrence Matrix texture measurements


0
投票

我不确定这是否有效,还是没有人使用这种方法(我找不到任何学者的论文),但是我有一个直观的方法,我使用了几次,对我来说很好。

我计算图像中有效 SURF特征的数量,并根据特征的数量对图像进行排序。随着功能数量的增加,直觉也增加了纹理级别。下面是我的Matlab函数,它提取了许多功能:

function [num_pts] = im2surf_feature(im)
if nargin>=1 && ischar(im) && exist(im, 'file')
    im = imread(im);
end
if size(im,3)==3
   im = rgb2gray(im); 
end

ptsI1 = detectSURFFeatures(im);
[~, validPtsI1] = extractFeatures(im, ptsI1);
num_pts = size(validPtsI1,1);

end

detectSURFFeaturesextractFeatures是Matlab函数。

:我知道这是一个很晚的答案,但是也许有人可以使用它或就此方法的优缺点向我反馈。

© www.soinside.com 2019 - 2024. All rights reserved.