我知道这个问题可能不适合论坛,但我想我可以从许多智能图像处理人员那里找到帮助。我的问题是,我的图像中包含纹理和非纹理。如何检测纹理区域?你能告诉我任何算法或参数来区分非纹理区域和纹理区域吗? 非常感谢 的更新: 基于灰度矩阵的建议。我使用工具来提取纹理特征。但是,我不知道哪种情况最适合我的情况。让我们看看我的结果并解释帮助我选择哪个功能 @rayryeng:你能告诉我相邻灰度依赖矩阵(NGLDM)的目的是什么。如何在我的情况下使用它?
答案 0 :(得分:0)
您可以使用纹理描述符,例如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。
答案 1 :(得分:0)
我不确定这是否有效,还是没有人使用这种方法(我找不到任何学者论文),但是我有一个直观的方法,我使用了几次,对我来说效果很好。
我计算图像中有效个SURF特征的数量,并根据特征的数量对图像进行排序。随着功能数量的增加,直觉上纹理级别也随之增加。下面是我的Matlab函数,提取了许多功能:
for i in range(2,len(closing_values)):
my_date = datetime.strptime(my_string[i],"%m/%d/%Y %H:%M:%S.%f000 %p")
my_date=matplotlib.dates.date2num(my_date)
timestamp.append(my_date)
plt.plot_date(timestamp[29:len(closing_values)],ADX[29:len(closing_values)])
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
是Matlab函数。
注意:我知道这是一个很晚的答案,但是也许有人可以使用它,或者就此方法的优缺点向我反馈。