【计算机视觉(4)】特征点检测基础篇:从角点到兴趣点

「鸿蒙心迹」“2025・领航者闯关记“主题征文活动 10w+人浏览 291人参与

📌 适合对象:计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间:30-40分钟
🎯 学习目标:理解特征点的概念、Harris角点检测器的原理和应用


📚 学习路线图

理解特征点
是什么
学习好特征
的特性
掌握角点检测
基本思想
学习Harris
角点检测器
理解不变性
平移/旋转/缩放
探索尺度不变
兴趣点

本文内容一览(快速理解)

  1. 特征点(Feature Points / Interest Points):图像中具有显著性和可重复性的关键点
  2. 图像对应(Image Correspondence):在两幅图像之间建立点的对应关系
  3. 角点检测(Corner Detection):检测图像中两个或多个方向都有显著变化的点
  4. Harris角点检测器(Harris Corner Detector):经典的角点检测算法
  5. 不变性(Invariance):特征点在不同变换下保持稳定的能力

一、什么是特征点(Feature Points / Interest Points):理解图像中具有显著性和可重复性的关键点

这一章要建立的基础:理解特征点的概念和重要性

核心问题:如何在图像中找到稳定、可重复、有意义的点?


[!NOTE]
📝 关键点总结:特征点(也叫兴趣点、关键点)是图像中具有显著性和可重复性的点。它们可以用来建立图像之间的对应关系,是许多计算机视觉任务的基础。

1.1 图像对应问题(Image Correspondence):在两幅图像之间建立点的对应关系

概念的本质

图像对应问题就是:给定两幅图像,找到它们之间的对应关系。比如,第一幅图像中的某个点,在第二幅图像中的哪个位置?这就像在地图上找两个城市之间的对应关系一样。

图解说明

图像1
建立对应关系
图像2
对应点对
Point Correspondences
稀疏对应
少量点
密集对应
所有点

💡 说明:图像对应有两种类型:稀疏对应(只对应少量关键点)和密集对应(对应所有像素点)。特征点检测主要用于稀疏对应。

类比理解

想象你在看两张不同角度拍摄的同一座建筑的照片。图像对应就像在这两张照片中找到相同的特征点(比如窗户的角、门的边缘等),然后通过这些对应点来理解两张照片之间的关系。

实际例子

应用场景:
1. 目标跟踪:在视频序列中跟踪物体的运动
2. 物体识别:通过特征点匹配来识别物体
3. 三维重建:通过不同视角的图像重建三维场景
4. 图像拼接:将多张照片拼接成全景图

 


1.2 好特征的特征(Characteristics of Good Features):可重复性、显著性、高效性和局部性

概念的本质

不是图像中的每个点都适合作为特征点。好的特征点应该具有四个重要特性:可重复性、显著性、高效性和局部性。

图解说明

好特征
可重复性
Repeatability
显著性
Saliency
高效性
Efficiency
局部性
Locality
几何/光度变换
下可重复检测
每个特征
都独特
特征数量
远少于像素数
占据小区域
对遮挡鲁棒

💡 说明

  • 可重复性:同样的特征点可以在多幅图像中被检测到,即使图像经过了几何变换(旋转、缩放)或光度变换(亮度变化)
  • 显著性:每个特征点都是独特的,可以可靠地确定哪个点对应哪个点
  • 高效性:特征点的数量远少于图像像素数,便于处理
  • 局部性:特征点只占据图像的一小部分区域,对遮挡和杂乱背景有鲁棒性

类比理解

想象你在玩"找不同"游戏。好的特征点就像那些容易识别、不会混淆的标志性位置:

  • 可重复性:就像地标建筑,无论从哪个角度看都能认出
  • 显著性:就像独特的标志,不会与其他地方混淆
  • 高效性:就像地图上的关键地点,数量不多但信息丰富
  • 局部性:就像一个小标志,即使周围有遮挡也能识别

实际例子

选择特征点的例子:
假设你需要在图像上点击一些点,然后图像被变形了,你需要再次点击相同的点。
你会选择什么样的点?

好的选择:
- 角点(如窗户的角、门的边缘)
- 纹理丰富的区域
- 对比度高的边缘

不好的选择:
- 平坦区域(无法区分)
- 边缘上的点(沿边缘方向不唯一)
- 噪声点(不稳定)

 


二、角点检测的基本思想(Corner Detection: Basic Idea):理解什么是角点以及如何检测

这一章要建立的基础:理解什么是角点,以及如何检测角点

核心问题:什么样的点是角点?如何识别角点?


[!NOTE]
📝 关键点总结:角点是图像中在多个方向都有显著变化的点。通过滑动窗口并观察窗口内像素值的变化,可以识别角点。

2.1 角点的定义(What is a Corner):多个方向都有显著变化的点

概念的本质

角点是图像中一个特殊的点,当你在这个点周围滑动一个小窗口时,无论窗口向哪个方向移动,窗口内的像素值都会发生显著变化。这与边缘(只在一个方向变化)和平坦区域(所有方向都不变化)不同。

图解说明

滑动窗口
边缘
Edge
角点
Corner
平坦区域
Flat
沿边缘方向
变化小
所有方向
变化大
所有方向
变化小

💡 说明

  • 边缘:沿边缘方向移动窗口,像素值变化小;垂直边缘方向移动,变化大
  • 角点:向任何方向移动窗口,像素值都有显著变化
  • 平坦区域:向任何方向移动窗口,像素值变化都很小

类比理解

想象你在看一幅画,画中有物体的轮廓。角点就像轮廓的拐角处:

  • 边缘:就像一条直线,沿着直线走变化不大,但横跨直线变化大
  • 角点:就像两条线的交点,无论向哪个方向走,都会遇到变化
  • 平坦区域:就像一大片相同颜色的区域,向任何方向走都没有变化

实际例子

角点的例子:
- 窗户的四个角
- 门的边缘交点
- 建筑物的拐角
- 文字笔画的交叉点

为什么角点好?
- 容易识别:在多个方向都有变化
- 稳定:即使图像有小的变化,角点位置也相对稳定
- 可重复:在不同图像中容易找到相同的角点

 


2.2 角点检测的数学原理(Corner Detection: Mathematics):通过计算窗口内像素值的变化来识别角点

概念的本质

角点检测通过计算窗口内像素值的变化来识别角点。当窗口移动时,如果窗口内像素值的变化很大,说明这个位置可能是角点。这个变化可以用数学公式来量化。

图解说明

图像I(x,y)
滑动窗口
w(x,y)
计算变化
E(u,v)
判断角点
E值大
移动向量
[u,v]

💡 说明:当窗口移动[u,v]时,窗口内像素值的变化E(u,v)可以通过计算窗口内像素值的平方差来得到。如果E(u,v)在所有方向上都很大,说明这是一个角点。

类比理解

想象你在一个房间里,房间的每个位置都有一个"变化值"。角点就像房间的角落,无论你向哪个方向移动,都会遇到很大的变化(比如从墙到墙的过渡)。平坦区域就像房间的中央,向任何方向移动变化都很小。

实际例子

角点检测的步骤(简化理解):
1. 选择一个窗口(比如3×3或5×5)
2. 在图像的每个位置放置这个窗口
3. 计算窗口向各个方向移动时的变化
4. 如果所有方向的变化都很大,这就是一个角点

数学表示(简化):
- 变化E(u,v) = 窗口内像素值的平方差
- 如果E在所有方向都大 → 角点
- 如果E在一个方向大 → 边缘
- 如果E在所有方向都小 → 平坦区域

 


三、Harris角点检测器(Harris Corner Detector):经典的角点检测算法

这一章要建立的基础:理解Harris角点检测器的原理和实现

核心问题:如何自动检测图像中的角点?


[!NOTE]
📝 关键点总结:Harris角点检测器是经典的角点检测算法,通过计算图像的二阶矩矩阵,然后根据特征值来判断是否为角点。

3.1 Harris检测器的步骤(Harris Detector Steps):计算导数、平方、高斯滤波、角点响应和非极大值抑制

概念的本质

Harris角点检测器通过以下步骤来检测角点:

  1. 计算图像的导数(梯度)
  2. 计算导数的平方
  3. 用高斯滤波器平滑
  4. 计算角点响应函数
  5. 找到局部最大值

图解说明

原始图像
计算导数
Ix, Iy
计算平方
Ix², Iy², IxIy
高斯滤波
平滑
计算角点响应
R
非极大值抑制
找到角点

💡 说明

  • 图像导数:反映像素值变化的快慢
  • 平方:强调变化大的地方
  • 高斯滤波:平滑处理,减少噪声影响
  • 角点响应函数:根据特征值计算,值越大越可能是角点
  • 非极大值抑制:只保留局部最大值,避免重复检测

类比理解

想象你在寻找地图上的重要交叉路口。Harris检测器就像:

  1. 计算导数:找出道路的方向和变化
  2. 计算平方:强调变化大的地方
  3. 高斯滤波:平滑处理,去除小噪声
  4. 角点响应:计算每个位置的"重要性分数"
  5. 非极大值抑制:只保留最重要的交叉路口

实际例子

Harris检测器的输出:
- 输入:一幅图像
- 输出:角点位置和响应值

角点响应函数R:
- R > 0 且较大 → 角点
- R < 0 → 边缘
- |R| 很小 → 平坦区域

参数α:
- 通常取值0.04到0.06
- 控制角点检测的敏感度

 


3.2 二阶矩矩阵(Second Moment Matrix):通过特征值判断角点、边缘或平坦区域

概念的本质

二阶矩矩阵M总结了窗口内像素值的变化情况。通过分析M的特征值,可以判断这个位置是角点、边缘还是平坦区域。

图解说明

图像导数
Ix, Iy
二阶矩矩阵
M
特征值
λ1, λ2
判断类型
λ1, λ2都大
→ 角点
一个λ大
→ 边缘
λ1, λ2都小
→ 平坦

💡 说明

  • 如果两个特征值都很大且相近,说明在所有方向都有显著变化 → 角点
  • 如果一个特征值很大,另一个很小,说明只在一个方向有变化 → 边缘
  • 如果两个特征值都很小,说明在所有方向变化都很小 → 平坦区域

类比理解

想象你在分析一个位置的"变化椭圆":

  • 角点:椭圆的两个轴都很长,说明所有方向都有很大变化
  • 边缘:椭圆的一个轴很长,另一个很短,说明只在一个方向有变化
  • 平坦区域:椭圆的两个轴都很短,说明所有方向变化都很小

实际例子

特征值的解释:
- λ1 >> λ2:主要在一个方向有变化 → 边缘
- λ1 ≈ λ2 且都大:在所有方向都有变化 → 角点
- λ1 ≈ λ2 且都小:在所有方向变化都小 → 平坦区域

实际应用:
- 通过计算M矩阵和特征值,可以自动判断每个位置的类型
- 只保留角点位置,过滤掉边缘和平坦区域

 


四、不变性(Invariance and Covariance):理解特征点在不同变换下的稳定性

这一章要建立的基础:理解特征点在不同变换下的稳定性

核心问题:特征点检测在图像变换后还能找到相同的点吗?


[!NOTE]
📝 关键点总结:好的特征点检测器应该对某些变换保持不变性(invariance),对某些变换保持协变性(covariance)。不变性意味着检测结果不受变换影响,协变性意味着检测结果随变换相应变化。

4.1 光度变换不变性(Photometric Invariance):对亮度变化和对比度变化不敏感

概念的本质

光度变换是指图像亮度的变化,比如整体变亮或变暗,或者对比度的变化。好的角点检测器应该对这些变化不敏感。

图解说明

原始图像
亮度变化
I → I + b
对比度变化
I → aI
角点位置
不变

💡 说明

  • 亮度偏移:I → I + b(整体变亮或变暗)
  • 对比度缩放:I → aI(对比度变化)
  • Harris检测器只使用导数,所以对亮度偏移完全不变,对对比度缩放部分不变

类比理解

想象你在不同光照条件下看同一幅画。光度变换就像改变房间的亮度或对比度。好的角点检测器就像你的眼睛,即使光照条件改变,你仍然能找到画中的关键点(角点)。

实际例子

为什么Harris对光度变换不变?
- Harris只使用图像导数(梯度)
- 导数反映的是变化率,而不是绝对值
- 亮度偏移:导数不变(因为变化率不变)
- 对比度缩放:导数也按比例缩放,但相对大小不变

实际应用:
- 在不同光照条件下拍摄的图像中检测角点
- 处理曝光不同的照片
- 处理对比度调整后的图像

 


4.2 几何变换(Geometric Transformations):对平移和旋转协变,对缩放不变性差

概念的本质

几何变换是指图像的空间变换,比如平移、旋转、缩放。好的特征点检测器应该对这些变换有适当的响应。

图解说明

几何变换
平移
Translation
旋转
Rotation
缩放
Scaling
角点位置
协变
角点位置
协变
角点位置
不变性差

💡 说明

  • 平移:角点位置随图像平移,但检测结果一致(协变)
  • 旋转:角点位置随图像旋转,但检测结果一致(协变)
  • 缩放:角点位置可能改变,甚至可能变成边缘(不变性差)

类比理解

想象你在看一幅画,然后画被移动、旋转或放大缩小了:

  • 平移:画移动了,但角点还在相同的位置(相对于画)
  • 旋转:画旋转了,但角点还在相同的位置(相对于画)
  • 缩放:画放大了,原来是小角点的地方可能变成大边缘了

实际例子

Harris检测器的几何不变性:
- ✅ 平移不变:图像平移,角点位置也平移,但检测结果一致
- ✅ 旋转不变:图像旋转,角点位置也旋转,但检测结果一致
- ❌ 缩放不变性差:图像缩放,角点可能变成边缘

为什么缩放不变性差?
- 角点的定义依赖于窗口大小
- 当图像缩放时,原来是小角点的地方可能变成大边缘
- 需要尺度不变的特征点检测器(如SIFT)

 


4.3 尺度不变兴趣点(Scale Invariant Interest Points):在不同尺度的图像中都能检测到的特征点

概念的本质

尺度不变兴趣点是指在不同尺度的图像中都能检测到的特征点。这需要检测特征点的"特征尺度",然后在对应尺度上检测。

图解说明

多尺度图像
检测特征尺度
Characteristic Scale
在对应尺度
检测角点
尺度不变
特征点
图像1
小尺度
图像2
大尺度

💡 说明:尺度不变特征点检测需要:

  1. 在不同尺度上检测特征
  2. 找到每个特征点的"特征尺度"(响应最大的尺度)
  3. 在特征尺度上检测特征点

类比理解

想象你在看一幅画,但有时需要看整体(远看),有时需要看细节(近看)。尺度不变特征点就像那些无论从多远或多近看都能识别的关键点。这需要找到每个点的"最佳观察距离"(特征尺度)。

实际例子

为什么需要尺度不变性?
- 同一物体在不同距离拍摄,在图像中的大小不同
- 需要在不同尺度的图像中找到相同的特征点
- 用于图像匹配、三维重建等应用

解决方法:
- 使用尺度空间(如高斯金字塔)
- 检测blob(斑点)而不是角点
- 使用SIFT等尺度不变特征检测器

实际应用:
- 图像匹配:在不同分辨率的图像中匹配特征
- 目标识别:识别不同大小的物体
- 三维重建:从不同距离拍摄的图像重建场景

 


📝 本章总结

核心要点回顾

  1. 特征点的概念

    • 图像中具有显著性和可重复性的关键点
    • 用于建立图像之间的对应关系
  2. 好特征的特征

    • 可重复性:在不同图像中可重复检测
    • 显著性:每个特征都独特
    • 高效性:特征数量远少于像素数
    • 局部性:占据小区域,对遮挡鲁棒
  3. 角点检测

    • 角点是多个方向都有显著变化的点
    • 通过滑动窗口观察变化来检测
  4. Harris角点检测器

    • 计算图像导数和二阶矩矩阵
    • 根据特征值判断角点
    • 对平移和旋转不变,对缩放不变性差
  5. 不变性

    • 对光度变换(亮度、对比度)不变
    • 对几何变换(平移、旋转)协变
    • 对缩放不变性差,需要尺度不变特征

知识地图

特征点检测
特征点概念
角点检测
Harris检测器
不变性
可重复性
显著性
高效性
局部性
角点定义
检测原理
计算导数
二阶矩矩阵
角点响应
光度不变
几何协变
尺度不变

关键决策点

  • 选择特征点类型:根据应用选择角点、blob或其他特征
  • 选择检测器:Harris适合角点,SIFT适合尺度不变特征
  • 处理尺度变化:当需要尺度不变时,使用尺度空间方法
  • 处理噪声:使用高斯滤波平滑,减少噪声影响
  • 非极大值抑制:避免重复检测,只保留局部最大值

📚 延伸阅读

推荐资源

  1. Szeliski’s Book: Computer Vision: Algorithms and Applications, Chapter 4.1

    • 详细的特征点检测理论和实践
  2. 经典论文

    • Harris, C. and Stephens, M. “A Combined Corner and Edge Detector.” (1988)
    • SIFT: Scale-Invariant Feature Transform
  3. 实践项目

    • 实现Harris角点检测器
    • 比较不同特征点检测器的效果
    • 应用特征点进行图像匹配

本文基于PPT内容整理,适合初学者理解特征点检测的基本概念和应用。如需深入了解数学原理和公式推导,请参考相关研究资料。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值