elegantcoin / LectureNotes_for_Computer_Vision

LectureNotes for the Book Learn OpenCV 4 by Building Projects.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LectureNotes_for_Computer_Vision


🔥 1. 了解OpenCV

  • 1.OpenCVimgproc模块提供了很多基本函数,可以用来轻松处理图像。
  • 2.高级的图像处理算法如:构化森林的边缘检测、域变换滤波器、自适应流形滤波器 用到了ximgproc模块。
  • 3.highgui模块,界面操作,可以查看图像处理的中间过程,用到waitKey(),还可以缩放保存图像。
  • 4.视频处理模块videostab,可以对拍摄视频抖动校准。
  • 5.3D模块,强大的算法可以利用calib3d计算2D图像下物体的3D位置
  • 6.特征提取features2d模块:主要的算法有 - 算法包括尺度不变特征变换(Scale Invariant Feature Transform,SIFT)、加速鲁棒特征(Speeded Up Robust Features,SURF)和加速分段测试特征(Features From Accelerated Segment Test,FAST)。
  • 7.对象检测objdetect模块:可以使用预训练模型+ Caffe轻松实现实时对象检测
  • 8.机器学习ml模块:贝叶斯分类器(Bayes classifier)、KNN(k-nearest neighbor),支持向量机(support vector machine,SVM)、决策树(decision tree)、神经网络(neural network)以及最近领域搜索算法。
  • 9.形状分析shape模块。
  • 10.人脸识别face模块。目标识别,检测,跟踪。注意区别recognitiondetection
  • 11.安装
    • Windows
    • MacOS
    • Linux (可以参考pyimagesearch上的大佬Adrian Rosebrock,他的深度学习的书也不错) (make -j44就是编译用几个核,多核可以加快安装过程)

🔥 2. OpenCV基础知识

  • 1.图像和矩阵:
    • OPenCV中使用的BGR的形式,注意和平常用的RGB是反过来的,要转换一下,不然颜色通道可能会弄反。
    • 注意图像还有YUV420等其他格式。
  • 2.基本对象类型:
    • Mat, Vec3b, Vec, Scalar, Point, Size, Rect, RotatedRect 等类

🔥 3. 基本图形用户界面

  • 1.Qt用户界面。当前最新貌似是Qt5(Python3, OpenCV4,Qt5)?
  • 2.destroyAllWindows删除所有Qt界面
  • 3.Qt有工具栏、图像区域、状态栏三部分。
  • 4.OpenGL

🔥 4. Histogram and Filters(直方图和滤波器)

  • 1.cv2.calcHist(images,channels,mask,histSize,ranges)绘制直方图。
  • 2.cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)将图像转换为灰阶,可以绘制灰阶直方图。
  • 3.Lomography效果,我感觉相机也有,但是我几乎都不用这个。LUT(S型函数,让暗值更暗、亮值更亮,实现高对比)
  • 4.颜色直方图:用cv2.split(image)把颜色通道提取出来,分别绘制直方图。
  • 5.图像均衡器:cv2.equalizeHist(image)

🔥 5. 自动光学检查、对象分割和检测

  • 1.预处理图像
    • 降噪 Noise removal 平滑图像box filter, Gaussian filter
    • 移除背景 光模式 (减法 R=L-I 和除法 R=255*(1-I/L)
    • 阈值(Thresholding)
  • 2.分割图像
    • 连接组件:如果相邻两个像素值相同,就连接起来。
    • 查找轮廓:(findContours会修改原图,一般建议保存副本后再使用该函数)

🔥 6. Object Classification(对象分类)

  • 1.OPenCVStatModel类有八种机器学习算法:
    • Artificial neural networksRandom treesExpectation maximizationk-nearest neighborsLogistic regressionNormal Bayes classifierssupport vector machineStochastic gradient descent SVMs
  • 2.计算机视觉和机器学习
    • 步骤:1.预处理 2.分割 3.特征提取 4.分类结果 5.后处理

🔥 7. 面部检测

  • 1.Haar级联
    • 弱分类器串联,来创建强分类器
    • integral images: ABCD = AC - (AB + AD - AA)

🔥 8. 视频监控、背景建模

  • 1.背景减除(background subtraction):
    • 图像绝对差值,再阈值处理
    • 对光照变化敏感,不能处理相机移动的情景。
  • 2.帧差分(Frame differencing
    • 当前帧与前一帧之间或者与下一帧之间的绝对差值,然后按位AND运算
  • 3.高斯混合(MOG
  • 4.形态学运算符
    • 侵蚀
    • 膨胀
    • 形态开口
    • 形态闭合
    • 绘制边框
    • Top Hat transform
    • Black Hat transform

🔥 9. 对象跟踪

  • 1.Tracking color
  • 2.交互式对象跟踪器
    • 连续自适应平移(CAMShift)算
  • 3.Harris corner detector
    • 基于灰度图像偏导数构造2×2矩阵,然后分析特征值
    1. Good features to track
  • 5.Feature-based tracking
    • 运动向量检测:Lucas-Kanade(稀疏光流)和Farneback算法(密集技术,需要处理所有像素)。

🔥 9. 文本识别的分割(Segmentation)算法

  • 1.阈值处理
  • 2.文本分割
    • Using connected component analysis
    • Use classifiers to search for a previously trained letter texture pattern
  • 3.使用Tesseract OCR模块 MSER特征检测器

🔥 10. OpenCV深度学习

  • 1.Tensoreditor or lobe.ai
  • 2.YOLO3
    • 80个类别
    • 每个网格使用19个和5个边框网格训练
    • 输出19×19×425
    • 基于DarkNet,YOLO增加了53层,总共106层
  • 3.SSD
    • 可以修改模型,只检测一个类

🔥 Appendix A. 面试问题

  • 1.SVM
  • 2.决策树的优缺点
  • 3.L1L2正则的区别
    • 权重惩罚不一样
  • 4.ResNet DetNet的原理
  • 5.梯度下降、牛顿法的区别
    • 用不用海森矩阵信息,一阶、二阶
  • 6.Faster-RNNRPN) ,将ROI标记为前景或背景。抛弃背景anchors区域,而前景对象传播到ROI Pooling模块。
  • 7.FPNFeature pyramid Network
  • 8.目标检测,one-stagetwo-stage
  • 9.BPBack Propagation) 正向、反向传播
  • 10.Poling、梯度消失、过拟
  • 11.NMSNon-Maximum Suppression)非极大值抑制 IoU
  • 12.SSD SENet Focal Loss YOLO
  • 13.BN层 (Batch Normalization) 白化,太多层,容易早停,高层分布变化大 M Std 归一化处理
  • 14.数据集:MNISTCIFAR-10SMILEKaggleFlowers-17CALTECH-101ImageNetFER13Indoor-CVPRStanford CarsAdience
  • 15.模型:AlexNetVGGNetGoogleNetResNetSqueezeNetLeNet(手写识别)、Faster-RNNSSDYoLoMask-RNN
  • ...

About

LectureNotes for the Book Learn OpenCV 4 by Building Projects.