特征描述之灰度共生矩阵的代码
时间: 2024-05-01 21:20:55 浏览: 151
灰度共生矩阵(GLCM)是一种统计图像中像素灰度值之间的空间关系的方法,可用于提取图像纹理特征。GLCM 可以计算出图像中像素灰度值之间的关系,例如相邻像素间的灰度值差异和相邻像素对之间的灰度值共现频率等。这些特征可以在图像分类、目标检测和医学图像分析等领域中应用。
以下是使用 Python 实现灰度共生矩阵的代码示例:
```python
import numpy as np
import cv2
def glcm_feature(img, d=1, theta=0):
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算灰度共生矩阵
glcm = np.zeros((256,256))
h,w = gray.shape
if theta == 0:
for i in range(h):
for j in range(w-d):
glcm[gray[i,j], gray[i,j+d]] += 1
elif theta == 45:
for i in range(d, h):
for j in range(w-d):
glcm[gray[i,j], gray[i-d,j+d]] += 1
elif theta == 90:
for i in range(h-d):
for j in range(w):
glcm[gray[i,j], gray[i+d,j]] += 1
elif theta == 135:
for i in range(d, h):
for j in range(d, w):
glcm[gray[i,j], gray[i-d,j-d]] += 1
# 归一化灰度共生矩阵
glcm = glcm / np.sum(glcm)
# 计算灰度共生矩阵的特征
contrast = np.sum(np.square(glcm - np.mean(glcm)))
homogeneity = np.sum(glcm / (1 + np.square(np.arange(256)[:, np.newaxis] - np.arange(256))))
energy = np.sum(np.square(glcm))
entropy = -np.sum(glcm * np.log2(glcm + 1e-10))
return contrast, homogeneity, energy, entropy
```
其中,`img` 是输入的彩色图像,`d` 是灰度共生矩阵所计算的像素点之间的距离,`theta` 是灰度共生矩阵所计算的像素点之间的角度。
在上述代码中,我们使用 OpenCV 库中的 `cvtColor` 函数将彩色图像转换为灰度图像。然后,我们根据所选的角度和距离计算灰度共生矩阵,并对其进行归一化处理。最后,我们根据归一化后的灰度共生矩阵计算出其对应的特征值。在本示例中,我们计算了对比度(contrast)、一致性(homogeneity)、能量(energy)和熵(entropy)四个特征。
阅读全文