第2弹
太勤快了肿么办,(* U *)
SURF
程序指路 👉 Matlab的SURF算法
注:
1)下载程序需要有Mathworks的账号,仍为matlab程序;
2)图像可为彩色可为灰度图;
3)ipts
的列长度对应关键点数量;
4)匹配数目使用distance
进行筛选,example2.m
中设置为30个最优匹配;
5)OpenSurf.m
中含有被注释掉的一个Example 1
,可以拷贝到一个脚本运行,查看surf关键点及描述子的情况;
6)算法的整体应用可以参考example2.m
。
主要使用的函数文件为OpenSurf.m
以及SubFunctions
文件夹中的子函数。
TestImages
文件夹包含测试demo中所使用的图片。
WarpFunctions
文件夹中的affine_warp.m
主要用于example3.m
中对图片进行扭曲操作。
鉴于子函数实在太多,而我能力有限,因此主要基于example2.m
进行注释学习,并对涉及到的OpenSurf.m
进行简单讲解。
OpenSurf.m
function ipts = OpenSurf(img, Options)
% 输入参数
% img :2D彩色图或灰度图
% Options :一个选择结构体
% Options.verbose :默认false,设置true可显示有用信息
% Options.upright :默认false,设置true可使用旋转不变结果的布尔值
% Options.extended :默认false,设置true可为描述子增添地标点信息
% Options.tresh :默认0.002,Hessian反应阈值
% Options.octaves :默认5,用于分析的octaves数
% Options.init_sample :默认2,图像初始采样步骤
%
% 输出参数
% ipts:一个包含所有检测到的地标点信息的结构体
% ipts.x, ipts.y :地标点位置
% ipts.scale :检测到的地标尺度
% ipts.laplacian :地标点邻域的拉普拉斯算子
% ipts.orientation :弧度方向
% ipts.descriptor :对应点匹配的描述子
OpenSurf.m
中会先添加子函数的路径,设置Options
默认值,创建3通道累加图像;然后调用子函数FastHessian_getIpoints.m
提取兴趣点,调用SurfDescriptor_DecribeInterestPoints.m
创建描述子,结果均存储在ipts
中。
example2.m
% Example 2, Correspondin