十五天掌握OpenCV——BRIEF算法(Binary Robust Independent Elementary Features)

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

原理

  1. SIFT算法:使用128维描述符,由于浮点数故使用512个字节。
  2. SURF算法:使用64维描述符,使用256个字节。
  3. 在嵌入式等资源有限设备上,不适合使用这样耗费大量内存和时间的算法。
  4. 降维方法:PCA,LDA。用LSH(局部敏感哈希)将SIFT浮点数描述符转换为二进制字符串,再对字符串使用汉明距离匹配。
  5. 汉明距离计算:只需进行XOR位运算和位计数,适用于现代CPU上。哈希使用的前提是找到描述符,仍无法解决内存消耗问题。
  6. BRIEF算法:**直接找到二进制字符串而不计算描述符,使用已经平滑后的图像。 算法按照特定方式选取一组像素点对nd(x,y),在像素点对间进行灰度值对比。得到nd维的二进制字符串。**nd可取值128,256,512位.默认256.
  7. BRIEF是特征描述符,不提供查找特征的方法,必须使用其他的特征检测器(SIFT,SURF,CenSurE较快且兼容性关键点描述效果好)。BRIEF是一种对特征点描述符计算和匹配的快速方法,不出现平面内大旋转情况下可实现高识别率。

代码演示

下列代码使用CenSurE特征检测器(OpenCV中称为STAR检测器)和BRIEF描述符。

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

img=cv2.imread('./image2/mario.jpg',0)
star=cv2.FeatureDetector_create('STAR')#初始化STAR特征检测器
brief=cv2.DescriptorExtractor_create('BRIEF')#初始化BRIEF描述符

kp=star.detect(img,None) #找到STAR的关键点

kp,des=brief.compute(img,kp) #计算BRIEF描述符

print(brief.getInt('bytes'))
print(des.shape)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值