我昨天看过this篇论文。在本文中,这些特征取为对比度,局部均匀性和能量,它们都是单个值(据我所知),但根据到skimage功能greycomatrix
,传递给它们的参数是distances
和angles
(可以是多个)。
这是我的代码:
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模型将存在过度拟合的问题。
答案 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,)