当前位置:文档之家› 基于ransac算法的sift特征匹配研究(OpenCV+VS2010)____朱万革(最终版)

基于ransac算法的sift特征匹配研究(OpenCV+VS2010)____朱万革(最终版)

基于ransac算法的sift特征匹配研究(OpenCV+VS2010)____朱万革(最终版)
基于ransac算法的sift特征匹配研究(OpenCV+VS2010)____朱万革(最终版)

SHANGHAI JIAO TONG UNIVERSITY

学士学位论文

THESIS OF BACHELOR

基于ransac算法的sift特征匹配研究(OpenCV+VS2010)

上海交通大学

毕业设计(论文)学术诚信声明

本人郑重声明:所呈交的毕业设计(论文),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

作者签名:

日期:年月日

上海交通大学

毕业设计(论文)版权使用授权书

本毕业设计(论文)作者同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权上海交通大学可以将本毕业设计(论文)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业设计(论文)。

保密□,在年解密后适用本授权书。

本论文属于

不保密□。

(请在以上方框内打“√”)

作者签名:指导教师签名:

日期:年月日日期:年月日

视频图像跟踪系统

摘要

图像(Image)--是客观世界的景物通过光学系统作用后产生的影像。图像直观地反映了场景中物体的颜色、亮度等特征,从而使我们能清晰分辨他们的形状、大小和空间位置。近30年来人们试图研究基于计算机的视觉系统,并且试图利用其系统来代替工业农业上的有害劳动。这样的视觉系统渐渐地进入我们的生活,让我们的生活变得很丰富,并且我们现在享受着图像处理这学问的成果。在世界上的先进的国家都设立了图像处理研究所,研究解决国防部门所要的问题。

本文将介绍基于OpenCV(Open Source Computer Vision Library)的视频图像匹配、拼接、融合和目标跟踪的算法以及方法。说到图像拼接,本文中所用的图像拼接算法是高效的SIFT特征算法。首先,用两个通用的USB摄像头来实时地进行采集图像,并对这两幅图像提取SIFT特征点。然后,进行粗匹配。最后用RANSAC算法对所提取出来的SIFT特征点匹配对进行提纯以及估计模型参数。最后把两幅图像拼接成一幅完整的图像,并且用加权平均算法进行无缝拼接。再进行摄像头标定,求出两个通用摄像头的内外参数,最后进行测距以及跟踪。最终取得了令人满意的结果。

关键词:SIFT,匹配,拼接,配准,RANSAC

VIDEO TRACKING SYSTEM

ABSTRACT

For many years, people have been studying how to make the robot or the computer able to identify targets and obtain information about the surrounding environment. We people can easily see and identify every kind of objects, but for computers or robots, this is a very difficult task and it is a process that involves a lot of scientific knowledge. The main part of object recognition is digital image processing. After the invention of the computer, people began to direct their research on how to make the computer more powerful and useful. For this purpose, many scientists have dedicated their life for the development of computer. The rapid development of computer causes a very fast development of digital image processing. Why we people study science? Of course the answer will be to make our life easier, and to be able to live in our dream life, so that we can enjoy the life in comfort and happiness.

Nowadays, Image processing technology is everywhere around us, but sometimes because we are used to this technolog y so we don’t pay attention. For example, the phone's handwriting input method, company entrance fingerprint identification system, license plate recognition system, robotics system program for exploring the lunar, medical imaging technology, facial recognition systems, and satellite imaging system and so on. In the last three decades, image processing technology has made a rapid development, which is inseparable from the development of computers, and more inseparable from the development of materials science. We can notice that science now have penetrated into every professional image processing and the image comes to many areas. These days image processing technology is directly related to our standard life, this technology involves image recognition, image analysis and image stitching, etc. Image processing is now facing enormous challenges, due to the development of materials processing industry, CNC machine tools and control theory, image processing technology requirements are very high, Therefore, many scientists have spent their life studying image processing technology, trying to develop more flexible, more reliable, more accurate image processing technology and image processing algorithms.

Video tracking system includes the image stitching technology, when we mention image stitching technology, we have to talk about image matching and image registration, because these two modules are the core parts of the image stitching.

In this study, I used Scale-invariant feature transform (SIFT) algorithm, this algorithm features repeatability, unique, localized, quantitative, accuracy and efficiency.

First from the two cameras (people left and right eye) in synchronous reads the image sequence, and I applied these image sequences RANSAC algorithm based on SIFT feature matching and obtained a good image stitching. Then this image with an image template matching of image recognition and tracking (based on SIFT), while supporting the binocular measurements to obtain distance information. Typically, about two a moment to read the two camera images with a lot SIFT feature point, so the need to purify the data using the RANSAC algorithm, like that

filter, however, so there is still a small amount of filtered wrong matching pairs. So we use RANSAC method parameter estimation perspective matrix. The so-called RANSAC method is a widely used model parameter estimation algorithm. Is the first of several randomly matched pairs (the thesis must select at least four pairs above), we see it as interior point, and then estimate the parameters, find out if you meet enough matrix matching pairs, then we think that this model is correct. If there is not enough to meet more than a match for, or very little, then we give up, and then randomly selected a few matches against repeated the above procedure. Experimental results show that seeks out such a perspective matrix is right.

This paper describes the steps according to the above video tracking system developed and used by the process; I have improved algorithm and experimental results.

Key words:SIFT, OpenCV, matching, RANSAC, video image

目录

第一章绪论 (1)

1.1 论文研究背景 (2)

1.2 国内外研究现状 (3)

1.3 论文任务和工作 (4)

第二章SIFT特征算法 (5)

2.1 有关SIFT算法的术语 (5)

2.2 SIFT综述 (6)

2.3 尺度空间和高斯滤波 (7)

2.4 关键点检测 (12)

2.5 特征点方向确定以及SIFT特征向量的生成 (15)

2.6 SIFT特征点匹配 (16)

2.7 本章小结 (19)

第三章基于RANSAC算法的图像拼接系统设计 (20)

3.1 对开源库OpenCV的简单的介绍 (20)

3.2 开发环境的搭建(VS2010+OpenCV2.3.1) (20)

3.3 实时采集图像 (21)

3.4 图像变换模型(矩阵) (22)

3.5 基于RANSAC的图像拼接 (23)

3.6本章小结 (27)

第四章基于OpenCV的摄像头标定以及测距 (28)

4.1 摄像机标定一般模型(针孔相机模型) (28)

4.2 基于OpenCV的测距原理 (30)

4.3 两个摄像头的标定以及测距 (33)

4.4本章小结 (41)

第五章总结以及未来的展望 (42)

参考文献 (43)

谢辞 (44)

第一章绪论

很多年来,人们一直研究怎么样才能够让机器人或者计算机识别目标、认知周围环境。在我们看来很简单的物体,计算机或者机器人很难辨别出来。这是一个很艰难的任务,也是一个涉及到很多科学的学问。我们所说的图像处理主要部分是数字图像处理。计算机的发明以后,人们开始着重研究怎么样让计算机的功能更强大更加具有实用性,随着岁月的流逝,很多科学家为了计算机的发展奉献了自己的一生。计算机的飞速发展给图像处理带来了飞速的发展。人类为什么要研究科学?无疑是为了让我们的生活更加滋润,让我们活在我们所设想过的梦幻里。这样我们舒舒服服的享受生活,幸福快乐地过着人生。数字图像处理技术无处不在。只不过我们习惯了没注意而已。比如说,手机的手写输入法、公司门口的指纹识别系统、交通统计时用到的车牌识别系统、探月机器人系统、医学成像技术、脸部识别系统和卫星拍摄系统等等。图像处理技术近三十年来得到了飞速的发展,这离不开电脑发展的伴随,更加离不开材料科学的发展。可见,现在科学的每个专业都渗透到图像处理,而且图像涉及到的领域很多。到哪儿都能感觉到图像处理技术的强大。图像处理技术的应用方面很广,小到我们所用的智能手机里,大到国防工业。在战争的时候,敌机发现是个很关键的问题,因为早发现可以早点做好战斗准备。用雷达发现敌机是主动的,所以容易被发现,但是,如果开发一个双目跟踪系统(利用两个已标定好的摄像头)的话,不会被敌机发现,也就是说被动跟踪方式。这样的系统是降低成本,而且不会被敌机发现,所以,其利用价值是无可限量的。

图像处理技术有图像识别、图像分析和图像拼接等等。图像处理现在面临巨大的挑战,随着材料加工业、数控机床和控制理论的发展,各领域对图像处理技术的要求非常的高。所以,很多科学家用自己的一生去研究图像处理技术,试图研发出更灵活、更加可靠、更高精度的图像处理技术以及图像处理算法。

作为处理图像的图像处理数学工具,MATLAB和MATHCAD不可缺少。此外,C,C++和Java 是目前为止最受欢迎的视觉系统实现语言,这是因为它们在集成高级和低级功能方面力量强大而且编译能力强。[1,11]除此以外OpenCV开源库作为强大的图像处理开源库得到了广泛的应用。之所以得到了众多科学家开发人员的好评,是因为它是开放的,也就是说免费的,

任何人都可以去用,其次呢,是因为它所拥有的图像处理功能非常之强大。比起其他图像处理软件,OpenCV的强大表现在它有很多封装好的函数,这些函数各个都是一个功能,比如说要是用visual c++中实现的功能,在OpenCV上用简单的几个函数来实现。

下面着重介绍本论文的研究背景、国内外研究现状以及论文内容和组织结构。

1.1 论文研究背景

数字图像处理起源于20世纪20年代,当时通过海底电缆从英国的伦敦到美国的纽约采用数字压缩技术传输了第一张数字照片。之后的发展有点缓慢,知道第三代计算机的问世,才开始迅速的发展。[3,6]

作为图像处理软件,OpenCV近十年来一直被人瞩目,一直被很多图像处理科学家们收到宠爱。虽然MATLAB具有很强大的科学计算功能和图像处理功能,但在图像处理功能方面超不过OpenCV的。麻省理工学院计算机科学与人工智能实验室的William T.Freeman曾说过“OpenCV库对从业人员而言非常有用,对初涉该领域的新手而言不失为一个优秀工具。正如其广而告之的那样,它是一套高效的计算机视觉算法。”

OpenCV是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。作为一个跨平台的计算机视觉库,它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。截止2009年8月,在https://www.doczj.com/doc/be11152356.html,网站的OpenCV 下载次数超过2,200,000次。[4] 过去一周(从2013-05-16到2013-05-22),在https://www.doczj.com/doc/be11152356.html,的OpenCV下载次数超过了32,942次,这数字仅仅是一周的下载次数。

OpenCV开源库至今更新到OpenCV2.4.5。本人在论文中所提到的算法都是用Visual Studio 2010和OpenCV2.3.1的搭建下写程序编译通过的。虽然OpenCV开源库是给大家开放的图像处理算法库,但是,在国内有关OpenCV的书籍和文献极少,针对初涉该领域的新手们的教程只有两本——“学习OpenCV”(中文版),“OpenCV教程——基础版”。在网上有与OpenCV有关的资料,但是,也是很少,而且相当零散。这种现象造成了很多喜欢玩OpenCV 的人很难系统的学到OpenCV。不过,在互联网的飞速的发展的情况下,这样的现象渐渐地少了很多。因为互联网上有关OpenCV的论坛很多,喜欢跟OpenCV打交道的人们可以通过互联网上的论坛或者贴吧互相交流互相帮助。这样在某种程度上形成了OpenCV培训所。写这

篇论文之前,本人也在互联网上得到了很多人们的帮助,也帮助过很多人们。但是,这也是一定的范围内进行的,也就是说局限在简单的程序语法或者特定的函数用法等等。

本人在论文中用到的算法是尺度不变特征点(SIFT)算法,尺度不变特征点具有可重复性、独特性、局部性、数量型、准确性和高效性。下面看看国内外研究现状。

1.2 国内外研究现状

OpenCV的更新换代地升级给我们带来了很多好处,以前要写很长的代码完成某功能的操作不需要了,因为OpenCV的版本越高里面嵌在的函数的封装性越来越好。这给了我们极大地好处,只要我们能够了解怎么调用这些函数和图像处理的基础理论就好办了。

视频图像跟踪系统其本身包含了图像拼接技术这领域,说道图像拼接技术不得不提起图像匹配和图像配准。因为这两个模块是图像拼接的主要核心部分。

现在被广泛使用的匹配有特征匹配和模板匹配等等。其中特征匹配是本论文所利用的。特征匹配的最后效果好坏取决于特征空间的选取,所谓的特征空间就是由参与匹配的图像特征构成的。特征点的类型很多:比如原始灰度、显著特征点、边缘轮廓、统计特征、局部描述符、高层结构特征等。

其中SIFT特征点几年来最为被广泛使用。利用SIFT特征空间的匹配大致分为三个步骤。第一步是特征提取,第二步是特征匹配。所谓的特征提取是指从具有共同部分的两幅图像提取共有的特征。特征匹配是对从两幅图像中提取出来的共有的特征点进行对应。

Movarac在1980年提出了关于角点的最初算法。在这基础上1988年Harris把这个初始想法正式形式化为称为结构张量的两个特征值性质的问题。从此以后很多科学家加入到了这领域开始研究各种算法。Triggs和Kenney提出了广义角点度量。这时候的算法都有着致命的弱点,那就是对广义的视角的匹配效果并不好,就不适用。为了克服这问题,1995年,张正友提出了用兴趣点附近的图像区域进行匹配的方法。但他的算法无法解决图像旋转、尺度变化、投影变化等问题。直到2004年Lowe完善了根据1999年基于Lindeberg的图像尺度空间理论提出的SIFT(Scale Invariant Feature Transform——尺度不变特征)算法。之所以SIFT特征空间被广泛使用,是因为它对缩放、旋转、平移和投影变换等等具有不变性。SIFT特征点匹配算法具有较强的鲁棒性,而且算法速度高、精度高。

1.3 论文任务和工作

近几年来SIFT特征算法成为了很多科学家以及研究员的研究热点。它以自身的优势渐渐地成为了图像匹配的主流算法。本论文围绕着如何将SIFT特征算法应用于视频图像跟踪系统中,实现从两个usb摄像头中读取的两幅图像进行匹配,怎么样提高匹配速度以及精度等问题开展研究。用SIFT算法进行的特征点的提取和粗匹配后的,效果还是不太理想,因为毕竟存在错误的匹配。所以,要用RANSAC(随机抽样一致性)算法对粗匹配的匹配对进行提纯工作。两个通用USB摄像头毕竟存在畸变性,特别是径向畸变厉害,所以,我们需要用OpenCV的自带函数来进行摄像头标定。在本论文采用的标定方法是张氏法,需要格子板,本论文采用的标定物正是具有9*6=54个角点的格子板标定物。通过OpenCV自带的标定算法以及相关的函数来求出摄像头的内外参数。利用求出来的内外参数进行简单的计算得到实际物体到摄像头的距离信息。利用已经标定好的摄像头进行测距的时候不需要模板匹配,因为只要找到很强的SIFT匹配对,也就是说只要找到正确的匹配对(当然跟目标相关的,其他的丢掉),就可以求出摄像头到物体之间的距离信息。首要条件是把两个摄像头放置的时候它们的光心轴要平行,以使让最后得出的距离接近实际的距离。下面来看看本论文理论结构以及各章的中心内容。

下面就是论文主要内容:

第一章:第一章为绪论,简单的论述了本论文的研究背景和国内外研究现状等。对图像处理经典算法进行了解剖,并论述了SIFT算法的优越性。最后给出了本论文的内容结构以及论文内容。

第二章:第二章主要介绍了有关SIFT算法的知识以及具体实现的方法。最后还简单的介绍了RANSAC算法的一般原理。

第三章:第三章是作为本论文的重点,着重介绍了从两个摄像头中读取的两幅图片中怎么样提取SIFT特征点、怎么样构建特征点空间以及怎么样粗匹配,最后介绍了经过RANSAC 算法以后图像拼接以及配准原理和方法。给出了评估模型的一般方法。

第四章:第四章讲述了基于OpenCV的摄像机标定原理和方法。针对双目视频跟踪系统的研制开发讲述了摄像机标定的数学原理以及具体实现方法和实验结果。

第五章:第五章为总结和展望。

第二章SIFT特征算法

作为一种局部描述子,尺度不变形特征变换,Sift(Scale Invariant Feature Transformation)被广泛利用着。它具有尺度不变形,在图像中找出关键点。从SIFT特征算法的诞生以来,出现了很多有关SIFT的算法,人们为了能够在现实中利用,而试图改进它。这些局部特征被广泛利用而且被研究的真正原因在于它能够表述统计意义的图像特征。

接下来从下面开始着重看SIFT特征算法具体内容。

2.1 有关SIFT算法的术语

本节论述本论文常用的一些术语以及概念。

(1)特征点:特征点可以是一个点,可以是一个很小的局部区域,也可以是局部特征,这三个都是相同的概念,知识它们出现的历史时期不一样而已。当然我们想要的特征点最好是一个点,可以理解为我们所研究的数字图像离散化后得到的一个最小的单位--像素点。但是,我们在做研究的时候,我们所关心的就是特征点以及它的领域。因为特征点的领域所表现出来的是某个物体的边缘或者特定的角点,所以特征点的领域对我们后续的研究有很大的帮助。

(2)局部特征:特征可以分为全局特征和局部特征。我们很容易理解全局特征。比如说我们看一幅图片中孤立的物体时,或者看彩色照片的时候很容易检测到某个物体或者某个人的脸。因为我们人类所拥有的眼镜,也就是说人类的视觉系统是具有极高的全局特征辨别能力,不过,让计算机或者机器人能够认知这些全局特征,需要耗费很大的精力和资金的投入。即使做到了,也是在一定的范围内可行的。因为图像处理技术虽然近几十年发展到令人振奋的程度,但是实际应用中还有很多海量的问题需要解决。

(3)几何变换:几何变形有平移变换、平移+旋转变换、相似(平移+缩放+旋转)变换、仿射变换和透视变换。

(4)仿射变换:他所指的是两个互不相同的坐标下的矢量之间的边换。

2.2 SIFT综述

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

其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。

此算法有其专利,专利拥有者为英属哥伦比亚大学。

局部影像特征的描述与侦测可以帮助辨识物体,SIFT 特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。

SIFT算法的特点有:

1) SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

2) 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

3) 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

4) 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

5) 可扩展性,可以很方便的与其他形式的特征向量进行联合。

SIFT算法可以解决的问题:

目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。而SIFT算法在一定程度上可解决:

1.) 目标的旋转、缩放、平移(RST)

2.) 图像仿射/投影变换(视点viewpoint)

3.) 光照影响(illumination)

4.) 目标遮挡(occlusion)

5.) 杂物场景(clutter)

6.) 噪声

SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。

Lowe将SIFT算法分解为如下四步:

1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

2.3 尺度空间和高斯滤波

当用一个具有视觉系统的机器人在未知的场景下分析周围环境的时候,机器人的视觉系统没有办法预先知道图像中物体的真正尺度。所以,需要考虑得到的图像在多尺度下的描述,获得所感兴趣物体尺度。因此,尺度空间的很多处理算子跟哺乳动物视网膜和视觉系统有着极高的相似性。所以,尺度空间理论经常与生物视觉系统相关联。这一节将讨论尺度空间的基本概念以及理论基础。并且利用几个实际图像实例来介绍尺度空间理论在场景分析中的应用。

2.2.1 图像的金字塔化

图像的金字塔化所指的是对图像进行低通滤波操作。在图像的金字塔化中被利用的低通滤波器是高斯低通滤波器。具体地说,把一幅图像和高斯滤波器进行卷积运算后,再对图像进行横轴和纵轴的方向进行抽样。这样得到的一些列图像称之为已金字塔化的图像序列。不多,它虽然能够表达出图像在多尺度下的描述,但它缺少扎实的理论背景,很难分析图像中物体的各种尺度。早在1983年,Witkin提出信号的尺度空间表达就是利用一系列单参数、款读递增的高斯滤波器将原始信号滤波的道德一组低频信号。说道低通滤波器,虽然其种类很多,但是,Koenderink、Lindeberg、Florack等科学家利用精准的数学理论通过不同途径证明了高斯核就是实现尺度变换的唯一的变换核。[2,13]由不同高斯核组成的尺度空间是规范的和现行的,而且满足一下的若干性质:平移不变性、尺度不变性和旋转不变性等等。

WItkin 对尺度空间理论最重要的贡献之一就是把这些表达与信号在不同尺度上的结构用系统方法关联在一起,从而将尺度这个维度很自然的加入到尺度空间表达中,使得跨尺度图像结构的某些行为能够被捕获。[2,13]

2.2.2 高斯尺度空间

SIFT 算法是在不同的尺度空间上查找关键点,而尺度空间的获取使用高斯模糊来实现,Lindeberg 等人已证明高斯卷积核是实现尺度变换的唯一变换核,并且是唯一的线性核。本节先介绍高斯模糊算法。

1.二维高斯函数

高斯模糊是一种图像滤波过程。高斯模糊所用到的函数就是高斯函数(正态分布)计算模糊模板。使用该模板与原图像进行卷积运算,并且得到一系列模糊图像。

N 维空间高斯函数方程为:

(2-1) 其中,是正态分布的标准差,值越大,图像越模糊(平滑)。r 为模糊半径,模糊半径是指模板元素到模板中心的距离。如二维模板大小为m*n ,则模板上的元素(x,y)对应的高斯计算公式为:

222(/2)(/2)221

()2x m y n G r e σπσ-+--= (2-2)

在二维空间中,这个公式生成的曲面的等高线是从中心开始呈正态分布的同心圆,如图

2.1所示。高斯函数是圆对称的分布不为零的像素组成的卷积矩阵与原始图像做变换。每个像素的值都是周围相邻像素值的加权平均。原始像素的值有最大的高斯分布值,所以有最大的权重,相邻像素随着距离原始像素越来越远,其权重也越来越小。这样进行模糊处理比其它的均衡模糊滤波器更高地保留了边缘效果。

22221()(2)r N G r e σπσ-=

图2.1

理论上来讲,图像中每点的分布都不为零,这也就是说每个像素的计算都需要包含整幅图像。在实际应用中,在计算高斯函数的离散近似时,在大概3σ距离之外的像素都可以看作不起作用,这些像素的计算也就可以忽略。通常,图像处理程序只需要计算(σ+1)*( σ+1)的矩阵就可以保证相关像素影响。

2.图像的二维高斯模糊

根据σ的值,计算出高斯模板矩阵的大小(σ+1)*( σ+1),使用公式(1-2)计算高斯模板矩阵的值,与原图像做卷积,即可获得原图像的平滑(高斯模糊)图像。为了确保模板矩阵中的元素在[0,1]之间,需将模板矩阵归一化。5*5的高斯模板如表2.1所示。

表2-1

下图是5*5的高斯模板卷积计算示意图。高斯模板是中心对称的。

图2.3

3.尺度空间理论以及高斯金字塔的构建

尺度空间(scale space)理论早在1962年被Iijima提出了以后,Witkin 和Koenderink 等人的推广下,渐渐得到了众多人们的关注,后来在计算机视觉领域内被广泛使用。

尺度空间理论的基本思想是在图像信息处理领域里引入一个参数(我们称之为尺度),通过联系变化的尺度参数获取多尺度下的空间序列,并对这些已获取的序列进行轮廓的提取,以该轮廓作为一个特征向量,实现角点、边缘检测以及不同分辨率上的特征提取等。尺度空间方法改变了传统的单尺度图像处理技术,进一步实现了尺度连续变化的图像动态分析框架。尺度是自然存在的,不是认为创造的,高斯尺度空间只是表现尺度空间的一种形式。

这样,能够更容易获得原图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,

能够模拟人在距离目标由近到远时候的目标在视网膜上的过程。

尺度空间要满足对图像的分析和图像的位置、大小、角度以及仿射变换无关,也就是说要满足平移不变性、欧几里得不变性、尺度不变性和仿射不变性。总的来说,要满足视觉不变性。

视觉不变性的解释如下:比如拿我们人类所拥有的视觉系统解释。当我们用眼睛观察一个物体的时候,假如物体所处的背景的光照变化了,我们的视网膜上形成的图像的对比度和亮度水平就变了,而且我们和物体之间的距离变化的时候,在我们的视网膜上形成的图像信息不同的,就是说我们的视网膜上形成的图像的位置、大小、形状以及角度是不同的。所以,我们所要利用的尺度空间要克服这些变化,总体来说要满足尺度不变性、欧几里得不变性、平移不变性以及仿射不变性。

下面我们来看尺度空间如何表示.

一幅图像的尺度空间,(x,y,)

Gσ与原

Lσ定义为具有一个变化尺度的高斯函数(x,y,)

图像I(x,y)的卷积。即(x,y,)

Gσ*I(x,y)。

*表示卷积。

上面的公式(2-3) 下面的公式(2-4)

X,y所指的是原图像的每个点的像素值,也就是说在图像坐标的坐标值。σ指的是尺度空间参数。值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。m,n表示高斯模板的维度。

接下来要构建金字塔,第一步首先利用上述的公式对原图像进行多尺度的高斯模糊,第二部再进行采样后得到一系列多尺度下的高斯金字塔。

图2.4

如同上面的图,可以看出所谓的金字塔模型就是对原图像进行降采样,从大到小,从下到上,把采样得到的图像序列排列的。每个金字塔模型里有n 层,第一层就是原图像。金字塔的层数根据所用到的原图像的大小以及最上面的图像大小来决定。而且看图片就可以不难发现每次滤波的尺度参数值就是前一个参数值的两倍,而每次采样时候我们采纳了降采样,就是个点采样一次。所以大小随着层次的上升就横向纵向各取1/2采样。

2.4 关键点检测

在这节里需要定义尺度空间,这尺度空间叫DoG 尺度空间。在上述的内容中提到了用函数(x,y,)L σ表示了图像的尺度空间。它是多尺度的高斯函数和原图像卷积后得到的。

DoG 尺度空间的定义如下:

D (x ,y ,)((x ,y ,k )(x ,y ,))*I (x ,y )(x ,y ,k )(x ,y ,)G G L L σσσσσ

=-=- K 为响亮的两个尺度空间倍数的常数。DoG 在计算上相邻图像高斯平滑后的图像详见,可见简化了计算。

图2.5

这样获取的一系列高斯差分图像是DoG尺度空间。我们只要看出图像上的像素点变化情况就可以了,也就是说如果像素值变了就说明那个像素点和其领域内存在特征点,如果没有发生什么变化,那就说明没有特征点。这样找出的特征点连起来,往往都是我们所关心的目标的主轮廓。

下面的图告诉我们DoG尺度空间所表达的信息以及其效果。从下面的一系列DoG图像来看我们通过DoG空间,能够获取目标的(我们所关心的物体)重要信息,比如轮廓。使用DoG对LoG金丝带来的好处是显而易见的。第一是LoG需要使用两个方向的高斯二维微分卷积核,而DoG直接使用高斯卷积核,省去了对卷积核的生成的运算量;第二是DoG保留了哥哥高斯尺度空间的图像,这样,在省城某以空间尺度的特征时候,可以直接使用(x,y,)

L 产生的尺度空间图像,而无需要重新再次声称该尺度的图像;第三是作为LoG的近似和简化,DoG具有与LoG相同的性质,而且检测特征点检测更加稳定。[2,81]

SIFT算法原理

3.1.1尺度空间极值检测 尺度空间理论最早出现于计算机视觉领域,当时其目的是模拟图像数据的多尺度特征。随后Koendetink 利用扩散方程来描述尺度空间滤波过程,并由此证明高斯核是实现尺度变换的唯一变换核。Lindeberg ,Babaud 等人通过不同的推导进一步证明高斯核是唯一的线性核。因此,尺度空间理论的主要思想是利用高斯核对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间特征提取。二维高斯函数定义如下: 222()/221 (,,)2x y G x y e σσπσ-+= (5) 一幅二维图像,在不同尺度下的尺度空间表示可由图像与高斯核卷积得到: (,,(,,)*(,)L x y G x y I x y σσ)= (6) 其中(x,y )为图像点的像素坐标,I(x,y )为图像数据, L 代表了图像的尺度空间。σ称为尺度空间因子,它也是高斯正态分布的方差,其反映了图像被平滑的程度,其值越小表征图像被平滑程度越小,相应尺度越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。因此,选择合适的尺度因子平滑是建立尺度空间的关键。 在这一步里面,主要是建立高斯金字塔和DOG(Difference of Gaussian)金字塔,然后在DOG 金字塔里面进行极值检测,以初步确定特征点的位置和所在尺度。 (1)建立高斯金字塔 为了得到在不同尺度空间下的稳定特征点,将图像(,)I x y 与不同尺度因子下的高斯核(,,)G x y σ进行卷积操作,构成高斯金字塔。 高斯金字塔有o 阶,一般选择4阶,每一阶有s 层尺度图像,s 一般选择5层。在高斯金字塔的构成中要注意,第1阶的第l 层是放大2倍的原始图像,其目的是为了得到更多的特征点;在同一阶中相邻两层的尺度因子比例系数是k ,则第1阶第2层的尺度因子是k σ,然后其它层以此类推则可;第2阶的第l 层由第一阶的中间层尺度图像进行子抽样获得,其尺度因子是2k σ,然后第2阶的第2层的尺度因子是第1层的k 倍即3 k σ。第3阶的第1层由第2阶的中间层尺度图像进行子抽样获得。其它阶的构成以此类推。 (2)建立DOG 金字塔 DOG 即相邻两尺度空间函数之差,用(,,)D x y σ来表示,如公式(3)所示: (,,)((,,)(,,))*(,)(,,)(,,)D x y G x y k G x y I x y L x y k L x y σσσσσ=-=- (7) DOG 金字塔通过高斯金字塔中相邻尺度空间函数相减即可,如图1所示。在图中,DOG 金字塔的第l 层的尺度因子与高斯金字塔的第l 层是一致的,其它阶也一样。

SIFT算法实现及代码详解

经典算法SIFT实现即代码解释: 以下便是sift源码库编译后的效果图:

为了给有兴趣实现sift算法的朋友提供个参考,特整理此文如下。要了解什么是sift算法,请参考:九、图像特征提取与匹配之SIFT算法。ok,咱们下面,就来利用Rob Hess维护的sift 库来实现sift算法: 首先,请下载Rob Hess维护的sift 库: https://www.doczj.com/doc/be11152356.html,/hess/code/sift/ 下载Rob Hess的这个压缩包后,如果直接解压缩,直接编译,那么会出现下面的错误提示: 编译提示:error C1083: Cannot open include file: 'cxcore.h': No such file or directory,找不到这个头文件。 这个错误,是因为你还没有安装opencv,因为:cxcore.h和cv.h是开源的OPEN CV头文件,不是VC++的默认安装文件,所以你还得下载OpenCV并进行安装。然后,可以在OpenCV文件夹下找到你所需要的头文件了。 据网友称,截止2010年4月4日,还没有在VC6.0下成功使用opencv2.0的案例。所以,如果你是VC6.0的用户请下载opencv1.0版本。vs的话,opencv2.0,1.0任意下载。 以下,咱们就以vc6.0为平台举例,下载并安装opencv1.0版本、gsl等。当然,你也可以用vs编译,同样下载opencv(具体版本不受限制)、gsl等。 请按以下步骤操作: 一、下载opencv1.0 https://www.doczj.com/doc/be11152356.html,/projects/opencvlibrary/files/opencv-win/1.0/OpenCV_1.0.exe

SIFT算法英文详解

SIFT: Scale Invariant Feature Transform The algorithm SIFT is quite an involved algorithm. It has a lot going on and can be come confusing, So I’ve split up the entire algorithm into multiple parts. Here’s an outline of what happens in SIFT. Constructing a scale space This is the initial preparation. You create internal representations of the original image to ensure scale invariance. This is done by generating a “scale space”. LoG Approximation The Laplacian of Gaussian is great for finding interesting points (or key points) in an image. But it’s computationally expensive. So we cheat and approximate it using the representation created earlier. Finding keypoints With the super fast approximation, we now try to find key points. These are maxima and minima in the Difference of Gaussian image we calculate in step 2 Get rid of bad key points Edges and low contrast regions are bad keypoints. Eliminating these makes the algorithm efficient and robust. A technique similar to the Harris Corner Detector is used here. Assigning an orientation to the keypoints An orientation is calculated for each key point. Any further calculations are done relative to this orientation. This effectively cancels out the effect of orientation, making it rotation invariant. Generate SIFT features Finally, with scale and rotation invariance in place, one more representation is generated. This helps uniquely identify features. Lets say you have 50,000 features. With this representation, you can easily identify the feature you’re looking for (sa y, a particular eye, or a sign board). That was an overview of the entire algorithm. Over the next few days, I’ll go through each step in detail. Finally, I’ll show you how to implement SIFT in OpenCV! What do I do with SIFT features? After you run through the algorithm, you’ll have SIFT features for your image. Once you have these, you can do whatever you want. Track images, detect and identify objects (which can be partly hidden as well), or whatever you can think of. We’ll get into this later as well. But the catch is, this algorithm is patented. >.< So, it’s good enough for academic purposes. But if you’re looking to make something commercial, look for something else! [Thanks to aLu for pointing out SURF is patented too] 1. Constructing a scale space Real world objects are meaningful only at a certain scale. You might see a sugar cube perfectly on a table. But if looking at the entire milky way, then it simply does not exist. This multi-scale nature of objects is quite common in nature. And a scale space attempts to replicate this concept

SIFT 特征提取算法详解

SIFT 特征提取算法总结 主要步骤 1)、尺度空间的生成; 2)、检测尺度空间极值点; 3)、精确定位极值点; 4)、为每个关键点指定方向参数; 5)、关键点描述子的生成。 L(x,y,σ), σ= 1.6 a good tradeoff

D(x,y,σ), σ= 1.6 a good tradeoff

关于尺度空间的理解说明:图中的2是必须的,尺度空间是连续的。在 Lowe 的论文中, 将第0层的初始尺度定为1.6,图片的初始尺度定为0.5. 在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。 next octave 是由first octave 降采样得到(如2) , 尺度空间的所有取值,s为每组层数,一般为3~5 在DOG尺度空间下的极值点 同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找

在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度 变化的连续性,我们在每一组图像的顶层继续用高斯模糊生成了 3 幅图像, 高斯金字塔有每组S+3层图像。DOG金字塔每组有S+2层图像.

If ratio > (r+1)2/(r), throw it out (SIFT uses r=10) 表示DOG金字塔中某一尺度的图像x方向求导两次 通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度)?

直方图中的峰值就是主方向,其他的达到最大值80%的方向可作为辅助方向 Identify peak and assign orientation and sum of magnitude to key point The user may choose a threshold to exclude key points based on their assigned sum of magnitudes. 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备 旋转不变性。以关键点为中心的邻域窗口内采样,并用直方图统计邻域像素的梯度 方向。梯度直方图的范围是0~360度,其中每10度一个柱,总共36个柱。随着距中心点越远的领域其对直方图的贡献也响应减小.Lowe论文中还提到要使用高斯函 数对直方图进行平滑,减少突变的影响。

SIFT特征点提取与匹配算法

SIFT 特征点匹配算法 基于SIFT 方法的图像特征匹配可分为特征提取和特征匹配两个部分,可细化分为五个部分: ① 尺度空间极值检测(Scale-space extrema detection ); ② 精确关键点定位(Keypoint localization ) ③ 关键点主方向分配(Orientation assignment ) ④ 关键点描述子生成(Keypoint descriptor generation ) ⑤ 比较描述子间欧氏距离进行匹配(Comparing the Euclidean distance of the descriptors for matching ) 1.1 尺度空间极值检测 特征关键点的性质之一就是对于尺度的变化保持不变性。因此我们所要寻找的特征点必须具备的性质之一,就是在不同尺度下都能被检测出来。要达到这个目的,我们可以在尺度空间内寻找某种稳定不变的特性。 Koenderink 和Lindeberg 已经证明,变换到尺度空间唯一的核函数是高斯函数。因此一个图像的尺度空间定义为:(,,)L x y σ,是由可变尺度的高斯函数(,,)G x y σ与输入图像(,)I x y 卷积得到,即: ),(),,(),,(y x I y x G y x L *=σσ (1.1) 其中:2222/)(221 ),,(σπσσy x e y x G +-= 在实际应用中,为了能相对高效地计算出关键点的位置,建议使用的是差分高斯函数(difference of Gaussian )(,,)D x y σ。其定义如下: ) ,,(),,() ,()),,(),,((),,(σσσσσy x L k y x L y x I y x G k y x G y x D -=*-= (1.2) 如上式,D 即是两个相邻的尺度的差(两个相邻的尺度在尺度上相差一个相乘系数k )。

SIFT算法C语言逐步实现详解

SIFT算法C语言逐步实现详解(上) 引言: 在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的介绍:九、图像特征提取与匹配之SIFT算法,而后在:九(续)、sift算法的编译与实现里,我也简单记录下了如何利用opencv,gsl等库编译运行sift程序。 但据一朋友表示,是否能用c语言实现sift算法,同时,尽量不用到opencv,gsl等第三方库之类的东西。而且,Rob Hess维护的sift 库,也不好懂,有的人根本搞不懂是怎么一回事。 那么本文,就教你如何利用c语言一步一步实现sift算法,同时,你也就能真正明白sift算法到底是怎么一回事了。 ok,先看一下,本程序最终运行的效果图,sift 算法分为五个步骤(下文详述),对应以下第二--第六幅图:

sift算法的步骤 要实现一个算法,首先要完全理解这个算法的原理或思想。咱们先来简单了解下,什么叫sift算法: sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe 在1999年所发表,2004年完善总结。 所谓,Sift算法就是用不同尺度(标准差)的高斯函数对图像进行平滑,然后比较平滑后图像的差别, 差别大的像素就是特征明显的点。 以下是sift算法的五个步骤: 一、建立图像尺度空间(或高斯金字塔),并检测极值点 首先建立尺度空间,要使得图像具有尺度空间不变形,就要建立尺度空间,sift算法采用了高斯函数来建立尺度空间,高斯函数公式为:

上述公式G(x,y,e),即为尺度可变高斯函数。 而,一个图像的尺度空间L(x,y,e) ,定义为原始图像I(x,y)与上述的一个可变尺度的2维高斯函数G(x,y,e) 卷积运算。 即,原始影像I(x,y)在不同的尺度e下,与高斯函数G(x,y,e)进行卷积,得到L(x,y,e),如下: 以上的(x,y)是空间坐标,e,是尺度坐标,或尺度空间因子,e的大小决定平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的e值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。 尺度,受e这个参数控制的表示。而不同的L(x,y,e)就构成了尺度空间,具体计算的时候,即使连续的高斯函数,都被离散为(一般为奇数大小)(2*k+1) *(2*k+1)矩阵,来和数字图像进行卷积运算。 随着e的变化,建立起不同的尺度空间,或称之为建立起图像的高斯金字塔。 但,像上述L(x,y,e) = G(x,y,e)*I(x,y)的操作,在进行高斯卷积时,整个图像就要遍历所有的像素进行卷积(边界点除外),于此,就造成了时间和空间上的很大浪费。 为了更有效的在尺度空间检测到稳定的关键点,也为了缩小时间和空间复杂度,对上述的操作作了一个改建:即,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分与原始图像I(x,y)相乘,卷积生成。 DOG算子计算简单,是尺度归一化的LOG算子的近似。 ok,耐心点,咱们再来总结一下上述内容: 1、高斯卷积 在组建一组尺度空间后,再组建下一组尺度空间,对上一组尺度空间的最后一幅图像进行二分之一采样,得到下一组尺度空间的第一幅图像,然后进行像建立第一组尺度空间那样的操作,得到第二组尺度空间,公式定义为 L(x,y,e) = G(x,y,e)*I(x,y)

SIFT特征点提取与匹配算法

二 特征点提取算法 1、基于SIFT (Scale Invariant Feature Transform )方法的图像特征匹配 参看David G. Lowe 的“Distinctive Image Features from Scale-Invariant Keypoints ” 基于SIFT 方法的图像特征匹配可分为特征提取和特征匹配两个部分,可细化分为五个部分: ① 尺度空间极值检测(Scale-space extrema detection ); ② 精确关键点定位(Keypoint localization ) ③ 关键点主方向分配(Orientation assignment ) ④ 关键点描述子生成(Keypoint descriptor generation ) ⑤ 比较描述子间欧氏距离进行匹配(Comparing the Euclidean distance of the descriptors for matching ) 1.1 尺度空间极值检测 特征关键点的性质之一就是对于尺度的变化保持不变性。因此我们所要寻找的特征点必须具备的性质之一,就是在不同尺度下都能被检测出来。要达到这个目的,我们可以在尺度空间内寻找某种稳定不变的特性。 Koenderink 和Lindeberg 已经证明,变换到尺度空间唯一的核函数是高斯函数。因此一个图像的尺度空间定义为:(,,)L x y σ,是由可变尺度的高斯函数(,,)G x y σ与输入图像(,)I x y 卷积得到,即: ),(),,(),,(y x I y x G y x L *=σσ (1.1) 其中:2222/)(221 ),,(σπσσy x e y x G +-= 在实际应用中,为了能计算的相对高效,所真正使用的是差分高斯尺度空间(difference of Gaussian )(,,)D x y σ。其定义如下: ) ,,(),,() ,()),,(),,((),,(σσσσσy x L k y x L y x I y x G k y x G y x D -=*-= (1.2) 如上式,D 即是由两个相邻的尺度的差(两个相邻的尺度在尺度上相差一个相乘系数k )。

基于SIFT特征的图像匹配

毕业设计(论文)题目基于SIFT特征的图像匹配 姓名张建华 学号0811111101 所在学院理学院 专业班级08信计 指导教师吴颖丹 日期2012 年 6 月 2 日

摘要 当今社会已经进入信息时代,随着计算机技术、通信技术和数学的发展,图像信息处理能力和水平也不断提高,相应的也得到更多关注、研究和更加广泛的应用。图像匹配是处理和解决各种图像信息的基础,已经成为虚拟现实和计算机可视化领域的研究热点。一直以来,研究人员对图像匹配技术进行了大量的研究,推出了许多匹配算法,其中特征匹配算法有着较高的精确度和稳定性。SIFT (Scale Invariant Feature Transform)特征匹配算法是Lowe提出来的用于图像特征匹配的算法,是目前特征匹配领域的热点,对图像的旋转,尺度缩放和亮度变换保持不变,对视角变换,仿射变换保持一定程度的稳定。SIFT特征点是图像的一种尺度不变局部特征点,具有独特性好,信息量丰富,多量性,高速性,可扩展性等特点。正是借助于这些特点,使得传统图像配准中的许多诸如前面提到的共性问题得到了很大程度的改善。该算法首先给出了尺度空间的生成方法,检测出极值点;接下来给出了SIFT特征点的提取步骤和精确定位极值点的方法;然后基于特征点邻域像素的梯度和方向生成了关键点的描述向量;最后根据特征向量给出了匹配方法,提取了SIFT的特征点,并其应用于图像匹配。 本文首先简要介绍了图像匹配所需的基础知识,然后详细介绍了SIFT算法的具体流程。通过大量的实验证明SIFT算法具有较强的匹配能力和鲁棒性,是一种较好的图像匹配算法。 关键字:SIFT; 图像匹配; 尺度空间; 极值点; 特征向量

SIFT算法分析

SIFT算法分析 1 SIFT 主要思想 SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量。 2 SIFT 算法的主要特点: a)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。 b)独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进 行快速、准确的匹配。 c)多量性,即使少数的几个物体也可以产生大量SIFT特征向量。 d)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求。 e)可扩展性,可以很方便的与其他形式的特征向量进行联合。 3 SIFT 算法流程图:

4 SIFT 算法详细 1)尺度空间的生成 尺度空间理论目的是模拟图像数据的多尺度特征。 高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为: L( x, y, ) G( x, y, ) I (x, y) 其中G(x, y, ) 是尺度可变高斯函数,G( x, y, ) 2 1 2 y2 (x ) 2 e / 2 2 (x,y)是空间坐标,是尺度坐标。大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。 为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。 D( x, y, ) (G( x, y,k ) G( x, y, )) I ( x, y) L( x, y,k ) L( x, y, ) DOG算子计算简单,是尺度归一化的LoG算子的近似。图像金字塔的构建:图像金字塔共O组,每组有S层,下一组的图像由上一 组图像降采样得到。 图1由两组高斯尺度空间图像示例金字塔的构建,第二组的第一副图像由第一组的第一副到最后一副图像由一个因子2降采样得到。图2 DoG算子的构建: 图1 Two octaves of a Gaussian scale-space image pyramid with s =2 intervals. The first image in the second octave is created by down sampling to last image in the previous

sift算法详解

尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun 张东东zddmail@https://www.doczj.com/doc/be11152356.html, 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越。 1、SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。 其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。 此算法有其专利,专利拥有者为英属哥伦比亚大学。 局部影像特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。 SIFT算法的特点有: 1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性; 2.独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配; 3.多量性,即使少数的几个物体也可以产生大量的SIFT特征向量; 4.高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

SIFT算法与RANSAC算法分析

概率论问题征解报告: (算法分析类) SIFT算法与RANSAC算法分析 班级:自23 姓名:黄青虬 学号:2012011438 作业号:146

SIFT 算法是用于图像匹配的一个经典算法,RANSAC 算法是用于消除噪声的算法,这两者经常被放在一起使用,从而达到较好的图像匹配效果。 以下对这两个算法进行分析,由于sift 算法较为复杂,只重点介绍其中用到的概率统计概念与方法——高斯卷积及梯度直方图,其余部分只做简单介绍。 一. SIFT 1. 出处:David G. Lowe, The Proceedings of the Seventh IEEE International Conference on (Volume:2, Pages 1150 – 1157), 1999 2. 算法目的:提出图像特征,并且能够保持旋转、缩放、亮度变化保持不变性,从而 实现图像的匹配 3. 算法流程图: 原图像 4. 算法思想简介: (1) 特征点检测相关概念: ◆ 特征点:Sift 中的特征点指十分突出、不会因亮度而改变的点,比如角点、边 缘点、亮区域中的暗点等。特征点有三个特征:尺度、空间和大小 ◆ 尺度空间:我们要精确表示的物体都是通过一定的尺度来反映的。现实世界的 物体也总是通过不同尺度的观察而得到不同的变化。尺度空间理论最早在1962年提出,其主要思想是通过对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。尺度越大图像越模糊。 ◆ 高斯模糊:高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L (x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算 高斯函数: 高斯卷积的尺度空间: 不难看到,高斯函数与正态分布函数有点类似,所以在计算时,我们也是 ()()() ,,,,*,L x y G x y I x y σσ=()22221 ()(),,exp 22i i i i x x y y G x y σπσσ??-+-=- ? ??

SIFT算法和卷积神经网络算法在图像检索领域的应用分析

SIFT算法和卷积神经网络算法在图像检索领域的应用分析 1、引言 基于内容的图像检索是由于图像信息的飞速膨胀而得到关注并被提出来的。如何快速准确地提取图像信息内容是图像信息检索中最为关键的一步。传统图像信息检索系统多利用图像的底层特征,如颜色、纹理、形状以及空间关系等。这些特征对于图像检索有着不同的结果,但是同时也存在着不足,例如:颜色特征是一种全局的特征,它对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好的捕捉图像中对象的局部特征,也不能表达颜色空间分布的信息。纹理特征也是一种全局特征,它只是物体表面的一种特性,并不能完全反映物体的本质属性。基于形状的特征常常可以利用图像中感兴趣的目标进行检索,但是形状特征的提取,常常受到图像分割效果的影响。空间关系特征可以加强对图像内容的描述和区分能力,但空间关系特征对图像或者,目标的旋转、平移、尺度变换等比较敏感,并且不能准确地表达场景的信息。图像检索领域急需一种能够对目标进行特征提取,并且对图像目标亮度、旋转、平移、尺度甚至仿射不变的特征提取算法。 2、SIFT特征 SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)是一种电脑视觉的算法,用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由David Lowe在1999年所发表,2004年完善总结。 局部特征的描述与侦测可以帮助辨识物体,SIFT特征是基于物体上的一些局部外观的兴趣点,与目标的大小和旋转无关,对于光线、噪声、些微视角改变的容忍度也相当高。使用SIFT特征描述对于部分物体遮蔽的侦测成功率也相当高,甚至只需要3个以上的SIFT 物体特征就足以计算出位置与方位。在现今的电脑硬件速度和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,也适合在海量数据库中快速准确匹配。 SIFT算法的特点有: (1)SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变形,是非常稳定的局部特征,现在应用非常广泛。(仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并加上一个平移,变换为另一个向量空间。) (2)独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配; (3)多量性,即使少数的几个物体也可以产生大量的SIFT特征向量; (4)高速性,经优化的SIFT匹配算法甚至可以达到实时的要求; (5)可扩展性,可以很方便的与其他形式的特征向量进行联合。 SIFT算法可以解决的问题:目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。 而SIFT算法在一定程度上可解决:

SIFT算法实现原理步骤

SIFT 算法实现步骤 :1 关键点检测、2 关键点描述、3 关键点匹配、4 消除错配点 1关键点检测 1.1 建立尺度空间 根据文献《Scale-space theory: A basic tool for analysing structures at different scales 》我们可知,高斯核是唯一可以产生多尺度空间的核,一个图像的尺度空间,L (x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ) 卷积运算。 高斯函数 高斯金字塔 高斯金子塔的构建过程可分为两步: (1)对图像做高斯平滑; (2)对图像做降采样。 为了让尺度体现其连续性,在简单 下采样的基础上加上了高斯滤波。 一幅图像可以产生几组(octave ) 图像,一组图像包括几层 (interval )图像。 高斯图像金字塔共o 组、s 层, 则有: σ——尺度空间坐标;s ——sub-level 层坐标;σ0——初始尺度;S ——每组层数(一般为3~5)。 当图像通过相机拍摄时,相机的镜头已经对图像进行了一次初始的模糊,所以根据高斯模糊的性质: -第0层尺度 --被相机镜头模糊后的尺度 高斯金字塔的组数: M 、N 分别为图像的行数和列数 高斯金字塔的组内尺度与组间尺度: 组内尺度是指同一组(octave )内的尺度关系,组内相邻层尺度化简为: 组间尺度是指不同组直接的尺度关系,相邻组的尺度可化为: 最后可将组内和组间尺度归为: ()22221 ()(),,exp 22i i i i x x y y G x y σπσσ??-+-=- ? ??()()(),,,,*,L x y G x y I x y σσ=Octave 1 Octave 2 Octave 3 Octave 4 Octave 5σ2σ 4σ8 σ 0()2s S s σσ= g 0σ=init σpre σ()() 2log min ,3O M N ??=-?? 1 12S s s σσ+=g 1()2s S S o o s σσ++=g 222s S s S S o o σσ+=g g 121 2(,,,) i n k k k σσσσ--L 1 2 S k =

基于ransac算法的sift特征匹配研究(OpenCV+VS2010)____朱万革(最终版)

SHANGHAI JIAO TONG UNIVERSITY 学士学位论文 THESIS OF BACHELOR 基于ransac算法的sift特征匹配研究(OpenCV+VS2010)

上海交通大学 毕业设计(论文)学术诚信声明 本人郑重声明:所呈交的毕业设计(论文),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 作者签名: 日期:年月日

上海交通大学 毕业设计(论文)版权使用授权书 本毕业设计(论文)作者同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权上海交通大学可以将本毕业设计(论文)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业设计(论文)。 保密□,在年解密后适用本授权书。 本论文属于 不保密□。 (请在以上方框内打“√”) 作者签名:指导教师签名: 日期:年月日日期:年月日

视频图像跟踪系统 摘要 图像(Image)--是客观世界的景物通过光学系统作用后产生的影像。图像直观地反映了场景中物体的颜色、亮度等特征,从而使我们能清晰分辨他们的形状、大小和空间位置。近30年来人们试图研究基于计算机的视觉系统,并且试图利用其系统来代替工业农业上的有害劳动。这样的视觉系统渐渐地进入我们的生活,让我们的生活变得很丰富,并且我们现在享受着图像处理这学问的成果。在世界上的先进的国家都设立了图像处理研究所,研究解决国防部门所要的问题。 本文将介绍基于OpenCV(Open Source Computer Vision Library)的视频图像匹配、拼接、融合和目标跟踪的算法以及方法。说到图像拼接,本文中所用的图像拼接算法是高效的SIFT特征算法。首先,用两个通用的USB摄像头来实时地进行采集图像,并对这两幅图像提取SIFT特征点。然后,进行粗匹配。最后用RANSAC算法对所提取出来的SIFT特征点匹配对进行提纯以及估计模型参数。最后把两幅图像拼接成一幅完整的图像,并且用加权平均算法进行无缝拼接。再进行摄像头标定,求出两个通用摄像头的内外参数,最后进行测距以及跟踪。最终取得了令人满意的结果。 关键词:SIFT,匹配,拼接,配准,RANSAC

遥感图像处理在汶川地震中的应用分析

遥感图像处理在汶川地震中的应用分析 摘要 随着卫星技术的快速发展,遥感技术被越来越广泛的应用于国民经济的各个方面。本文结合汶川地震中遥感技术的应用实例,系统阐述了遥感应用于应急系统中需要解决的一系列关键技术问题。并就数据获取、薄云去除、图像镶嵌、图像解译,以及灾后重建中的若干关键技术问题展开了分析。关键词:遥感;地震;应用;关键技术 1 引言 长期以来,人们不断遭受到各种自然灾害的侵害,如地震、火山、洪水等,同时,由人为因素导致的灾难也不断发生,如火灾、恐怖袭击等。这些灾害具备破坏性、突发性、连锁性、难预报性等特点,往往容易造成重大的人员伤亡和巨大的财产损失。为了有效的应对突发事件,产生了各类应急系统。 灾区数据的实时获取足所有应急系统的基础。对于区域性的灾害,传统的地面调查方式,由于速度慢、面积小、需要人员现场勘查等无法避免的特点,很难满足应急系统的需要。相对而言,遥感技术有其得天独厚的优势:遥感传感器能实时的、大面积的、无接触的获取灾区数据,因此成为绝大多数应急系统中数据获取的主要手段。为了使遥感数据能满足应急系统中基础数据的要求,需要经过数据获取、数据预处理、图像解译等阶段的处理,最终提取出准确的遥感信息。下面将根据这三个阶段的处理技术展开阐述与分析,并以汶川地震为例,介绍遥感技术在应急救灾及灾后重建中的应用。 2 数据获取 灾害发生后,由于地形、气象等客观因素的影响,通过单一的遥感传感器往往很难获得灾区所有数据,需要充分发挥多种传感器的优势,获取灾区的各种类型数据,主要包括光学与SAR卫星遥感影像、光学与SAR航空遥感影像两大类。 2.1 光学与SAR卫星遥感影像的获取 此类数据包括国内外的众多高分辨率光学与SAR卫星遥感影像。从时间上说,重点是灾害发生前后数据的获取,以快速确定灾区的位置和前后的变化。 2.2 光学与SAR航空遥感影像的获取 此类数据是利用高空遥感琶机、无人机和卣升机等高、低空遥感平台,搭载遥感传感器,快速

SIFT特征提取分析

SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points, or corner points)及其有关scale 和orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果,详细解析如下: 算法描述 SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。整个算法分为以下几个部分: 1. 构建尺度空间 这是一个初始化操作,尺度空间理论目的是模拟图像数据的多尺度特征。 高斯卷积核是实现尺度变换的唯一线性核,于是一副二维图像的尺度空间定义为: 其中G(x,y,σ) 是尺度可变高斯函数 (x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。 下图所示不同σ下图像尺度空间:

关于尺度空间的理解说明:2kσ中的2是必须的,尺度空间是连续的。在 Lowe的论文中,将第0层的初始尺度定为1.6(最模糊),图片的初始尺度定为0.5(最清晰). 在检测极值点前对原始图像的高斯平滑以致图像丢失高频信息,所以Lowe 建议在建立尺度空间前首先对原始图像长宽扩展一倍,以保留原始图像信息,增加特征点数量。尺度越大图像越模糊。 图像金字塔的建立:对于一幅图像I,建立其在不同尺度(scale)的图像,也成为子八度(octave),这是为了scale-invariant,也就是在任何尺度都能够有对应的特征点,第一个子八度的scale为原图大小,后面每个octave为上一个octave降采样的结果,即原图的1/4(长宽分别减半),构成下一个子八度(高一层金字塔)。

sift算法的MATLAB程序

% [image, descriptors, locs] = sift(imageFile) % % This function reads an image and returns its SIFT keypoints. % Input parameters: % imageFile: the file name for the image. % % Returned: % image: the image array in double format % descriptors: a K-by-128 matrix, where each row gives an invariant % descriptor for one of the K keypoints. The descriptor is a vector % of 128 values normalized to unit length. % locs: K-by-4 matrix, in which each row has the 4 values for a % keypoint location (row, column, scale, orientation). The % orientation is in the range [-PI, PI] radians. % % Credits: Thanks for initial version of this program to D. Alvaro and % J.J. Guerrero, Universidad de Zaragoza (modified by D. Lowe) function [image, descriptors, locs] = sift(imageFile) % Load image image = imread(imageFile); % If you have the Image Processing Toolbox, you can uncomment the following % lines to allow input of color images, which will be converted to grayscale. % if isrgb(image) % image = rgb2gray(image); % end [rows, cols] = size(image); % Convert into PGM imagefile, readable by "keypoints" executable f = fopen('tmp.pgm', 'w'); if f == -1 error('Could not create file tmp.pgm.'); end fprintf(f, 'P5\n%d\n%d\n255\n', cols, rows); fwrite(f, image', 'uint8'); fclose(f); % Call keypoints executable if isunix command = '!./sift '; else command = '!siftWin32 '; end command = [command ' tmp.key']; eval(command); % Open tmp.key and check its header g = fopen('tmp.key', 'r'); if g == -1

相关主题
文本预览
相关文档 最新文档