opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较


参考:

http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_eWeRu9p9GhZd49WJ1bEOB7VluQdBdRKeehAO2Q3B7RatTXDruq-M9cR-W2yqATerDlIU1T3whYoyQfi

http://www.cvchina.info/2011/07/04/whats-orb/

http://www.bubuko.com/infodetail-909956.html

主要的特征检测方法有以下几种,在一般的图像处理库中(如opencv, VLFeat, Boofcv等)都会实现。

这里主要关注SIFT,SURF,FAST,ORB的对比。

02414412650011978
14295812950016763
23404478450016191
3163928025007166
41510148449729562
5105728309500720
619118729516125
733524706500567
816540337426701
94899752350012780
101979421250010676
1135993294500663
121631682877923
131884241350011681
142509505550018097
15917747735007224
163332321750020502
175446661150016553
1845926033500706
192665094599613
20208727865007459
212582365150012147
222509423750014890
23123645455006473
24131126065004293
25237387500657
2696814184886609
Time Cost21.5217.40.970.25

可以看到FAST提取了大量的特征点,在计算时间上,比SIFT SURF快两个数量级,ORB在FAST基础上得来的,特征点的质量比较高!

下面通过通过两张图片来看这几个算法匹配的效果,1639-1311-697表示图片1,2分别提取了1639,1311个keypoints,其中匹配的有697个。

eiffel-1.jpg,eiffel-13.jpg1639-1311-6972802-2606-1243500-500-2511196-1105-586

接下来是eiffel-1.jpg,eiffel-13.jpg 俩图片通过不同算法进行匹配的结果示意图。
SIFT
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较-LMLPHP
SURF
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较-LMLPHP
ORB
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较-LMLPHP
FAST
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较-LMLPHP

需要注意的地方:
* 链接的时候加上pkg-config opencv --cflags --libs可以加入所有opencv的库
* SIFT,SURF是nonfree的,使用的时候需要方法initModule_nonfree(),需要头文件opencv2/nonfree/nonfree.hpp
* FAST只是检测角点,要结合其他extractor如ORB,SIFT.

参考:
1.opencv feature2d
2.Feature Detection and Description

05-08 15:29