我正在使用GLCM从图像中获取纹理特征,以将其用于knn和决策树等分类算法中。当我运行greycoprops
函数时,它将为每个功能返回4个元素的数组,如下所示。我应该获取分类中要使用的每个功能的平均值,还是应该如何处理?
('Contrast = ', array([[0.88693423, 1.28768135, 1.11643255, 1.7071733 ]]))
答案 0 :(得分:1)
greycoprops
从docs返回:
results
:二维ndarray二维数组。
results[d, a]
是第‘prop’
个距离和第d
个角度的属性a
。
由于您向graycomatrix
传递了4个角度,因此得到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)