Purpose
Computer vision is a rapidly growing field, partly as a result of both cheaper and more capable cameras, partly because of affordable processing power, and partly because vision algorithms are starting to mature. OpenCV itself has played a role in the growth of computer vision by enabling thousands of people to do more productive work in vision. With its focus on real-time vision, OpenCV helps students and professionals efficiently implement projects and jump-start research by providing them with a computer vision and machine learning infrastructure that was previously available only in a few mature research labs. The purpose of this text is to:
bull; Better document OpenCV—detail what function calling conventions really mean and how to use them correctly.
bull; Rapidly give the reader an intuitive understanding of how the vision algorithms work.
bull; Give the reader some sense of what algorithm to use and when to use it.
bull; Give the reader a boost in implementing computer vision and machine learning algorithms by providing many working coded examples to start from.
bull; Provide intuitions about how to fix some of the more advanced routines when something goes wrong.
Simply put, this is the text the authors wished we had in school and the coding reference book we wished we had at work.
This book documents a tool kit, OpenCV, that allows the reader to do interesting and fun things rapidly in computer vision. It gives an intuitive understanding as to how the algorithms work, which serves to guide the reader in designing and debugging vision applications and also to make the formal descriptions of computer vision and machine learning algorithms in other texts easier to comprehend and remember.
After all, it is easier to understand complex algorithms and their associated math when you start with an intuitive grasp of how those algorithms work.
Who This Book Is For
This book contains descriptions, working coded examples, and explanations of the computer vision tools contained in the OpenCV library. As such, it should be helpful to many different kinds of users.
Professionals
For those practicing professionals who need to rapidly implement computer vision
systems, the sample code provides a quick framework with which to start. Our descriptions of the intuitions behind the algorithms can quickly teach or remind the
reader how they work.
Students
As we said, this is the text we wish had back in school. The intuitive explanations,
detailed documentation, and sample code will allow you to boot up faster in computer vision, work on more interesting class projects, and ultimately contribute new research to the field.
Teachers
Computer vision is a fast-moving field. Wersquo;ve found it effective to have the students rapidly cover an accessible text while the instructor fills in formal exposition where needed and supplements with current papers or guest lecturers from experts. The students can meanwhile start class projects earlier and attempt more ambitious tasks.
Hobbyists
Computer vision is fun, herersquo;s how to hack it.
We have a strong focus on giving readers enough intuition, documentation, and working code to enable rapid implementation of real-time vision applications.
What This Book Is Not
This book is not a formal text. We do go into mathematical detail at various points,* but it is all in the service of developing deeper intuitions behind the algorithms or to make clear the implications of any assumptions built into those algorithms. We have not attempted a formal mathematical exposition here and might even incur some wrath along the way from those who do write formal expositions.
This book is not for theoreticians because it has more of an “applied” nature. The book will certainly be of general help, but is not aimed at any of the specialized niches in computer vision (e.g., medical imaging or remote sensing analysis).
That said, it is the belief of the authors that having read the explanations here first, a student will not only learn the theory better but remember it longer. Therefore, this book would make a good adjunct text to a theoretical course and would be a great text for an introductory or project-centric course.
About the Programs in This Book
All the program examples in this book are based on OpenCV version 2.0. The code should definitely work under Linux or Windows and probably under OS-X, too. Source code for the examples in the book can be fetched from this bookrsquo;s website (http://www.oreilly.com/catalog/9780596516130). OpenCV can be loaded from its source forge site (http://sourceforge.net/projects/opencvlibrary).
OpenCV is under ongoing development, with official releases occurring once or twice a year. As a rule of thumb, you should obtain your code updates from the source forge CVS server (http://sourceforge.net/cvs/?group_id=22870).
Prerequisites
For the most part, readers need only know how to program in C and perhaps some C .Many of the math sections are optional and are labeled as such. The mathematics involves simple algebra and basic matrix algebra, and it assumes some familiarity with solution methods to least-squares optimization problems as well as some basic knowledge of Gaussian distributions, Bayesrsquo; law, and derivatives of simple functions.
The math is in support of developing intuition for the algorithms. The reader may skip the math and the algorithm descriptions, using only the function definitions and code examples to get vision applications up and running.
How This Book Is Best Used
This text need not be read in order. It can serve as a kind of user manual: look up
剩余内容已隐藏,支付完成后下载完整资料
目的
计算机视觉是一个迅速发展的领域,摄像机价格不断降低且功能越来越强、计算能力的普及以及视觉算法的日益成熟都带动了该领域的发展。Opencv在计算机视觉的发展中扮演者重要的角色,它是的数千名研究人员在视觉领域能够获得更高的生产力。由于opencv专注于实时视觉应用,因此十分有助于学生和专业人员高效完成项目和加快研究进展,这是通过它提供的一个计算机视觉和机器学习基础架构来实现的,这个基础架构过去只是少数设备完善的实验室的专利。本书目的如下。
为opencv提供一份更好的文档——详细书名函数调用约定以及如何正确使用这些函数。
快速帮助读者堆计算机视觉的算法原理获得直观的理解。
让读者认识到可以使用哪些算法,以及应用这些算法的场合。
通过许多可用的代码实例,让读者循序渐进地学会如何实现计算机视觉和机器学习算法。
培养读者具有一定的直觉,使其在出现问题的时候能够堆一些opencv源代码中更高级的子程序进行修正。
简言之,本书既是我们在学校时希望使用的教材,也是我们在工作时希望翻阅的参考书。
本书为opencv这个工具提供了注解,旨在帮助读者快速在计算机视觉领域中开展有趣的工作。本书能帮助读者直观的理解算法的原理,这样可以帮助读者设计和调试视觉系统,并使得其他教材中对计算机视觉和机器学习算法和与这些算法相关的数学知识。
总而言之,如果直观的领会了算法的原理,便容易理解复杂的算法和与这些算法相关的数学知识。
本书面向的读者
本书包括算法描述,可运行的例子程序代码以及对opencv库中的计算机视觉工具的解释,因此,它应该会对多种类型的读者提供有益的帮助。
专业人员
对于需要迅速实现计算机视觉系统的专业人士,例程代码为开始工作提供了一个快速上手的框架。我们对算法原理的直观描述可以迅速教会读者或提供读者用法。
学生
如我们所说,本书是我们当年在学校时候希望使用的教材。直观的解释,详细的文档和例程代码都有助于读者在计算机视觉领域获得快速的成长,完成更多有趣的课堂项目,并且最终为计算机视觉领域贡献心得研究成果。
老师
计算机视觉是一个迅速发展的领域。我们发现,在需要的时候讲解一些经典的理论,当前的论文或专家的讲稿,学生会迅速的掌握一本课本。同时,学生也可以更早开始一些课程项目,尝试更多有挑战性的任务。
业余爱好者
计算机视觉非常的有趣,可以由你任意的创造。我们对于为读者提供充分的直观感受、文档以及可以运行的代码给予了强烈的关注。
本书声明
本书并不是一本正规的教材。毋庸讳言,本书的许多知识点都设计大量数学的细节,但这样做的目的是加深读者对算法的理解,或者讲清楚算法中所用的前提条件。我们在这里并不打算进行严格的数学推导,这也许会让一些一直用严格数学表达的人感到不习惯。
本书不是为理论研究人员所写,因为它更多的关注应用。本书针对视觉提供通用的知识,而不是仅仅针对计算机视觉的某些特定应用(例如医学图像或者遥感分析)。
也就是说,读者深信一点:读完这里的解释后,学生不仅会更好的学习理论知识,还会将这些知识铭记于心。因此本书是针对理论课程的理想辅导书,也适用于入门课程或者实战性较强的课程。
关于本书中的程序
本书所有的例程都基于opencv2.0版本。代码可以在Linux或Windows下运行,也可能在OS-X下运行。本书的例程源代码可以在本书的网站下载。Opencv可以从它的代码管理网站下载。
Opencv仍在不断的发展,每年都会发布一到两个正式版本。一般来说,可以从代码管理网站的SVN服务器获得最新代码。
预备知识
在大多数情况下,读者只需要知道如何用C语言编程,也许需要知道一些C 编程知识。许多数学相关的内容属于选读,并带有特定的标记。本书中涉及的数学知识包括简单地代数和基本的矩阵代数,并且假定读者比较熟悉最小二乘优化问题的求解方法,以及高斯分布、贝叶斯定律和简单函数的求导等一些基本的知识。这些数学知识用于帮助读者加深对算法的直观理解。读者可以跳过数学和算法描述,只通过函数定义和范例代码,便可以让计算机视觉应用程序启动和运行。
如何充分使用本书
本书不需要按照顺序从头到尾地阅读。它可以作为一种用户手册:在需要的时候,可以从中查找函数;如果想知其所以然,可以阅读函数的描述。然而,本书的设计初衷是更偏向于教材。它会帮助读者基本了解计算机视觉,如何以及何时使用所选定的算法。
本书可以作为计算机视觉领域本科生或研究生的辅导书或主要教材。学生阅读本书可以迅速了解计算机视觉,然后再辅以其他教材中的理论知识以及本领域内的学术论文,更深入地学习。每一章的后面都有练习题,可以辅助测试学生对知识的掌握情况,并加深理解。
您可以通过下面三种方式之一阅读本书。
仅选用有用的部分:开始阅读本书时,请先阅读第一到第三章,然后根据自己需要阅读其他的章节。本书不一定要按照顺序阅读,不过第11和12章除外。
最佳进度:一个星期只读两章,直到用六个星期读完第一章到十二章(第十三章有些特殊,详见下文讨论)。然后开始项目,着手解决具体问题,并阅读其他教材和相关的论文。
快速掌握:在充分理解内容的前提下尽快浏览本书第一到第十二章,然后开始项目,着手解决具体的问题,并阅读其他的教材和相关的论文,该方法可以供专业人员选用,同时也适用于比较高级的计算机视觉课程。
第十三章的篇幅较多,介绍了机器学习的背景知识,opencv中实现的机器学习算法背后的细节,以及如何适用这些算法。当然,机器学习与物体识别以及计算机视觉的很多方面相关,详细描述需要一本书的篇幅。专业人士挥发想,这是未来阅读文献(或者直接使用opencv库中的代码项)的一个理想的起点。对于一般的计算机视觉课程来说,本章可作为选学的内容。
这是作者所希望的教授计算机视觉的方法:学生掌握要点后,快速学完课程内容,然后动手做一些有意义的课堂项目,同时指导老师通过其他夹菜或者论文提供该领域的一些有深度的知识。该方法对小学期、整个学期或两个学期的课程都适用。学生的兴趣和创造力可以被迅速激发起来,很好地将自己所理解的知识和可运行的代码结合起来。当他们开始更有挑战性且更耗时的项目时,指导老师可帮助他们开发和调试复杂的系统。对于课时较多的课程,项目本身可以项目管理的方式变成教育方式。首先建立其一个可运行的程序,并优化改进该系统,然后进行研究。课程的目标是每个项目可以发表一篇会议论文,并且在随后(课程结束之后)的工作中发表更多相关论文。
什么是opencv
Opencv是一个开源的计算机视觉库,项目主页为http://SourceForge.net/projects/opencvlibrary. opencv采用C/C 语言编写,可以运行在Linux/Windows/Mac等操作系统上。Opencv还提供了Python、Ruby、MATLAB以及其他语言的接口。
Opencv的设计目标是执行速度尽量快,主要关注实时应用。它采用优化的C代码编写,能够充分利用多核处理器的优势。如果希望在Intel平台上的到更快的处理速度,可以购买Intel的高性能多媒体函数库IPP。IPP库包含许多从底层优化的函数,这些函数涵盖多个应用领域。如果系统已经安装了IPP库,opencv会在运行时自动使用相应的IPP库。
Opencv的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷的设计更复杂的计算机视觉相关应用程序。Opencv包含的函数有500多个,覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、信息安全、用户界面、摄像机标定、立体视觉和机器人等。因为计算机视觉和机器学习密切相关,所以opencv还提供了MLL机器学习库。该机器学习库侧重统计方面的模式识别和聚类。MLL除了用在视觉相关的任务中,还可以方便地用于其他的机器学习场合。
Opencv的应用领域
大多数计算机科学家和程序员已经意识到计算机视觉的重要作用。但是很少有人知道计算机视觉的所有应用。例如,大多数人或多或少地知道计算机视觉可以用在监控方面,也知道视觉被越来越多地用在网络图像和视频方面。少数人也了解计算机视觉在游戏界面方面的应用。但是很少有人了解大多数航空和街道地图图像(如Google的 street view)也大量使用计算机定标和图像拼接技术。
Opencv所有的开源代码协允许你使用opencv的全部代码或者部分代码生成商业产品。使用了opencv之后,不必公开自己的源代码或者善后的算法,虽然我们非常希望你能公开源代码。许多公司和研究单位中的人都广泛使用opencv,其中的部分原因是opencv采用了宽松的协议。Yahoo groups里面有个opencv的论坛,用火可以在此发帖提问和讨论;该论坛大约有20000个会员。Opencv在全世界广受欢迎,在中国、日本、俄罗斯、欧洲和以色列都有庞大的用户群。
自从opencv在1999年1月发布alpha版本以来,被广泛用在许多应用领域、产品和研究成果中。相关应用包括卫星地图和电子地图的拼接,扫描图像的对齐,医学图像去噪(消噪或滤波),图像中的物体分析,安全和入侵检测系统,自动监视和安全系统,制造业中的产品质量检测系统,摄像机标定,军事应用,无人飞行器,无人汽车和无人水下机器人。将视觉识别技术用在声谱图上,opencv可以进行声音和音乐识别。在斯坦福大学的Stanley机器人项目中,opencv是其在视觉系统中的关键部分。Stanley在DARPA机器人沙漠挑战赛中,赢得了二百万美元奖金。
什么是计算机视觉
计算机视觉是将来自静止的图像或者视频的数据转换成一个决策或者一种新的表达方式的过程,所有的这些转换都是为了达到某个目标。输入数据可以包含一些辅助信息,如“摄像机架在汽车上”或者“激光扫描仪在1米处发现一个物体”。最终的决策可能是“场景中有一个”或者“在这个切片中有14个肿瘤细胞”。一种新的表达方式可以是将一张彩色照片转化为灰度照片,或者从图像序列中去除摄像机晃动影响。
因为人类是视觉动物,所以会误以为可以很容易地实现计算机视觉。当你凝视图像时,从中找到一辆汽车会很困难吗?你凭借直觉会觉得很容易。人脑将视觉信号划分入很多通道,将各种不同的信息输入你的大脑。你的大脑有一个关注系统,会根据任务识别出图像的重要部分,并做重点分析,而其他的部分分析得较少。在人类视觉流中存在大量的反馈,而目前我们对之了解很少。肌肉控制的传感器以及其他所有的传感器的输入信息之间存在广泛的关联。这使得大脑可以依赖从出生以来所学到的信息。大脑中的反馈在信息处理的各个阶段都存在,在传感器硬件(眼睛)中也存在。在眼睛中通过调节瞳孔的进光量,以及调节视网膜表面上的接收单元。
在计算机视觉系统中,计算机接收到的是来自摄像机或者磁盘文件的一个数值矩阵。一般来说,没有内置的识别模式系统,没有自动控制的对焦和光圈,没有多年来积累的经验。视觉系统通常很低级。图1-1显示了一辆汽车的图像。在此图中,我们可以看到车的一侧有个反光镜,而计算机看到的只是一个数值的矩阵。矩阵中的每个数值都有很大的噪声成分,所以它仅仅给出很少的信息,这个数值矩阵就是计算机看到的全部。我们的任务就是将这个有噪声的数值矩阵成分变成感知;“反光镜”。图1-2形象的解释了为什么计算机视觉如此之难。
实际上,计算机视觉问题比前面我们提到的更糟糕,它是不可解的。给出三维世界的二维视图,是没有固定方法来重建出三维信息的。在理论上,此类病态问题没有唯一和确定的解。即使数据很完美,同一张二维图像也可以表示很多种三维场景。然而,如前面提到的,数据会被噪声和形变影响。这些影响来自真实世界的变化(天气、光线、反射、运动),镜头和机械结构的不完美,传感器上的长时间感应(运动模糊),传感器上和其他电子器件上的电子噪声,以及图像采集后的图像压缩引入的变化。有如此多令人头疼的问题,我们如何取得进展的?
设计实际系统时,为了克服视觉传感器的限制,通常会使用一些其他的上下文知识。考虑这样一个例子,移动机器人在室内寻找并捡起订书机。机器人可以利用这个先验知识:可以在办公室内发现桌子,订书机最可能在桌子上被找到。这给出一个隐含的尺寸参考或参照,也就是订书机能够放在桌子上。这也可以用于消除在不能的地方(例如在天花板或者窗户上)错误识别出订书机的可能性。机器人也完全可以忽略一个200英尺大小的跟订书机形状类似的广告飞艇,因为飞艇周围没有桌子的木纹背景。与之相反,在图像检索中,数据库中的所有订书机图像都是对真正的订书机拍摄的,而且尺寸很大和形状不规划的订书机图像一般不可能被拍摄到。也就是拍摄者一般只拍摄真正的、普通大小的订书机图像。而且人们拍摄时一般会将被拍摄物体至于中心,而且将物体放在最能表现其特征的方向上。因此在由人拍摄的图相中,具有相当多的隐含信息。
我们也可以使用机器人学习技术对上下文信息进行显示建模。隐含的变量(例如物体大小、重力方向及其他
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[138353],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。