目前的AR应用基本都是基于marker的比较多,但是不依靠marker首先要完成的定位工作。这篇文章主要描述,使用特征点进行检测和定位的问题(其中包含一些matching优化方式,具体请参考:学习OpenCV——KeyPoint Matching 优化方式)。
本篇采用ORB特征点和ORB特征描述子(可以采用SIFT或SURF特征,效果更好,但是OpenCV官方什么提过,SIFT和SURF不能用于商业用途,使用前需声明initModule_nonfree();且速度会慢一些)
效果 | FPS | |
SIFT | 检测效果:优,尺度不变性:优,旋转不变性:优 | 5.5 |
SURF | 检测效果:良,尺度不变性:良,旋转不变性:良 | 11.0 |
ORB | 检测效果:差,尺度不变性:差,旋转不变性:良 | 30.0 |
步骤:
1. 目标图特征点检测和描述子计算;
2. 打开camera采集图像,并计算特征点及描述子;
3. 进行特征点匹配,采用KNN或Cross-check方式;
4. 寻找单应性变换矩阵,并通过单应性变换矩阵进行进一步优化,去除伪匹配;
5. 通过单应性变换矩阵进行目标定位。