基于像素的模板匹配
输入源图像Source image(I); 模板图像Template image(T)
结果矩阵result Matrix(R)
1.平方差匹配法
最好的匹配值为0;匹配越差,匹配值越大
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) − I ( x + x ′ , y + y ′ ) ] 2 \displaystyle R(x,y)=\sum_{x',y'}[T(x',y')-I(x+x',y+y')]^2 R(x,y)=x′,y′∑[T(x′,y′)−I(x+x′,y+y′)]2
2.归一化平方差匹配法
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) − I ( x + x ′ , y + y ′ ) ] 2 ∑ x ′ , y ′ T ( x ′ , y ′ ) 2 ⋅ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) 2 \displaystyle R(x,y)=\frac{\sum_{x',y'}[T(x',y')-I(x+x',y+y')]^2}{\sqrt{\sum_{x',y'}T(x',y')^2}\cdot{\sqrt{\sum_{x',y'}I(x+x',y+y')^2}}} R(x,y)=∑x′,y′T(x′,y′)2⋅∑x′,y′I(x+x′,y+y′)2∑x′,y′[T(x′,y′)−I(x+x′,y+y′)]2
3.相关匹配法
采用数乘操作,R越大表明匹配程度越好
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) ⋅ I ( x + x ′ , y + y ′ ) ] \displaystyle R(x,y)=\sum_{x',y'}[T(x',y')\cdot I(x+x',y+y')] R(x,y)=x′,y′∑[T(x′,y′)⋅I(x+x′,y+y′)]
4.归一化相关匹配法
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) ⋅ I ( x + x ′ , y + y ′ ) ] ∑ x ′ , y ′ T ( x ′ , y ′ ) 2 ⋅ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) 2 \displaystyle R(x,y)=\frac{\sum_{x',y'}[T(x',y')\cdot I(x+x',y+y')]}{\sqrt{\sum_{x',y'}T(x',y')^2}\cdot{\sqrt{\sum_{x',y'}I(x+x',y+y')^2}}} R(x,y)=∑x′,y′T(x′,y′)2⋅∑x′,y′I(x+x′,y+y′)2∑x′,y′[T(x′,y′)⋅I(x+x′,y+y′)]
5.相关系数匹配法
1表示完美的匹配;-1表示最差的匹配
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) ⋅ I ( x + x ′ , y + y ′ ) ] − 1 w ⋅ h ∑ x ′ , y ′ T ( x ′ , y ′ ) ⋅ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) \displaystyle R(x,y)=\sum_{x',y'}[T(x',y')\cdot I(x+x',y+y')]-\frac{1}{w\cdot h}\sum_{x',y'}T(x',y')\cdot \sum_{x',y'}I(x+x',y+y') R(x,y)=x′,y′∑[T(x′,y′)⋅I(x+x′,y+y′)]−w⋅h1x′,y′∑T(x′,y′)⋅x′,y′∑I(x+x′,y+y′)
6.归一化相关系数匹配法
R ( x , y ) = ∑ x ′ , y ′ [ T ( x ′ , y ′ ) ⋅ I ( x + x ′ , y + y ′ ) ] − 1 w ⋅ h ∑ x ′ , y ′ T ( x ′ , y ′ ) ⋅ ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) ∑ x ′ , y ′ T 2 ( x ′ − y ′ ) 2 − 1 w ⋅ h ( ∑ x ′ , y ′ T ( x ′ , y ′ ) ) 2 ⋅ ∑ x ′ , y ′ I 2 ( x + x ′ , y + y ′ ) − 1 w ⋅ h ( ∑ x ′ , y ′ I ( x + x ′ , y + y ′ ) ) 2 \displaystyle R(x,y)=\frac{\sum_{x',y'}[T(x',y')\cdot I(x+x',y+y')]-\frac{1}{w\cdot h}\sum_{x',y'}T(x',y')\cdot \sum_{x',y'}I(x+x',y+y')}{\sqrt{\sum_{x',y'}T^2(x'-y')^2-\frac{1}{w\cdot h}(\sum_{x',y'}T(x',y'))^2}\cdot \sqrt{\sum_{x',y'}I^2(x+x',y+y')-\frac{1}{w\cdot h}(\sum_{x',y'}I(x+x',y+y'))^2}} R(x,y)=∑x′,y′T2(x′−y′)2−w⋅h1(∑x′,y′T(x′,y′))2⋅∑x′,y′I2(x+x′,y+y′)−w⋅h1(∑x′,y′I(x+x′,y+y′))2∑x′,y′[T(x′,y′)⋅I(x+x′,y+y′)]−w⋅h1∑x′,y′T(x′,y′)⋅∑x′,y′I(x+x′,y+y′)
7.绝对误差和算法(SAD)
SAD值越小,相似的可能性越大
S A D ( x , y ) = ∑ x ′ , y ′ ∣ I ( x + x ′ , y + y ′ ) − T ( x ′ , y ′ ) ∣ \displaystyle SAD(x,y)=\sum_{x',y'}|I(x+x',y+y')-T(x',y')| SAD(x,y)=x′,y′∑∣I(x+x′,y+y′)−T(x′,y′)∣
优点:速度快,考虑图像块中每个像素的最简单的可能性度量;对不太行图像块的广泛搜索很有效;
缺点:易受光照、颜色、观看方向、尺寸或形状变化等因素的影响。
8.序贯相似性检测算法(SSDA)
在待匹配图像中选取一个位置的子图像与模板图像进行相似度计算,当发现存在较大差异时,放弃该位置的相似度计算。匹配中,不需要对所有像素进行计算,而是设置一个阈值来觉得某一位置的子图像是否是模板图像需要匹配的子图像。
设置阈值
T
h
T_h
Th,随机且不重复的在模板图像T中选取像素点,计算对应像素点的绝对误差,将不同点对的绝对误差值累加,若累加r次后,误差值总和超过设定的阈值
T
h
T_h
Th,则停滞计算,记录次数r。
绝对误差:
ε
(
x
,
y
,
x
′
,
y
′
)
=
∣
(
I
(
x
+
x
′
,
y
+
y
′
)
−
I
ˉ
)
−
(
T
(
x
,
y
)
−
T
ˉ
)
∣
\displaystyle\varepsilon(x,y,x',y')=|(I(x+x',y+y')-\bar I)-(T(x,y)-\bar T)|
ε(x,y,x′,y′)=∣(I(x+x′,y+y′)−Iˉ)−(T(x,y)−Tˉ)∣
R
(
x
,
y
)
=
{
r
∣
m
i
n
1
≤
r
≤
m
≤
n
[
∑
h
−
1
r
ε
(
x
,
y
,
x
′
,
y
′
)
≥
T
h
]
}
\displaystyle R(x,y)=\{r|min_{1\le r\le m\le n}[\sum^r_{h-1}\varepsilon(x,y,x',y')\ge T_h]\}
R(x,y)={r∣min1≤r≤m≤n[h−1∑rε(x,y,x′,y′)≥Th]}
优点:无需对所有像素进行计算,计算量小,匹配速度快;
缺点:算法匹配的准确度和速度过度依赖于阈值
T
h
T_h
Th的设置;
T
h
T_h
Th过小,可能遗漏正确的匹配目标,
T
h
T_h
Th过大,计算量大;准确的不高,易受噪声影响。
R
(
x
,
y
)
\displaystyle R(x,y)
R(x,y)最大的位置
(
i
,
j
)
(i,j)
(i,j)处的子图像即为最终匹配结果。
eg.下图描绘了三个子图像的绝对误差累加情况。子图像A和B的绝对误差累加和
∑
ε
\sum \varepsilon
∑ε很快地超过了阈值
T
h
T_h
Th,而子图像C绝对误差累加和的增长速度很慢,所以C即为最相似的匹配目标。
9.归一化积相关算法(NCC)
N C C ( x , y ) = ∑ x ′ , y ′ ∣ I ( x + x ′ , y + y ′ ) − I ˉ ( x + x ′ , y + y ′ ) ∣ ⋅ ∣ T ( x , y ) − T ˉ ( x ′ , y ′ ) ∣ ∑ x ′ , y ′ ( I ( x + x ′ , y + y ′ ) − I ˉ ( x + x ′ , y + y ′ ) ) 2 ⋅ ∑ x ′ , y ′ ( T ( x , y ) − T ˉ ( x ′ , y ′ ) ) 2 \displaystyle NCC(x,y)=\frac{\sum_{x',y'}|I(x+x',y+y')-\bar I(x+x',y+y')|\cdot |T(x,y)-\bar T(x',y')|}{\sqrt{\sum_{x',y'}(I(x+x',y+y')-\bar I(x+x',y+y'))^2\cdot \sum_{x',y'}(T(x,y)-\bar T(x',y'))^2}} NCC(x,y)=∑x′,y′(I(x+x′,y+y′)−Iˉ(x+x′,y+y′))2⋅∑x′,y′(T(x,y)−Tˉ(x′,y′))2∑x′,y′∣I(x+x′,y+y′)−Iˉ(x+x′,y+y′)∣⋅∣T(x,y)−Tˉ(x′,y′)∣
NCC值最大时的子图像为最终的匹配对象。
优点:抗白噪声干扰强;在图像灰度变化以及目标几何形变不大的情况具有较高的匹配精度。
缺点:运行速度慢,易受局部光照变化的影响。
10.基于Hausdorff的模板匹配算法
Hausdorff距离是用来度量两个有限点集之相似性的一种方法,抗干扰性强,容错能力强。
基于Hausdorff的模板匹配算法基于图像的边缘特征,提取模板图像和待匹配图像的边缘点作为度量Hausdorff距离的两个有限点集。定义模板图像
T
T
T与子图像
S
i
,
j
S_{i,j}
Si,j的Hausdorff距离为
H
(
T
,
S
i
,
j
)
=
m
a
x
{
h
(
T
,
S
i
,
j
)
,
h
(
S
i
,
j
,
T
)
}
H(T,S_{i,j})=max\{h(T,S_{i,j}),h(S_{i,j},T)\}
H(T,Si,j)=max{h(T,Si,j),h(Si,j,T)}。其中,
T
=
{
T
1
,
T
2
,
⋯
,
T
n
}
T=\{T_1,T_2,\cdots,T_n\}
T={T1,T2,⋯,Tn}为模板图像的边缘点集;
S
i
,
j
=
{
S
1
,
S
2
,
⋯
,
S
n
}
S_{i,j}=\{S_1,S_2,\cdots,S_n\}
Si,j={S1,S2,⋯,Sn}为待匹配图像中
(
i
,
j
)
(i,j)
(i,j)位置处子图像的边缘点集。
h
(
a
,
b
)
h(a,b)
h(a,b)为点集
a
a
a到点集
b
b
b的单向Hausdorff距离。
h
(
T
,
S
i
,
j
)
=
m
a
x
t
∈
T
m
i
n
s
∈
S
i
,
j
∣
∣
t
−
s
∣
∣
\displaystyle h(T,S_{i,j})={max}_{t\in T}\,{min}_{s\in S_{i,j}}||t-s||
h(T,Si,j)=maxt∈Tmins∈Si,j∣∣t−s∣∣。意为模板像素边缘点集T中最大的像素
t
t
t与待匹配子图
S
i
,
j
S_{i,j}
Si,j中最小的像素值
s
s
s之间的距离;同理,
h
(
S
i
,
j
,
T
)
=
m
a
x
s
∈
S
i
,
j
m
i
n
t
∈
T
∣
∣
t
−
s
∣
∣
\displaystyle h(S_{i,j},T)={max}_{s\in S_{i,j}}\,{min}_{t\in T}||t-s||
h(Si,j,T)=maxs∈Si,jmint∈T∣∣t−s∣∣。计算模板与所有子图的Hausdorff距离,
H
(
T
,
S
i
,
j
)
H(T,S_{i,j})
H(T,Si,j)的最小值所对应的子图即为最终的匹配结果。
缺陷:Hausdorff距离度量的是最不相似的两点之间的距离,如果图像中存在部分遮挡或者具有一些噪声时,那么该方法就变得不可靠。改进:平均Hausdorff距离、部分Hausdorff距离以及基于代价函数的Hausdorff距离等。
11.基于SIFT的模板匹配算法
使用**SIFT算法在尺度空间提取物体局部特征点,并进行向量描述。然后对生成的特征向量采用最近邻算法**进行匹配,将该比值与设定的一个比例阈值进行比较,一次判断模板图像与待匹配图像中的特征点是否为一对匹配点。
优点:
1.具有较好的稳定性和不变性,能够适应旋转、尺度缩放、光照、视角变化及噪声的干扰;
2.区分性好,能够再大量数据特征库中快速匹配;
3.多量性,即使单个物体,也能产生大量特征向量;
4.高速性,能够快速进行特征向量匹配;
5.可扩展性,能够与其它形式的特征向量进行联合。