gabor特征提取python实现
时间: 2023-07-07 17:45:27 浏览: 117
以下是使用Python实现gabor特征提取的示例代码:
```python
import cv2
import numpy as np
from scipy import ndimage
import matplotlib.pyplot as plt
def build_filters():
filters = []
ksize = 9
for theta in np.arange(0, np.pi, np.pi / 4):
for sigma in (1, 3):
for frequency in (0.05, 0.25):
kernel = cv2.getGaborKernel((ksize, ksize), sigma, theta, frequency, 0.5, 0, ktype=cv2.CV_32F)
kernel /= 1.5 * kernel.sum()
filters.append(kernel)
return filters
def process(img, filters):
features = np.zeros((img.shape[0], img.shape[1], len(filters)), dtype=np.float32)
for i, kernel in enumerate(filters):
filtered = ndimage.convolve(img, kernel, mode='wrap')
features[:, :, i] = filtered
return features
# 读取图像并转为灰度图
img = cv2.imread('lena.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 构建gabor滤波器组
filters = build_filters()
# 对图像进行gabor特征提取
features = process(gray, filters)
# 显示gabor滤波后的特征图像
for i in range(len(filters)):
plt.subplot(4, 8, i + 1)
plt.imshow(features[:, :, i], cmap='gray')
plt.axis('off')
plt.show()
```
在上面的示例代码中,首先定义了一个`build_filters`函数,用于构建gabor滤波器组。接着定义了一个`process`函数,用于对图像进行gabor特征提取。
在主函数中,首先读取图像并转为灰度图,然后构建gabor滤波器组,最后对图像进行gabor特征提取,并显示gabor滤波后的特征图像。
注意:上述示例代码中的`lena.jpg`是一张测试图片,需要将其放在与代码同一目录下才能运行。
阅读全文