资讯专栏INFORMATION COLUMN

opencv python BRIEF描述子

Sanchi / 2874人阅读

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

BRIEF (Binary Robust Independent Elementary Features)

理论

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

实际匹配可能不需要所有这些尺寸,可以使用PCA,LDA等几种方法对其进行压缩。甚至使用LSH(Locality Sensitive Hashing)等散列的其他方法也可以将浮点数中的这些SIFT描述符转换为二进制字符串.

BRIEF:一种对已检测到的特征点进行描述的算法,它是一种二进制编码的描述子,在图像匹配时使用BRIEF能极大的提升匹配速度.

算法步骤:

· 为减少噪声干扰,先对图像进行高斯滤波(方差为2,高斯窗口为9x9)

·以特征点为中心,取SxS的邻域大窗口。在大窗口中随机选取一对(两个)5x5的子窗口,比较子窗口内的像素和(可用积分图像完成),进行二进制赋值.(一般S=31)

$$ au(p;x,y):=egin{cases}1,quad if p(x) < p(y) 0,quad otherwise end{cases} $$

其中,p(x),p(y)分别随机点x=(u1,v1),y=(u2,v2)所在5x5子窗口的像素和.

·在大窗口中随机选取N对子窗口,重复步骤2的二进制赋值,形成一个二进制编码,这个编码就是对特征点的描述,即特征描述子.(一般N=256)

NOTE:FAST算法提取特征点+BRIEF计算描述子 就构成了 ORB特征点提取部分.

BRIEF in OpenCV

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread("img5.png",0)
# Initiate FAST detector
star = cv2.xfeatures2d.StarDetector_create()

# Initiate BRIEF extractor
brief = cv2.xfeatures2d.BriefDescriptorExtractor_create()

# find the keypoints with STAR
kp = star.detect(img,None)

# compute the descriptors with BRIEF
kp, des = brief.compute(img, kp)

print( brief.descriptorSize() )
print( des.shape )

输出:
Backend TkAgg is interactive backend. Turning interactive mode on.
32
(61, 32)

NOTE:需要安装opencv-contrib-python

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

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

相关文章

  • opencv python ORB算法

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

    galaxy_robot 评论0 收藏0
  • opencv python 特征匹配

    摘要:匹配器匹配非常简单,首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行描述符距离测试,最后返回距离最近的关键点对于匹配器,首先我们必须使用创建对象。 Feature Matching Brute-Force匹配器 Brute-Force匹配非常简单,首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点. 对于...

    macg0406 评论0 收藏0
  • SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

    摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...

    lifesimple 评论0 收藏0

发表评论

0条评论

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