特征描述子算法——BRIEF
一、算法简介
BRIEF是2010年ECCV会议上提出的一种以二进制字符串作为特征点的描述子。
二、算法原理
1、以特征点为中心,取大小为 S x S 的区域p,区域的四条边分别都与坐标轴垂直或平行
(原作者取值:S=31)
2、采用方差为σ,卷积核大小为 N x N 的高斯滤波器对区域p每一点进行高斯平滑处理
(原作者认为1<σ<3时,识别率效果好;原作者取值:σ=2,N=9)
3、计算
其中,p(x)是经过高斯平滑后x(u,v)处的像素强度,p(y)是经过高斯平滑后y(u,v)处的像素强度,x,y点对随机选择。
(x,y)点对选取方法如下所示:
选取方法的可视化如下:
(原作者通过实验发现选取方法2效果最好)
4、计算 维的位字符串(即特征点的描述子)
其中,
为点对数(描述子位数),一般取128,256,512。(原作者通过实验发现取512效果最好,取256效果略差于取512的效果,取128效果不太好)
三、算法优点
1、占用内存小
2、具备很好的识别性能
3、运行时间很短
四、算法缺点
1、不具备旋转不变性。(当两幅需要匹配的图像旋转角度过大(大概30以上),识别效果就很差)
2、不具备尺度不变性
五、小贴士
1、虽然说x,y点对随机选择,但是OpenCV源码实现的时候,其实是固定了模式的了。x取啥,y就会通过一个式子算出来,取啥。
2、两幅图像的BRIEF得到的特征描述子匹配的时候,他们采样方式、滤波方式、x,y点对的选择都是一致的。
3、通过BRIEF得到特征描述子后,计算需要匹配的特征点的汉明距离,两个特征点的汉明距离越小,代表他们匹配度越高。汉明距离是两个字符串对应位置的不同字符的个数。
4、BRIEF不能得到特征点,需要用其他方法(例如:fast)得到特征点后,才能利用BRIEF方法得到特征描述子。
5、为了很好的解决BRIEF不具备旋转不变性的问题,再得到特征点后,需要计算这个特征点的主方向,将主方向与u轴方向设置成一致,这样就能很好的解决该问题了。
六、参考文章
1、BRIEF特征点描述算法详解
2、BRIEF特征提取(理解篇)
3、图像特征提取(三)——SURF特征提取算法详解
4、数字图像处理(四)图像增强之普通平滑、高斯平滑、laplacian、sobelprewitt锐化