pythonopencv介绍_opencv python BRIEF描述子

理论

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

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

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

算法步骤:

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

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

$$

\tau(p;x,y):=\begin{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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值