角点检测

我们想要做图像匹配,比如拍了两张照片,怎样确定它们中的某些其实是一个东西,这对定位啊拼接啥的很有帮助

Paste_Image.png
Paste_Image.png

为了匹配我们最好不要用全局特征,显然用局部特征能更好地完成这一目标,因为这可以提高诸如遮挡啊、角度方向变化等的鲁棒性

角点检测_第1张图片
Paste_Image.png

一个大致的方法如下:
(1)首先找一些独特的点(特征点)
(2)在上述关键点附近定义一个区域
(3)从这个区域提起并归一化信息
(4)从这个归一化的区域中计算局部特征
(5)匹配这个局部特征

角点检测_第2张图片
Paste_Image.png

那么问题来了:
我们怎样在两幅不同的图上找到相同的点?

角点检测_第3张图片
Paste_Image.png

所以我们需要一个“可重复”的检测器
假设我们解决了这个问题,即在两幅不同的图上我们找到了同样的点,那么我们怎么将它们一一对应?

角点检测_第4张图片
Paste_Image.png

所以我们需要一个点区别度高的检测器。
再然后,我们对特征点周围的区域特征提取,要求准确、可重复,对下面的一些情况要有较好的应对能力:
旋转、相似、仿射变换、光照、噪声等等
特征因为是局部的,所以对一些遮挡啊、聚群有很好的应对能力,同时我们要求这个特征要多,要有足够的区分度(来标识这是个啥),要高效(最好达到实时性)。


比较著名的几种特征点检测


角点检测_第5张图片
Paste_Image.png

Harris角点检测
显然角点(类似桌子的角那种点)满足可重复、足够区分度的特征,所以这解决我们的问题一。
所以我们怎样找到角点呢
其实很简单,我们弄一个小框框,往各个方向移动,如果怎样移动框框里的光强都不变,那么显然这是在一个区域里,如果只在某一个方向上动框框光强不变,那么这就是一个边,如果任意方向移动都变,那就是角点啦。

角点检测_第6张图片
Paste_Image.png
角点检测_第7张图片
Paste_Image.png

这里我们可以做一个差分近似

角点检测_第8张图片
Paste_Image.png
角点检测_第9张图片
Paste_Image.png

窗函数我们可以选

角点检测_第10张图片
Paste_Image.png

窗函数是左边的时候,M可以简化为

角点检测_第11张图片
Paste_Image.png

如果采用矩形框滤波器的情形,对旋转的鲁棒性不好,而如果用高斯滤波器框,则解决这一问题。

我们来理解一下这个M矩阵啊,挺重要的

角点检测_第12张图片
Paste_Image.png

如果是角点,那么要求x、y方向的梯度都很大,也即对角线上的值都很大于0。
然而这是两条边都在x、y轴上的情况。对于一般情况,我们这样处理
显然M是一个对称矩阵,所以我们可以对其进行特征值分解

角点检测_第13张图片
Paste_Image.png

则我们得到两个特征值和两个向量(在M里),特征值大的变化快,小的变化慢

角点检测_第14张图片
Paste_Image.png

所以转化为上述对齐的情况我们可以有以下结论

角点检测_第15张图片
Paste_Image.png

我们定义角点相应函数

Paste_Image.png


显然行列式可以直接求而不用特征值分解了

角点检测_第16张图片
Paste_Image.png

最终Harris角点方法总结如下:

角点检测_第17张图片
Paste_Image.png

哈里斯角点实测结果——Perfect!

Paste_Image.png

然后我们就可以利用Harris角点做全景图拼接了!
找到特征点
把特征点配对
用配对的特征点进行对齐操作

角点检测_第18张图片
Paste_Image.png
角点检测_第19张图片
Paste_Image.png

重要——Harris角点的特征##

对于平移、旋转有很好的鲁棒性
但是!对大小缩放不具有鲁棒性!角放大后而选的框框不变则有可能变成边!

角点检测_第20张图片
Paste_Image.png

你可能感兴趣的:(角点检测)