[转]SIFT,SURF,ORB,FAST 特征提取算法比较
阅读原文时间:2023年07月08日阅读:2

转载地址:https://blog.csdn.net/vonzhoufz/article/details/46461849

主要的特征检测方法有以下几种,在一般的图像处理库中(如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