Python实现用第三方工具包中的特征提取函数,分别提取图像的LBP特征,HOG特征,并可视化输出原始图像和提取的特征图像
时间: 2024-10-13 08:06:07 浏览: 16
在Python中,我们可以利用一些流行的图像处理库,如`OpenCV`(Open Source Computer Vision Library)来进行特征提取。下面我会简述如何使用OpenCV提取局部二值模式(Local Binary Patterns, LBP)和方向梯度直方图(Histogram of Oriented Gradients, HOG)特征,并展示如何可视化原始图像和提取后的特征图像。
1. **提取LBP特征**:
- 首先安装必要的库(如果尚未安装):
```
!pip install opencv-python
```
- 然后你可以使用以下代码片段:
```python
import cv2
import numpy as np
def extract_lbp(image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
lbp = cv2.LBP(gray)
return lbp
# 使用示例
img = cv2.imread('image.jpg')
lbp_img = extract_lbp(img)
```
`lbp_img`就是提取出的LBP特征图。
2. **提取HOG特征**:
- 使用`cv2.HOGDescriptor`:
```python
hog = cv2.HOGDescriptor()
hog.compute(img) # 对图像进行描述符计算
hog_features = hog.getDescriptors() # 获取特征向量
```
`hog_features`即为HOG特征。注意这里得到的是一个一维数组。
3. **可视化**:
- 可以使用matplotlib对原始图像和特征图进行显示:
```python
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 原始图像
axs[0].set_title('Original Image')
if len(lbp_img.shape) == 2:
axs[1].imshow(lbp_img, cmap='gray') # LBP特征
else:
axs[1].imshow(lbp_img[:, :, 0], cmap='gray') # 通常LBP是灰度图像
axs[1].set_title('LBP Feature Map')
axs[2].imshow(hog_features.reshape(-1, hog_winSize[0], hog_winSize[1], 1), cmap='gray') # HOG特征
axs[2].set_title('HOG Feature Map')
plt.show()
```
阅读全文