BRIEF 算法的基础-BRIEF(Binary Robust Independent Elementary Features)

BRIEF(Binary Robust Independent Elementary Features)

目标
  本节
  • 我们学习 BRIEF 算法的基础

原理
  我们知道 SIFT 算法使用的是 128 维的描述符。由于它是使用的浮点数,所以要使用 512 个字节。同样 SURF 算法最少使用 256 个字节(64 为维描述符)。创建一个包含上千个特征的向量需要消耗大量的内存,在嵌入式等资源有限的设备上这样是合适的。匹配时还会消耗更多的内存和时间。
  但是在实际的匹配过程中如此多的维度是没有必要的。我们可以使用 PCA,LDA 等方法来进行降维。甚至可以使用 LSH(局部敏感哈希)将 SIFT 浮点数的描述符转换成二进制字符串。对这些字符串再使用汉明距离进行匹配。汉明距离的计算只需要进行 XOR 位运算以及位计数,这种计算很适合在现代的CPU 上进行。但我们还是要先找到描述符才能使用哈希,这不能解决最初的内存消耗问题。
  BRIEF 应运而生。它不去计算描述符而是直接找到一个二进制字符串。这种算法使用的是已经平滑后的图像,它会按照一种特定的方式选取一组像素点对 n d {{n}_{d}} nd (x,y),然后在这些像素点对之间进行灰度值对比。例如,第一个点对的灰度值分别为 p 和 q。如果 p 小于 q,结果就是 1,否则就是 0。就这样对 n d {{n}_{d}} nd个点对进行对比得到一个 n d {{n}_{d}} nd 维的二进制字符串。
   n d {{n}_{d}} nd可以是 128,256,512。OpenCV 对这些都提供了支持,但在默认情况下是 256(OpenC 是使用字节表示它们的,所以这些值分别对应与 16,32,64)。当我们获得这些二进制字符串之后就可以使用汉明距离对它们进行匹配了。
  非常重要的一点是:BRIEF 是一种特征描述符,它不提供查找特征的方法。所以我们不得不使用其他特征检测器,比如 SIFT 和 SURF 等。原始文献推荐使用CenSurE 特征检测器,这种算法很快。而且 BRIEF 算法对 CenSurE关键点的描述效果要比 SURF 关键点的描述更好。
  简单来说 BRIEF 是一种对特征点描述符计算和匹配的快速方法。这种算法可以实现很高的识别率,除非出现平面内的大旋转。
  
OpenCV 中的 BRIEF
  下面的代码使用了 CenSurE 特征检测器和 BRIEF 描述符。(在 OpenCV中 CenSurE 检测器被叫做 STAR 检测器)。

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 23 20:28:03 2014
@author: duan
"""
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('simple.jpg',0)
# Initiate STAR detector
star = cv2.FeatureDetector_create("STAR")
# Initiate BRIEF extractor
brief = cv2.DescriptorExtractor_create("BRIEF")
# find the keypoints with STAR
kp = star.detect(img,None)
# compute the descriptors with BRIEF
kp, des = brief.compute(img, kp)
print brief.getInt('bytes')
print des.shape

函数 brief.getInt(′bytes′) 会以字节格式给出 n d {{n}_{d}} nd 的大小,默认值为 32。下面就是匹配了,我们会在其他章节中介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BRIEF算法是一种特征描述子提取算法,它可以在MATLAB中实现。BRIEF算法的主要思想是以特征点为中心,取一个大小为S x S的区域,并对该区域进行高斯平滑处理。然后,通过计算区域内的像素对的亮度差异,并将结果编码为一个维度为N的位字符串,即特征点的描述子。BRIEF算法的优点是提取代价低,匹配只需要使用简单的汉明距离计算,时间代价低,空间代价低,并且效果还不错。因此,它在图像处理和计算机视觉领域中得到了广泛的应用。\[2\]\[3\]如果你想在MATLAB中实现BRIEF算法,可以参考相关的文章和资料。 #### 引用[.reference_title] - *1* [matlab练习程序(BRIEF描述子)](https://blog.csdn.net/weixin_34571341/article/details/115970632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [特征描述子算法——BRIEF](https://blog.csdn.net/Williamcsj/article/details/121291878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [什么BRIEF算法?BRIEF算法详解](https://blog.csdn.net/qinge_Crazy/article/details/119253418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越努力越幸运@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值