学习干货—视觉组
学习干货—视觉组

学习干货—视觉组

说在入队之前:

学习是一个长期积累的过程,不是一蹴而就的,视觉算法组的学习亦是如此。今后在机器人队的时间里,各位将会学习到很多有用的知识与技能,希望各位能够认真学习,坚持积累。切记不可心急,要戒骄戒躁,扎实的基础对你今后肯定会有很大的帮助;亦不可闭门造车,独来独往。多与身边的同学交流,定会茅塞顿开,受益匪浅。

——算法组师兄们

基础篇

一、编程语言C++

野狼队视觉算法组目前使用的主要语言是 C++,同时也需要具备一定的 C 语言基础。

推荐使用电子工业出版社《C++ 程序设计基础》,也可以选择《C++  Primer Plus》。

推荐学习链接:

对于C++基础部分书本学习和视频学习都有很好的效果,但是最重要的不仅仅是去阅读大量书籍或者去刷很多很多视频,而是自己动手实践。实实在在的去实现这一部分的功能。

推荐学习书籍:

扩展:

对于 C++ 语言本身,在开始进阶学习前,需要对 RAIISFINAETEMPLATE 的有一个准确的理解。这里的进阶有两个方面,一个是在以他们为下基准进行上层构建,而另一个是以他们为上层基准探究他们的下层原理。

对于前者,标准库在学习中扮演着一个十分重要的角色,基础的东西再提一遍:
C++参考手册

另外一个就是工程思想,他们在开源项目中是如何发挥作用的,有时间不妨看看源码:
OpenCV源码

对于后者,学习的方面相对零散,以及需要一些计算机基础知识,总的来说是去理解这个语言设计者的核心思想,以及它在成长过程中遇到的一些问题,我提供不了什么好的建议,如果有,那请多看看 CppCon

二、编程语言Python

我们之后的开发过程也会有一定的需求,建议先进行一定的了解。

推荐使用中国工信出版集团《Python编程从入门到实践》


这本书适合纯小白阅读,它不要求你有任何Python编程经验,甚至不要求你有编程经验。读者只需基础的英语和数学水平就能读懂本书中的示例代码。
该书第一章为了解和介绍python,而第2~9章能够学到数据类型、类等等一系列python的最基础语言。书本后面做小游戏可用以扩展练习和锻炼逻辑。

推荐学习链接:

扩展:

Python与其他语言相比更容易学习,原因是因为它有很庞大的第三方库。

【库:可以视作为是别人提供给你的一种工具,你使用它的成本仅仅只有一点下载的时间和阅读库说明书(文档)的精力】

以下是比较容易理解且大多数时间都能使用到的库,附部分学习链接

三、数据结构

在解决实际问题时,我们一般需要考虑两个问题:

  1. 要怎么把数据合理有效地存储在计算机中。
  2. 要想什么策略来解决这个问题。

前者我们称之为数据结构,后者称之为算法。二者相辅相成,都不可或缺。

推荐学习链接:

推荐学习书籍:

学习路线:

四、操作系统Ubuntu

Ubuntu是一个基于Linux的、开源的操作系统。实验室要求使用的是ubuntu18.04版本。

推荐学习链接:

对操作系统感兴趣的同学可以通过下面的教程来安装Ubuntu系统。

双系统相比于虚拟机而言性能更好体验更加流程,虚拟机相比于双系统使用和安装更加的方便。

下面还有该系统的两个操作教程便于大家学习。

五、Git and GitHub

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

GitHub是一个面向开源及私有软件项目的托管平台。

使用Git,你可以看到你自己以及队友们每次修改的内容,出现问题时也可以退回到任意一次修改之前。并且代码会实时推送到云端服务器仓库中,就算你的电脑被队友砸了,代码也安然无恙。

Git 和 GitHub 的搭配使用可以非常有效地提高团队协作的工作效率。通过分支和主线的合并和分离,代码的迭代工作将会变得便捷容易。可以提前尝试使用 GitHub 托管自己的项目,学会 GitHub 的基本操作,正式加入后会有公用账号。

推荐学习链接:

这两个教程都是傻瓜式教程,非常适合新手去学习

学习方法:

学习这个最快的方法就是大胆的去操作。

六、编译调试工具

在Ubuntu系统中,各种环境则需要我们自己配置。为此,常见的编译器是GCC,常见的调试器是GDB。

推荐学习链接:

学习路线:

CMake 的名字是Cross platform Make的缩写,它是个一个开源且跨平台的构建系统,适合复杂的大型项目维护,主要用于产生标准的构建配置,如Unix的Makefile,Windows的workspaces。
CMake 官网提供了详细的文档和一系列的教程帮助你快速上手,对于初学者,建议先阅读教程
对于教程中存在疑惑或想深入学习的,再查阅它的相关文档
有一点需要补充一下,为了确保你学到的东西是和当前标准是绝对一致和正确的,这里贴出的链接都是官方最新的英语文档,希望大家可以静下心来认真阅读。如果英语基础不好,建议借助翻译软件进行阅读,也是对自己能力的一种锻炼。

七、数学基础

在今后的学习中,数学知识将作为最重要的基础知识一直帮助你,一定要跟它搞好关系

进阶篇

一、OpenCV

OpenCV是开源的计算机视觉库。OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV可以运行在Linux、Windows和Mac OS操作系统上。它由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。它支持CUDA加速,随着时代的不断发展,OpenCV版本也会不断提高。

OpenCV是在Robomaster赛场上致胜的关键技术。有了它就相当于给机器人安装了一对眼睛。对打击敌人的起到了不可或缺的作用。

推荐学习链接:

推荐使用书籍:

毛星云《OpenCV3 编程入门》

清华大学出版社《学习 OpenCV3(中文版)》

学习路线:

需要学习关于OpenCV的基础知识,OpenCV的模块架构,图像存储容器,图像的读取与显示,视频加载与摄像头调用,图像变换,图像金字塔,图像直方图的绘制,图像的模板匹配,图像卷积,图像的边缘检测,腐蚀与膨胀,形状检测,图像分割,特征点检测与匹配,单目和双目视觉,光流法目标跟踪。

相关链接:

扩展:

电子工业出版社《数字图像处理》 ——冈萨雷斯

机械工业出版 《计算机视觉中的多视图几何》——Richard Hartley

二、成像基础

视觉视觉,顾名思义,人能用眼,机器人用摄像头。有了一双火眼金睛才能看见更丰富的信息。而判断“眼睛”的观察能力,则需要通过一些参数来进行判断:

以下是之后会运用到的一些基本知识,可以先进行了解。

推荐学习链接:

  • 焦距

https://baike.baidu.com/item/焦距/1880759?fr=aladdin

https://en.wikipedia.org/wiki/Focal_length

  • 曝光时间

https://baike.baidu.com/item/曝光时间/485425

https://en.wikipedia.org/wiki/Shutter_speed

  • 像素

https://baike.baidu.com/item/像素/95084?fr=aladdin

https://zh.wikipedia.org/wiki/像素

扩展篇

一、神经网络

在学习一样事物的时候。先去想一想为什么要去学它,它能够做到什么,当你对它有个总体的概念性的了解之后,学习才不会彻底变成是一种煎熬痛苦的事。

推荐使用Pytorch或Tensorflow作为深度学习框架。如果你的笔记本电脑没有显卡,可以安装CPU版本。

推荐学习链接:

下面这两个链接可以让你快速的体验到深度学习

相关连接:

二、ROS

ROS

ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构

在视觉组中,我们可将学习到的opencv、深度学习、强化学习放到ROS中,由master管理多个节点,输入输出标准化,实现过程自定义。

要想学习ros,这里推荐安装Ubuntu系统(最好不是虚拟机,因为有些程序在虚拟机跑不动)

推荐b站的《奥特学园》,它是以视频+文档+实操演示的学习视频非常利于新手上路。

喜欢书籍更系统化的学习推荐乌龟书。

推荐学习链接:

学习路线:


万事万物都有属于自己的韵律和节奏,希望大家能在大学四年的时间内无时无刻地给自己充能哦~

最后:

欢迎大家加入视觉算法组

<( ̄︶ ̄)↗[GO!]

发表评论

您的电子邮箱地址不会被公开。