我知道这个问题不能满足论坛的要求,但是我想我可以从许多聪明的图像处理专家那里找到帮助。我的问题是,我的图像中包含纹理和非纹理。如何检测纹理区域?您能建议我一些算法或参数来区分非纹理区域和纹理区域吗?非常感谢更新:基于有关灰度矩阵的建议。我使用工具提取该纹理特征。但是,我不知道哪种方式最适合我的情况。让我看看我的结果并帮助我解释将选择哪个功能@rayryeng:您能跟我说说相邻灰度依赖矩阵(NGLDM)的目的是什么。在我的情况下如何使用它?
您可以使用诸如MPEG-7中使用的纹理描述符:
您可以在某些科学论文中找到详细信息,例如Evaluation and comparison of texture descriptors proposed in MPEG-7或Texture Descriptors in MPEG-7
计算纹理描述符的基本方法是使用Gabor filter。一些MPEG-7描述符就是基于它的。您也可以看看Grey-Level Co-occurrence Matrix texture measurements。
我不确定这是否有效,还是没有人使用这种方法(我找不到任何学者的论文),但是我有一个直观的方法,我使用了几次,对我来说很好。
我计算图像中有效 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
detectSURFFeatures
和extractFeatures
是Matlab函数。
注:我知道这是一个很晚的答案,但是也许有人可以使用它或就此方法的优缺点向我反馈。