SIFT,SURF,ORB,FAST 特徵提取算法比較

SIFT,SURF,ORB,FAST 特徵提取算法比較


主要的特徵檢測方法有以下幾種,在一般的圖像處理庫中(如opencv, VLFeat, Boofcv等)都會實現。

這裏主要關注SIFT,SURF,FAST,ORB的對比。

Image NO SIFT SURF ORB FAST
0 2414 4126 500 11978
1 4295 8129 500 16763
2 3404 4784 500 16191
3 1639 2802 500 7166
4 1510 1484 497 29562
5 10572 8309 500 720
6 191 187 295 16125
7 3352 4706 500 567
8 165 403 374 26701
9 4899 7523 500 12780
10 1979 4212 500 10676
11 3599 3294 500 663
12 163 168 287 7923
13 1884 2413 500 11681
14 2509 5055 500 18097
15 9177 4773 500 7224
16 3332 3217 500 20502
17 5446 6611 500 16553
18 4592 6033 500 706
19 266 509 459 9613
20 2087 2786 500 7459
21 2582 3651 500 12147
22 2509 4237 500 14890
23 1236 4545 500 6473
24 1311 2606 500 4293
25 237 387 500 657
26 968 1418 488 6609
Time Cost 21.52 17.4 0.97 0.25

可以看到FAST提取了大量的特徵點,在計算時間上,比SIFT SURF快兩個數量級,ORB在FAST基礎上得來的,特徵點的質量比較高!

下面通過通過兩張圖片來看這幾個算法匹配的效果,1639-1311-697表示圖片1,2分別提取了1639,1311個keypoints,其中匹配的有697個。

Image pair SIFT SURF ORB FAST(SURF)
eiffel-1.jpg,eiffel-13.jpg 1639-1311-697 2802-2606-1243 500-500-251 1196-1105-586

接下來是eiffel-1.jpg,eiffel-13.jpg 倆圖片通過不同算法進行匹配的結果示意圖。
SIFT
這裏寫圖片描述
SURF
這裏寫圖片描述
ORB
這裏寫圖片描述
FAST
這裏寫圖片描述

需要注意的地方:
* 鏈接的時候加上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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章