理论部分
常用应用领域:图像拼接
- 分别提取待拼接图片的特征点
- 拟合透视矩阵得到不同场景下的同一物体,拼接图像
概念:
Sift(尺度不变特征变换),全称是Scale Invariant Feature Transform
Sift提取图像的局部特征,在尺度空间寻找极值点,并提取出其位置、尺度、方向信息。
Sfit的应用范围包括物体辨别、机器人地图感知与导航、影像拼接、3D模型建立、手势识别、影像追踪等。
Sift特征的特点:
- 对视角变化、噪声等也存在一定程度的稳定性;
- 独特性,信息量丰富,适用于在海量特征数据中进行快速,准确的匹配;
- 多量性,即使少数几个物体也可以产生大量的Sfit特征向量;
过程:
Sfit算法的实质是在不同的尺度空间上查找关键点(特征点),计算关键点的大小、方向、尺度信息,利
用这些信息组成关键点对特征点进行描述的问题。Sift所查找的关键点都是一些十分突出,不会因光照,
仿射变换和噪声等因素而变换的“稳定”特征点,如角点、边缘点、暗区的亮点以及亮区的暗点等。
匹配的过程就是对比这些特征点的过程:
专利问题:
SIFT函数注册了专利,2020年之前在商业用途上是收费的。在opencv > 3.4.3中,不再提供。
解决办法:
安装opencv-python 3.4.2.16
以及opencv-contrib-python 3.4.2.16
使用conda和pip安装
pip install opencv-python == 3.4.2.16
pip install opencv-contrib-python == 3.4.2.16
具体步骤:
1. 生成高斯差分金字塔(DOG金字塔),尺度空间构建
尺度空间
- 尺度空间,在摄像头中,计算机无法分辨一个景物的尺度信息。而人眼不同,除了人大脑里已经对物体有了基本的概念(例如正常人在十几米外看到苹果,和在近距离看到苹果,都能认出是苹果)以外,人眼在距离物体近时,能够获得物体足够多的特性,在距离物体远时,能够忽略细节,例如,近距离看一个人脸能看到毛孔,距离远了看不到毛孔等等。
- 在图片信息当中,分辨率都是固定的,要想得到类似人眼的效果,就要把图片弄成不同的分辨率,制作成图像金字塔来模拟人眼的功能,从而在其他图片中进行特征识别时,能够像人眼睛一样,即使要识别的物体尺寸变大或者变小,也能够识别出来。
- 尺度空间,即,试图在图像领域中模拟人眼观察物体的概念与方法。例如:观察一颗树,关键在于我们想要观察是树叶子还是整棵树: