Sift 理解简单总结

Sift 理解简单总结

一 、 sift 相关函数:
1、提取:
openCV官网

nfeatures:特征点数目(算法对检测出的特征点排名,返回最好的nfeatures个特征点)。
nOctaveLayers:金字塔中每组的层数(算法自动计算,和输入图像行、列维数有关)。
contrastThreshold:过滤掉较差的特征点的对阈值。contrastThreshold越大,返回的特征点越少。
edgeThreshold:过滤掉边缘效应的阈值。edgeThreshold越大,特征点越多(被多滤掉的越少)。
sigma:金字塔第0层图像高斯滤波系数,也就是σ。

2、关键点:
在这里插入图片描述
1)pt:
关键点在输入图像中的x,y坐标(在DoG金字塔中检索相邻尺度空间邻域点的极值)

2)size:
关键点的尺度坐标:(尺度坐标和具体对图像进行模糊的系数有对应关系但不等同:此处为自己理解)
解释1
解释2

源码:kpt.size = sigma * powf(2.f, (layer + xi) / nOctaveLayers) * (1 << octv) * 2;
3)angle:
关键点的角度:关键点邻域内统计出的梯度直方图最大的方向为该关键点的角度(在高斯金字塔对应层上,且实际以max的80%为阈值,可能一个点有多个角度)
在这里插入图片描述

4)response:
关键点位置处的响应值,即关键点位置归一化的像素灰度值contr,代码如下:
在这里插入图片描述
5)octave:
尺度坐标,sigma和组数(octave)和组内层数(layer)的一种格式表述方法,在提取描述子时会按照该格式解包,获取组数和层数。
在这里插入图片描述
二、流程:
1)输入原始图像,建立高斯金字塔(nOctaves+3)
2)利用高斯金字塔建立DoG金字塔(nOctaves+2);这里层数是为了在DoG的每一组图像中可以完成n个尺度的关键点提取,因为提取关键点是每3层对比一次,因此会舍弃每组中的第一层和最顶层。
3)在DoG中找到关键点位置,并进行插值找到精确解;得到除方向angle外的其它Key point参数信息;
4)利用keypoint的信息,找到高斯金字塔中的图像,统计直方图获取关键点的方向angle,完成keypoint的存储。(相同位置不同角度的点,此时有一定的顺序,从j=0~n,但由于有方向拟合操作等,不一定是角度由小到大排序)
5)根据存储的Key point中octave的信息,获取组,层的索引,将关键点邻域坐标轴旋转到和angle相同的角度,再次确定一个邻域(这个邻域坐标以旋转后的坐标进行表示)
6)统计4 * 4区域的梯度信息,每个区域分成8个方向(45°为单位),共4 * 4 * 8,得到128维sift特征描述子。

参考链接:(图片引用自下述链接)
1、https://blog.csdn.net/zddblog/article/details/7521424
2、https://blog.csdn.net/xiaowei_cqu/article/details/8069548
3、https://blog.csdn.net/shouhuxianjian/article/details/48736009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值