基于OpenCv的图像SIFT特征点检测和特征匹配

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

基于OpenCv的图像SIFT特征点检测和特征匹配

任务需求

SIFT是一种基于尺度空间的,对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。SIFT是迄今使用最为广泛的一种特征提取方法。
图像点特征能够代表图像的内容,所以在运动目标跟踪、物体识别、图像配准、全景图像的拼接、三维重建等方向中,图像特征点的提取都至关重要,特征点提取的好坏将直接决定目标跟踪、物体识别、图像匹配、图像拼接、三维重建的准确度。
例如下图为基于SIFT特征的全景图像拼接。

在这里插入图片描述

在这里插入图片描述

任务目标

1、掌握SIFT特征点检测的简单步骤

2、掌握基于OpenCv进行SIFT特征点检测

3、掌握使用SIFT描述子进行蛮力匹配

任务环境

1、jupyter开发环境

2、OpenCv

3、python3.6

任务实施过程

一、SIFT特征点检测

SIFT是一种基于尺度空间的,对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。

SIFT算法主要分为四个步骤:

  • 1.多尺度空间极值点检测:通过高斯金字塔构建高斯差分尺度空间(DOG),寻找尺度空间的极值点,中间的检测点要和其所在图像的上下两层和本层的3×3邻域26个像素点进行比较。
  • 2.特征点精确定位:对尺度空间DoG函数进行曲线拟合,计算其极值点,从而实现关键点的精确定位。
  • 3.特征点的主方向计算:使用直方图统计邻域内像素的梯度和方向,极值点周围区域方向梯度直方图的主峰值也就是特征点的主方向。
  • 4.生成特征点描述:对每个关键点使用16×16的窗口,4×4共16个种子点来描述,这样一个关键点就可以产生128维的SIFT特征向量。

在这里插入图片描述

1.导入所需要的工具包和图像
import cv2 # 导入opencv
import matplotlib.pyplot as plt # 导入绘图模块
import numpy as np # 导入numpy库
from utils import im_show # 导入显示图像函数
# 绘制图像直接展示,不用调用plt.show()
%matplotlib inline 
# 用来正常显示中文标签
plt.rc('font',family="SimHei")
# 读取图像
img = cv2.imread(r'./experiment/data/home.jpg')
# 设置画布大小
plt.figure(figsize=(6,6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂开发的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值