news 2026/6/12 4:13:00

角点检测算法:Harris 和 FAST 方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
角点检测算法:Harris 和 FAST 方法

在计算机视觉领域,角点检测是特征提取的基础步骤之一,常用于图像匹配、目标跟踪、SLAM 等应用。角点(Corner)是指图像中强度变化剧烈的点,通常位于物体边缘的交汇处。本文将详细讲解两种经典的角点检测算法:Harris 角点检测FAST (Features from Accelerated Segment Test),并比较它们的优缺点。

Harris 角点检测算法

Harris 角点检测算法由 Chris Harris 和 Mike Stephens 于 1988 年提出,是基于图像梯度的经典方法。它通过分析图像局部窗口的强度变化来判断是否为角点。

基本原理

想象在一个小图像窗口上进行平移(u, v):

  • 如果窗口位于平坦区域,所有方向变化都很小。
  • 如果位于边缘,只沿边缘方向变化小,其他方向变化大。
  • 如果位于角点,所有方向变化都剧烈。

可以参考以下示例图理解:

datahacker.rshttps://datahacker.rs/opencv-harris-corner-detector-part1/

数学公式
  1. 计算图像在 x 和 y 方向的梯度:
    通常使用 Sobel 算子。

  2. 计算结构张量矩阵 M 的元素:

    (对窗口内像素求和,通常加高斯加权)。

  3. 计算角点响应函数 R:

    具体展开为
    其中是矩阵M的特征值,k 是经验常数(典型取值 0.04 ∼ 0.06)
    判断准则:

    • 如果 R 大且正:角点
    • 如果 R 负:边缘
    • 如果 |R| 小:平坦区域
  4. 进行非极大值抑制(Non-maximal suppression)和阈值化得到最终角点。

Harris 算法鲁棒性强,对旋转有一定不变性,但计算量较大,需要梯度计算和高斯平滑。

改进:Shi-Tomasi 算法

1994 年,Jianbo Shi 和 Carlo Tomasi 提出改进,避免了敏感的 k 参数,直接使用:

当 RRR 大于阈值时即为“好特征点”(Good Features to Track)。在 OpenCV 中,

cv2.goodFeaturesToTrack()

即实现此版本,稳定性更好。
图中a是harris检测法,b是改进的fast检测法示例

researchgate.net

Harris 对旋转具有不变性,对光照变化较鲁棒,但缺乏尺度不变性,且计算密集(需多次卷积)。


FAST 角点检测算法

FAST 算法由 Edward Rosten 和 Tom Drummond 于 2006 年提出(2010 年改进),旨在实现高速角点检测,特别适合实时应用。

基本原理

以候选像素 p 为中心,考察半径为 3 的 Bresenham 圆上的 16 个像素。如果存在连续 N 个(常用 N=9 或 12)像素的强度都显著比 p 亮(或都显著比 p 暗),则 p 为角点。

阈值 t 控制敏感度:

加速技巧
  • 高频剔除:先只检查 4 个正交像素(1、5、9、13)。若至少 3 个满足条件,再检查全部 16 个(剔除率 >90%)。

  • 机器学习优化:使用 ID3 决策树为每个位置训练最优检查顺序。

  • 非极大值抑制:计算角点分数 V:

FAST 极快,常用于实时视频处理(如 ORB 特征中使用)。

Harris 与 FAST 的比较

方面HarrisFAST
速度较慢(需梯度计算和高斯平滑)极快(几倍于 Harris)
准确性高,鲁棒性强,对噪声和旋转较好好,但易受噪声影响,可能检测冗余点
尺度不变性无(需扩展如 Harris-Laplace)
应用场景精确匹配、立体视觉实时跟踪、SLAM(如 ORB)
资源消耗低(适合嵌入式设备)

Harris 更精确和稳定,但 FAST 在速度上碾压,尤其在资源受限的环境中。实际应用中,常融合两者(如先用 FAST 粗检测,再用 Harris 精炼)。

现代应用与衍生算法

  • ORB(Oriented FAST and Rotated BRIEF,2011):使用改进的 FAST(添加方向估计)检测角点 + rBRIEF 描述子,实现旋转不变性与高效匹配,是 SIFT 的免费替代品,常用于实时 SLAM(如 ORB-SLAM)。

docs.opencv.org

  • SIFT/ SURF等尺度不变特征常结合 Harris-Laplace 或 DoG 来精确定位角点。
  • 深度学习时代,SuperPoint、D2-Net 等学习型检测器在重复性和鲁棒性上超越传统方法,但 Harris 与 FAST 仍因轻量级而在嵌入式设备中广泛使用。

总结

Harris 和 FAST 都是角点检测的里程碑算法。Harris 奠定了基于梯度的基础,而 FAST 则推动了实时视觉的发展。根据需求选择:追求精度用 Harris,追求速度用 FAST。OpenCV 中均有实现(如 cv2.cornerHarris() 和 cv2.FASTFeatureDetector),便于实验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 16:23:00

如何将LobeChat嵌入现有Web系统实现无缝集成?

如何将LobeChat嵌入现有Web系统实现无缝集成? 在企业数字化转型加速的今天,越来越多组织希望为员工或客户配备智能对话能力——从自动回答常见问题到辅助撰写文档、分析数据。但自研一个稳定、美观且支持多模型的聊天界面,往往需要投入大量前…

作者头像 李华
网站建设 2026/6/10 5:58:22

乐鑫ESP32-S3芯片深度解析:双核AI+双模无线,智能硬件开发的理想选择

当你清晨被智能闹钟的温柔铃声唤醒,语音指令让咖啡机自动启动,出门前通过手机远程检查门窗是否关好——这些习以为常的智能家居场景背后,都离不开一颗强大的“心脏”。在智能硬件爆发式增长的今天,在智能硬件飞速发展的当下&#…

作者头像 李华
网站建设 2026/6/10 23:24:36

Godot资源逆向工程实战:从PCK文件解析到游戏资源提取全流程

Godot资源逆向工程实战:从PCK文件解析到游戏资源提取全流程 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 在独立游戏开发和游戏研究领域,Godot引擎的PCK资源文件格式一直是…

作者头像 李华
网站建设 2026/6/4 23:58:52

快速解决Fiji Jaunch组件重复文件错误的终极指南

快速解决Fiji Jaunch组件重复文件错误的终极指南 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji是一款功能强大的图像处理软件,但近期Windows x64平台的…

作者头像 李华
网站建设 2026/6/9 21:21:58

百度网盘提取码自动获取工具:3步告别手动查找烦恼

百度网盘提取码自动获取工具:3步告别手动查找烦恼 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而四处搜索吗?每次遇到需要输入提取码的资源,都要在多个网…

作者头像 李华
网站建设 2026/6/10 14:24:30

单链表的应用-反转链表and删除链表中间结点

反转链表解法:多指针1.创建三个指针first:记录当前节点的 “前一个节点”(反转后,当前节点要指向它);second:指向当前正在处理的节点(每轮循环要反转它的next指针)&#…

作者头像 李华