【图像配准】基于surf实现图像特征点检测及图像拼接处理附matlab代码

简介: 【图像配准】基于surf实现图像特征点检测及图像拼接处理附matlab代码

1 内容介绍

SURF 特征点的检测

在图像拼接中,特征点的检测与描述是非常重要的一步,寻找一种鲁棒、快速的特征点检测方法对水下图像拼接来说至关重要。SURF 算法由 Bay 等人提出,该算法使用积分图像对图像进行卷积来提高运算速度,得到的特征点在鲁棒性、重复性和独特性等方面均具有较好优势。并且 Bay 等人已经证明了SURF 算法的快速性以及在计算机视觉领域的实用性。

由于特征点是在不同的尺度空间中检测到的,所以还需要构造尺度空间金字塔。Lowe 提出使用不同尺寸的高斯滤波器与图像进行卷积得到图像金字塔, 并让图像金字塔上相邻两层相减得到高斯差分(Difference of GaussianDoG)金 字塔,然后在 DoG 金字塔上检测特征点。与 Lowe 所用方法不同的是,SURF 算法使用不同尺寸但计算速度相同的框状滤波器与图像直接进行卷积来构建尺 度空间金字塔,如图 2-5 所示。构建尺度空间金字塔的步骤可以简单概括为:首先用图 2-4 所示的 9×9 框状滤波器与图像卷积作为金字塔的第一层,然后通过逐渐扩大的框状滤波器 与图像相卷积得到金字塔的其余各层。为了使框状滤波器存在中心像素,需要 让连续两个层级的框状滤波器相差 6 个像素,如图 2-6 所示。再将尺度空间划 分为不同的组(Octave),每一组由相同的输入图像与逐渐扩大的框状滤波器相 卷积而来的一系列响应图构成。对于大小为 N×N 的框状滤波器,它所对应的 尺度可以通过式(2-9)计算得到。

此外,相邻两组之间框状滤波器的尺寸差值需要增加一倍,即从 6 到 12 到

24 到 48;为了使尺度的变化更加连续,组与组之间的尺寸选取一般是存在交叉

重叠的,如表 2-1 所示。在实际应用时,由于每组检测到的特征点数量会迅速

衰减,因此一般不需要将组数划分太多。

确定特征点的位置

当得到与图像对应的行列式和尺度空间金字塔后,通过检测 3×3×3 邻域

内的特征点行列式的局部最大值,就可以确定特征点的位置,该区域其实是一

种类似于斑状的结构。具体形式如图 2-7 所示,对于每个点,只有比其相邻的

3×3×3 邻域内的 26 个点都大,才能被选定为局部极值点。然后通过在尺度和

图像空间中进行差值来确定特征点的精确位置。

2 仿真代码

% Example 2, Corresponding points

% Load images

 I1=imread('TestImages/testc1.png');

 I2=imread('TestImages/testc2.png');

% Get the Key Points

 Options.upright=true;

 Options.tresh=0.0001;

 Ipts1=OpenSurf(I1,Options);

 Ipts2=OpenSurf(I2,Options);

% Put the landmark descriptors in a matrix

 D1 = reshape([Ipts1.descriptor],64,[]);

 D2 = reshape([Ipts2.descriptor],64,[]);

% Find the best matches

 err=zeros(1,length(Ipts1));

 cor1=1:length(Ipts1);

 cor2=zeros(1,length(Ipts1));

 for i=1:length(Ipts1),

     distance=sum((D2-repmat(D1(:,i),[1 length(Ipts2)])).^2,1);

     [err(i),cor2(i)]=min(distance);

 end

% Sort matches on vector distance

 [err, ind]=sort(err);

 cor1=cor1(ind);

 cor2=cor2(ind);

% Show both images

 I = zeros([size(I1,1) size(I1,2)*2 size(I1,3)]);

 I(:,1:size(I1,2),:)=I1; I(:,size(I1,2)+1:size(I1,2)+size(I2,2),:)=I2;

 figure, imshow(I/255); hold on;

% Show the best matches

 for i=1:30,

     c=rand(1,3);

     plot([Ipts1(cor1(i)).x Ipts2(cor2(i)).x+size(I1,2)],[Ipts1(cor1(i)).y Ipts2(cor2(i)).y],'-','Color',c)

     plot([Ipts1(cor1(i)).x Ipts2(cor2(i)).x+size(I1,2)],[Ipts1(cor1(i)).y Ipts2(cor2(i)).y],'o','Color',c)

 end

3 运行结果

4 参考文献

[1]夏岩, 刘智, 王俊然. 图像拼接中surf配准算法的研究[J]. 长春理工大学学报:自然科学版, 2017, 40(2):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关文章
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
19天前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA-PSO-SVM算法的混沌背景下微弱信号检测matlab仿真
本项目基于MATLAB 2022a,展示了SVM、PSO、GA-PSO-SVM在混沌背景下微弱信号检测中的性能对比。核心程序包含详细中文注释和操作步骤视频。GA-PSO-SVM算法通过遗传算法和粒子群优化算法优化SVM参数,提高信号检测的准确性和鲁棒性,尤其适用于低信噪比环境。
|
3月前
|
监控 算法 数据安全/隐私保护
基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真
该算法基于Matlab 2022a,利用视觉工具箱和背景差法实现行人检测与轨迹跟踪,通过构建背景模型(如GMM),对比当前帧与模型差异,识别运动物体并统计行走习惯,包括轨迹、速度及停留时间等特征。演示三维图中幅度越大代表更常走的路线。完整代码含中文注释及操作视频。
|
2月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
|
3月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
3月前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
204 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
131 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
94 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章