资讯专栏INFORMATION COLUMN

opencv python SURF

andot / 1318人阅读

摘要:理论在上一章中,我们看到了的关键点检测和描述但它相对较慢,人们需要更加快速的版本,所以年引入了一种名为的新算法顾名思义,它是的加速版本作为尺度不变特征变换算法的加速版,算法在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理,其快速的

Introduction to SURF (Speeded-Up Robust Features)

理论

在上一章中,我们看到了SIFT的关键点检测和描述,但它相对较慢,人们需要更加快速的版本,所以2006年引入了一种名为SURF的新算法, 顾名思义,它是SIFT的加速版本.

作为尺度不变特征变换(SIFT)算法的加速版,SURF算法在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理,其快速的基础实际上只有一个——积分图像haar求导.

SURF算法原理:

构建Hessian矩阵构造高斯金字塔尺度空间

利用非极大值抑制初步确定特征点

精确定位极值点

选取特征点的主方向

构造surf特征点描述算子

OpenCV中的SURF
import numpy as np
import cv2

img = cv2.imread("img.jpg")

# Create SURF object. You can specify params here or later.
# Here I set Hessian Threshold to 400
surf = cv2.xfeatures2d.SURF_create(400)
# Find keypoints and descriptors directly
kp, des = surf.detectAndCompute(img,None)
print(len(kp))

output:3477

# Check present Hessian threshold
print( surf.getHessianThreshold() )

output:400.0

# We set it to some 50000. Remember, it is just for representing in picture.
# In actual cases, it is better to have a value 300-500
surf.setHessianThreshold(50000)
#Again compute keypoints and check its number.
kp, des = surf.detectAndCompute(img,None)
print( len(kp) )

output:2

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

# Check upright flag, if it False, set it to True
print( surf.getUpright() )

output:False

surf.setUpright(True)
# Recompute the feature points and draw it
kp = surf.detect(img,None)
img2 = cv2.drawKeypoints(img,kp,None,(255,0,0),4)
plt.imshow(img2),plt.show()

比之前更快了

# Find size of descriptor
print( surf.descriptorSize() )

output: 64

# That means flag, "extended" is False.
surf.getExtended()

output: False

# So we make it to True to get 128-dim descriptors.
surf.setExtended(True)
kp, des = surf.detectAndCompute(img,None)
print( surf.descriptorSize() )
print( des.shape )

output:
128
(2, 128)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42061.html

相关文章

  • Programming Computer Vision with Python (学习笔记十一)

    摘要:降采样的目的是为了综合所有不同清晰度的图像进行关键点提取,这种关键点携带了不同清晰度的信息,对缩放具有不变性。是对的一种改进,主要特点是快速。的达到维,导致的比较耗时,使用哈尔小波转换得到的方向,让的降到维,减少了一半,提高了匹配速度。 尺度不变特征变换(Scale-invariant feature transform, 简称SIFT)是图像局部特征提取的现代方法——基于区域/图像块...

    levius 评论0 收藏0
  • Python opencv contrib版本安装指北

    摘要:注意版本的是普通的超集,包含了所有正常版的功能,可以理解为。因为识别的还是之前的版本。安装好以后就可以愉快地使用各种库了。 写在前面 之前搞树莓派,opencv的contrib版本死活装不上,最后用C++版本四线程编译了一天, 浪费生命的玩意儿我明明记得之前,pip install opencv-contrib是可以安装的......,年级大了,老了最近终于找到了一篇推文,原来是pip...

    UsherChen 评论0 收藏0
  • 机器视觉、模式识别库汇总

    摘要:十开放模式识别项目开放模式识别项目,致力于开发出一套包含图像处理计算机视觉自然语言处理模式识别机器学习和相关领域算法的函数库。 一、开源生物特征识别库 OpenBROpenBR 是一个用来从照片中识别人脸的工具。还支持推算性别与年龄。使用方法:$ br -algorithm FaceRecognition -compare me.jpg you.jpg二、计算机视觉库 OpenCVOpenC...

    habren 评论0 收藏0
  • opencv python BRIEF描述子

    摘要:理论我们知道使用向量作为描述符,由于它使用浮点数,因此基本上需要个字节,类似地,也至少需要个字节对于,为数千个特征创建这样的向量需要大量的内存,这对于资源约束应用程序尤其是嵌入式系统是不可行的,内存越大,匹配所需的时间越长实际匹配可能不 BRIEF (Binary Robust Independent Elementary Features) 理论 我们知道SIFT使用128-dim...

    Sanchi 评论0 收藏0
  • opencv python ORB算法

    摘要:理论是一种快速特征点提取和描述的算法这个算法是由以及在年一篇名为的文章中提出算法分为两部分,分别是特征点提取和特征点描述。特征提取是由算法发展来的,特征点描述是根据特征描述算法改进的 ORB (Oriented FAST and Rotated BRIEF) 理论 ORB(Oriented FAST and Rotated BRIEF)是一种快速特征点提取和描述的算法,这个算法是由E...

    galaxy_robot 评论0 收藏0

发表评论

0条评论

andot

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<