迁移来源
实验2-2 特征检测
姓名: 刘欣楠
学号: 2233310237
班级: 数学强基 2301
电子版密码: lxn-cvpr2-2
实验内容 #
-
计算基于高斯一阶微分的图像梯度(幅值图与方向图), 分析高斯方差对图像梯度的影响;
-
利用Canny边缘检测器, 完成图像的边缘检测实验, 并展示每个环节的处理结果;
-
利用Harris角点检测器, 完成图像的角点检测实验, 分析窗口参数对角点检测的影响,
并讨论角点检测的不变性、等变性与定位精度等.
实验目的 #
-
掌握基于高斯一阶微分的图像梯度计算过程;
-
掌握Canny边缘检测原理, 理解好的边缘检测器应具备的特性;
-
掌握Harris角点检测原理, 理解角点检测的不变性、等变性与定位精度等;
实验原理 #
基于高斯一阶微分的图像梯度 #
二维高斯函数:
Gσ(x,y)=2πσ21e−2σ2x2+y2
高斯一阶微分:
∂x∂Gσ(x,y)=2πσ21(−σ2x)e−2σ2x2+y2,
∂y∂Gσ(x,y)=2πσ21(−σ2y)e−2σ2x2+y2
基于高斯一阶微分的图像梯度:
∇fG=∇(G∗f)=[∂x∂G∗f,∂y∂G∗f]
记
∂x∂fG=∂x∂G∗f,∂y∂fG=∂y∂G∗f
梯度幅度图:
∥∇f∥=(∂x∂fG)2+(∂y∂fG)2
相位图:
θ=arctan(∂fG/∂x∂fG/∂y)
Canny 边缘检测原理 #
边缘:图像中亮度剧烈变化的位置。
检测方法:
- 先用高斯对图像进行滤波降噪;
- 再用一阶差分求滤波后图像的梯度幅值与梯度方向;
- 在梯度方向上对幅值进行非最大化抑制(NMS);
- 最后用双阈值算法检测与连接边缘。
参考文献:J. Canny, \textit{A computational approach to edge detection}. PAMI, 1986.
一阶微分算子
一阶差分算子:
$
H_x =
[1−1],
\quad
H_y=
[1−1]
$
Sobel 算子:
$
Sobel_x =
121
[10−1]
=
121000−1−2−1
Sobel_y =
10−120−210−1
$
其他可选的模板:Prewitt 算子、Roberts 模板等。
非极大值抑制(NMS)
设 g(q) 表示 q 点的梯度向量,沿梯度方向的前后方向各取一个像素步长,得点
r=q+∥g(q)∥g(q),p=q−∥g(q)∥g(q)
若
∥g(q)∥≥∥g(r)∥且∥g(q)∥≥∥g(p)∥
则保留 q 点的梯度,否则抑制。
梯度方向量化处理后,比较 q 点 3×3 邻域对应方向的大小。
NMS 目的:抑制非极大值,保留局部最大值,从而细化边缘。
边缘连接
使用双阈值法区分强边缘与弱边缘,并进行连接:
设高阈值为 TH,低阈值为 TL(TH>TL):
- 梯度幅值 >TH 的点为强边缘;
- <TL 的点被抛弃;
- 介于其中的点为弱边缘,若连接到强边缘则保留,否则丢弃。
Harris 角点检测原理 #
角点定义:在图像中某点处窗口向任意方向移动后,移动前后图像灰度差变化剧烈,则该窗口中心处为角点。
参考文献:
C. Harris and M. Stephens. \textit{A combined corner and edge detector}. 1988.
窗口移动前后灰度变化量
E(u,v)=∑(x,y)∈W[I(x+u,y+v)−I(x,y)]2
使用泰勒展开:
I(x+u,y+v)=I(x,y)+∂x∂Iu+∂y∂Iv+高阶项
忽略高阶项,则:
$
E(u,v) =
\sum_{(x,y)\in W}
\left[
I_x u + I_y v
\right]^2
[uv]
\left[
\sum
[Ix2IxIyIxIyIy2]
\right]
[uv]
$
定义二阶矩阵:
$
M = \sum_{(x,y)\in W}
w(x,y)
[Ix2IxIyIxIyIy2]
=
[a11a21a12a22]
$
Harris 响应函数
R=det(M)−α⋅trace(M)2=λ1λ2−α(λ1+λ2)2
其中 α∈[0.04,0.06]。
det(M)=a11a22−a122, trace(M)=a11+a22
非最大值抑制(NMS)
对 R 在局部邻域内做最大值选择:
x0=argmaxxn∈Ωp(xn)
实验步骤及结果 #
求基于高斯一阶微分的图像梯度(幅值图与方向图) #
- 选择 σ∈{0.5,1.0,2.0},计算 Gx,Gy 卷积后的 Ix,Iy,再求幅值与方向;
- 幅值图随 σ 增大而更平滑,细节与噪声被抑制;方向图用色相编码,平滑后方向更连续。




从图~\ref{fig:task1-sigma05}、图~\ref{fig:task1-sigma1} 与图~\ref{fig:task1-sigma2} 可以观察到:
- 当 σ=0.5 时,梯度图(Ix,Iy)中保留了大量细节,高频纹理(如帽子边缘与头发)表现明显,但噪声同样被强化,因此幅值图存在较多零碎细节;
- 当 σ=1.0 时,细节适度平滑,边缘更为连续,梯度方向图中色相分布较规则,说明方向估计稳定;
- 当 σ=2.0 时,图像被强烈平滑,细节大量丢失,但主要结构(轮廓、大型边缘)依然清晰,使得梯度幅值图呈现为大范围、低噪声的响应;
从方向图可以看出角度编码更加连续,这表明较大的 σ 能有效提升方向估计的稳定性。
- 小 σ:纹理清晰,但噪声敏感;
- 大 σ:更稳定、平滑,适合后续边缘检测与角点检测;
利用 Canny 边缘检测器,完成图像的边缘检测 #
- 对平滑尺度做对比:σ∈{0.8,1.0,1.6},观察模糊、梯度、NMS 与边缘图;
- 在基准 σ=0.8 上,遍历三组双阈值(高/低比例):(0.25,0.10)、(0.35,0.15)、(0.15,0.07);
- 输出包含:模糊图、梯度幅值、方向、NMS 与对应边缘图,文件名带有参数后缀便于直接比对。


图~\ref{fig:task2-sigma} 展示了不同平滑尺度 σ 对 Canny 三个关键结果(梯度、NMS、最终边缘)的影响。
- 当 σ=0.8 时,弱边缘和纹理大量保留,但也更易出现伪边缘;
- 当 σ=1.0 时,纹理部分被抑制,边缘清晰且连贯,是视觉上最均衡的结果;
- 当 σ=1.6 时,图像结构简化,大边缘更加突出,但曲线与细小细节处容易出现断裂;
图~\ref{fig:task2-thresholds} 展示双阈值对 Canny 的影响:
- 高阈值较大时(如 0.35/0.15),边缘数量明显减少,仅保留最显著结构;
- 高阈值较小时(如 0.15/0.07),弱边缘大量保留,但噪声显著增加;
- 高/低阈值比例越大(例如 0.35/0.15),滞后阈值的连接效果越弱,可能切断边缘;
由于 NMS 在梯度方向上进行极细化,高质量的方向估计能够保证边缘单像素宽度;若 σ 太小或量化过粗,则会导致“毛刺状”边缘。
总体而言,Canny 在图像质量良好并保持适当平滑时效果最佳。其性能依赖于:
利用 Harris 角点检测器,完成图像的角点检测 #
- 使用高斯导数求梯度,窗口平滑方差做对比:σw∈{0.8,1.5,2.5},α=0.05;
- 以响应最大值的 1% 作为阈值并做 3×3 NMS;
- 生成原图角点可视化、缩放 0.7 倍以及旋转 30∘ 后的角点可视化,用于观察尺度与旋转等变性;
- 窗口越大,响应更平滑、角点更稀疏,定位偏移也更明显;小窗口则角点密集但容易受噪声影响。
不同窗口的响应与角点可视化见图~\ref{fig:task3-windows},等变性实验见图~\ref{fig:task3-variants}。


图~\ref{fig:task3-windows} 显示窗口方差对 Harris 响应的影响:
- 窗口方差 σw=0.8 时:角点密集,图像细节处(头发、帽檐)检测丰富,但噪声也导致部分伪角点;
- σw=1.5 时:响应图更平滑,角点集中在结构明显的区域(眼睛、帽子的边缘),效果更加稳定;
- σw=2.5 时:角点数量大幅减少,仅保留大结构交汇处,定位偏移变得明显;
图~\ref{fig:task3-variants} 显示经过缩放与旋转处理后的角点分布:
- 多数角点在几何变换后仍能保持对应关系,说明 Harris 对平移和旋转具有良好的等变性;
- 小尺度平滑(如 σw=0.8)在缩放后产生的角点数量更不稳定,说明 Harris 对尺度变换并不严格不变,需要尺度空间方法(如 Harris-Laplace)才能稳定支持尺度变化;
- 旋转 30∘ 后角点整体随图像旋转而变化,说明 Harris 角点的方向响应稳定;
整体而言:
- Harris 适用于检测局部结构变化明显的区域;
- 但其尺度不变性有限,需要匹配的平滑尺度才能维持检测稳定性;
- 过小窗口导致噪声敏感,过大窗口导致角点稀疏与定位偏移明显;
结论与思考 #
- 高斯方差在梯度计算、Canny 与 Harris 中都体现为噪声抑制与细节保持的权衡;
- Canny 通过 NMS 与滞后阈值实现单一响应与连通性,但阈值选择需要结合图像对比度;
- Harris 角点具有一定的平移、旋转等变性,尺度变化需要匹配的平滑尺度以维持响应;
- 所有结果可通过运行脚本重新生成,便于针对不同参数进行扩展实验。
讨论
评论
正在加载评论...