OpenCV3较OpenCV2改变
1)C风格的API完全被C++的API代替,代码更加简洁,不易出错。C++的API将更加简洁。
2)所有的算法都将继承自cv::Algorithm接口。
3)大型的模块将拆分为小的模块。
OpenCV应用层语言
Python、Java、C
OpenCV操作系统:
Windows、Linux、MacOSx、IOS、Android、WinRTx
硬件
GPU、x86、x64、ARM、MIPS
OpenCV中线程
Concurrency:Windows
GCD:MacOSx、IOS
TBB:Windows、MacOSx、Linux、Android、(WinRT)
OpenCV编程中使用的加速手段
针对GPU的加速:CUDA、OpenCL
针对x86和x64加速:OpenCL、SSE/AUX
针对ARM加速:NEON
1)TBB:并行编程,针对多线程,多核处理器。TBB主要功能:并行算法,任务调度,并行容器,同步原语,内存分配器。
2)IPP:(高度手工优化代码),多核并行,用于优化OpenCV性能。
3)OpenMP:实现跨平台共享内存式多线程并发。
4)SSE加速:主要SEE指令进行加速。
5)CUAD(统一计算架构):针对GPU编程实行并行计算。
OpenCL:架构平台编码的程序框架,异构平台可由CPU、GPU、DSP、FPGA或其他类型的处理器与硬件加速器组成。
OpenCV各模块总结:
1)opencv_core模块:程序库的核心功能,特别是基本的数据结构和算法函数;(OpenCV基本数据结构,动态数据结构,绘图函数,数组操作相关函数,辅助功能与系统函数和宏,与OpenGL的互操作等)
2)opencv_imgproc模块:图像处理函数;(线性和非线性的图像滤波,图像几何变换,其它图像转换,直方图相关,结构分析和形状描述,运动分析和对象跟踪,特征检测,目标检测等)
3)opencv_highgui模块:图像、视频读写函数和部分用户界面函数;(高层GUI图形用户界面,包含媒体的I/O输入输出,视频捕捉,图像和视频的编解码,图形交互界面接口等)
4)opencv_features2d模块:特征点检测器、描述子以及特征点匹配框架;(特征检测和描述子,特征检测器通用接口,描述符提取器通用接口,描述符匹配器通用接口,通用描述符匹配器通用接口,关键点绘制函数和匹配功能绘制函数等)。
5)opencv_calib3d模块:相机标定、双视角几何估计及立体函数;(相机校准和三维重建相关内容,如多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息重建等)
6)opencv_video模块:运动估计、特征跟踪及前景提取函数和类;(视频分析组件,该模块包括运动估计,背景分离,对象跟踪等视频处理相关内容)
7)opencv_objdetect模块:目标检测函数;(Cascade Classification级联分类器和Latent SVM等)
8)openc_ml模块:机器学习函数;(基本统计模型和分类算法)
9)opencv_flann模块:计算几何算法;(高维的近似近邻快速搜索算法库,主要是快速近似最近邻搜索和聚类)
10)opencv_gpu模块:GPU加速代码等。
11)open_photo模块:图像修复和去噪模块。
OpenCV机器学习库中主要实现算法如下:
1)一般贝叶斯分类器(Normal Bayes Classifier):CvNormalBayesClassifier
2)K近邻分类(K-nearest Neighbor Classifier): CvKNearest
3)支持向量机(Support Vector Machine):CvSVM
4)期望最大化(Expection Maximization): EM
5)决策树(Decision Tree):CvDTree
6)随机森林(Random Treess Classifier):CvForestTree
7)超随机树分类器(Extremely randomized trees Classifier): CvERTrees
8)Boost分类器(Boosted tree Classifier): CvBoost
9)梯度下降Boost分类器(Gradient Boosted Trees):CvGBTrees
10)神经网络(Artificial Neural Networks): CvANN_MLP
其中每种算法实现的主要函数如下:
1)数据处理:主要是获得训练样本和测试样本数据等
2)分类器初始参数设置:主要是设置分类器训练前的初始参数信息等
3)训练:主要是利用1)中训练样本和2)中的相关参数,进行迭代训练,直到得到满足条件的分类器
4)预测,分类:主要是利用3)中训练得到的分类器对样本进行分类预测等。
5)分类器读写保存:主要完成从文件节点中读取分类器相关信息以及将训练得到的分类器相关信息保存到文件中等。
OpenCV中CUAD加速模块介绍
1)cuda:CUDA-加速的计算机视觉算法,包括数据结构cuda:GpuMat,基于cuda的相机标定及三维重建等。
2)cudaarithm:CUDA-加速的矩阵运算模块。
3)cudabgsegm:CUDA-加速的背景分割模块,通常用于视频监控。
4)cudacodec:CUDA-加速的视频编码与解码。
5)cudafeatures2d:CUDA-加速的特征检测与描述模块,与features2d/模块功能类似。
6)cudafilters/:CUDA-加速的图像滤波。
7)cudaimgproc/:CUDA-加速的图像处理算法,包括直方图计算,霍夫变换等。
8)cudaoptflow/:CUDA-加速的光流检测算法。
9)cudastereo/:CUDA-加速的立体视觉匹配算法。
10)cudawarping/:CUDA-加速的快速图像变换,如透视变换、旋转、改变尺寸等。
11)cudaev/:CUDA核心功能,类似core/模块中的基础算法。
OpenCV3.1增加功能
1)opencv_contrib/ccalib 全方位摄像机标定和立体三维重建
2)opencv_contrib/sfm module 从运动信息中恢复三维场景结构
3)opencv_contrib/dpm module 改进的变形部件为基础的模型
4)opencv_contrib/tracking module 采用核心化相关滤波实时多目标跟踪
5)opencv_contrib/text module 改进和扩展场景文字探测
6)opencv_contrib/stereo module 立体匹配的改进
7)opencv_contrib/structured_light 结构关系标定
8)opencv_contrib/aruco 运用棋盘 + ArUco库标定摄像头
9)opencv_contrib/dnn module 深度神经网络框架的通用接口的实现
10)opencv_contrib/calib3d and opencv_contrib/ximgproc 边缘意思过滤的最新进展,改进SGBM立体算法
11)opencv_contrib/xobjdetect 改进的ICF检测,WaldBoost实现
12)opencv_contrib/tracking module 多目标TLD算法跟踪
13)opencv_contrib/cnn_3dobj 3D姿态估计使用细胞神经网络