十五天掌握OpenCV——SURF算法(Speeded-Up Robust Features)收费算法

魏老师学生——Cecil:学习OpenCV-机器视觉之旅

原理

  1. 加速稳健特征算法:加速版的SIFT。
  2. SURF使用盒子滤波器(box_filter)对LoG进行近似。
  3. 盒子滤波器优点:进行卷积计算时可利用积分图像。
  4. 积分图像特点:计算图像中某个窗口内所有像素和时,计算量大小和窗口大小无关。提高计算图像梯度的效率。
  5. SURF算法计算关键点的尺度与位置也依赖于Hessian矩阵行列式。
  6. U-SURF算法:不确定方向,进一步提速,保持+/-15°旋转稳定性。OpenCV支持此模式,upright=0计算方向,upright=1不计算方向。
  7. 生成特征点的特征矢量:计算图像的Haar小波响应。在矩形区域内,以特征点为中心,沿主方向将20×20的图像划分成4×4个子块。描述符长度64,降低维度以加速计算与匹配,提供更易区分的特征。
  8. SURF提供加强版128维的特征描述符,以增加特征点的独特性。在不增加计算复杂度情况下,特征就加倍。OpenCV参数extended为1 时128维,0时64维,默认128维。
  9. 检测特征点:使用Hessian矩阵行列式,计算得出Hessian矩阵的迹,迹为对角元素和。
  10. 特征点按亮度分为两种:一种是特征点迹周围小邻域的亮度比背景区域要亮,Hessian矩阵的迹为正;另一种是特征点迹周围小邻域的亮度比背景区域要暗,Hessian矩阵的迹为负。先对特征点的迹进行比较,若同号,特征点具有相同对比度;若异号,特征点的对比度不同,放弃特征点之间的后续相似性度量。
  11. 两个特征点描述子的相似性度量:利用欧式距离计算。
  12. SURF算法对每一步进行优化来提高速度,SURF速度是SIFT的3倍。
  13. SURF算法善于处理具有模糊和旋转的图像,但不善于处理视角变化和光照变化。

OpenCV中的SURF算法

  1. SURF对象:可选参数,64/128维描述符,Upright / Normal模式。
  2. SURF.detect() SURF.compute() ——解释:进行关键点混合和描述。

代码演示

#coding=utf-8
import cv2
import numpy as np
from matplotlib import pyplot as plt

img=cv2.imread('./image2/mario.jpg',0)
# surf=cv2.SURF(400)   #Hessian阈值400
# kp,des=surf.detectAndCompute(img,None)
# leng=len(kp)
# print(leng)
# 关键点太多,重取阈值

surf=cv2.SURF(50000)   #Hessian阈值50000
kp,des=surf.detectAndCompute(img,None)
leng=len(kp)
print(leng)

img2=cv2.drawKeypoints(img,kp,None,(255,0,0),4)
plt.imshow(img2)
plt.show()

# 下面是U-SURF算法,关键点朝向一致,运算速度加快。
surf.upright=True
kp=surf.detect(img,None)
img3=cv2.drawKeypoints(img,kp,None,(255,0,0),4)

plt.imshow(img3)
plt.show()

#检测关键点描述符大小,改64维成128维
surf.extended=True
kp,des=surf.detectAndCompute(img,None)
dem1=surf.descriptorSize()
print(dem1)
shp1=des.shape()
print(shp1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值