brief 描述子

本文简要介绍了快速图像特征描述子BRIEF的基本原理,包括高斯滤波、特征点选择、像素点对比较及特征点匹配方法。尽管BRIEF描述子在光照、模糊和透视变形方面具有鲁棒性,但对平面旋转敏感。通过实例展示了BRIEF在实际应用中的优势与局限性。
部署运行你感兴趣的模型镜像

下面简单介绍一下 一种快速的图像特征的描述子--brief

brief 描述子的优点是快速,其原理非常简单故很快:

Its performance is similar to SIFT in many respects,including robustness to lighting, blur, and perspective dis-tortion. However, it is very sensitive to in-plane rotation

1. 对图像进行高斯滤波,即平滑图像。

2. 获取图像中一特征点一块临域,大小为s×s。

3. 随机获取服从高斯分布的N(N=128,256,512)组像素点对(即2×N个),其中高斯核分别取   s×s/25,s*s/100,(原因见论文BRIEF: Binary Robust Independent Elementary Features) 。

4. 定义一个数组desc[N],记录随机获取的图像点两两比较结果,大为1,小为0,这样desc就代表了这个特征点的描述子。

特征点的匹配是利用汉明距离(在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的字符不同的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数)

5. 在计算比较的两个特征点的brief特征点时,需要保持用同一组高斯随机点对。


由于brief特征点是利用两两像素点对比较获得的,故由于噪声的存在,可能造成误差比较大。因此可以借用ORB中的利用像素块的和的差代替像素点的差。


缺点是:不具有旋转不变性,ORB解决了这个问题。ORB可以参考ORB实现

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 描述子算法中的特征匹配方法 #### BRIEF描述子的特征匹配 BRIEF(Binary Robust Independent Elementary Features)是一种高效的局部描述符,适用于快速比较和匹配。该算法通过选取一对测试点并对比其强度来生成二进制串作为描述子[^1]。 对于两个待匹配的关键点A和B,在各自周围按照相同的方式采样若干对像素位置,并记录下这些位置处灰度值之间的关系形成位字符串。当两者的汉明距离小于设定阈值时,则认为这两个关键点相匹配。 ```python import cv2 import numpy as np def brief_match(descriptors_a, descriptors_b, threshold=0.7): matches = [] for i in range(len(descriptors_a)): min_distance = float('inf') best_match_index = -1 for j in range(len(descriptors_b)): distance = hamming_distance(descriptors_a[i], descriptors_b[j]) if distance < min_distance and distance <= threshold * len(descriptors_a[i]): min_distance = distance best_match_index = j if best_match_index != -1: matches.append((i, best_match_index)) return matches def hamming_distance(str1, str2): count = sum([ch1 != ch2 for ch1, ch2 in zip(str1, str2)]) return count / max(len(str1), len(str2)) # 归一化后的汉明距离 ``` #### SIFT描述子的特征匹配 SIFT(Scale-Invariant Feature Transform)描述子基于局部梯度直方图构建而成。为了实现鲁棒性的特征匹配,通常会计算候选匹配间的欧氏距离比率: 给定查询图像中的一组描述子Dq以及训练集里另一幅图片对应的描述子Dt,遍历每一个d_q∈Dq寻找最接近它的邻居d_t及其次近邻d'_t;如果最近邻的距离与次近邻之比低于某个预设比例τ(一般取0.6~0.8),那么就接受这对匹配(d_q,d_t)[^2]。 ```python bf = cv2.BFMatcher() matches = bf.knnMatch(descriptors_query, descriptors_train, k=2) good_matches = [] for m,n in matches: if m.distance < 0.7*n.distance: # 这里的0.7就是上述提到的比例τ good_matches.append(m) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值