从GLCM中提取Haralick功能。为什么每个功能都有多个值?

时间:2018-07-14 09:20:04

标签: python image-processing feature-extraction scikit-image glcm

我昨天看过this篇论文。在本文中,这些特征取为对比度局部均匀性能量,它们都是单个值(据我所知),但根据到skimage功能greycomatrix,传递给它们的参数是distancesangles(可以是多个)。

这是我的代码:

import numpy as np
import cv2
from skimage.feature import greycomatrix, greycoprops
from skimage import io, color, img_as_ubyte

img = cv2.imread('Grape___Black_rot28.JPG')
gray_image = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)    

distances = [1, 2, 3]
angles = [0, np.pi/4, np.pi/2, 3*np.pi/4]
glcm = greycomatrix(gray_image, 
                    distances=distances, 
                    angles=angles,
                    symmetric=True,
                    normed=True)

properties = ['contrast', 'energy', 'homogeneity', 'correlation', 'dissimilarity']
contrast = greycoprops(glcm, properties[0])
energy = greycoprops(glcm, properties[1])
homogeneity = greycoprops(glcm, properties[2])
correlation = greycoprops(glcm, properties[3])
dissimilarity = greycoprops(glcm, properties[4])

让我感到困惑的是,如果我生成对比度属性的glcm,它将具有3x4的大小,但是根据纸张,它是单个值,即使我将所有属性的所有3x4值都视为一个特征,我敢打赌对于svm模型将存在过度拟合的问题。

1 个答案:

答案 0 :(得分:0)

摘自graycoproprops文档:

  

返回结果:2-D ndarray

     

二维数组。结果[d,a]是第d个属性“ prop”
  距离和a′角。

您的代码会为每个距离角度组合产生一个特征值:

In [5]: len(distances)
Out[5]: 3

In [6]: len(angles)
Out[6]: 4

In [7]: contrast.shape
Out[7]: (3, 4)

实现旋转不变性的一种常见做法是沿angles轴平均特征值。这样,您将获得与距离一样多的要素值:

In [11]: contrast = greycoprops(glcm, properties[0]).mean(axis=1)

In [12]: contrast.shape
Out[12]: (3,)