计算机视觉基础知识(十)--尺度不变特征变换(SIFT)

SIFT

概述

  • sift(尺度不变特征变换):Scale Invariant Feature Transform
  • 提取图像的局部特征;
  • 在尺度空间寻找极值点;
  • 提取极值点的位置、尺度、方向信息;

应用范围

  • 物体识别
  • 机器人地图感知与导航
  • 影像拼接
  • 3D模型建立
  • 手势识别
  • 影像追踪

特点

  1. 对视角变化、噪声等存在一定程度的稳定性;
  2. 独特性,信息量丰富,适于在海量数据中进行快速、准确匹配;
  3. 多量性,少数物体也可产生大量sift特征;

算法描述

  • 实质是在不同的尺度空间上查找关键点(特征点);
  • 计算关键点的大小、方向、尺度信息;
  • 利用上述的信息组成关键点对特征点进行描述;
  • sift查找的关键点十分突出,不会因光照、仿射变换和噪声等因素而变换稳定的特性;
  • 稳定的特征点表现为:角点、边缘点、暗区的亮点、亮区的暗点;
  • 匹配的过程就是对比这些特征点的过程;

 SIFT特征提取和匹配具体步骤

  1. 生成高斯差分金字塔(DOG金字塔),构建尺度空间;
  2. 空间极值点检测,初步探查关键点;
  3. 稳定关键点的精确定位;
  4. 稳定关键点方向信息分配;
  5. 关键点描述;
  6. 特征点匹配;

SIFT尺度空间

  • 在摄像头拍摄的画面中,计算机无法分辨一个景物的尺度信息;
  • 人的大脑中对物体已经有了基本概念;
  • 近距离和远距离观看一个苹果,都能认出;
  • 距离物体近时,人眼能够获得足够的特征;
  • 距离物体远时,能够忽略细节;
  • 图片中的分辨率是固定的;
  • 要模拟人眼的效果,需要不同分辨率的同一图片;
  • 将这些图片制作成图像金字塔模拟人眼功能;
  • 对尺寸变化的物体具有人眼的识别能力;
  • 尺度空间定义
  • 试图在图像领域中模拟人眼观察物体的概念和方法;
  • 对不同尺寸的物体,分别观察细节和整体的能力;

SIFT图像金字塔

  • 尺度空间--描述一个图片需要获得多少不同分辨率的图片;
  • 图像金字塔--对一个原始图片不断地进行分辨率的减少,然后将得到的图片摞在一起,组成一个四棱锥,这个椎体称为图像金字塔;
  • 以多分辨率来解释图像的结构
  • 对原始图像进行多尺度像素采样;
  • 生成N个不同分辨率的图像;
  • 最高级别分辨率的图像放在最底部;
  • 网上是一系列分辨率逐次降低的图片
  • 最顶部是只含一个像素的图片;
  • 这是传统意义上的金字塔。

 获得图像金字塔的步骤

  1. 利用滤波器平滑图像(高斯滤波);
  2. 对平滑图像进行抽样(采样);
  • 两种采样方式:上采样和下采样;

高斯金字塔的主要思想

  •  对原始图像进行尺度变换;
  • 获得图像多尺度下尺度空间表示序列;
  • 对这些序列图像进行住轮廓提取;
  • 以该轮廓作为一种特征向量,实现边缘、角点检测不同分辨率上的关键点提取;
  • 各尺度下图像的模糊度逐渐变大;
  • 模拟人眼由近及远对目标物体在视网膜上的成像过程;
  • 尺度空间构建的基础是DOG金字塔;
  • DOG金字塔构建的基础是高斯金字塔;

高斯金字塔

  • 在SIFT中提出来的概念;
  • 高斯金字塔是由很多组(Octave)金字塔构成;
  • 每组金字塔都含有若干层(Interval);

高斯金字塔构建过程

  1. 将原图像扩大一倍作为高斯金字塔的第1组第1层;
  2. 将第1组第1层经高斯卷积(实质为高斯滤波或高斯平滑)作为第1组金字塔的第二层;
  3. \sigma乘一比例系数K,得到\sigma=k*\sigma,用于平滑第1组第2层图像;结果作为第三层;
  4. 重复步骤3,得到L层图像;
  5. 同一组中,每一层图像的尺寸一样,平滑系数不一样;
  6. 对应的平滑系数为:0,\sigma,k\sigma,k^2\sigma,...,k^{L-2}\sigma.
  7. 将第一组的倒数第三层图像作为比例因子为2的降采样(尺寸减半);
  8. 上述得到的图像作为第2组的第1层;
  9. 对第2组第1层图像做平滑因子为\sigma的高斯平滑,得到第2组第2层;
  10. 重复类似步骤3,得到第2组的L层图像;
  11. 这些图像在组内尺寸一样;
  12. 对应的平滑系数为:0,\sigma,k\sigma,k^2\sigma,...,k^{L-2}\sigma.
  13. 图像的尺寸为第1组图像的一半;
  14. 反复执行,得到O组。每组L层,共计O*L个图像,这些图像构成高斯金字塔;

构建尺度空间 

  • 高斯金字塔生成O组L层不同尺度的图像;
  • (O,L)构成高斯金字塔的尺度空间;
  • 组O作为二维坐标系的一个坐标;
  • 层L作为另一个坐标;
  • 给定的一组坐标(O,L)唯一确定高斯金字塔中的一幅图像;
  • 采用高斯核函数进行滤波,保存原始图像最多的细节特征;
  • 尺度空间图像就是当前图像与不同尺度核参数\sigma卷积后的图像;

L(x,y,\sigma)=G(x,y,\sigma)*I(x,y);

G(x_i,y_i,\sigma)=\frac{1}{2\pi\sigma^{2}}exp(-\frac{(x-x_i)^2+(y-y_i)^2}{2\sigma^2});

DOG金字塔 

  • 尺度空间构建的基础为DOG金字塔;
  • 高斯金字塔是DOG金字塔构建的基础;
  • DOG(Difference of  Gaussian);
  • 第一组第一层由高斯金字塔的第一组第二层减第一组第一层得到;
  • 以此类推,逐组逐层生成每一个差分图像;
  • 所有差分图像构成差分金字塔;

尺度空间极值检测 

  • 特征点由DOG空间局部极值点组成;
  • 通过每个像素点和其所有临近点比较寻找极值点;
  • 比较该点与其图像域和尺度域的相邻点的大小;
  • 下图中间检测点与同层的8个相邻点以及上下层的9x2个点共计26各点比较;
  • 确保在二维图像空间和尺度空间都检测到极值点;

  •  局部极值点在同组中查找;
  • 对于组内第一张图和最后一张图,没有前一张和下一张;
  • 利用高斯模糊,在高斯金字塔多模糊出三张图像凑数;
  • 在DOG中多出两张图像;

高斯金字塔的K值

  • k=2^{\frac{1}{s}};
  • s:3到5之间,每组图像中检测S个尺度的极值点;

SIFT算法生成高斯金字塔的规则

  • 高斯金字塔含O组图像;
  • 每组图像有S+3层;
  • O=log_2(min(M,N))-3;
  • s的意思:差分高斯金字塔求极值点的层点数量;

稳定关键点的精确定位 

  • DOG值对噪声和边缘比较敏感;
  • 需要进一步筛选第二步中在尺度空间检测到的极值点;
  • 去除不稳定和错误检出的极值点;
  • 利用阈值的方法来限制:opencv:contrastThreshold;

稳定关键点方向信息分配

方法

  • 获取关键点所在尺度空间邻域;
  • 计算该区域的梯度和方向;
  • 创建方向直方图;
  • 假定直方图的峰值为主方向参数;
  • 高于主方向80%的方向为辅助方向;

  • 任意关键点,梯度幅值表示:
  • m(x,y)=\sqrt{(L(x+1,y)-L(x-1,y))^2+(L(x,y+1)-L(x,y-1))^2} ;
  • 梯度方向为:
  • \theta(x,y)=tan^{-1}[\frac{L(x,y+1)-L(x,y-1)}{L(x+1,y)-L(x-1,y)}];

关键点描述

  • 每一个关键点有位置\尺度\方向三个信息;
  • 为每个关键点建立一个描述符;
  • 用一组向量描述关键点;
  • 使关键点不随各种变化而改变,比如光照变化\视角变化等
  • 描述子包含关键点,及有贡献的周围邻域点;

关键点描述的思路

  • 对关键点周围像素区域分块;
  • 计算块内梯度直方图;
  • 生成具有独特性的向量;
  • 该向量是区域图像信息的一种抽象表述;

  • 对于2x2的块,每块最终取8个方向;
  • 生成2X2X8维度的向量;
  • 以该 2X2X8维度的向量作为中心关键点的数学描述;
  • 实验结果表明,对关键点采用4x4x8=128维向量表征,综合效果最佳(不变性与独特性).

特征点匹配

  • 通过计算两组特征点的128维关键点的欧式距离实现;
  • 欧式距离越小,相似度越高;
  • 欧式距离小于阈值,匹配成功.

特征点匹配具体步骤:

  1. 对模板图(参考图,reference image)建立关键点描述子集合;
  2. 对实时图(观测图,observation image)建立关键点描述子集合;
  3. 通过两点集内关键点描述子的比对完成目标的识别;
  4. 128维关键点描述子采用欧式距离确定相似性;
  5. 采用穷举法匹配.
  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值