注:原创不易,转载请务必注明原作者和出处,感谢支持!
一 写在开头
1.1 本文内容
本文内容为计算机视觉入门方法。
二 CV入门基础
2.1 基础知识
图片的相关概念:
维数
高度
宽度
深度
通道数
颜色格式
数据首地址
结束地址
2.2 相关概念解释
图像的深度:存储每个像素所用的位数,比如常见的8位、16位和24位等。
图像的压缩格式:常见的图像压缩格式有JPG、PNG和TIF等。
图像的通道数:常见的有灰度图(单通道)、RGBA(四通道,其中A指透明度)、YUV和YUYV等。
视频的相关概念:
原始视频 = 图片序列。视频中的每张有序图片称为“帧”(frame)。压缩后的视频会采用各种算法来减少数据的容量,其中IPB就是常见的压缩方式。
I帧表示关键帧,其包含了完整的一幅画面。
P帧表示差别帧,其表示的是当前帧与上一个关键帧I(或P帧)的差别,解码该帧时要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
B帧表示双向差别帧,也就是说,B帧记录的是本帧与前后帧的差别。换言之,要解码B帧,不仅要取得之前缓存的画面,还要解码之后的画面,通过前后画面与本帧数据的叠加取得最终画面。
码率:单位时间内传输的数据数。码率越大,视频体积越大。
帧率:每秒传输的帧数。
分辨率:每一帧图像的分辨率。
2.3 摄像机的分类
graph LR;
摄像机-->监控摄像机;
摄像机-->不同行业需求摄像机;
摄像机-->智能摄像机;
摄像机-->工业摄像机;
监控摄像机-->网络摄像机;
监控摄像机-->模拟摄像机;
不同行业需求摄像机-->超宽动态摄像机;
不同行业需求摄像机-->红外摄像机;
不同行业需求摄像机-->热成像摄像机;
2.4 CPU和GPU的差别
从性能(低延时性)和吞吐量两方面来说,CPU属于高性能和低吞吐量,GPU属于低性能但高吞吐量。
从Cache和local memory的数量来看:CPU > GPU
从线程数(Threads)来看:GPU > CPU
从寄存器(Registers)数量来看:GPU > CPU
GPU以并行方式大量处理少量的简单运算,特别适合图像的处理。
2.5 Computer Vision和Machine Vision以及Image Processing的区别
Computer Vision:用在和应用场景相关的应用当中,偏软件
Machine Vision:更加偏重硬件
Image Porcessing:偏重于图像像素级别的处理
2.6 CV需要的知识储备和参考资料
编程语言
Python:多用于快速实现算法原型,除此之外还设计到常用的Python库,包括numpy和scipy等
C或C++:实际部署应用一般会用效率更高的编译型语言,比如C和C++。
数学基础:概率论、统计学、微积分、线性代数、机器学习
参考书和公开课
《Computer Vision : Models, Learning and Inference》
《Computer Vision : Algorithms and Applications》
《Multiple View Geometry in Computer Vision》(偏3D CV)
《Learning OpenCV》
Stanford CS223B:偏理论和基础
Stanford CS231N:卷积神经网络
Stanford CS223A:3D、重建等
网站
深度学习参考书
《Deep Learning》 Ian Goodfellow Yoshua Bengio Aaron Courville
2.7 CV相关开源软件
OpenCV
Caffe
TensorFlow
FFmpeg
2.8 如何阅读CV相关论文
先熟悉所研究方向的发展历程,发展历程中的里程碑式的文献需要精读
翻阅arXiv cs.CV,关注别人的最新工作
阅读论文务必搞清以下四个方面
论文解决了什么问题
用了什么方法
达到了怎样的效果
还存在什么问题待解决
附:
CV顶级期刊:PAMI、IJCV
CV顶级会议:ICCV、ECCV、CVPR、NIPS