二进制鲁棒独立的基本特征(BRIEF)
BRIEF它二进制描述子。即是一段二进制串。BRIEF的作用是提取某个特征点周围像素信息。如果你不懂特征点是什么请参见FAST特征点提取与匹配算法教程Python实践。特征点提取算法只是知道了哪个像素点是特征点,但是我们提取特征点一般是用来目标跟踪三维重建之类的任务。而这些任务中有一个必备环节就是:找前后两帧图片哪两个特征点是同一个特征点。而为了找同一个特征点那就必须比较这些特征点周围像素信息是否相同。这个周围像素信息就是描述子,提取某个特征点周围像素信息就是BRIEF的作用。
BRIEF描述子有什么用?:判断两个特征点是否相同时的唯一标准是比较描述子是否相同。
BRIEF描述子怎么计算得到的?:
它在特征点周围取多对点。比如取128对点。每对点有两个像素点。举个例子:第i对点有两个p,q像素点,如果p比q大则前面提到的二进制串第i位取1,否则取0. 最终可以得到128位二进制串。
那怎么取这128对点呢?随机取。当然这个随机不是运行的时候随机取。而是预先设定好随机取哪些点。下面是ORB-SLAM这个开源项目的取点的代码截图。它们预先设定好很多对点相对当前点的位置,比如下面第一对点的相对位置为(8,-3),(9,5)。假如当前关键点的位置是(x,y)。那么我现在就确定找(x+8,y-3)和(x+9,y+5)这两个点的像素,然后比较它们像素值大小,如果前者大那BRIEF提取到的二进制串第一个值就是1,否则是0.
优点:随机取,而且是二进制。不管是生成二进制串描述子,还是进行串比较速度都是非常快。