java opencv orb_OpenCV提取ORB特征并匹配

一、什么是特征?

图像的特征(Feature),是图像上最具代表性的一些点。所谓最具代表性,就是说这些点包含了图像表述的大部分信息。即使旋转、缩放,甚至调整图像的亮度,这些点仍然稳定地存在,不会丢失。找出这些点,就相当于确定了这张图像,它们可以用来做匹配、识别等等有意义的工作。

通常来说,角点容易成为特征点。角点是指图案中处于角落的点,这些点附近像素值变化剧烈,因而容易被检测出。

特征点由关键点(Key-point)和描述子(Descriptor)两部分组成。比如,提取ORB特征其实包括了提取关键点和计算描述子两件事情。

历史上,SIFT特征和SURF特征都是非常常用的特征,SIFT特征以精确著称,但计算量极大,无法在CPU上实时计算。SURF特征降低了SIFT的精确度,但提高了性能。而ORB特征是目前计算最快的特征,非常适合于实时SLAM,因此受到广大研究者的喜爱。

二、ORB特征

ORB全名为Oriented FAST and Rotated BRIEF,它采用改进的FAST关键点检测方法,使其具有方向性,并采用具有旋转不变性的BRIEF特征描述子。FAST和BRIEF都是非常快速的特征计算方法,因此ORB具有非同一般的性能优势。

1.FAST关键点

要想判断一个像素点p是不是FAST关键点,只需要判断其周围的16个像素点中是否有连续N个点的灰度值与p的差超出阈值。16个点的位置如下图所示。N一般取12,称为FAST-12,常用的还有FAST-9,FAST-11。阈值一般为p点灰度值的20%。

你可能感兴趣的:(java,opencv,orb)