图像特征提取是后续分类、预测等任务的基础,请使用第三方工具包中的特征提取函数,分别提取图像的LBP特征、HOG特征,并可视化输出原始图像和提取的特征图像。
时间: 2024-10-02 21:00:56 浏览: 42
图像特征提取是计算机视觉领域的重要步骤,它有助于机器理解图片内容并用于后续的分析。使用Python中的第三方库,如`scikit-image`和`OpenCV`,我们可以方便地完成这一过程。
首先,让我们导入所需的库:
```python
import cv2
from skimage.feature import local_binary_pattern as lbp
from skimage.feature import hog
import matplotlib.pyplot as plt
```
1. **Local Binary Patterns (LBP)特征提取**:
LBP是一种简单而有效的纹理描述符,计算每个像素周围的灰度值并生成二进制码。我们可以通过以下代码提取LBP特征:
```python
def extract_lbp(image_path):
img = cv2.imread(image_path, 0)
lbp_descriptor = lbp(img, method='uniform', radius=3, n_points=8)
return lbp_descriptor
# 加载一张图片
image = cv2.imread('your_image.jpg')
lbp_features = extract_lbp(image)
# 可视化LBP特征图
plt.figure(figsize=(10,5))
plt.subplot(1, 2, 1), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.hist(lbp_features.ravel(), bins=256, range=(0, 256), rwidth=0.8)
plt.title('LBP Histogram')
plt.show()
```
2. **Histogram of Oriented Gradients (HOG)特征提取**:
HOG则是通过统计局部梯度的方向分布来量化图像的纹理特性。以下是HOG特征提取的代码:
```python
def extract_hog(image_path, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(3, 3)):
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
hog_descriptor = hog(img, orientations=orientations, pixels_per_cell=pixels_per_cell,
cells_per_block=cells_per_block, block_norm='L2-Hys')
return hog_descriptor
hog_features = extract_hog('your_image.jpg')
# HOG特征可视化通常不直接显示,因为它是一个高维向量,通常会使用直方图或其他方法展示其累计分布。
```
注意替换 `'your_image.jpg'` 为你要处理的实际图像路径。最后的两部分代码展示了如何绘制LBP特征直方图以及HOG特征的累积分布,实际可视化可能会有所不同。
阅读全文