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

OpenCV与图像处理学习十四——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 np

img = 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()

结果如下所示:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值