Harris角点检测实现
看之前,你最好知道一下Harris角点原理,相关文章很多,本篇文章主要讲解代码实现。
1、Harris角点步骤总结
流程总结:
- 计算图像梯度,比如Sobel算子 (如果彩色图先转化为灰度图)
- 根据图像梯度为每个点计算二阶矩矩阵特征值
- 寻找具有较大响应的点(λmin或者R大于阈值)
- 选择那些λmin或者R是局部最大值的点作为关键点(非最大值抑制)
这也是我们代码的逻辑结构。
2、代码实现
# 使用python实现Harris角点检测
import cv2
import numpy as np
# 非最大值抑制
def non_max_suppression_matrix(matrix, neighborhood_size):
if matrix.ndim != 2:
raise ValueError("输入矩阵必须是二维矩阵")
height, width = matrix.shape
half_size = neighborhood_size // 2
suppressed_matrix = np.zeros_like(matrix)
for y in range(half_size, height - half_size):
for x in range(half_size, width - half_size):
local_patch = matrix[y - half_size:y + half_size + 1, x - half_size