SIFT特征检测——Python实现
SIFT概述
- SIFT的全称是 Scale Invariant Feature Transform(尺度不变特征变换),是由加拿大教授David G.Lowe在1999年在
- 会议文章中提出,2004年发表在IJCV上, 是计算机视觉界近二十年来引用率最高的文章之一
- SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种稳定的局部特征
- SIFT的特征提取方面对计算机视觉近年来的发展影响深远,特别是几乎影响到了后续所有的角点提取和匹配算法
尺度空间:
在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。
尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。
高斯金字塔:
尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:
1. 对图像做不同尺度的高斯模糊;
2. 对图像做降采样(隔点采样)。
图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。
SIFT的优点:
- 稳定性: 对旋转、尺度缩放、亮度变化等保持不变性,是一种稳定的局部特征;
- 独特性: 独特性好,信息量丰富,适用于海量特征库进行快速、准确的匹配;
- 多量性: 即使是很少几个物体也可以产生大量的SIFT特征;
- 高速性: 改进的SIFT匹配算法甚至可以达到实时性;
- 扩展性: 可以很方便的与其他的特征向量进行联合 。
SIFT的缺点
SIFT在图像的不变特征提取方面拥有无与伦比的优势,但并不完美,仍然存在:
1. 实时性不高。
2. 有时特征点较少。
3. 对边缘光滑的目标无法准确提取特征点。
Python实现:
import cv2 as cv
import numpy as np# 1.使用SIFT算子检测角点# 读取图像并旋转90度
img = cv.imread("left03.jpg")
img1 = np.rot90(img)# 创建检测算子,提取描述子
sift = cv.xfeatures2d_SIFT.create(100)
kp1, dst1 = sift.detectAndCompute(img, None)
kp2, dst2 = sift.detectAndCompute(img1, None)# BFMatcher类的创建
bf = cv.BFMatcher.create(cv.NORM_L2)
# 描述子匹配
matches = bf.knnMatch(dst1, dst2, k=2)# 筛选比较好的匹配点
good = []
for m, n in matches:if m.distance < 0.75 * n.distance:good.append([m])# cv2.drawMatchesKnn expects list of lists as matches.
img3 = cv.drawMatchesKnn(img, kp1, img1, kp2, good, flags=2, outImg=None)
cv.imshow('drawMatchesKnn', img3)cv.waitKey()
cv.destroyAllWindows()
实现效果:
SIFT特征检测——Python实现相关推荐
- OpenCV + CPP 系列(卅五)图像特征提取(SURF特征检测、SIFT特征检测)
文章目录 一.SIFT特征检测 二.SURF特征检测 演示SURF.SIFT特征检测 OpenCV-python 角点特征检测之二(SIFT.SURF.ORB) 一.SIFT特征检测 SIFT(Sca ...
- sift特征检测与匹配
文章目录 一 实验背景 1.sift算法介绍 1.1sift算法特点 1.2sift算法可以解决的问题 1.3 sift算法实现具体步骤 2.关键点相关概念 2.1关键点(特征点) 2.2尺度空间 3 ...
- matlab特征检测,sift特征检测的matlab程序实现
[实例简介] sift特征检测的matlab程序实现,多个matlab程序,详细注释,外带试验数据 [实例截图] [核心代码] SIFT_Matlab └── SIFT_YantaoNoemie ├─ ...
- OpenCV图像特征提取学习四,SIFT特征检测算法
一.SIFT特征检测概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征具有对旋转.尺度 ...
- SIFT特征检测与特征匹配
在网上的查到的代码大多是基于opencv2.4.9的特征检测算法,由于sift特征检测算法申请了专利,使得到了3.x版本以后需要配置contribe,但是以前的代码也是需要进行相应的转换. 下面的代码 ...
- SIFT 特征检测及匹配
#<opencv2/opencv.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/ ...
- SIFT特征检测算子和sift = cv2.xfeatures2d.SIFT_create出错的解决办法
文章目录 一.安装额外的opencv-contrib-python库,并保持版本一致 二.两个库同时回退版本到3.4.2.16的版本 三.测试SIFT算子匹配点的一个案例 sift = cv2.xfe ...
- AI笔记: 计算机视觉之SIFT特征检测: 尺度空间、二维高斯函数、高斯金字塔
SIFT概述 SIFT的全称是Scale Invariant Feature Transform(尺度不变特征变换),是由加拿大教授David G.Lowe在1999年发表于计算机视觉国际会议,200 ...
- SIFT特征检测(一)
为什么80%的码农都做不了架构师?>>> (还没推完公式先贴上matlab和c的代码 from官方文档) 因为官方的shift.m直接跑起来会出问题.我这儿改良了部分代码 改s ...
最新文章
- Spring《五》集合的注入方式
- c语言字母输出什么意思,C语言中字符的输入输出以及计算字符个数的方法详解...
- 【C#程序设计】教学讲义——第三章:C#语言基础
- ctf php sql注入,CTF—攻防练习之HTTP—SQL注入(SSI注入)
- php反序列化漏洞 freebuf,最全的PHP反序列化漏洞的理解和应用
- 开发 Windows 8 Bing地图应用(2)
- golang 包管理工具
- 4G模块UICC逻辑通道入口+CGLA
- 【POI】 模板导出 四
- Dreamweaver文字或图片如何添加空链接代码
- 用Python+Appium自动写网课考试
- Setup Factory安装及程序安装包制作教程
- 2020-10-18 硬件电路设计之三极管放大电路【B站】
- 《A Neural Layered Model for Nested Named Entity Recognition》
- 笔记本外接RTX 2080显卡
- 苹果手机自带表格软件_手机自带的软件无法卸载?教你一招”!
- 对于一个大数据应用项目/产品的落地,可以大致总结为五大步骤阶段?
- dpdk课程学习之练习笔记四(dns预备)
- LINUX设置DNS
- Matlab2013a学习之男女的声音识别