python实现利用Gabor进行图像特征纹理提取
时间: 2024-01-15 10:05:02 浏览: 167
基于Gabor滤波器的图像纹理特征提取
3星 · 编辑精心推荐
可以使用OpenCV库实现利用Gabor进行图像特征纹理提取。首先,需要定义Gabor滤波器的核函数,然后对图像进行卷积运算得到纹理特征图。下面是一个简单的Python代码实现:
``` python
import cv2
import numpy as np
def build_filters(ksize, sigma, theta, lambd, gamma):
filters = []
for i in range(0, 8):
theta = theta / 180.0 * np.pi
kern = cv2.getGaborKernel((ksize, ksize), sigma, theta, lambd, gamma, 0, ktype=cv2.CV_32F)
kern /= 1.5*kern.sum()
filters.append(kern)
theta += np.pi/8.
return filters
def process(img, filters):
accum = np.zeros_like(img)
for kern in filters:
fimg = cv2.filter2D(img, cv2.CV_8UC3, kern)
np.maximum(accum, fimg, accum)
return accum
if __name__ == '__main__':
img = cv2.imread('lena.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
filters = build_filters(ksize=31, sigma=3.0, theta=0.0, lambd=15.0, gamma=0.5)
result = process(gray, filters)
cv2.imshow('result', result)
cv2.waitKey()
```
其中,`build_filters`函数用于生成8个方向的Gabor核函数,`process`函数用于进行卷积运算得到纹理特征图。在主函数中,加载图像并转为灰度图,生成Gabor核函数并进行卷积操作,最终显示纹理特征图。
阅读全文