什么是特征点?
特征点就是图像中一些特别的地方,例如图像中的角点,在不同图像之间的辨识度更强,一种直观的提取特征的方式就是在不同图像之间辨认角点,确定它们的对应关系。
特征点是由关键点和描述子两部分组成的。关键点是指该特征点在图像中的位置。而描述子是用来量化描述该关键点周围的像素信息的,这里的“量化”一般是人为设计的某种方式,设计的原则是“外观相似的特征应该具有相似的描述子”。这样当我们想要判断两个不同位置的关键点是否相似时,就可以通过计算它们之间的描述子的距离来确定。
ORB的关键点在FAST关键点的基础上进行了改进,主要增加了特征点的主方向,称为Oriented FAST。描述子在BRIET描述子的基础上加入了上述方向信息,称为Steered BRIEF。
之后又出现了改进的方案是首先比较第1和第9个像素,如果两个点像素强度都在中心像素强度t变化范围内,则说明这不是角点,如果接下来检测第5和13点时,发现上述四点中至少有三个点同中心点不相似,则可以说明这是个角点。
算法很可能检测出的角点彼此相邻,所以提出了使用非极大值抑制算法来去除一部分的相邻角点,思路是:为每一个检测到的角点计算它的响应大小(score function)。响应定义为中心点和它周围16个像素点偏差的绝对值和。在比较临近的特征点中,保留响应值较大的特征点,删除其余的特征点。
OpenCV中已经有了很多实用的特征提取和匹配的算法 :