| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 局部图像描述子【计算机视觉第二章】 -> 正文阅读 |
|
[人工智能]局部图像描述子【计算机视觉第二章】 |
什么是局部图像描述子所谓局部特征描述子就是用来刻画图像中的局部特征的,是以图像中的一个像素点的周围像素点的分布特征来获取该点的局部特征的算法。我们可以使用局部特征的特征点来代表图像的内容包括运动目标跟踪,物体识别,图像配准,全景图像拼接,三维重建等。如果我们想匹配同一个场景中的两幅图像。首先,我们检测每幅图像中的特征,然后提取他们的描述子。第一幅图像中的每一个特征描述子向量都会与第二幅图中的描述子进行比较,得分最高的一对描述子,也就是两个向量的距离最近,将被视为那个特征的最佳匹配。这些图像的局部特征需要以下性质:
我们学习 Harris 角点检测算法,用于提取图像的特征点;学习 SIFT(尺度不变特征转换),用于解决图像缩放、旋转、曝光、噪声等因素对特征匹配的影响。 Harris角点检测算法角点(corner points):
?? 角点特征:
Harris 角点检测算子:Harris 算子是一种简单的点特征提取算子,这种算子受信号处理中自相关函数的启发,给出与自相关函数相联系的矩阵M。M阵的特征值是自相关函数的一阶曲率,如果两个曲率值都高,那么就认为该点是特征点。为了消除噪声对于角点检测的影响,可以使用一个高斯滤波器来平滑图像。 Harris 角点检测算法的基本思想:利用矩形窗在图像上移动,若窗内包含有角点,则窗口向各个方向移动时,窗内的灰度值都会发生变化。从而达到检测图像角点的目的。如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点。该点就称为角点。 Harris 角点检测算法的数学表达:? 总的来说,算法的核心就是是利用局部窗口在图像上进行移动,判断灰度是否发生较大的变化。如果窗口内的灰度值(在梯度图上)都有较大的变化,那么这个窗口所在区域就存在角点。
Harris角点检测实例
角点检测结果如下: 从上图可以明显看出,随着阈值从0.01增到0.05再到0.1,检测出的角点越来越少,并且角点检测算子对亮度的变化更敏感,在亮区域角点更多。可以看出,Harris角点检测获取的角点在图像中分布不均匀(对比度高的区域角点多)。 Harris 角点检测算法下实现的图像匹配?Harris 角点检测器仅仅能够检测出图像中的兴趣点,但是没有给出通过比较图像间的兴趣点来寻找匹配角点的方法。我们需要在每个点上加入描述子信息,并给出一 个比较这些描述子的方法。 兴趣点描述子是分配给兴趣点的一个向量,描述该点附近的图像的表观信息。描述子越好,寻找到的对应点越好。我们用对应点或者点的对应来描述相同物体和场景点在不同图像上形成的像素点。
匹配结果: 该算法的结果存在一些不正确匹配。这是因为,与现代的一些方法(SIFT特征检测等)相比,图像像素块的互相关矩阵具有较弱的描述性。实际运用中,我们通常使用更稳健的方法来处理这些对应匹配。这些描述符还有一个问题,它们不具有尺度不变性和旋转不变性,而算法中像素块的大小也会影响对应匹配的结果。? 小结Harris角点检测算法优缺点优点:
?缺点:
SIFT算法(尺度不变特征变换)?SIFT简介?尺度不变特征转换即SIFT (Scale-invariant feature transform)是一种计算机视觉的算法。它用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所发表,2004年完善总结。 ? ? ? ?其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。 ? ? ? 局部影像特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用 SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。 ? ? ? SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 SIFT算法可以的解决问题:
SIFT算法流程图?? SIFT特征检测基本步骤1. DoG尺度空间的极值检测: 首先构造DoG尺度空间,在SIFT中使用不同参数的高斯模糊来表示不同的尺度空间,而构造尺度空间是为了检测在不同尺度下都存在的特征点,特征点的检测比较常用的方法是高斯拉普拉斯,但是LoG的运算量是比较大的,Marr和Hidreth指出可以使用DoG(高斯差分)来近似计算LoG,所以在DoG的尺度空间下检测极值点。 2. 删除不稳定的极值点: 低对比度的极值点+不稳定的边缘响应点 3. 确定特征的的主方向: 以特征点的为中心、以3×1.5σ3×1.5σ为半径的领域内计算各个像素点的梯度的幅角和幅值,然后使用直方图对梯度的幅角进行统计。直方图的横轴是梯度的方向,纵轴为梯度方向对应梯度幅值的累加值,直方图中最高峰所对应的方向即为特征点的方向。 4. 生成特征描述子: 首先将坐标轴旋转为特征点的方向,以特征点为中心的16x16的窗口的像素的梯度幅值和方向,将窗口内的像素分为16块,每块是其像素内8个方向的直方图统计,共可以形成128维的特征向量。 ?SIFT算法原理1.检测尺度空间的极值 检测尺度空间极值就是搜索所有尺度上的图像位置,通过高斯微分函数来识别对于尺度和旋转不变的兴趣点。其主要步骤可以分为建立高斯金字塔、生成DOG高斯差分金字塔和DOG局部极值点检测。为了让大家更清楚,我先简单介绍一下尺度空间,再介绍主要步骤。 (1)尺度空间 一个图像的尺度空间定义为一个变化尺度的高斯函数与原图像的卷积? ? ?其中,*表示卷积计算。? ?其中,m、n表示高斯模版的维度,(x,y)代表图像像素的位置。σ?为尺度空间因子,σ 值越小表示图像被平滑的越少,相应的尺度就越小。小尺度对应于图像的细节特征,大尺度对应于图像的概貌特征,效果如下图所示,尺度从左到右,从上到下,一次增大。?? ?(2)建立高斯金字塔 ?尺度空间在实现时,使用高斯金字塔表示,高斯金字塔的构建分为两部分: 1.对图像做不同尺度的高斯模糊 2.对图像做降采样(隔点采样) 图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金子塔的第一层,每次降采样所得到的新图像为金字塔的上一层(每层一张图像),每个金字塔共n层。金字塔的层数根据图像的原始大小和塔顶图像的大小共同决定。 为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如上图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,组数和金字塔层数相等,每组含有多层Interval图像。 高斯图像金字塔共o组、s层, 则有: 其中,σ表示尺度空间坐标,s表示sub-level层坐标,表示初始尺度,S表示每组层数(一般为3~5)? ?(3)建立DOG高斯差分金字塔 为了有效提取稳定的关键点,利用不同尺度的高斯差分核与卷积生成。 DOG函数: (4)DOG局部极值检测 特征点是由DOG空间的局部极值点组成的。为了寻找DOG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域 的相邻点大或者小。 ?2.关键点方向分配 3.关键点的描述? ?4.关键点的匹配 SIFT算法实例?1.VLFeat的配置为了计算图像的SIFT特征,我们要用开源工具包VLFeat。 ?VLFeat的下载地址:Index of /download (vlfeat.org)? 选择 vlfeat-0.9.20-bin.tar.gz?安装包下载,下载完成解压出来,找到bin目录下的win32文件夹,复制出来,放到你想放的位置(我放在了D:\VLfleat-bin,win32文件夹可改成你想要的名字,我改成win32vlfeat) ?然后打开win32vlfeat文件,复制它的位置路径(我的是D:\VLfleat-bin\win32vlfeat),接着找到PCV库里的sift.py文件打开修改下面的process_image方法(sift.exe后面要有一个空格)即可完成配置 2.检测感兴趣点
可以看到,与Harris角点检测相比,sift提取出来的特征点信息更多,而且更加精准,这是因为sift的特征点提取步骤比Harris的步骤复杂的多,它需要建立高斯图像金字塔和高斯差分金字塔之后再检测极值,而Harris角点只是对原图进行角点检测和变化。? 3.匹配描述子对于将一幅图像中的特征匹配到另一幅图像的特征,一种稳健的准则(同样是由Lowe提出的)是使用者两个特征距离和两个最匹配特征距离的比率。相比于图像中的其他特征,该准则保证能够找到足够相似的唯一特征。使用该方法可以使错误的匹配数降低。下面的代码实现了匹配函数。
Harris匹配结果: 可以看到SIFT算法的匹配效果比?Harris匹配效果好非常多,同一场景,尺度稍微改变了一下,Harris算法肉眼可见出现很多匹配错误点,而SIFT算法肉眼完全看不到匹配错误点,这是因为SIFT算法具有尺度和旋转不变性,即使两张图大小不一样、角度不一致也不会影响匹配结果,而Harris角点对尺度变化非常敏感,当遇到尺度变化较大时,很多正确特征点无法检测出来。 地理标记图像匹配小结SIFT算法的优点:
SIFT算法的缺点
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:32:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |