基于SIFT特征的图像拼接融合(matlab+vlfeat实现)
基于SIFT特征的图像拼接融合(matlab+vlfeat实现)
piccolo
,之前做的东西,简单整理下,不是做图像方向的,写的不好轻喷
主要原理参看SIFT算法详解和SIFT特征匹配算法介绍——寻找图像特征点的原理
相应源码在基于SIFT特征的图像拼接融合(matlab+vlfeat实现)
下面简单说下:
SIFT算子特点
主要思想:一种基于图像梯度分布的特征描述子。
特点:具备尺度不变性,抗干扰性好。但维数高,计算复杂度大。
SIFT算法数学原理(简析)
Step.0:建立高斯金字塔(向下降采样图像)
图像I(x,y)I(x, y)I(x,y)在不同尺度空间下的表示可以由图像与高斯核卷积得到Gaussian图像:
高斯金字塔建立方程:
L(x,y,δ)=G(x,y,δ)×I(x,y)L(x, y, \delta)=G(x, y, \delta) \times I(x, y)L(x,y,δ)=G(x,y,δ)×I(x,y)
G(x,y,δ)=12πδ2e−(x2+y2)/(2a2)G(x, y, \delta)=\frac{1}{2 \pi \delta^{2}} e^{-\left(x^{2}+y^{2}\right) /\left(2 a^{2}\right)}G(x,y,δ)=2πδ21e−(x2+y2)/(2a2)
其中,LLL—尺度空间,G(x,y,δ)G(x, y, \delta)G(x,y,δ)—二维高斯滤波函数
Step.1:建立高斯差分DOG
D(x,y,δ)=L(x,y,kδ)−L(x,y,δ)D(x, y, \delta)=L(x, y, k \delta)-L(x, y, \delta)D(x,y,δ)=L(x,y,kδ)−L(x,y,δ)
其中,δ\deltaδ—尺度空间因子,kkk—同一阶相邻两个层次建的尺度因子比例
Step.2:建立子八度
对于一幅图像I
,建立其在不同尺度(scale)
的图像,也称为子八度(octave)
,这是为了让其在任何尺度都能够有对应的特征点。第一个子八度的scale
为原图大小,后面每个octave
为上一个octave
降采样的结果,即原图的1/4
(长宽分别减半),构成下一个子八度(高一层金字塔)。
Step.3:极点值检测
为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图所示,中间的检测点和它同尺度的8
个相邻点和上下相邻尺度对应的9×2
个点共26
个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG
尺度空间本层以及上下两层的26
个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。
Step.4:特征点判定
DOG
算子会产生较强的边缘响应
高斯差分算子的极值在横跨边缘处有较大的主曲率,而在垂直边缘的方向有较小的主曲率。在这里,我们利用海森边缘检测方法求主曲率,并去除边缘点
H=[DxxDxyDxyDyy]H=\left[ \begin{array}{ll}{D_{x x}} & {D_{x y}} \\ {D_{x y}} & {D_{y y}}\end{array}\right]H=[DxxDxyDxyDyy]
tr(H)=Dxx+Dyy=α+βdet(H)=DxxDyy−Dxy2=αβ\begin{array}{r}{\operatorname{tr}(H)=D_{x x}+D_{y y}=\alpha+\beta} \\ {\operatorname{det}(H)=D_{x x} D_{y y}-D_{x y}^{2}=\alpha \beta}\end{array}tr(H)=Dxx+Dyy=α+βdet(H)=DxxDyy−Dxy2=αβ
选取合适的主曲率阈值,去除不稳定的边缘响应点,如果满足
tr(H)det(H)=(α+β)2αβ=(r+1)2r\frac{\operatorname{tr}(H)}{\operatorname{det}(H)}=\frac{(\alpha+\beta)^{2}}{\alpha \beta}=\frac{(r+1)^{2}}{r}det(H)tr(H)=αβ(α+β)2=r(r+1)2
α=rβ\alpha=r \betaα=rβ
则将该关键点判定为特征点
具体实现(vlfeat+matlab)
Vlfeat工具箱安装
- 先下载vlfeat-home,解压到某位置,这个地方可以是任意的,尽量目录不带中文。
- 命令行输入
edit startup.m
创建启动文件startup.m
,尽量创建在你的当前project
目录下。比如我的E:\matlabzyf\sift\startup.m
%vlfeat工具箱的导入,运行前准备工作 run('E:\matlabzyf\vlfeat-0.9.20\toolbox\vl_setup')
- 运行
project
前,先运行startup.m
,有时候他没有自动加载(可能是我的bug)
待拼接的实拍照片:
拼接融合过程中的匹配:(仅展示图1、2之间)
融合过程展示:
融合最终结果:
整个过程示意:
基于SIFT特征的图像拼接融合(matlab+vlfeat实现)相关推荐
- 基于sift特征点的图像拼接
最近学习了图像拼接的一些知识,在这里记录一下,方便以后的学习, 博客中的代码均基于python,目前只能用于左右拼接 基于sift特征点的图像拼接包括以下几个步骤: 1.sift特征点的提取 2.利用 ...
- matlab人民币识别,Matlab图像处理学习笔记(六):基于sift特征点的人民币识别...
本文记录如何利用sift特征点进行人民币的识别.本文给出的matlab源码识别了1元与100元人民币的面额,相同思路,可以对各种币值的人民币进行面额.正反面的识别.但由于本程序采用串行,模板数的增多会 ...
- 基于SIFT特征的图像配准(附Matlab源代码)
基于SIFT特征的图像配准(附Matlab源代码) 本文先给出了采用SIFT方法进行图像配准的实验原图以及实验结果,最后附上Matlab源代码. 实验一: 实验一的图像(见图1.1)是本人自己拍摄的, ...
- [开源项目]基于FPGA的视频图像拼接融合
基于FPGA的视频图像拼接融合 本项目简单来说,就是实时生成视频全景图,该架构经过优化,可以实时视频输出. 算法 下图说明了描述算法每个步骤的系统框图 该系统大致可以分为三个子系统: 预处理 基于 S ...
- 基于多特征的技术融合关系预测及其价值评估
摘要 [目的] 综合利用专利分类网络结构特征与文本语义特征,基于多种特征形成技术融合关系预测方法和价值评估方法.[方法] 区分专利与专利分类间的关联强度,构建专利分类共现网络,获取专利分类间的网络结构 ...
- 【交通标志识别】基于SIFT特征实现交通标志识别matlab代码
1 简介 为了适应日益恶化的交通环境,本文提出了一种基于SIFT(Scale Invariant Feature Transform)算法的交通标志识别方法,利用SIFT算法构建仿射不变的特征子空间, ...
- 基于SIFT特征的全景图像拼接
主要分为以下几个步骤: (1) 读入两张图片并分别提取SIFT特征 (2) 利用k-d tree和BBF算法进行特征匹配查找 (3) 利用RANSAC算法筛选匹配点并计算变换矩阵 (3) 图像融合 S ...
- 基于FPGA的视频图像拼接融合(附源码)。
设计的架构通过基于特征和关键点拼接两个视频输入来生成具有更宽视野的视频. 架构经过优化,可以实时生成输出. 一.算法 下图说明了描述算法每个步骤的系统框图 该系统大致可以分为三个子系统: * 预处理 ...
- 基于sift的医学图像配准算法matlab版
当进行医学图像配准时,SIFT (Scale-Invariant Feature Transform) 算法是一种广泛使用的特征提取和匹配算法.它具有良好的尺度不变性和鲁棒性,可以在不同的图像尺度下检 ...
最新文章
- XXL-JOB v2.0.2,分布式任务调度平台 | 多项特性优化更新
- python与办公结合_python在办公时能给我们带来什么?
- 创新学习对象1-陕西省网络与系统安全重点实验室研究员的李光夏老师
- SAP云平台CloudFoundry编程环境下app router的使用最佳实践
- 2021-2025年中国超本地服务行业市场供需与战略研究报告
- Clang与LLVM的关系
- 字体大宝库:40套为网页设计师准备的时尚字体(下篇)
- java项目源码分享_ssm项目分享600套
- JSONObject.fromObject() 转换时的日期处理问题
- 详解 VOC 数据集
- 沉浸式体验参加网络安全培训班,学习过程详细到底!
- 微信有哪些隐藏功能?实用隐藏功能合集:建小号、批量群发
- Laravel学习 - Eloquent\Builder与Query\Builder
- 第五章 图像基础(设备内容)
- 今年米粉节再推爆款 3999入手安卓影像旗舰11Ultra
- 用一句话证明你是优秀程序员!码农们的这些回答也太大脑洞了吧!
- linux 安装yum命令
- 肺结节圆形边界光滑_发现了肺结节如何判断良恶性?
- 创业公司给的期权,真的靠谱么?
- 基于LSTM的剩余寿命预测(PyTorch实现)