我如何学习使用计算机视觉工作所需的math知识?
我知道计算机视觉涉及很多math,但是我需要一些关于程序员如何获得知识的技巧。 我已经开始使用OpenCV库了,但是在理解algorithm如何运作的过程中遇到一些重大问题。
在大学我学习了一些math,我们使用了matrix和衍生物,但是我没有太在意这个问题。 从程序员的angular度来看,这似乎是如此困难和无用。 我想,在不计算方程的情况下,必须有一些简单的方法来理解二阶导数。 (衍生品只是一个例子)
你有什么提示,我怎么能获得这样的知识? 论坛,书籍,链接,build议,任何东西?
许多大学都有在线课程(例如MIT的开放课件 )。 这将是一个很好的地方,你可能会find一个计算机视觉课程,将有预先reqs列出。 正如其他人所提到的,你需要了解微积分和向量/matrix,但是你还需要阅读统计和贝叶斯定理以获得更高级的视觉工作,因为计算机视觉常常使用概率技术。
毕晓普写了一本关于这个话题的优秀书 ,但是它非常昂贵,而且是为高级写的。 我当然不会从那里开始,但如果你真的接触到这个话题,这是一个很好的资源。
计算机视觉中需要涉及的最相关的math主题是微积分(特别是多variables微积分),傅里叶分析,线性代数和统计。
微积分和傅立叶分析可能是最困难的,但您需要它们进行低级image processing。 图像是x和y的离散函数,因此您可以讨论它的偏导数,它可以帮助您检测边angular,并描述纹理。 此外,您可以将图像视为二维信号,并使用傅立叶变换对其进行分析。 真正感受它的方法是以几种不同的方式(例如recursion和迭代)来实现快速傅里叶变换,在几张图像上运行它,并查看结果的样子。
对于更高层次的东西,比如对象识别,你真的需要进入统计和机器学习。 你需要知道直方图是什么,理解平均值的意义和概率分布的方差,还有很多其他的东西…
如果您有权访问Matlab,则可以轻松实现各种image processing和视觉algorithm,并尝试使用它们。 恕我直言,这是真正了解他们如何工作的最好方法。
我还build议阅读电脑视觉会议和期刊上发表的文章。 他们中的大多数都可以在网上find,你可以find他们与谷歌学者。 查找诸如对象识别,图像检索,video中的对象跟踪或三维重build等主题,以查看计算机视觉实际处理什么types的问题。 阅读这些文件起初可能会很困难,但是它们可以让你了解哪些math技术正在被使用。
主教的这本书是别人推荐的,是关于机器学习的更普遍的话题,而不是特别的视野。 尽pipe如此,我认为它需要阅读,因为目前的简历艺术在很大程度上依赖于机器学习的概念。 其他需要的文本是福赛思的计算机视觉书。 不是最可读的,但相当现代和全面的。
为了达到可以理解这两本书的地步,你需要研究线性代数,概率和计算机graphics学。 微积分的坚实基础对于理解Bishop中的优化algorithm是必要的。 物理学也派上用场,因为有很多algorithm在类似物理系统方面提出问题来进行优化。
换句话说,这是很多的math; 这都是math。 在我的计算机视觉研究中,我接pipe了3年的本科math课程,所以如果你的math能力弱了,就要为做出更大的承诺做好准备。
至于学习math,在介绍线性代数课之后,我认为在计算机视觉语境中接触线性代数应该足够好。 在graphics(OpenGL)中获得良好的基础也应该有所帮助。
我们的大学使用这本书:
- 计算机视觉 – 现代方法
作为初学者,我喜欢这些书:
- 三维视觉的邀请 – 从图像到几何模型
- 三维计算机视觉技术和algorithm介绍
当然(最好的):
- 计算机视觉中的多视图几何由Hartley和Zisserman提供
维基百科一直是一个很好的资源,这里有一些计算机视觉主题 。 更多链接在这里和这里 。
此外, IEEE , ACM和你的大学也可以访问大量的研究论文。 在UNC上find这样的老计算机视觉讲座也很有用。
看看opencourseware 。 这里有一个机器视觉。 看看你是否理解那里的math,如果不是的话,通过在math教科书中查找来减less你的工作量。 您可以查看该课程需要什么先决条件。
我有一名“程序员math家”硕士学位。 我已经实施了1 – 2年的计算机视觉algorithm。 你应该知道,要做专业的计算机视觉,你必须知道一定数量的math,在一两年内学不成。 然而,即使只有很less的math知识,你也可以成为一个“非专业”的计算机视觉开发人员(我也是这样),所以在这个非常漂亮的计算机科学课题中,你不必放弃你的计划。
我也会说,这个领域使用最多的math题目是线性代数,微积分,统计,傅里叶,小波等等。
我强烈build议您先阅读本书:Robert Beezer:“ 线性代数的第一门课程 ”。 它不仅适合全math习的初学者,而且是我见过的最好的math书,也是自由自在的。
我也build议从线性代数开始,尤其是在本书中,因为这样做可以在短时间内获得实际上有用的知识,最终您将需要。
多佛教科书。
价格便宜(许多情况下低于20美元),但通常写得很好。
我的书架满了他们。 过了一会儿,他们与众不同的造型和装饰吸引了整个房间的视线。
我最近在我的大学完成了第三个微积分课程。 虽然这绝不能使我成为math,甚至微积分专家,但我更喜欢认为我作为一个非math专业(我们的CS学位要求)已经有了很多基本概念。
我个人觉得你最好的select就是硬着头皮在当地一所大学学习math。 不在线,不是自学,而是在现实生活中的教室里有一个现实生活中的老师。
对于最长的时间,我认为微积分和数值分析等高等math超出了我的想象。 我从来都不是一个成长中的math人物,很大程度上是因为对这个人的无理的恐惧。
然而,在终于鼓起勇气进入我们的课程之后,我发现低于一定水平的math更多的是关于powershell学习,而不是关于Mensa智力。 这是关于听讲座,提问和做功课 。 在逐步采取措施并认真做好功课之后,我发现在微积分课程中获得A的意义几乎是一致的,仅此而已。
如果没有这种一致的努力,每天晚上的作业,你将很难在合理的时间(不到3年)内学习计算机视觉所需的必要math。
这就是为什么我认为把他们放在课堂上是让你的基础更先进的math的理想select。 你被分配了家庭作业,即使有时你不想要,也会给你一些压力,推动整个材料(一天一节)。 通过自学,我觉得很容易掩盖无趣或烦人的材料。 另外,你的教授在办公时间里是一个了不起的资源,可以为你在前一个晚上的作业中所不了解的东西提供帮助。
在你有坚实的工作基础后,自学成为更现实的select。
那么, 这本书是微积分的 。 奇怪的是,这在美国是非常昂贵的。 也许你可以在(在线)二手书店中find一个版本。
您可能想要访问一个math和科技书籍部门的书店。 有关入门工程math的书籍大多是以应用程序的更具体的方式介绍几个variables的微积分。
根据您所看到的计算机视觉的哪些部分, x中包含最常用的视觉语言的Numerical Recipies可以提供对视觉中一些更复杂的问题(如非线性优化)的更深入和更彻底的检查。 章节可作为PDF在线提供,您可以在大多数优秀的网上书店find硬拷贝。
世界各地的很多大学都在向YouTube和他们自己的网站发布讲座,所以在大多数math科目上find像样的讲座并不难。 实际上,您可以通过这种方式学习很多有趣的主题。
我也开始在计算机视觉领域读“计算机视觉中的多视图几何graphics”,但是几页之后,我意识到那本书中提出的一些基本概念对我来说还是不清楚的。 然后,我需要退后一步,寻找更基本的东西。
所以,我从伊利诺伊大学发现了这个页面 ,可以从他们简历的讲座中免费提供一些资源。 我认为值得检查。
对于使用OpenCV,我会build议只使用互联网或浏览它的来源,它包含大部分的信息,并为您省钱。
“计算机视觉中的多视图几何”
这是一本书,你必须了解基本的东西,如find单应性,如何find基本matrix,相机校准matrix,绝对双二次方。 我知道可能会被认为是昂贵的,但它会为您节省很多时间。
“matrix计算”(Gene H. Golub)
这本书是一本非常好的书,考虑到它的内容,它是完全不昂贵的。 “Schaum的概述matrix操作”由理查·布朗森。 这本书相当薄弱,但他(理查德)写的东西直截了当。 我有两本他写的书。 它不会让人失望。 不要像上面那个人那样买“C语言的数字食谱”。 “matrix计算”将直接适用于Lapack,也不要购买Lapack书籍。 只需使用源代码。 我不能告诉你“matrix计算”是什么让人大开眼界。 这是我最新的书籍之一。 今天非常有用,但在1996年出版(第三版)。
现在我正在寻找一本关于计算机视觉模式识别的书。 有人知道任何好书吗? 我在思考图论和计算机视觉。 但事情开始变得非常昂贵(高于100美元),我不想买错的。
Sclytrack
例如,除了参加Coursera的基础微积分在线课程之外,我还会推荐“ 计算机graphics学与视觉现代math与应用 ”一书,其目的是揭示理解计算机视觉主题所需的基本math知识。