#问题分析

#问题描述

该项目的目标是完成一个找到在不同的视角下拍摄的同一物体或场景中的相似之处的算法。我们主要实现的是一个简易版的SIFT算法。主要需要完成的是以下三个方面的内容:

  • 实现一个Harris角点检测算法

  • 实现一个类似SIFT算法的局部特征描述算法

  • 实现一个基于比率测试最近邻距离比测试的局部特征匹配算法

#数据集分析

NotreDame数据为例,包含了两张同一物体的不同角度的图像,如图1所示。

数据图像

图1 数据图像

1
2
3
4
5
6
data
├── NotreDame
| ├── 921919841_a30df938f2_o_to_4191453057_c86028ce1f_o.mat
| ├── 921919841_a30df938f2_o.jpg
| └── 4191453057_c86028ce1f_o.jpg
├── ...

#实验过程

#编程语言介绍

本实验所选择的编程语言为Matlab, 编程软件为Matlab 2018b.

#Harris角点检测

角点是一幅图像上最明显与重要的特征,角点检测的原理是利用角点在各个方向上的梯度值变化明显这一特性。[1]

选取的描述窗宽度为16像素,首先对图像进行高斯滤波,这一步是为了消除某些噪点对于接下来进行的检测的影响。
接着求在xx、yy和xy方向的梯度并进行高斯滤波。
最后得到Harris角点的响应值R。计算公式如公示1所示:

$$
R = det(M) - \alpha*trace(M)
\tag{1}
$$

其中$\alpha$为系数值,通常取值范围为0.04 ~ 0.06之间.
最后将得到的再进行过滤,保留那些重要的兴趣点。

运行结果如图2所示。

Harris角点检测结果

图2 Harris角点检测结果

#局部特征描述

局部特征描述我们运用一种类似SIFT算法的描述方法,我们设置的描述窗口的大小为16*16,接着将窗口划分成16个4*4的小窗口,在这些小窗口中找寻每个像素的主要梯度,然后将其归到0-360度按每45度一划分的8个方向之中。
然后对这些特征向量进行归一化处理,以消除光照等变化的影响。

#局部特征匹配

在得到特征向量之后,只需要通过计算向量的距离,就能够对特征点进行匹配。
具体的方法是算一个向量和来自另一个图的所有特征点的特征向量的欧式距离,然后取最近的一个特征向量进行匹配。
匹配结果如图3所示。

局部特征匹配结果

图3 局部特征匹配结果

#实验结果

成功实现了简单的图片相似点的寻找与匹配。在Notre Dam图像上获得了87%的准确率。


  1. 图像处理之角点检测算法 ↩︎