最近的主要研究方向是基于计算机视觉以及模式识别中的特征提取、匹配问题。进行了大量的文献阅读,越来越体会到学英语的重要性了,英文资料看起来逻辑清晰~(连国人写的英文文献比自己写的中文文献也要认真多了)。
计算机视觉中常用的局部特征sift特征具尺度不变性,在计算机视觉中被广泛应用。如果想更直观明了的理解sift特征中的提取匹配问题,可以通过opencv环境进行初步学习,opencv中有自带的接口函数进行测试。(opencvSift有大量相关的博客)。
现在主要说一下具体原理,以及对照提供的源代码进行分析,Lowe SIFT 原文:http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf,
下载的源码是.c文件,我在vs2010中试了一下,
项目链接:http://download.youkuaiyun.com/detail/u013967613/9501082,
其中depfeat.c,match.c,siftfeat.c是测试代码,我对siftfeat进行了项目测试,其中的siftfeat.c为我的的测试源代码。
当然,大家也可以对match.c进行一个简单的测试。
项目中得到对应的sift特征点以及导出来的一副图片对应所用特征点的特征值。这是对一副车辆区域sift特征点的提取,玫红色的标记表征了sift特征的位置、尺度、方向信息。
最后通过export_features()函数得到的特征信息,保存在feat.txt中,格式如下:
494 128
57.963380 47.046854 24.435966 -0.126717
0 0 0 0 0 0 0 0 1 2 0 2 1 0 0 0 5 16 0 0
0 0 0 0 0 6 3 5 3 0 0 0 0 0 0 4 1 0 0 0
33 60 22 159 42 0 0 0 159 159 14 21 3 1 2 42 31 49 48 111
76 11 5 22 0 0 0 1 0 0 0 0 128 36 18 110 3 0 0 3
159 152 34 18 1 1 2 78 39 29 49 148 159 14 6 29 0 0 0 0
0 0 0 0 27 12 3 2 0 0 0 0 72 62 13 1 0 0 0 0
1 9 18 25 18 0 0 0
76.769124 124.215848 13.134222 -1.251161
28 2 0 12 9 1 0 9 9 1 1 55 99 19 25 16 1 0 0 36
33 91 114 15 0 0 0 6 7 104 94 0 25 9 7 78 19 0 0 7
114 16 11 74 20 1 11 36 35 2 1 11 30 48 60 32 0 0 0 22
102 110 24 0 13 19 64 108 23 0 0 2 114 114 19 26 8 0 0 5
24 55 15 43 34 0 0 0 0 0 0 114 114 2 0 0 0 17 82 27
4 34 1 0 7 114 72 3 0 4 0 0 0 114 95 43 21 0 0 0
0 2 18 81 65 0 0 0
...
第一行的494表示这幅图共有494个特征点,128当然就是sift特征的维度啦~。接下来的四个浮点数分别表示特征点的x,y坐标,强度、方向。接下来的128个整数就是一个特征向量了。
这些特征信息用来做什么呢,当然是用来表征衣服图像咯。在进行特征匹配或者分类器测试是就会发现其用途了~。可以自己多试试几幅图像,测出其sift特征值。