1、特征点检测评价——重复率
原理:实际上就是找出两副图像所提出的特征点中,重复特征点所占的比例;
《A performance evaluation of local descriptors》一文提出了特征点检测器和匹配结果的评价准则,我的理解是:图A、B是两幅待匹配图像,图A映射到图B有一个单应性矩阵H1,图B映射到图A有单应性矩阵H2,图A检测出N1个特征点,图B检测出N2个特征点,因为图像A和B有部分图像不重叠,故将A图检测的特征点坐标由H1算出在B图的坐标,去掉不合格(计算结果超出在B图像坐标)的特征点,剩下的特征点数记为n1;同样,B图的特征点经过处理剩下n2个;分母便是min(n1, n2)。将图A剩下的特征点由H1计算出在图B中的坐标,与图B检测出的特征点的坐标求距离,即dist(h1*a1, b1),若距离小于阈值ε=1.5,则认为是重复的,这么做是因为得到的单应性矩阵不一定完全精确以及一些别的误差原因。
作用:因为在判断两幅影像中的特征点是否是重复点(在某种意义上可以理解为同名点)时,只使用了特征点中的位置信息,而没有考虑尺度、方向信息;换句话说,如果重复点的数量远大于最后正确匹配点对的数量,那么可能是尺度和方向在处理上不得当,或者说可以进一步修改特征点(特征描述子)的尺度和方向,以提高配准的效果!
2、特征点匹配评价——假定匹配率
假定匹配率(putative matches ratio) = 假定匹配(putative matches)/ 特征点数量(features)
假定匹配率 = 假定匹配 (初始匹配的数量) / min(n1, n2)
3、特征点匹配评价——匹配分数
匹配分数(matches score) = 正确匹配(correct matches)/ 特征点数量(features)
匹配分数 = 最终正确匹配点数 / min(n1, n2)
4、特征点匹配评价——召回率
召回率(recall) = 正确匹配(correct matches)/ (重复特征点数)correspondence
召回率 = 最终正确匹配点数 / 重复特征点数
5、特征点匹配评价——精确率
匹配精度(precision)= 最终正确匹配(correct matches)/ 假定匹配(putative matches)
本文主要是对特征点检测精度评价进行了一个实现(语言:C++),实现代码放在了本人 Github 上面,里面注释非常详细,没有之一;特征点的匹配评价都是在特征点检测评价的基础上实现的;
特征点检测精度评价代码如下:
完整代码:GitHub - hmb15294934267/Opencv-Image-Processing: Feature point detection accuracy evaluation