1.介绍
局部二进制算法是一种用于获取图像纹理的算法。这算法可以应用于人脸识别、纹理分类、工业检测、遥感图像分析、动态纹理识别等领域。
2.示例
"""
局部二进制算法,计算图像纹理特征
"""
import cv2
import numpy as np
import matplotlib.pyplot as plt
# Load an image
image = cv2.imread('../Lena.png', cv2.IMREAD_GRAYSCALE)
# Define the LBP function
def local_binary_pattern(image, P, R):
# Compute LBP image
lbp = np.zeros_like(image, dtype=np.uint8)
for i in range(R, image.shape[0] - R):
for j in range(R, image.shape[1] - R):
center = image[i, j]
values = []
for p in range(P):
x = int(round(i + R * np.cos(2 * np.pi * p / P)))
y = int(round(j - R * np.sin(2 * np.pi * p / P)))
values.append(1 if image[x, y] >= center else 0)
lbp[i, j] = sum([v * (2**p) for p, v in enumerate(values)])
return lbp
# Set the number of points and radius for LBP
num_points = 8
radius = 1
# Compute LBP image
lbp_image = local_binary_pattern(image, num_points, radius)
# Display the original and LBP images
plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.subplot(1, 2, 2)
plt.imshow(lbp_image, cmap='gray')
plt.title('LBP Image')
plt.show()