BRISK: Binary Robust Invariant Scalable Keypoints

本文提出了一种新的图像特征点提取算法,最终产生一个二进制的描述符。步骤如下:

BRISK所提取的点具有尺度不变性,为了保证特征点具有尺度不变性,就必须进行尺度空间的构建。先构建n个octave层(用Ci表示),C0即为原图像,Ci层为Ci-1层下的2倍采样。为了使尺度空间之间更加平滑,再构造intra-octave层(用Di表示),原图像为D-1层,D0为D-1层的1.5倍采样,其后D层之间仍然为2倍。假设n为4,则包括原图总共有9张图。

对构建的8张图使用FAST9-16检测,对原图使用FAST5-8检测,得到9幅具有角点信息的图像。

接下来进行非极大值抑制,条件是特征点在位置空间(本层8个邻域点)和尺度空间(上下两层2×9个点)共26个邻域点的FAST分值为最大。

接下来进行亚像素插值。找出更加精确的极值点位置和尺度。


在这里插入图片描述

至此,所找出的特征点具有尺度不变性(疑问)

接下来需要使最终的描述符具有旋转不变性。首先为了避免混叠效应,以特征点为中心进行高斯滤波。高斯滤波是以一个特征点为圆心,设置N个采样点,这些采样点均匀分布在以特征点为圆心的同心圆上,然后对每个采样点都进行一定半径的加权平均,半径为σi
因为有N个采样点,将两两个采样点作为一个采样点对,共有N(N-1)/2个采样点对。局部梯度的计算公式为:


在这里插入图片描述

其中I(Pii)表示滤波半径为σi上的点Pi的像素值。其中点P是包含X,Y方向信息的二维向量。
根据点Pi和Pj之间距离的不同(L2范数即代表距离),定义长点对和短点对:


在这里插入图片描述

其中:


在这里插入图片描述
在这里插入图片描述

通过对所有长点对的计算(这里假设短点对的方向相互抵消,也是为了提高速度,可通过改变阈值来改变长短点对的数量),可以得到该特征点的主方向为:


在这里插入图片描述

接下来为了保证旋转不变性,需要对图像进行旋转,旋转角度即为:


在这里插入图片描述

接下来就需要用到短点对,选用所有短点对(将图像旋转后)中的512个,进行如下计算:


在这里插入图片描述

可得出512个二进制码,即64个字节。
至此,所得出的二进制描述符已有尺度不变性和旋转不变性。
最终的图像匹配采用汉明距离的方法。

相关知识

FAST算法

FAST算法是一种角点的寻找算法,首先定义一个阈值,以一个像素点为圆心,半径为3的圆上共有16个像素点,若P1、P9、P5、P13与圆心像素值的差至少有三个大于阈值,则将该点作为候选点。进行一遍遍历之后,在进行候选点的进一步检测,若候选点周围的至少9个点的差大于阈值,则这个点就为特征点。接下来进行非极大值抑制,若一个特征点的邻域内(3×3、5×5等)有多个特征点,则计算每个特征点的分值(分值即为特征点与周围像素点值差的绝对值和),只保留分值最大的点。若邻域内没有其他像素点,则直接保留。

汉明距离

将两个字符串(或二进制码)进行异或运算,结果中“1”的数量即为汉明距离,主要表示两个字符串之间的差异。

猜你喜欢

转载自blog.csdn.net/m0_37973735/article/details/84572451