ORB特征由key points和descriptor两部分组成,也就是找出代表性的点,而且给出一个向量来表示点周围像素的信息。
它的keypoint称为"Oriented FAST",是一种改进的FAST角点(FAST不在这里介绍)
它的descriptor称为BRIFF,是一种二进制的描述方式,在后面的代码里有体现。
ORB特征提取有以下2步:
- FAST角点提取,相比于原版FAST,它加入了特征点的主方向,也就是方向信息,为BRIFF描述子提供了旋转不变性。
- BRIFF描述子,就是在前一步key point的周围提取有描述信息的向量。
第一步的FAST角点提取不在这里介绍,会直接调用opencv。
第二步简单介绍下BRIFF描述子:
它是一种二进制描述子,就是说特征向量里面只有0和1,怎么确定是0还是1?
这时取key point(计算FAST角点得到)附近的随机的两个像素点p和q,如果p<q就是1,反之是0。只取2个点肯定不足以表达特征吧,于是代码中对每个key point附近随机取256个点,就得到256维的0,1向量。
由于是二进制,所以用一个整型就能储存。
再说旋转不变性,这里在一个小的图像块中找到质心,图像块的几何中心O与质心C会形成一个向量,这个向量就代表了一个方向角theta。
还记得旋转变换么,
( x ′ y ′ ) = ( c o s θ − s i n θ s i n θ c o s θ ) ( x y ) \begin{pmatrix} x^{'} \\ y^{'} \\ \end{pmatrix} = \begin{pmatrix} cos\theta&-sin\theta \\ sin\theta&cos\theta \\ \end{pmatrix}\begin{pmatrix} x\\y\\ \end{pmatrix} (x′y′)=(cosθsinθ−sinθcosθ)(x

最低0.47元/天 解锁文章
2666





