OpenCV中的二进制鲁棒独立基本特征——BRIEF

Posted 程序媛一枚~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV中的二进制鲁棒独立基本特征——BRIEF相关的知识,希望对你有一定的参考价值。

OpenCV中的二进制鲁棒独立基本特征——BRIEF

这篇博客将介绍OpenCV中的二进制鲁棒独立基本特征。BRIEF是一种更快的特征描述符计算和匹配方法。它还提供了较高的识别率,除非存在较大的面内旋转。

  • BRIEF Binary Robust Independent Elementary Features 二进制鲁棒独立基本特征
  • BRIEF是一个特性描述符,它不提供任何查找特征的方法。因此需要使用其他特征检测器,如SIFT、SURF等,建议使用CenSurE检测器。
  • CenSurE 探测器:也称为Start Detector星探测器,是一种快速检测器,检测效果甚至比SURF更好。

1. 效果图

原始图如下:

Star Detector星检测器效果图如下:

2. 源码

# OpenCV中的二进制鲁棒独立基本特征
# BRIEF Binary Robust Independent Elementary Features 二进制鲁棒独立基本特征
# BRIEF是一种更快的特征描述符计算和匹配方法。它还提供了较高的识别率,除非存在较大的面内旋转。
# CenSurE探测器:也称为Start Detector星探测器,是一种快速检测器,检测效果甚至比SURF点的检测效果更好。
# BRIEF是一个特性描述符,它不提供任何查找特征的方法。因此需要使用其他特征检测器,如SIFT、SURF等。建议使用CenSurE检测器

import cv2

origin = cv2.imread('images/simple.jpg')
cv2.imshow("origin", origin)

img = cv2.cvtColor(origin, cv2.COLOR_BGR2GRAY)

# 初始化星检测器
star = cv2.xfeatures2d.StarDetector_create()

# 初始化BRIEF描述符检测器
brief = cv2.xfeatures2d.BriefDescriptorExtractor_create()

# 找到星检测器的关键点
kp = star.detect(img, None)
img2 = cv2.drawKeypoints(origin, kp, origin, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow("star res", img2)
print('star keypoints: ', len(kp))

# 计算BRIEF的描述符
kp, des = brief.compute(img, kp)
print('brief keypoints: ', len(kp))
print('brief shape: ', des.shape)

img3 = cv2.drawKeypoints(origin, kp, origin, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow("brief res", img3)
cv2.waitKey(0)

参考

以上是关于OpenCV中的二进制鲁棒独立基本特征——BRIEF的主要内容,如果未能解决你的问题,请参考以下文章

youcans 的 OpenCV 例程 300篇244. 特征检测之 BRIEF 特征描述

OpenCV中的SURF(Speeded-Up Robust Features 加速鲁棒特征)

使用 OpenCV(基于霍夫变换或其他特征)编写鲁棒的(颜色和大小不变)圆检测

OpenCV中的快速特征检测——FAST(Features from Accelerated Segment Test)

OpenCV 中的鲁棒图像分割

语音特征的提取