OpenCV中的二进制鲁棒独立基本特征——BRIEF
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)