2019-10-23 opencv官网教程学习总结

64 篇文章 3 订阅

官网

对于图像的处理,基本的步骤是这样的:
step1.取得图像数据
step2.将图像进行平滑处理
step3.进行边缘检测,阈值分析
step4.进行形态学的操作
step5.获取某些特征点
step6.分析数据

1.opencv中的gui特性

1-1.绘图学习

2.核心操作 Core Operations

2-1.基础操作/数学运算/性能测量和改进

3.opencv中的图像处理 Image Processing in OpenCV

3-1.颜色空间转换和物体跟踪Changing Colorspaces

  • 最常用的也就2种BGR ↔ Gray和BGR ↔ HSV
  • 物体跟踪需要把BRG图像转换为HSV空间。在HSV空间中,它比BRG空间更容易表示某个特定的颜色。

3-2.图像几何变换(缩放/平移/旋转/仿射变化/透视变换)Geometric Transformations of Images

3-3.图像阈值(Image Thresholding)
图像阈值处理是实现图像分割的一种方法。选取一个合适的阈值,以确定图像中的每个像素点应该属于目标区域还是背景区域,最终产生对应的二值图像,实现图像分割。

3-4.图像平滑处理(Smoothing Images)-低通滤波

  • 平滑”通常又称“模糊”,是一种简单常用的图像处理操作。进行平滑处理的原因有很多,但通常是用来去除噪声和相机失真。在降低图像分辨率时,平滑处理是很重要的。
  • 平滑处理时需要用到一个低通滤波器 。最常用的滤波器是线性滤波器。
  • 低通滤波器,它的作用就是去除图像中的噪音。

3-5.形态学变换(Morphological Transformations)

  • 形态学变化可以用来解决抑制噪声、特征提取、边缘检测、图像分割、形状识别、纹理分析、图像恢复与重建、图像压缩等图像处理问题。
  • 腐蚀,膨胀,开运算,闭运算,形态学梯度,顶帽,黑帽,结构化元素(矩形核,圆形核,椭圆核)

3-6.图像梯度(Image Gradients )-高通滤波

  • 用于发现物体的边缘
  • 图像边缘一般都是通过对图像进行梯度运算来实现的。梯度可以理解为图像灰度值变化
  • opencv提供3种类型梯度滤波器,或者说高通滤波器。Sobel, Scharr和Laplacian。
  • 高通滤波器,主要是为了图像识别抽取出图像特征,这里的特征一般为边缘纹理的特征。因为图像中边缘和纹理细节都是高频信号。

3-7.边缘检测Canny Edge Detection
过程如下:

  • 降噪(图像平滑处理-低通滤波器)
  • 计算图像梯度,发现边缘(高通滤波器)
  • 非极大值抑制,排除非边缘像素
  • 滞后双阈值化 ,高阈值和低阈值。Canny 推荐的高:低阈值比在 2:1 到3:1之间。当点的灰度梯度高于maxVal 时被认为是真的边界,低于minVal会被抛弃。两者之间,要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。

3-8.图像金字塔(Image Pyramids)-图像融合

  • 拉普拉斯金字塔
  • 采用图像金字塔进行图像融合,就可以把2张图像无缝融合在一起,而且不会在图像上增加过多的数据

3-9.轮廓

轮廓是连接着所有沿着边界连接点的曲线,这些连接点具有相同的颜色和强度。
轮廓在形状分析,目标检测和识别中很有用。

3-9-1.概述/绘制/近似方法

  • findContours()
  • drawContours()

3-9-2.轮廓特征-Contour Features(矩/轮廓面积周长/凸包/矩形/圆/椭圆边界/直线

3-9-3.轮廓的特性-Contour Properties(长宽比/范围/密实度/当量直径/方向/蒙板和像素点/最大小值/平均颜色和强度/极值点)

3-9-4.更多函数-More Functions(凸缺陷/点至多边形测试/图形匹配-hu矩)

3-9-5.轮廓层次结构Contours Hierarchy(含4种检索模式)

  • 图像中某个轮廓和其他轮廓之间的关系
  • 每一个轮廓都有包含一些信息:[Next, Previous, First_Child, Parent]
  • RETR_LIST:只是提取所有轮廓,并不创建父子关系。所有轮廓都属于同一级层次结构。
  • RETR_EXTERNAL:只会返回最外部轮廓,所有的子轮廓都被忽略。适合只希望获得最外部的轮廓的情况。
  • RETR_CCOMP:会返回所有轮廓,并且把轮廓分为2级结构。
  • RETR_TREE:获得所有轮廓,并且创建一个完整的层级结构。

3-10.直方图

直方图可以理解为是一个图表,通过它可以对图像的灰度分布有一个全面的了解。
它的X轴上是像素值(一般为0-255),Y轴是和X轴对应像素点的数量。
直方图是对图像的另外一种理解方式。
通过图像的直方图,你可以直观的了解图像的对比度、亮度、强度分布等。现在所有的图像处理工具都提供了直方图功能。

3-10-1.获取,绘制与分析,掩膜(Find, Plot, Analyze)

3-10-2.均衡化(Equalization)

  • 一副好图像,像素值应该发布在图像所有区域。如果一副图像的像素值都集中在某些特定范围之内,就需要把直方图横向拉升到2端。这就是直方图均衡化。
  • 通常情况,均衡化会增加图像的对比度。

3-10-3.2D直方图(2D Histograms)

  • 二维直方图中,我们需要考虑2个特征,通常它被用于颜色直方图。
  • 颜色直方图需要考虑2个特征,像素的颜色(Hue)和饱和度(Saturation)。
  • 直方图最好使用颜色直方图,而不是灰度直方图,因为物体的颜色比物体的灰度能更好的定义物体。

3-10-4.反向投影(Backprojection )-找感兴趣部分/图像分割
它会输出和输入图像同样大小的图像(单通道)。输出图像上的每个像素表示输入图像上对应像素属于目标对象的概率。再简单一点说,输出图像上,我们感兴趣目标对象会比其他部分更加白。

3-11.图像变换-发现图像的傅里叶变换(Image Transforms)

  • 傅里叶变换通常被用来分析各种滤波器的频率特性
  • 图像中振幅变化剧烈的部分就是边界和噪音,它们是高频部分。振幅变化不大的部分,就是低频部分。

3-12.模板匹配(Template Matching)
模板匹配 是用来在一个大图像中找到模板图像的方法。opencv提供cv.matchTemplate() 函数来实现这个功能。

3-13.霍夫曼直线变换(Hough Line Transform )
识别图像中直线

3-14.霍夫曼圆形变换(Hough Circle Transform )
识别图像中圆形

3-15.分水岭算法分割图像(Image Segmentation with Watershed Algorithm )

3-16.CrabCut算法交互式前景抽取(Interactive Foreground Extraction using GrabCut Algorithm)

4.特征检测和描述 Feature Detection and Description

4-1.理解特征 Understanding Features

4-2.Harris 角点检测 Harris Corner Detection

  • 发现图像中的角部
  • 旋转不变

4-3.Shi-Tomasi角点检测 Shi-Tomasi Corner Detector & Good Features to Track
适合目标跟踪。Harris 角点检测改进

4-4.介绍SIFT(尺度不变特征变换)Introduction to SIFT (Scale-Invariant Feature Transform)
SIFT:对旋转、尺度缩放、亮度变化保持不变性。
步骤:

  • 尺度空间极值检测
  • 关键点定位
  • 方向分配
  • 关键点描述符
  • 关键点匹配

4-5.介绍SURF(SIFT算法的改进版)Introduction to SURF (Speeded-Up Robust Features)
SURF算法的执行效率上,比SIFT算法来讲运行更快。

4-6.角点检测的快速算法(FAST Algorithm for Corner Detection)
FAST(Features from Accelerated Segment Test) 算法介绍,以及它的缺陷和解决方法

4-7.BRIEF (Binary Robust Independent Elementary Features)描述符快速计算和匹配

  • BRIEF:一种对已检测到的特征点进行描述的算法,它是一种二进制编码的描述子,在图像匹配时使用BRIEF能极大的提升匹配速度。
  • 原生的BRIEF的缺点比较明显,不具备旋转不变性、不具备尺度不变性而且对噪声敏感,但是它算法简单而且计算复杂度低,计算速度很快。

4-8.ORB (Oriented FAST and Rotated BRIEF)
ORB采取FAST算法检测特征点,采取BRIEF算法计算特征点描述子
其所解决的问题是SIFT特征的高昂计算代价,以及BRIEF特征本身具有的缺乏旋转不变性、尺度不变性以及对噪声敏感的弱点。
基于FAST和BRIEF特征提出的二值特征串(0,1)在时间上比SIFT快100倍,比SURF快10倍,并且匹配效果也很好。

4.9.特征匹配 Feature Matching

  • 暴力匹配 Brute-Force Matcher
  • 基于FLANN的匹配器。FLANN是Fast Library for Approximate Nearest Neighbors(快速近似最近邻搜索库)的简称

4-10.特征匹配+单应(Homography,投影映射)查找对象(Feature Matching + Homography to find Objects)

  • Homography就是一个变换(3*3矩阵),将一张图中的点映射到另一张图中对应的点
  • 平面的单应性被定义为从一个平面到另一个平面的投影映射。

5.视频分析 Video Analysis

5-1. Meanshift(均值漂移)和Camshift(连续自适应均值漂移,根据追踪物体远近变化窗口大小)
都是用于目标跟踪

5-2.光流 Optical Flow
运动图像分析的重要方法

  • 光流是由于物体或者摄像机的移动引起图像对象在2个连续帧之间的视运动(apparent motion)模式。
  • 光流是一个向量场,每个向量都是显示点从第一个帧到第二个帧移动的位移矢量(displacement vector)。

5-3.背景消除 Background Subtraction

6.摄像机标定与三维重构 Camera Calibration and 3D Reconstruction

三维重构是计算机视觉的中心任务。是指从二维图像恢复三维空间物体的几何形状的过程,主要步骤有:图像对应点的确定,摄像机内外参数的标定,关键点重建,稠密点重建,纹理映射等

摄像机标定的目的:确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数

6-1.摄像机标定 Camera Calibration

  • 图像的畸变(distortion ):径向畸变和切向畸变。
  • 摄像机标定:求出摄像机的内、外参数,以及畸变参数。
  • 标定后通常是要做两件事:一个是由于每个镜头的畸变程度各不相同,通过标定可以校正这种镜头畸变矫正畸变,生成矫正后的图像;另一个是根据获得的图像重构三维场景。

6-2. 姿态估计Pose Estimation
利用标定结果计算物体姿态,或者物体在空间中的位置。
渲染立方体应用。

6-3.对极几何 Epipolar Geometry
由于通过单幅图像获取整个3D世界的构造信息是不太可能的。所以可以利用对极几何,通过多相机、建立一个3D点和该点在每个相机图像平面上的投影之间的关系。

6-4.立体图像中的深度图 Depth Map from Stereo Images

  • 深度图的应用范围非常广泛,由于其能够记录场景中物体距离摄像机的距离,可以用以测量、三维重建、以及虚拟视点的合成
  • 通过同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。

7.机器学习 Machine Learning

7-1.KNN算法,K近邻 (K-Nearest Neighbour)
7-1-1.理解KNN
7-1-2.使用kNN识别手写数据OCR(OCR of Hand-written Data using kNN)

7-2.SVM算法,支持向量机(Support Vector Machines (SVM))
7-2-1.理解SVM
7-2-2.使用SVM识别手写数据OCR(OCR of Hand-written Data using SVM)

7-3.k均值聚类(K-Means Clustering )
7-3-1.理解K-Means
7-3-2.opencv中的k均值聚类(K-Means Clustering in OpenCV)

8.计算摄影 Computational Photography

8-1.图像去噪 Image Denoising
非局部均值去噪,Non-Local Means Denoising。比高斯/中值平滑好

8-2.图像修复 Image Inpainting
2种算法,都需要掩膜

8-3.高动态范围图像High Dynamic Range (HDR)
提供更多的动态范围和图像细节,更好的反映出真实环境中的视觉效果

9.对象检测 Object Detection

9-1.使用Haar 分类器进行面部检测 Face Detection using Haar Cascades

10.OpenCV-Python Bindings

10-1.opencv和python绑定是如何实现的?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值