CV笔记|图像处理:Harris特征点检测器——兴趣点检测
1 基础知识
1.1 特征点检测
在拼图游戏中,我们一般从有明显特征的碎片入手,因为区分度比较高的特征片段提供了图像丰富的信息,更容易用于定位。在计算机视觉和图像处理中,使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征称为特征点检测。
特征点检测广泛应用于目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。角点特征是图像中较好的特征,比边缘特征更好地用于定位。
1.2 角点
在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义:
- 角点可以是两个边缘的角点;
- 角点是邻域内具有两个主方向的特征点。
人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。
- 如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点,如左图,表示一个平坦区域;
- 如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么窗口内的图像可能是一条直线的线段,如中图,表示一个边缘特征(Edges);
- 如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点(Corners),如右图。
1.3 图像梯度
“灰度/像素值发生很大变化”这一现象可以用图像梯度进行描述。在图像局部范围内,图像梯度越大表示该局部内像素值变化越大(灰度的变化率越大)。图像的梯度在数学上可用微分或者导数来表示。对于数字图像来说,相当于是二维离散函数求梯度,并使用差分来近似导数: G x ( x , y ) = H ( x + 1 , y ) − H ( x − 1 , y ) G_x(x,y)=H(x+1,y)-H(x-1,y) Gx(x,y)=H(x+1,y)−H(x−1,y) G y ( x , y ) = H ( x , y + 1 ) − H ( x , y − 1 ) G_y(x,y)=H(x,y+1)-H(x,y-1) Gy(x,y)=H(x,y+1)−H(x,y−1) 在实际操作中,对图像求梯度通常是考虑图像的每个像素的某个邻域内的灰度变化,因此通常对原始图像中像素某个邻域设置梯度算子,然后采用小区域模板进行卷积来计算,常用的有Prewitt算子、Sobel算子、Robinson算子、Laplace算子等。
2 Harris角点检测基本原理
Harris角点检测是一种常用的、较为基础的特征点检测方法,可用于判断角点、边缘、平滑区域。Harris角点检测原理是利用移动的窗口在图像中计算灰度变化值,其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。
2.1 建立数学模型
通过建立数学模型,判断哪些窗口会引起较大的灰度值变化。
让一个窗口的中心位于灰度图像位置 ( x , y ) (x,y) (x,y),将该处像素灰度值记为 I ( x , y ) I(x,y) I(x,y) ,如果让该窗口在点 ( x , y ) (x,y) (x,y)处平移 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)到新的位置 ( u , v ) (u,v) (u,v) ,新位置处的像素灰度值就是 I ( u , v ) I(u,v) I(u,v) 。 ∣ I ( u , v ) − I ( x , y ) ∣ |I(u,v)-I(x,y)| ∣I(u,v)−I(x,y)∣就是窗口移动引起的灰度值的变化值。
设 w ( x , y ) w(x,y) w(x,y)为 ( x , y ) (x,y) (x,y)处的窗口函数,其表示窗口内各像素的权重,为了简化模型可以把窗口内所有像素的权重都设为1,即一个均值滤波核。也可以把 w ( x , y ) w(x,y) w(x,y)设定为以窗口中心为原点的高斯分布,即一个高斯核。如果窗口中心点像素是角点,那么窗口移动前后,中心点的灰度值变化非常大,所以该点权重系数应该设大一点;离窗口中心(角点)较远的点灰度变化比较小,将权重系数设小一点。
对于图像 I ( x , y ) I(x,y) I(x,y),当中心位于点 ( x , y ) (x,y) (x,y)处的窗口向各个方向平移 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)时,为描述像素灰度值的变化,引入 E ( x , y ) E(x,y) E(x,y):
E ( x , y ; Δ x , Δ y ) = ∑ ( x , y ) w ( x , y ) × [ I ( x + Δ x , y + Δ y ) – I ( x , y ) ] 2 E(x,y;\Delta x,\Delta y) = \sum_{(x,y)}w(x,y) \times [I(x+\Delta x,y+\Delta y) – I(x,y)]^2 E(x,y;Δx,Δy)=(x,y)∑w(x,y)×[I(x+Δx,y+Δy)–I(x,y)]2
其中, w ( x , y ) w(x,y) w(x,y)是以点 ( x , y ) (x,y) (x,y)为中心的窗口,为加权函数,它既可是常数,也可以是高斯加权函数。
若窗口内是一个角点,则上式中平方项会很大,相应地, E ( x , y ) E(x,y) E(x,y)的计算结果将会很大。
根据泰勒展开,对图像 I ( x , y ) I(x,y) I(x,y)在平移 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)后进行一阶近似:
I ( x + Δ x ,