我正在使用GLCM从图像中获取纹理特征,以将其用于knn和决策树等分类算法中。当我运行greycoprops
函数时,它将为每个功能返回4个元素的数组,如下所示。我应该获得分类中要使用的每个功能的平均值,还是应该如何处理?
('Contrast = ', array([[0.88693423, 1.28768135, 1.11643255, 1.7071733 ]]))
最佳答案
从docs中,这是greycoprops
返回的内容:
results
:二维ndarray
二维数组。 results[d, a]
是第‘prop’
个距离和第d
个角度的属性a
。
由于将4个角度传递给graycomatrix
,因此您将获得1×4的对比度值数组。为了使GLCM描述符旋转不变,通常的做法是对针对不同角度和相同距离计算出的特征值取平均值。请参阅this paper,以获取有关如何实现对旋转稳定的GLCM功能的更深入说明。
演示版
In [37]: from numpy import pi
In [38]: from skimage import data
In [39]: from skimage.feature.texture import greycomatrix, greycoprops
In [40]: img = data.camera()
In [41]: greycoprops(greycomatrix(img, distances=[1], angles=[0]), 'contrast')
Out[41]: array([[34000139]], dtype=int64)
In [42]: greycoprops(greycomatrix(img, distances=[1, 2], angles=[0]), 'contrast')
Out[42]:
array([[ 34000139],
[109510654]], dtype=int64)
In [43]: greycoprops(greycomatrix(img, distances=[1, 2], angles=[0, pi/4]), 'contrast')
Out[43]:
array([[ 34000139, 53796929],
[109510654, 53796929]], dtype=int64)
In [44]: greycoprops(greycomatrix(img, distances=[1], angles=[0, pi/4, pi/2]), 'contrast')
Out[44]: array([[34000139, 53796929, 20059013]], dtype=int64)
关于python - 通过GLCM从图像中提取纹理特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56188637/