给定两张BMP图像,程序可以读取图像,计算两张图像的SIFT描述子并进行匹配,最后输出两张图象的特征点以及匹配结果。程序只可在release模式下运行。
VS2013,纯C语言实现,没有依赖第三方库。
- BMPread:读取与保存BMP文件
- MathFunc:点、矩阵、梯度等数据结构,以及归一化,求模值等函数
- ImageProcess:图像、梯度图、滤波器等数据结构,以及图像处理函数,包括下采样、卷积、差分等,依赖MathFunc
- SIFT:图像金字塔,差分金字塔等数据结构,以及构造金字塔,寻找关键点、计算描述子,匹配描述子等函数,依赖ImageProcess、MathFunc
- Main:整体流程
- 极值点的绝对值 > 0.03*255 ,排除绝对值过小的极值点,阈值减小可增加关键点的数目
- sigma的初始值0.5,sigma越大,计算范围更大,关键点数目更多
- 匹配阈值 < 0.8,阈值增加,匹配点变多但是不准确,可以使用RANSAC提升匹配效果
- 金字塔数目与每层塔的张数,塔数增加可提高尺度不变性,增加关键点的数目,张数增加会减小关键点的数目