SIFT

概述

SIFT算法是CV领域在DL进入之前的20年中,最重要的成果。

尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在尺度空间中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。

注:David G. Lowe,英属不列颠哥伦比亚大学(UBC)本科+斯坦福博士(1985)。UBC教授,Google资深科学家。
个人主页:
http://www.cs.ubc.ca/~lowe/
他在个人主页中提供了一份CV界知名的公司或研究机构的名单:
http://www.cs.ubc.ca/~lowe/vision.html

尺度空间

尺度空间(scale space)思想最早是由Iijima于1962年提出的,后经witkin和Koenderink等人的推广逐渐得到关注,在计算机视觉领域使用广泛。

尺度空间理论的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。

尺度空间方法将传统的单尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。

尺度空间的应用实例就是图像金字塔

尺度空间的视觉不变性

视觉不变性是对尺度空间算子提出的一种要求:

1.对图像的分析不受图像的灰度水平和对比度变化的影响,即满足灰度不变性和对比度不变性。这主要体现了物体的光照变化

2.对图像的分析和图像的位置、大小、角度以及仿射变换无关,即满足平移不变性、尺度不变性、欧几里德不变性以及仿射不变性。这主要体现了物体的空间位置变化

DOG & LOG

DOG(Difference of Gaussians)和LOG(Laplacian of Gaussian)是尺度空间常用的两种算子。

DOG的定义如下:

Γσ1,σ2(x)=I∗1σ12π‾‾‾√e−(x2)/(2σ21)−I∗1σ22π‾‾‾√e−(x2)/(2σ22)Γσ1,σ2(x)=I∗1σ12πe−(x2)/(2σ12)−I∗1σ22πe−(x2)/(2σ22)

\Gamma_{\sigma_1,\sigma_2}(x) = I*\frac{1}{\sigma_1\sqrt{2\pi}} \, e^{-(x^2)/(2\sigma^2_1)}-I*\frac{1}{\sigma_2\sqrt{2\pi}} \, e^{-(x^2)/(2\sigma_2^2)}

DOG实际上就是两个不同方差的Gaussian核做差。它最典型的用法就是《图像处理理论(二)》中提到的高斯差分金字塔

LOG的计算分2步:

1.计算Gaussian核和图像的卷积G(x,y)∗f(x,y)G(x,y)∗f(x,y)G(x,y)*f(x,y)。

其中:

G(x,y)=12πσ2exp(−x2+y22σ2)G(x,y)=12πσ2exp⁡(−x2+y22σ2)

G(x,y) = \frac{1}{2\pi \sigma^2} \exp \left(-\frac{x^2 + y^2}{2 \sigma^2}\right)

2.对第1步的结果应用Laplace算子。

Laplace算子的定义为:

Δf=∇2f=∇⋅∇fΔf=∇2f=∇⋅∇f

\Delta f = \nabla^2 f = \nabla \cdot \nabla f

其中:

∇=(∂∂x1,…,∂∂xn)∇=(∂∂x1,…,∂∂xn)

\nabla = \left ( \frac{\partial}{\partial x_1} , \ldots , \frac{\partial}{\partial x_n} \right )

因为:

Δ[G(x,y)∗f(x,y)]=[ΔG(x,y)]∗f(x,y)Δ[G(x,y)∗f(x,y)]=[ΔG(x,y)]∗f(x,y)

\Delta[G(x,y)*f(x,y)] = [\Delta G(x,y)]*f(x,y)

一般将[ΔG(x,y)][ΔG(x,y)][\Delta G(x,y)],称为LOG算子。

从上图可以看出两者的函数图像是非常相似的。

参见:

http://blog.csdn.net/kezunhai/article/details/11579785

高斯拉普拉斯算子(Laplace of Gaussian)

构建DOG金字塔

《图像处理理论(二)》中提到的DOG金字塔只用了一个5*5的Gaussian核。如果使用多种Gaussian核,就可得到如下所示的DOG金字塔。

上图中,尺度相同,Gaussian核不同的图片被分为一组(Octave)。

空间极值点检测

关键点是由DOG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。

为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。

如上图所示,中间的检测点要与同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。

当然这样产生的极值点并不全都是稳定的特征点,因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应,因此需要剔除不稳定的边缘响应点。

关键点

离散空间的极值点并不是真正的极值点,上图显示了二维函数离散空间得到的极值点与连续空间极值点的差别。利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值(Sub-pixel Interpolation)。

为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个基准方向。使用图像梯度的方法求取局部结构的稳定方向。对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ3σ3\sigma邻域窗口内像素的梯度和方向分布特征。

在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向:

方向直方图的峰值则代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。

因此,对于有多个峰值的关键点位置,在相同位置和尺度将会有多个关键点被创建。这些关键点梯度相同,但方向不同。仅有15%的关键点被赋予多个方向,但可以明显的提高关键点匹配的稳定性。

实际编程实现中,就是把该关键点复制成多份关键点,并将方向值分别赋给这些复制后的关键点,并且离散的梯度方向直方图要进行插值拟合处理,来求得更精确的方向角度值,检测结果如下图所示:

通过以上步骤,对于每一个关键点,拥有三个信息:位置、尺度以及方向

关键点特征描述

接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照变化、视角变化等等。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。

Lowe建议描述子使用在关键点尺度空间内4*4的窗口中计算的8个方向的梯度信息,共4x4x8=128维向量表征。

表示步骤如下:

1.确定计算描述子所需的图像区域。

特征描述子与特征点所在的尺度有关,因此,对梯度的求取应在特征点对应的高斯图像上进行。将关键点附近的邻域划分为d * d(Lowe建议d=4)个子区域,每个子区域做为一个种子点,每个种子点有8个方向。

2.将坐标轴旋转为关键点的方向,以确保旋转不变性。

3.将邻域内的采样点分配到对应的子区域内,将子区域内的梯度值分配到8个方向上,计算其权值。

4.插值计算每个种子点八个方向的梯度。

5.如上统计的4x4x8=128个梯度信息即为该关键点的特征向量。特征向量形成后,为了去除光照变化的影响,需要对它们进行归一化处理,对于图像灰度值整体漂移,图像各点的梯度是邻域像素相减得到,所以也能去除。

6.描述子向量门限。非线性光照,相机饱和度变化对造成某些方向的梯度值过大,而对方向的影响微弱。因此设置门限值(向量归一化后,一般取0.2)截断较大的梯度值。然后,再进行一次归一化处理,提高特征的鉴别性。

7.按特征点的尺度对特征描述向量进行排序。

总结

SIFT大概算是最复杂的算子了,上文仅是概括描述,省略了大量公式及其推导,但仍然花了很大篇幅才讲完。可以想见,设计一个比SIFT还好的算子会有多么困难,人工设计特征走到这里,差不多也就到头了,后面的天下是属于DL的。

参考

http://blog.csdn.net/zddblog/article/details/7521424

SIFT算法详解

https://mp.weixin.qq.com/s/wYiwuBt8VVYOheJ_jgCHgA

一文读懂图像局部特征点检测算法!

https://mp.weixin.qq.com/s/sM78DCOK3fuG2JrP2QaSZA

SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(上)

https://mp.weixin.qq.com/s/yzVMDEpwbXVS0y-CwWSBEA

SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(下)

YUV & YCbCr & RGB

在RGB颜色空间中,红,绿,蓝是基本元素。RGB格式是显示器通常使用的格式。

然而,人类视觉系统(HVS)相比亮度来说对于颜色不是那么敏感的。通过把亮度与颜色信息分离,并对亮度值取更高的分辨率可以更有效地表示一个颜色图像。这就是所谓的YUV颜色空间。Y表示亮度,B-Y(即U)、R-Y(即V)是色差信息。

实际使用中,为了更有效率,又定义了YCbCr格式。两个Y、Cb和U、Cr和V的含义相同,但是表示方法不同。YCbCr在YUV的基础上,进行了比例和偏置变换。

相关的定义及转换标准是:ITU-R Recommendation BT.601(标清)和ITU-R Recommendation BT.709(高清)。

图像处理理论(五)——SIFT相关推荐

  1. 数字图像处理第五章——几何变换与图像配准

    数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 ...

  2. 数字图像处理——第五章 图像复原与重建

    数字图像处理--第五章 图像复原与重建 文章目录 数字图像处理--第五章 图像复原与重建 写在前面 1 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...

  3. 图像处理理论(四)——HOG, Haar, ISP

    http://antkillerfarm.github.io HOG Histogram of oriented gradients是一种用于物体检测的算子. HOG的计算步骤,如上图所示: 1.首先 ...

  4. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  5. 分布式理论(五)—— 一致性算法 Paxos

    分布式理论(五)-- 一致性算法 Paxos 前言 Paxos 算法如同我们标题大图:世界上只有一种一致性算法,就是 Paxos.出自一位 google 大神之口. 同时,Paxos 也是出名的晦涩难 ...

  6. 数字图像处理 第五章图像复原与重建

    文章目录 数字图像处理 第五章 图像复原与重建 引言 5.1背景知识 5.2图像退化与复原 5.3噪声模型 高斯噪声 椒盐噪声 瑞丽噪声 伽马噪声 5.4只存在噪声的复原--空间滤波 均值滤波 统计排 ...

  7. 数字图像处理第五次作业——频域滤波器

    目 录 一.基本概念及原理 1. 理想低通滤波器: 2. 巴特沃斯低通滤波器: 3. 高斯低通滤波器: 4. 高通滤波器: 5. 拉普拉斯高通滤波器: 6. Unmask高通滤波器: 二.实现过程和结 ...

  8. 最优控制理论 五+、极大值原理Bang-Bang控制问题的求解

    本博客是最优控制理论 五.极大值原理→控制不等式约束的后续,计算部分. 极大值原理求解最优控制问题属于间接法,它的数值求解基本思路仍然是求解Hamilton系统,也就是包含状态 x ( t ) x(t ...

  9. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

最新文章

  1. LIVE555中RTSP客户端接收媒体流分析及测试代码
  2. 转Meta的http-equiv属性详解
  3. Winform中使用FastReport实现自定义PDF打印预览
  4. 浅析php中的stdClass
  5. 踩坑rosbag --clock
  6. keepalive的作用
  7. 带前导0的数字三角形(洛谷P5721题题解,Java语言描述)
  8. 操作系统(1)-进程与线程
  9. 网站改造HTTPS有哪些好处?看很多网站都做了!
  10. 移动硬盘(U盘)病毒对数据的破坏
  11. continue语句只用于循环语句中_流程控制(跳转语句)
  12. [转]Java杂谈(七)--接口amp; 组件、容器
  13. JavaScript入门教程
  14. 一个屌丝程序猿的人生(六十一)
  15. CCNA学习笔记#01
  16. 学习笔记:Maxent的示例运行及部分结果解释
  17. deepin 15.11安装postgresql
  18. 【解决方案】VS2013外部工具中添加ildasm.exe
  19. 实现在线播放Wav音频文件,支持IE和Google
  20. pycharm中使用chatgpt

热门文章

  1. 回流Reflow和重绘Repaint
  2. 网络安装LINUX系统原理,PXE网络引导系统自动化安装CentOS7
  3. CodePush 管理工具 App Center Cli 的常用命令行
  4. 工业局的云计算机,广州市海珠区科技工业商务和信息化局方奕涛局长带队二次调研云算...
  5. css怎么把横向菜单变纵向_CSS 布局模式 + 居中布局
  6. 使用vant 自定义弹框
  7. [2017.11.11特辑]以一个光棍节表白案例浅谈ECMAScript6模块化的使用方法
  8. AI:IPPR的数学表示-CNN稀疏结构进化(Mobile、xception、Shuffle、SE、Dilated、Deformable)
  9. Sobel算子取代:基于特定点方向的canny边缘检测
  10. Win7共享文件夹简单?这个共享问题可以难倒90%的人