opencv3计算机视觉:python实现
目录
一 处理图像
二 深度估计和分割
三 图像检索和描述符
四 目标检测识别与跟踪
一 处理图像
1.多数常用opencv函数都在 cv2 模块内,因为它采用面向对象的方式,之前的cv模块多采用面向过程的方式。
2.原始图像由许多频率组成,我们可以分离这些频率来理解图像和提取ROI。(region of interest)
3.图像的幅度谱 spectrum
最明亮的像素放到中央,逐渐变暗,边缘最暗。
4.核的本质是权重,基于核的滤波器(滤波函数)被称为卷积滤波器(卷积函数)。
5. cv2.findContours 和 cv2.approxPloyDP 计算近似的多边形框
cv2.convexHull 来计算凸包
HoughLines 和 HoughLinesP 用来检测直线,前者运用标准hough变换,后者使用概率Hough 变换。
HoughCircles检测圆。
二 深度估计和分割
- 深度图像:灰度图,像素值是摄像头到物体表面的距离。
- 点云图: 图像的每种颜色对应一个(X/Y/Z)维度空间。BGR图像中B对应x,G对应y,R对应z。(蓝色右边,绿色向上,红色深度)
- 视差图:灰度图。图像的每个像素值代表物体表面的立体视差。
- 立体视差:近距离的物体产生大的立体视差,远距离的物体反之。因此近距离的物体视差图中更明亮一些。 有效的视差值和平均视差值相差一定范围以上的时候,即可将像素看做噪声。
- 有效深度掩模:给定像素的深度信息是否有效(0表示无效,非零值表示有效。一般阴影部分就表示无效。)
2.1 从二维图片中分离出前景和背景可用的算法:Grabcut 分水岭
2.2 人脸识别检测
人脸检测算法:类harr特征 级联,具有尺度不变性,但是不具有旋转不变性。
人脸识别算法:Eigenfaces Fisherfaces 和LBPH( Local Binary Pattern Histogram)
三 图像检索和描述符
3.1 特征检测算法
Harris 和 FAST 检测角点
SIFT SURF BRIEF 检测斑点 (blob)
ORB 融合了带方向的FAST和旋转也不变的 BRIEF
3.2 匹配算法
暴力匹配法 (Brute-Force)
FLANN
3.3 特征提取检测
DOG 对同一图像使用不同高斯滤波器得到的结果。
SIFT 对象会使用DOG 检测关键点。
python 大多数处理算法都需要图像为灰度格式。 why?
四 目标检测识别与跟踪
图像目标检测识别
梯度直方图(Histogram of orientation Gradient) HOG
图像金字塔 (image pyramid)
滑动窗口(sliding window)
非最大值抑制
支持向量机(SVM):对带标签的数据进行分类
视频目标跟踪之背景分割
cv2.findContours :计算图像中目标的轮廓
cv2.boundinRect:计算矩形的边界框
类BackgroundSubtractor: 分割前景和背景
opencv3中含有三种背景分割器:
- K-Nearest (KNN)
- Mixture of Gaussians (MOG)
- Geometric Multigid(GMG)
视频目标跟踪之均值漂移
Meanshift
彩色直方图 calcHist
视频目标跟踪之CAMShift
视频目标跟踪之卡尔曼滤波器
五 书评
这本书可以说是一个老外的基于python语言的opencv库的使用记录。
设计python中opencv的API的介绍和使用,理论知识较少。