前言
网上对Harris角点检测的介绍文章和代码较多,贴参考文章:
https://www.cnblogs.com/zyly/p/9508131.html
由于数学知识有限,部分推导过程不易理解,这里将本人学习和理解的过程进行一些记录。
Harris角点检测
窗口灰度变化:
E
(
u
,
v
)
=
∑
x
,
y
w
(
x
,
y
)
[
I
(
x
+
u
,
y
+
v
)
−
I
(
x
,
y
)
]
2
E(u,v)=\sum_{x,y} w(x,y)[I(x+u,y+v)−I(x,y)]^2
E(u,v)=x,y∑w(x,y)[I(x+u,y+v)−I(x,y)]2
- E ( u , v ) E(u,v) E(u,v)表示窗口偏移 ( u , v ) (u,v) (u,v),窗口内像素灰度变化量
- w ( x , y ) w(x,y) w(x,y)是一个加权函数,如果取1表示窗口内每个像素贡献值相同。一般取高斯函数,表示窗口中间的像素值贡献最大,边缘贡献依次减弱。
- ∑ x , y [ I ( x + u , y + v ) − I ( x , y ) ] 2 \sum_{x,y}[I(x+u,y+v)−I(x,y)]^2 ∑x,y[I(x+u,y+v)−I(x,y)]2表示窗口移动前和移动后,窗口内对应位置像素值求差的平方再累加。
化简
E
(
u
,
v
)
E(u,v)
E(u,v):
二元函数泰勒公式展开:
f
(
x
+
u
,
y
+
v
)
=
f
(
x
,
y
)
+
u
f
x
(
x
,
y
)
+
v
f
y
(
x
,
y
)
+
1
2
!
[
u
2
f
x
x
(
x
,
y
)
+
u
v
f
x
,
y
(
x
,
y
)
+
v
2
f
y
y
(
x
,
y
)
]
+
O
(
n
)
f(x+u,y+v)=f(x,y)+ufx(x,y)+vfy(x,y)+ \frac1 {2!}[u^2f_{xx}(x,y)+uvf_{x,y}(x,y)+v^2f_{yy}(x,y)]+O(n)
f(x+u,y+v)=f(x,y)+ufx(x,y)+vfy(x,y)+2!1[u2fxx(x,y)+uvfx,y(x,y)+v2fyy(x,y)]+O(n)
只取前几项:
f
(
x
+
u
,
y
+
v
)
≈
f
(
x
,
y
)
+
u
f
x
(
x
,
y
)
+
v
f
y
(
x
,
y
)
f(x+u,y+v)≈f(x,y)+ufx(x,y)+vfy(x,y)
f(x+u,y+v)≈f(x,y)+ufx(x,y)+vfy(x,y)
则: