SIFT特征提取算法实验

本文详细介绍了SIFT特征提取算法的定义、实验过程和应用,包括构造数据集、检测兴趣点、特征匹配、图像检索和地理标记图像匹配。实验表明SIFT算法具有尺度、旋转和光照不变性,但在某些情况下,如边缘光滑的目标,提取速度较慢。此外,还探讨了RANSAC算法在图像拼接中的应用。
摘要由CSDN通过智能技术生成

SIFT特征提取算法实验

  1. SIFT特征提取算法
    1.1 算法定义
    1.2 SIFT特征提取算法实验:
    1.3 构造数据集

  2. 检测提取感兴趣点
    2.1代码实现:
    2.2.绘制特征点代码分析:

  3. 提取数据集中每张图片的SIFT特征并展示
    3.1实现对比:
    3.2代码实现:

4.计算两张图片间的SIFT特征匹配结果
4.1匹配实现:
4.2代码实现:

5.数据集内检索匹配图像
5.1代码实现:
5.2分析:

6.匹配地理标记图像
6.1代码实现:
6.2分析

  1. ANSAC算法
    7.1定义

  2. 全景拼接
    8.1 步骤
    8.2 实验结果
    8.3 总结

1.SIFT特征提取算法
1.1【定义】
尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结。
SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。

1.2 SIFT特征提取算法实验:
通过实验验证了SIFT特征特性:尺度不变性、旋转不变性、光照不变性、鉴别性强,信息量丰富;但同时也发现了SIFT特征提取的缺点:实时性不高,因为不断的下采样和插值等操作、对于边缘光滑的目标无法准确提取特征点,算法速度过慢尤其当图片角点比较复杂的时候。SIFT特征在一下方面应用广泛:主要解决图像配准和目标识别跟踪中下述问题;目标的旋转、缩放、平移,图像的仿射/射影变换,部分减轻光照影响,目标的部分遮挡物场景、噪声。

1.3 构造数据集
在这里插入图片描述
2. 检测提取感兴趣点:

在这里插入图片描述
在这里插入图片描述

2.1代码实现:
在这里插入图片描述
2.2.绘制特征点代码分析:

在这里插入图片描述

3.提取数据集中每张图片的SIFT特征并展示
3.1实现对比:
在这里插入图片描述
在这里插入图片描述
3.2代码实现:
在这里插入图片描述
4.计算两张图片间的SIFT特征匹配结果
4.1匹配实现:
在这里插入图片描述
4.2代码实现:
在这里插入图片描述
在这里插入图片描述
5.给定一张输入的图片,在数据集内部进行检索,输出与其匹配最多的三张图片
5.1代码实现:
在这里插入图片描述
输入图片:
在这里插入图片描述
输出:
在这里插入图片描述
在这里插入图片描述
5.2 分析:

输入图片与数据集中图片两两进行特征匹配后的匹配数保存在npy文件中,要找到与输入图片匹配特征点最多的图,最后将npy文件中数值最大的三个位置输出。SIFT匹配的结果非常精确,由此可见SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种比较稳定的局部特征。
输入照片中的树木较多,输出照片也都是含有树木较多的图片,可能背后的楼房一定程度下会影响主要匹配对象的匹配度,但总体来说还是很准确的。匹配如此准确与特征点定位、特征方向赋值、特征点描述等方面密不可分。SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。

6.匹配地理标记图像
6.1代码实现:
在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述
分析:
我的数据集中有十五张同一场景不同方向角度的照片,由实验结果可以看到,图片的匹配度很高,类似方向的照片匹配度最高,因为类似方向中包含特征点比较多,在计算匹配度时与其他图片特征点连接率最大。先前用了拍摄的原图运行代码,速度非常慢,于是为了加快代码运行速度,降低了图片像素,但这同时也降低算法对图片特征点的检索,对于局部图特征点的检索较好。但因为我拍摄的图片都是同一场景的非常相似,所以不能做出对比实验,下次实验中会加以调整。

  1. ANSAC算法

7.1定义:
随机抽样一致算法(random sample consensus,RANSAC),采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。
RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

7.2 RANSAC算法步骤:

  1. 随机从数据集中随机抽出4个样本数据 (此4个样本之间不能共线),计算出变换矩阵H,记为模型M;

  2. 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集 I ;

  3. 如果当前内点集 I 元素个数大于最优内点集 I_best , 则更新 I_best = I,同时更新迭代次数k ;

  4. 如果迭代次数大于k,则退出 ; 否则迭代次数加1,并重复上述步骤;

注:迭代次数k在不大于最大迭代次数的情况下,是在不断更新而不是固定的,见上方k的更新;
其中,p为置信度,一般取0.995;w为”内点”的比例 ; m为计算模型所需要的最少样本数=4;
求得单

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值