原文站点:https://senitco.github.io/2017/07/05/image-feature-brief/
BRIEF(Binary Robust Independent Elementary Features)是一种对已检测到的特征点进行表示和描述的特征描述方法,和传统的利用图像局部邻域的灰度直方图或梯度直方图提取特征的方式不同,BRIEF是一种二进制编码的特征描述子,既降低了存储空间的需求,提升了特征描述子生成的速度,也减少了特征匹配时所需的时间。
原理概述
经典的图像特征描述子SIFT和SURF采用128维(SIFT)或者64维(SURF)特征向量,每维数据一般占用4个字节(Byte),一个特征点的特征描述向量需要占用512或者256个字节。如果一幅图像中包含有大量的特征点,那么特征描述子将占用大量的存储,而且生成描述子的过程也会相当耗时。在SIFT特征的实际应用中,可以采用PCA、LDA等特征降维的方法来减少特征描述子的维度,例如PCA-SIFT;此外还可以采用一些局部敏感哈希(Locality-Sensitive Hashing, LSH)的方法将特征描述子编码为二进制串,然后使用汉明距离(Hamming Distance)进行特征点的匹配,汉明距离计算的是两个二进制比特串中同一位置不同值的个数,可通过异或操作快速实现,大大提升了特征匹配的效率。
BRIEF正是这样一种基于二进制编码生成特征描述子,以及利用汉明距离进行特征匹配的算法。由于BRIEF只是一种特征描述子,因此事先得检测并定位特征点,可采用Harris、FAST或者是SIFT算法检测特征点,在此基础上利用BRIEF算法建立特征描述符,在特征点邻域Patch内随机选取若干点对 (p,q) ,并比较这些点对的灰度值,若 I(p)>I(q) ,则编码为1,否则编码为0。这样便可得到一个特定长度的二进制编码串,即BRIEF特征描述子。
算法步骤
- 利用Harris或者FAST等方法检测特征点
- 确定特征点的邻域窗口Patch,并对该邻域内像素点进行 σ=2 、窗口尺寸为9的高斯平滑,以滤除噪声(也可直接对整幅图像做高斯平滑)
- 在邻域窗口内随机选取n对(n可取128、256等)像素点,并根据灰度值大小编码成二进制串,生成n位(bit)的特征描述子
采样方式
论文原作者Calonder提供了5种在 S×S 的邻域Patch内随机选取点对 (X,