3

我昨天看到了这篇论文。在本文中,特征被视为对比度局部均匀性能量,它们都是单个值(据我所知),但根据 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 值视为一个特征,我敢打赌它会有一个支持向量机模型的过拟合问题。

4

1 回答 1

1

graycoproprops文档:

返回:结果:2-D ndarray

                      二维数组。results[d, a] 是第 d 个
                      距离和第 a 个角度的属性“prop”。

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

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,)
于 2018-07-15T08:32:07.043 回答