目录

sift特征提取步骤

1.   建立高斯差分金字塔

2.关键点(keypoint)位置的确定

3. 去除不好的特征点(非极大值抑制)

一、下载VLFeat的binary包:

二、解压vlfeat-0.9.20-bin.tar文件,得到vlfeat-0.9.20-bin文件,接着再解压vlfeat-0.9.20-bin文件得到一个文件夹(vlfeat-0.9.20)和一个文件(pax_global_header)。

三、在matlab中安装配置

1、一次安装配置方式

4、检查是否安装成功

5 但这样安装并不能保证关闭matlab以后重新使用。所以在matlab的默认路径的情况下,在命令窗口输入:

6、 关闭后重新运行matlab

四、SIFT代码运行


sift特征提取步骤

1.   建立高斯差分金字塔

O组(octave 默认大小为 )照片,每组L层(L=n+3,L一般为3~5) ;一共 O*L张照片。

每一组中每层采用不同的高斯模糊核,下一组由 上一组进行下采样得到。

图片说明了每一组每一层中的照片采用的模糊核是多少。

(第1组的第1层为,第2组第1层为2.... 数学技巧呀)

此例中s=3,也就是 每一组照片的层数=s+3 为6层。

2.关键点(keypoint)位置的确定

看高斯差分金字塔为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,但现在由上面的图片可以看 出,有三个方向(x,y,尺度空间(一组内不同的高斯核,)),所以一个点应该与26个点进行比较。

3. 去除不好的特征点(非极大值抑制)

在实际中这个点有可能只是真正极值点附近的点,即找到的点为“亚极值点”,要进行处理一波,实际用的泰勒展开,进                 行求导来做的,这里忽略了。

还有就是去掉边缘效应:https://blog.csdn.net/abcjennifer/article/details/7639681

(2)VLfeat介绍
              VLFeat是一个跨平台的开源机器视觉库,它囊括了当前流行的机器视觉算法,如SIFT, MSER, HOG, 同时还包含了诸如K-MEANS, Hierarchical K-means的聚类算法。它由C语言编写,并提供了Matlab接口及详细的文档。当前最新的版本是VLFeat 0.9.21 。(2019.4.11)

一、下载VLFeat的binary包:

  • VLFeat 0.9.20 binary package(点击下载)
  • 下载得到vlfeat-0.9.20-bin.tar文件

二、解压vlfeat-0.9.20-bin.tar文件,得到vlfeat-0.9.20-bin文件,接着再解压vlfeat-0.9.20-bin文件得到一个文件夹(vlfeat-0.9.20)和一个文件(pax_global_header)。

三、在matlab中安装配置

1、一次安装配置方式

view plain  copy

其中VLFEATROOT为VLFeat的安装目录,本文中为:
run("D:\Matlab\vlfeat-0.9.21\toolbox/vl_setup")

4、检查是否安装成功

vl_version verbose

则安装成功

5 但这样安装并不能保证关闭matlab以后重新使用。所以在matlab的默认路径的情况下,在命令窗口输入:

edit startup.m

保存并关闭。

6、 关闭后重新运行matlab

输入vl_version
测试是否安装成功,如果成功,则会出现版本号

四、SIFT代码运行

代码

img1ori = imread('Snowball.jpg');
img1 = single(rgb2gray(img1ori));  %single就是转换成单精度的,之前肯定对double更熟悉一点吧%因为后面的vl_sift的输入须要用到单精度灰度图像
%图片2要识别对于的物体
img2ori = imread('Snowball.jpg');
img2 = single(rgb2gray(img2ori));%% 提取SIFT特征,匹配特征点
[f1, d1] = vl_sift(img1,'Levels',5,'PeakThresh', 4);
[f2, d2] = vl_sift(img2,'Levels',5,'PeakThresh', 5);
%f1为生成的四元组[x,y,s,th],分别是特征点的x,y坐标,s为长度空间大小,th指的是主方向
%d1是特征描述子,也就是那个128维的向量
[matches, scores] = vl_ubcmatch(d1, d2);
[dump,scoreind]=sort(scores,'ascend');%% 绘制组合图片
newfig=zeros(size(img1,1), size(img1,2)+size(img2,2),3);  %新构建一个3维数组,行为图片1的%行数,列为图片1和图片2的列数和
newfig(:,1:size(img1,2),:) = img1ori;
newfig(1:size(img2,1) ,(size(img1,2)+1):end,:)=img2ori;
newfig=uint8(newfig);
figure;
image(newfig);   % 绘制组合图片
axis image
% colormap(gray)%% 绘制匹配特征点
figure;
image(newfig); % 绘制组合图片+匹配对于的特征点
axis image
f2Moved=f2;  %因为此时图像在x方向发生了平移的,需要平移的大小为图1的列数
m=size(img1,2)
f2Moved(1,:) = f2Moved(1,:)+size(img1,2);
h1 = vl_plotframe(f1);  %对之前的四元组在组合照片上进行绘画
h2 = vl_plotframe(f2Moved);
set(h1,'color','g','linewidth',2) ;
set(h2,'color','r','linewidth',2);
hold on
% 绘制scores前10%
plotRatio=0.1;
for i= 1:fix(plotRatio*size(matches,2))  %fix是取整函数,这里仅画出找到的匹配的前10%idx = scoreind(i);line([f1(1,matches(1,idx)) f2Moved(1,matches(2,idx))],...[f1(2,matches(1,idx)) f2Moved(2,matches(2,idx))], 'linewidth',1, 'color','b')
end
hold off
%倒数第四行的...是因为matlab一行装不下,属于行行连接符

运行结果

scores是上面matches到的对应点的欧式距离,后面的scoreind是对欧式距离按由小到大进行排序,储存的是距离对于的序号

原文链接:https://blog.csdn.net/zyr_freedom/article/details/89205651

SIFT介绍与matlab+VL_feat实现相关推荐

  1. matlab newelm,Elman神经网络介绍以及Matlab实现

    Elman神经网络介绍以及Matlab实现 发布时间:2018-06-28 19:27, 浏览次数:745 , 标签: Elman Matlab Elman神经网络介绍 1.特点 Elman神经网络是 ...

  2. 独热编码 (One-Hot Encoding) 介绍及MATLAB命令

    独热编码 (One-Hot Encoding) 介绍及MATLAB实现 文章目录 独热编码 (One-Hot Encoding) 介绍及MATLAB实现 1 独热编码 (One-Hot Encodin ...

  3. 详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

       本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示.本文作为本系列的第一篇文章主要介绍如何进行环境的创建,还有一定要记得读前言!!! 本系列文章链接: ------- ...

  4. 模拟退火算法介绍及matlab实现

    模拟退火算法介绍及matlab实现 参数 待求解参数维度:D x i L x_{\text{i}}^L xiL​, x i U x_{\text{i}}^U xiU​:待求解参数的上下限 L:每一温度 ...

  5. matlab特征检测,sift特征检测的matlab程序实现

    [实例简介] sift特征检测的matlab程序实现,多个matlab程序,详细注释,外带试验数据 [实例截图] [核心代码] SIFT_Matlab └── SIFT_YantaoNoemie ├─ ...

  6. matlab灰色预测弱化代码,灰色预测模型介绍及MATLAB代码实现

    灰色预测模型介绍及MATLAB代码实现 灰色预测模型介绍及MATLAB代码实现 文章目录 1. 按 2. 灰色模型介绍 3. 精度检验等级参照表 4. matlab代码 5. 实验数据 5.1. 测试 ...

  7. matlab 思维进化算法,差分进化算法介绍及matlab实现

    引言 差分进化算法是基于群体智能理论的优化算法,是通过群体内个体间的合作与竞争而产生的智能优化搜索算法,它保留了基于种群的全局搜索策略,采用实数编码.基于差分的简单变异操作和"一对一&quo ...

  8. SDM For Face Alignment 流程介绍及Matlab代码实现之训练篇

    SDM 训练阶段的任务如下: 载入标准化的数据(包括400*400的正脸及特征点) 对每一张标准化的图片,模拟人脸检测仪,产生10个扰动的人脸框及相应的初始特征点x0x_0. 求解Δx\Delta x ...

  9. 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)

    目前网络上可以找到的关于SIFT算法Matlab测试代码的资源就是: 1 加拿大University of British Columbia 大学计算机科学系教授 David G. Lowe发表于20 ...

最新文章

  1. Windows Server 2012如何实现双网卡绑定
  2. TcpClient 有好多坑
  3. LeetCode——动态规划:斐波那契数列
  4. IOS-网络(文件上传)
  5. 【LeetCode笔记】347. 前K个高频元素(Java、优先队列、小顶堆、HashMap)
  6. Python:学习笔记之函数的递归
  7. AliSQL编译安装
  8. 整合阿里云视频播放器——Coding在线(十四)
  9. ERP项目学习(一)
  10. 计算机专业学历真的那么重要吗?又该怎么做
  11. windows驱动开发4:WDM、WDF等驱动基本概念
  12. 中投、汇金、四大国有资产管理公司、华融、长城、东方、信达
  13. 统治IT行业的定律-摩尔定律
  14. 阿里云账号注册及常用产品申请
  15. 树莓派GPIO针脚在python中BCM与BOARD模式
  16. android版本内存卡,都8GB内存了 为何安卓手机还是这么卡?
  17. zz from 古文中惊艳的句子
  18. 数据可视化、信息可视化与知识可视化
  19. historic historical
  20. Andriod networking

热门文章

  1. 在云服务器中搭建MQTT平台
  2. Nifi博客之一:概述贴
  3. java基于word模板动态生成word及转pdf实践
  4. SQLServer数据库漏洞
  5. Web前端学习笔记20:Vue_路由_Vue Router_模块化的分类_babel_webpack_Element-UI
  6. 【BZOJ4552】【TJOI2016HEOI2016】排序(线段树、二分)
  7. 唐骏的秘密:我从最后一名开始努力
  8. (专升本)数字多媒体技术基础(图形/图像处理软件)
  9. 运用广告监测系统,上海发布十二起违法广告典型案例-十目监测
  10. 会议平板Android和Windows系统区别_哪个好?