博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SIFT特征检测
阅读量:2263 次
发布时间:2019-05-09

本文共 1162 字,大约阅读时间需要 3 分钟。

       SIFT(Scale-Invariant Feature Transform)特征,即尺度不变特征变换,用来侦测与描述图像中的局部性特征。

SIFT算法的应用:

在适当的条件下完成两幅图像中物体的匹配   。    

如果两幅图像中的物体一般只是旋转和缩放的关系,加上图像的亮度及对比度的不同,要在这些条件下要实现物体之间的匹配,SIFT算法的先驱及其发明者想到只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应。

如何找到这样的匹配点呢?SIFT/SURF作者的想法是首先找到图像中的一些“稳定点”,这些点是一些特殊的点,不会因为视角的改变、光照的变化、噪音的干扰而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。这样如果两幅图像中有相同的景物,那么这些稳定点就会在两幅图像的相同景物上同时出现,这样就能实现匹配。因此,SIFT/SURF算法的基础是稳定点。

SIFT算法实现物体识别主要有三大工序:

1、提取关键点;

2、对关键点附加详细的信息(局部特征)也就是所谓的描述器;

3、通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,也就建立了景物间的对应关系。

 

提取特征点代码示例:

#include 
#include "opencv2/opencv.hpp"#include "opencv2/xfeatures2d/nonfree.hpp"using namespace cv;using namespace cv::xfeatures2d;using namespace std;int main(int argc, char** argv) { Mat src = imread("D:/cv400/data/lena.jpg", 0); if (src.empty()) { cout << "Load image error..." << endl; return -1; } //namedWindow("input image", WINDOW_AUTOSIZE); imshow("input image", src); double t1 = (double)getTickCount(); int numFeatures = 400; Ptr
detector = SIFT::create(numFeatures); vector
keypoints; detector->detect(src, keypoints, Mat()); cout<<"Total KeyPoints : "<< keypoints.size()<

运行截图:

此图检测耗时106ms

转载地址:http://lbccb.baihongyu.com/

你可能感兴趣的文章
nginx location详解
查看>>
mysql体系结构分析
查看>>
nginx、php-fpm等添加自启动
查看>>
引用计数原则
查看>>
类似excel格式数据的数组处理
查看>>
php代码实现mysql连接池效果
查看>>
魔术方法小记
查看>>
http协议报头详解
查看>>
memcache方式实现session共享
查看>>
快排法思路与代码
查看>>
memcachesession
查看>>
netstat详解
查看>>
nginx、php-fpm启动脚本详解
查看>>
php多继承详解
查看>>
static 和 self的区别
查看>>
nginx - Access Denied 问题排查
查看>>
php7.1(linux) redis 扩展安装
查看>>
crontab 检测是否正常运行
查看>>
is not within the allowed path
查看>>
nginx设置反向代理,获取真实客户端ip
查看>>