SIFT算法的Matlab实现
Posted sununs11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SIFT算法的Matlab实现相关的知识,希望对你有一定的参考价值。
个人博客原文:http://www.sun11.me/blog/2016/sift-implementation-in-matlab/
这是一次作业,内容是给出两张图像,检测特征点和匹配特征点。要求不能用诸如OpenCV的现成特征点检测函数。于是就只能造轮子了,写了这个Matlab版的sift。(其实就是把c语言的opensift翻译成了matlab
以下是算法流程,其实网上的类似博文已经很多了,只不过我看的过程中也看得不很明白,只能对照着好几个看,所以干脆自己又写了一遍。下面的图均来自于参考资料中,然而参考资料的图也是来自于参考资料的参考资料中。
1. 构建尺度空间
定理1 对图像做
σ=σ1 的高斯平滑,再做一次σ=σ2 的高斯平滑,等效于对原图像做一次σ=σ21+σ22??????√ 的高斯平滑。
1.1 构建高斯金字塔
高斯卷积核是实现尺度变换的唯一线性核(Koenderink, 1984; Lindeberg, 1994)。
一幅图像的尺度空间被定义为对其做可变尺度的高斯卷积:
对于给定的彩色图像,转化为灰度图像,用不同大小的
为了得到更多的特征点,将图像扩大为原来的两倍。假设原图像已有
上一个octave的图像的长度和宽度分别是下一个octave的图像的两倍。因此图像组数(octaves)可由图像大小决定,将其设为
设第m个octave的第n张图像相对于原始图像的参数
如上图所示,在第一个octave中尺度为
以上是关于SIFT算法的Matlab实现的主要内容,如果未能解决你的问题,请参考以下文章