OpenCV与图像处理学习十四——SIFT特征(含代码)

  • 一、SIFT算法
  • 二、SIFT实现过程
  • 三、代码实现

一、SIFT算法

SIFT, 即尺度不变特征变换算法(Scale-invariant feature transform,SIFT) , 是用于图像处理领域的一种算法。 SIFT具有尺度不变性, 可在图像中检测出关键点, 是一种局部特征描述子

其应用范围包含物体辨识、 机器人地图感知与导航、 影像缝合、 3D模型建立、手势辨识、 影像追踪和动作比对,应用广泛。

二、SIFT实现过程

SIFT特性

  1. 独特性, 也就是特征点可分辨性高, 类似指纹, 适合在海量数据中匹配。
  2. 多量性, 提供的特征多。
  3. 高速性, 就是速度快。
  4. 可扩展, 能与其他特征向量联合使用。

SIFT特点

  1. 旋转、 缩放、 平移不变性
  2. 解决图像仿射变换, 投影变换的关键的匹配
  3. 光照影响小
  4. 目标遮挡影响小
  5. 噪声景物影响小

SIFT算法步骤

  1. 尺度空间极值检测点检测
  2. 关键点定位: 去除一些不好的特征点, 保存下来的特征点能够满足稳定性等条件
  3. 关键点方向参数: 获取关键点所在尺度空间的邻域, 然后计算该区域的梯度和方向, 根据计算得到的结果创建方向直方图, 直方图的峰值为主方向的参数
  4. 关键点描述符: 每个关键点用一组向量(位置、 尺度、 方向) 将这个关键点描述出来, 使其不随着光照、 视角等等影响而改变
  5. 关键点匹配: 分别对模板图和实时图建立关键点描述符集合, 通过对比关键点描
    述符来判断两个关键点是否相同

三、代码实现

import cv2
import numpy as npimg = cv2.imread('image/harris2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray, None)     # 找到关键点
img = cv2.drawKeypoints(gray, kp, img)      # 绘制关键点
cv2.imshow('sp', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下所示:

OpenCV与图像处理学习十四——SIFT特征(含代码)相关推荐

  1. OpenCV与图像处理学习十——区域生长算法(含代码)

    OpenCV与图像处理学习十--区域生长算法(含代码) 一.区域生长算法概要 二.区域生长算法原理 三.代码应用 一.区域生长算法概要 区域生长是一种串行区域分割的图像分割方法.区域生长是指从某个像素 ...

  2. OpenCV与图像处理学习十一——分水岭算法(含代码)

    OpenCV与图像处理学习十一--分水岭算法(含代码) 一.分水岭算法概要 二.分水岭算法步骤 三.代码应用 一.分水岭算法概要 任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方 ...

  3. OpenCV与图像处理学习十二——图像形状特征之HOG特征

    OpenCV与图像处理学习十二--图像形状特征之HOG特征 一.图像特征理解 1.1 颜色特征 1.2 纹理特征 1.3 形状特征 1.4 空间关系特征 二.形状特征描述 2.1 HOG特征 2.1. ...

  4. OpenCV与图像处理学习十五——LBP纹理特征(含代码)

    OpenCV与图像处理学习十五--LBP纹理特征(含代码) 一.LBP介绍 二.LBP原理 三.代码应用 一.LBP介绍 LBP(Local Binary Pattern, 局部二值模式) , 是一种 ...

  5. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  6. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  7. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  8. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

    OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...

  9. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

最新文章

  1. Web前端开发必备:《Jquery实战》第3版 介绍
  2. mysql数据库array_mysql数据库array
  3. socket 中 SOCK_STREAM 和 SOCK_DGRAM的区别?
  4. HDU1524(博弈--有向无环图SG函数)
  5. 程序员的国庆节如何安排,你想好了吗?
  6. 表正在被别的用户或进程使用_linux内核对进程的管理分为两个方面
  7. matlab中如何在图片上添加横竖线
  8. C#数字日期转成中文日期
  9. Alibaba Druid 源码阅读(二) 数据库连接池实现初步探索
  10. 深度学习入门:用MNIST完成Autoencoder(续)
  11. Spring+hibernate无法执行更新操作
  12. TotalFinder for Mac(Finder增强工具)v1.14.1
  13. 拓端tecdat|R语言如何和何时使用glmnet岭回归
  14. java native方法使用
  15. 软件测试 PreDay 决策表
  16. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试网络基础)试题及答案操作.doc...
  17. ui设计学习路线图分享送给初学者
  18. 深度操作系统deepin 20.9 正式发布!
  19. 《前端框架Vue.js》
  20. 书单收藏 | 17本中信版畅销书从科普、商业到技术带你轻松理解区块链

热门文章

  1. 怎么给域账号映射服务器,如何给每个域用户映射网络驱动器?
  2. 训练效率低?GPU利用率上不去?快来看看别人家的tricks吧~
  3. 想进美团不知道选哪个技术岗位?这里有一份通关秘籍!
  4. 论文浅尝 - WWW2020 | 生成多跳推理问题以改善机器阅读理解能力
  5. Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建
  6. 国科大高级人工智能7-命题逻辑
  7. Docker添加或者更改容器的端口映射
  8. 图书管理系统~简单流程
  9. 使用ngModel创建组件
  10. 第一节《Git初始化》