python 用灰度共生矩阵提取图像特征
时间: 2024-03-09 16:25:27 浏览: 21
灰度共生矩阵(Gray Level Co-occurrence Matrix, GLCM)是一种用于描述图像纹理特征的统计方法。它可以描述同一灰度级别下两个像素之间的关系,从而提取图像的纹理信息。
在 Python 中,可以使用 skimage 库中的 greycomatrix 函数来计算灰度共生矩阵。具体步骤如下:
1. 读取图像并转换为灰度图像。
```python
from skimage import io, color
image = io.imread('image.png')
gray_image = color.rgb2gray(image)
```
2. 计算灰度共生矩阵。
```python
from skimage.feature import greycomatrix
glcm = greycomatrix(gray_image, distances=[1], angles=[0, np.pi/4, np.pi/2, 3*np.pi/4], levels=256, symmetric=True, normed=True)
```
其中,distances 参数表示计算共生矩阵时考虑的像素间距离,angles 参数表示计算共生矩阵时考虑的像素间角度,levels 参数表示图像的灰度级别数,symmetric 参数表示共生矩阵是否对称,normed 参数表示是否对共生矩阵进行归一化。
3. 根据灰度共生矩阵计算纹理特征。
```python
from skimage.feature import greycoprops
contrast = greycoprops(glcm, 'contrast')
homogeneity = greycoprops(glcm, 'homogeneity')
```
常用的纹理特征包括对比度(contrast)、均匀性(homogeneity)、能量(energy)、相关性(correlation)等。
完整代码示例:
```python
from skimage import io, color
from skimage.feature import greycomatrix, greycoprops
image = io.imread('image.png')
gray_image = color.rgb2gray(image)
glcm = greycomatrix(gray_image, distances=[1], angles=[0, np.pi/4, np.pi/2, 3*np.pi/4], levels=256, symmetric=True, normed=True)
contrast = greycoprops(glcm, 'contrast')
homogeneity = greycoprops(glcm, 'homogeneity')
print('Contrast:', contrast)
print('Homogeneity:', homogeneity)
```
注意:灰度共生矩阵只能提取图像的纹理特征,不能用于提取其他特征,如形状、颜色等。