OpenCV 实现 SIFT→SURF 算法关键点检测实现

目录

1,SIFT算法原理

1.1,基本流程

1.1.1   尺度空间极值检测

1.1.2 关键点定位

1.1.3  关键点方向确定

1.1.4  关键点描述

1.1.5   总结

1.2   SURF原理

2  代码实现

3  结果展示

4,你肯定会遇到报错

cv2.error: OpenCV(3.4.8) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cp


SIFT(Scale-Invariant Feature Transform)和SURF(Speeded Up Robust Features)是两种常用的图像特征点检测算法,可以实现在不同尺度下对图像中的关键点进行检测。OpenCV是一个流行的计算机视觉库,提供了实现SIFT和SURF算法的函数和方法。

SIFT算法是一种基于尺度空间的特征检测与描述算法。它首先通过高斯差分金字塔生成尺度空间,然后在每个尺度上使用DoG(Difference of Gaussians)算子来检测关键点。关键点的位置和尺度信息通过极值点检测和插值得到。接着,使用方向梯度直方图(Histogram of Oriented Gradients)描述关键点的方向,最后生成关键点的特征描述符。

SURF算法是一种基于积分图像的快速特征检测算法。它通过使用盒子滤波器在多个尺度下计算积分图像,然后通过Hessian矩阵的行列式来检测关键点。SURF算法还引入了一种加速方式——快速Hessian矩阵特征点检测,通过减少计算量来提高检测速度。关键点的定位和尺度信息由Hessian矩阵计算得到,然后使用Haar小波描述关键点的方向,最后生成关键点的特征描述符。

在OpenCV中,可以使用cv2.xfeatures2d.SIFT_create()函数创建SIFT算法对象,并使用detectAndCompute()方法检测图像中的SIFT关键点和描述符。类似地,可以使用cv2.xfeatures2d.SURF_create()函数创建SURF算法对象,通过调用detectAndCompute()方法实现SURF关键点和描述符的检测。

SIFT和SURF算法都具有较好的尺度不变性和鲁棒性,适用于许多计算机视觉应用,如图像匹配、目标跟踪和三维重建等。然而,需要注意的是,由于SIFT和SURF算法的专利限制,OpenCV中的默认编译版本可能不包含这些算法。如果需要使用SIFT和SURF算法,可以选择使用非默认的编译版本或者其他开源库实现。

总之,OpenCV提供了实现SIFT和SURF算法的函数和方法,可以方便地进行图像关键点的检测和描述。这些算法在计算机视觉领域具有广泛的应用,为图像处理、目标识别和模式匹配等提供了重要的工具和技术支持。

1,SIFT算法原理

1.1,基本流程

1.1.1   尺度空间极值检测

1.1.2 关键点定位

1.1.3  关键点方向确定

1.1.4  关键点描述

1.1.5   总结

1.2   SURF原理

2  代码实现

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from  pylab import mpl

mpl.rcParams['font.sans-serif']  = ['SimHei']

#读取图像
img = cv.imread('aa.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

#2  sift关键点检测
#2.1  实例化sift对象
sift = cv.xfeatures2d.SIFT_create()

#2.2 关键点检测  :  kp关键点信息包括  方向、尺度、位置信息,des是关键点的描述符
kp , des = sift.detectAndCompute(gray , None)

#2.3  在图像上绘制关键点的检测结果
cv.drawKeypoints(img , kp , img , flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

#图像的显示
plt.figure(figsize=(5,4),dpi=100)
plt.imshow(img[:,:,:-1]),plt.title("sift  关键点检测")
plt.xticks([]),plt.yticks([])
plt.show()

3  结果展示

4,你肯定会遇到报错

cv2.error: OpenCV(3.4.8) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cp

解决办法(点击):

解决办法地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值