OpenCVSIFT特征检测的原理及其实现步骤

OpenCVSIFT特征检测的原理及其实现步骤
本⽂架构
SIFT简介
SIFT算法的实质
SIFT算法的特点
SIFT算法可以解决哪些问题
SIFT算法的实现步骤
尺度空间的获取–⾼斯模糊(必备知识)
SIFT算法实现的第⼀步–尺度空间极值检测
SIFT算法实现的第⼆步–关键点定位
SIFT算法实现的第三步–关键点⽅向定位(⽅向确定)
SIFT算法实现的第四步–关键点描述
SIFT的缺点
SIFT实现代码
SIFT简介
SIFT(Scale-invariant feature transform)是⼀种电脑视觉的算法,⽤来侦测与描述影像中的局部性特征,并在空间尺度中寻极值点,提取出特征在图像中的位置、尺度、以及旋转不变量。
SIFT是基于物体上的⼀些局部外观的兴趣点进⾏检测与影像的⼤⼩和旋转⽆关,同时对于光线、噪声、微视⾓改变的容忍度也相当⾼,基于这些特点,很容易辨识图像中的物体⽽且少有误认。
SIFT对于部分物体遮蔽的侦测率也相当⾼,甚⾄只需要3个以上的SIFT物体特征就⾜以计算出位置与⽅位。(带着⼝罩进⾏⼈脸识别)SIFT应⽤范围包含物体辨识、机器⼈地图感知与导航、影像缝合、3D模型建⽴、⼿势辨识、影像追踪和动作⽐对。
SIFT算法的实质
SIFT算法的实质是在不同的尺度空间上查关键点(特征点),并计算出关键点的⽅向。
SIFT所查到的关键点是⼀些⼗分突出,不会因光照,仿射变换和噪⾳等因素⽽变化的点,如⾓点、边缘点、暗区的亮点及亮区的暗点等
SIFT算法的特点
1. 稳定性:SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度、视⾓变化、仿射变换、噪声变化保持不变性
2. 独特性:信息量丰富,适⽤于在海量特征数据库中进⾏快速、准确的匹配
3. 多量性:即使少数的⼏个物体也可以产⽣⼤量的SIFT特征向量
4. ⾼速性:经优化的SIFT匹配算法甚⾄可以达到实时的要求
5. 可扩展性:可以很⽅便的与其他形式的特征向量进⾏联合。(⽐如对位置的限制、对于⼤⼩的限制)
SIFT算法可以解决那些问题
⽬标的旋转、缩放、平移(RST)图像仿射/投影变换(视点viewpoint)光照影响(illumination)⽬标遮挡(occlusion)杂物场景(clutter)
噪声
对于以上这些问题,虽然SIFI可以解决,但还是需要考虑外界的⼲扰因素的(影响识别的准确率)
SIFT算法的实现步骤
1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过⾼斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
2. 关键点定位:在每个候选的位置上,通过⼀个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
3. ⽅向确定:基于图像局部的梯度⽅向,分配给每个关键点位置⼀个或多个⽅向。所有后⾯的对图像数据的操作都相对于关键点的⽅
向、尺度和位置进⾏变换,从⽽提供对于这些变换的不变性。
眼动仪4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成⼀种表⽰,这种表⽰允许⽐较⼤
的局部形状的变形和光照变化。
尺度空间的获取–⾼斯模糊
SIFT算法是在不同的尺度空间上查关键点,⽽尺度空间的获取需要使⽤⾼斯模糊来实现。
可能你会疑惑,什么是尺度空间呢?( ´ ω ) (._.`)
尺度空间的⼤体意思是:多个尺度下观察⽬标,然后加以综合的分析和理解(可能还有点抽象)
举个例⼦:⽐如放学去⾷堂,此时⾷堂就是你的观察⽬标,在你离⾷堂越近的时候,你看⾷堂可能会更清晰(这就是不同尺度下观察⾷堂),也就是说不同的尺度空间对于⽬标的观察是不同的(有点扯远了,哈哈)(到后⾯会详细的讲解什么是尺度空间~ 先了解个⼤概)那什么⼜是⾼斯模糊呢?
⾼斯模糊可以理解为⼀种图像的滤波器,使⽤正态分布来计算模糊模板(记住就⾏哈),然后使⽤这个模板与原图进⾏卷积运算,从⽽达到模糊图像的⽬的(为什么SIFT要模糊图像,我稍后解答)当然我们还需要了解N维空间的正态分布⽅程(⽅便理解~):是正态分布的标准差,的值越⼤,图像越是模糊(平滑)
是模糊半径,就是指模板元素到模板中⼼的距离(有点抽象哈)
公式有点抽象,我们来举个例⼦。
有⼀个⼆维模板,他的⼤⼩是m*n,那么这个模板上的元素(x,y)对应的⾼斯计算公式是:公式这回应该是了解如何使⽤了(记住公式就得了,咱不搞数学哈(^_−)☆)
有了公式,咱们再搞个可视化看看:从图像中,我们不难看出在⼆维空间中,曲⾯的等⾼线是从中⼼开始呈正态分布的同⼼圆。(这个应该好理解)
我们在回归的卷积的问题,如果⼀个分布不为零的像素组成的卷积矩阵与原图形做变换,那么得到的结果会是什么呢?
G (r )=e ()2πδ2N 1−2δ
2r 2
δδr G (x ,y )=e ()2πδ2N 1−2δ2
()+()2222
⾸先,我们回归到卷积的原理上,如果进⾏卷积,每个像素的值都是周围相邻像素值得加权平均吧(此处⽆异议)
那么,原图像的像素的值就有了最⼤的⾼斯分布值,也就有了最⼤的权重
当然那些距离原图像像素远的像素值,权重也就是⼩的(可以理解吧)
那么以上的这波操作,会⽐其他类型的均衡模糊滤波器更⾼的保留边缘效果。
(读到这⾥,你可能会猜想⼀些事情,模糊图像和SIFT有什么关系呢(✪ω✪),好像有答案啦~)
从理论上来说,如果图形中的每个点的分布都不为零,那可要计算整个图⽚了
不过,在实际应⽤中,计算⾼斯函数的离散近似的时候,往往将距离⼤于的像素(距离太远)都看作是不起作⽤的,通俗的说,就是不⽤计算(⽐如上⾯的那个图像,咱们掐尖计算即可)
通常,图像处理程序只需要计算的矩阵就可以保证相关像素的影响(科学家研究的,记住就⾏啦~)
根据的值,我们可以计算⾼斯模板矩阵的⼤⼩,使⽤
公式,我们可以计算⾼斯模
板矩阵的值,并与原图像做卷积,这样就可以获得了原图像的平滑(⾼斯模糊)图像
萨拉 帕克斯顿
为了确保模板矩阵中的元素在[0, 1]之间,需要将模板进⾏归⼀化处理,即可得5*5的⾼斯模板卷积⽰意图:
我们再来看看效果图~~
3δ(6δ+1)∗(6δ+1)δ(6δ+1)∗(6δ+1)G (x ,y )=
e ()2πδ2N 1−2δ2()+()2222
象征主义
通过上⾯的图⽚,再次确认⼆维⾼斯模板实现了模糊图像的⽬的(。-_-。)
图b和图c 就是因为模板矩阵的关系,从⽽造成了边缘图像缺失(模糊了~)
的值越⼤,缺失的像素也就越多,丢弃模板会造成⿊边(图d)
当然,我们也不能忘记⼀点,的值越⼤,咱的计算量也是成⼏何倍的增长
怎么优化这个计算呢?我们再次引⼊⾼斯函数的可分离性~
⾼斯函数的可分离性是指:
⽤⼆维矩阵变换得到的效果也可以等同于在⽔平和竖直⽅向各做⼀次⾼斯矩阵变换
⽤公式来解释的话,就是由原来的转换成了,时间复杂度成⼏何的形式下降了~
【这⾥的m、n是⾼斯矩阵的维数,M、N是⼆维图像的维数】
δδO (m ∗n ∗M ∗N )O (n ∗M ∗N )+O (n ∗M ∗N )
内江师范学院学报
两次⼀维的⾼斯卷积将消除⼆维的⾼斯矩阵所产⽣的边缘,可以参考下⾯的卷积⽰意图
分离⾼斯模糊的效果图(
看到图像也不赖吧,既可以达到降低算法复杂度、⼜达到了预期的效果,堪称完美~~
(⾼斯模糊处理图⽚的⽅式就先说到这⾥,不知道⼩伙伴有没有明⽩~)
SIFT算法实现的第⼀步–尺度空间极值检测
尺度空间是使⽤⾼斯⾦字塔表⽰的(有点抽象,后⾯会详细的介绍⾼斯⾦字塔,这⾥先了解着)
尺度空间的基本思想是啥呢?
在图像信息处理模型中引⼊⼀个被视为尺度的参数,通过连续变化尺度参数,就可以获得多尺度下的尺度空间序列。
我们再对这些序列进⾏尺度空间主轮廓的提取,并以这个主轮廓作为⼀种特征向量,实现边缘、⾓点检测、以及不同分辨率的特征提取等。(额,这⾥的主轮廓暂且就理解为⽬标图像的轮廓吧~~)
尺度空间的⽅法将传统的单尺度图形信息处理技术 纳⼊ 尺度不断变化的动态分析框架中,这样容易获取图像的本质特征了。
尺度空间中各尺度图像的模糊程度逐渐变⼤的过程,可以理解为模拟⼈在距离⽬标由近到远时⽬标落在视⽹膜上形成的过程(可以回忆上⾯所讲的⾷堂的例⼦哦~)
(敲⿊板、重点来了~)
尺度空间满⾜视觉不变性。啥⼜是视觉不变性呢?
当我们⽤眼睛观察物体的时候
⼀⽅⾯,当物体所处背景的光照条件变化时,视⽹膜感知的图形的亮度⽔平和对⽐度是不同的,所以我们想要实验成功,那么就减少⼀部分的影响,因此我们需要尺度空间算⼦对图像的分析不受图像的灰度⽔平和对⽐度的变化影响,也就是要满⾜灰度不变性和对⽐度的不变性。另⼀⽅⾯,相对于某⼀个固定的坐标系,当观察者和物体之间的相对位置发⽣变化时,视⽹膜所感知的图像的位置、⼤⼩、⾓度、和形状是不同的,所以呢,我们还需要尺度空间算⼦对图像的分析和图像的位置、⼤⼩、⾓度心理预期
以及仿射变换⽆关,也就是要满⾜:平移不变性、尺度不变性、欧⼏⾥德不变性以及反射不变性等。(晕,好多不变性~)
说到这⾥可能你会对尺度空间有了⼤体的了解,那么尺度空间该如何表⽰呢?
⼀个图形的尺度空间可以被定义为δ=2.0L (x ,y ,δ)
L (x ,y ,δ)=G (x ,y ,δ)∗I (x ,y )
雏鹰争章网

本文发布于:2024-09-21 03:30:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/75962.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   尺度   尺度空间   算法   模板   像素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议