场景识别学习笔记日记2016.11.24

本文介绍如何使用Matlab进行SIFT特征提取,包括处理图像使其符合vl_sift函数的要求,以及如何利用vl_sift进行特征点匹配。同时对比了Matlab自带的SIFT函数与vl_sift函数的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、几个重要的网址

 1、matlab 安装 vl_feat:http://blog.youkuaiyun.com/u013213396/article/details/42629105 

摘要:这个包里面含有各种图像处理需要的工具,比如提取 hog,sift 特征,训练线性 svm 参数等。

2、布朗大学公开课中的第三个作业,和场景识别有关:http://cs.brown.edu/courses/csci1430/proj3/

3、详细讲了讲vl_sift:http://www.cnblogs.com/tgyf/archive/2013/06/02/3113648.html


二、SIFT

1、vl_sift

一般教程:参考官方文档http://www.vlfeat.org/overview/sift.html

中文翻译教程:http://blog.youkuaiyun.com/linj_m/article/details/9833473

问题所在:vl_sift始终要求输入必须是灰度、single图像。官方示例图片给出的single()纯属扯淡。

具体解决方案:

img=imread('img.jpg');
img1=rgb2gray(img);
img2=im2single(img1);%这才是标配的转化single图像写法
f=vl_sift(img2);


2、matlab自带sift和vl_sift代码比较

%% vl_sift

% 准备工作,包括single和灰度化
figure;
I = imread('notebook1.jpg');
I = im2single(I) ;

%图像特征点的提取,f,d分别代表特征点坐标及对象描述子
%The matrix f has a column for each frame. A frame is a disk of center
%f(1:2), scale f(3) and orientation f(4) .
[f,d] = vl_sift(I) ;

h1 = vl_plotframe(f(:,:)) ;
h2 = vl_plotframe(f(:,:)) ;
set(h1,'color','k','linewidth',3) ;
set(h2,'color','y','linewidth',2) ;


%% vl_sift匹配
Ia = imread('notebook1.jpg');
Ia = im2single(Ia);
Ib = imread('notebook2.jpg');
Ib = im2single(Ib);
[fa, da] = vl_sift(Ia);  
[fb, db] = vl_sift(Ib) ;  
% matches存储的最相近两点,scores存储的代价距离
% 小技巧:size(matches,2)可以得知匹配点数量
[matches, scores] = vl_ubcmatch(da, db);




%% matlab自带的sift特征提取及显示
[image, descrips, locs] = sift('notebook1.jpg');  
showkeys(image, locs);




%% 普通匹配
match('notebook1.jpg','notebook2.jpg');





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值