在OpenCV3.0发布后的时隔三年半后,终于推出4.x系列第一个稳定版本4.0。这次有什么变动?我们又有那些新工具可用?
官方给出的发布亮点:
OpenCV现在是C ++ 11库,需要符合C ++ 11标准的编译器。所需的最低
CMake版本已提升至3.5.1。
很多来自OpenCV 1.x的C API已被删除。
在核心模块中的持久性(在XML,YAML或JSON中存储和加载结构化数据)已
在C ++中完全重新实现,并且也丢失了C API。
添加了新的模块G-API,它可以作为非常有效的基于图形的图像处理流水线的
引擎。
dnn模块现在包括实验性Vulkan后端,并支持ONNX格式的网络。
流行的Kinect Fusion算法已针对CPU和GPU(OpenCL)实施和优化
QR码检测器和解码器已添加到objdetect模块中
非常高效且高质量的DIS密集光流算法已从opencv_contrib转移到视频模块。
分支3.4将切换到维护模式:只接受错误修正和灯光功能。BTW,版本3.4.4也准备好了!
opencv3.4.4是3.x系列最后一个版本,是稳定版本,也是4.0之前最后一个稳定版本。4.x稳定版之前还有个beta版本。所有版本的API doc
新增如下:
1GAPI 图api Graph
看到Graph这个单词你可能会想到tensorflow Graph。对!没错,我看了介绍觉得这也是类似的东西。
OpenCV Graph API(或G-API)是一种新的OpenCV模块,旨在使常规图像处理快速便携。通过引入新的基于图形的执行模型来实现这两个目标。
G-API是OpenCV中的一个特殊模块 - 与大多数其他主要模块相比,这个模块充当框架而不是某些特定的CV算法。G-API提供了定义CV操作,使用它构造图形(以表达式的形式),最后实现并运行特定后端的操作的方法。
这是官方给出的 在G-API上移植各向异性图像分割 原图太大,我截取了部分
2 videostab 视频稳定
这个在3.4.4中有一个videostab .hpp的文件,在4.0中已经成为一个模块。恩应该是这样。
模块包括:全局运动估计、快速行进方法
详细说明
视频稳定模块包含一组可用于解决视频稳定问题的功能和类。实施了一些方法,其中大部分都在论文[135]和[78]中描述。但是,原始纸张方法存在一些扩展和偏差。
参考
“运动修复的全帧视频稳定”松下靖久,Eyal Ofek,Weina Ge,Tangou Tang,高级会员,Heung-Yeung Shum
“具有强大L1最佳相机路径的自动定向视频稳定”Matthias Grundmann,Vivek Kwatra,Irfan Essa
三、GitHub上的更改日志
opencv的GitHub上写的更改日志链接:https://github.com/opencv/opencv/wiki/ChangeLog
dnn深度学习
机器之心提到
OpenCV 4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。
目前 OpenCV 所支持的深度学习层级函数:
AbsVal
AveragePooling
BatchNormalization
Concatenation
Convolution (including dilated convolution)
Crop
Deconvolution, a.k.a. transposed convolution or full convolution
DetectionOutput (SSD-specific layer)
Dropout
Eltwise (+, *, max)
Flatten
FullyConnected
LRN
LSTM
MaxPooling
MaxUnpooling
MVN
NormalizeBBox (SSD-specific layer)
Padding
Permute
Power
PReLU (including ChannelPReLU with channel-specific slopes)
PriorBox (SSD-specific layer)
ReLU
RNN
Scale
Shift
Sigmoid
Slice
Softmax
Split
TanH
对于对性能要求很高的神经网络层,这个 DNN 模块包括 SSE、AVX、AVX2 和 NEON 等底层加速库,且还有持续优化中的 Halide 后端。
一些网络的测试效率(ms毫秒)
来自opencv GitHub给出的测试结果。
链接https://github.com/opencv/opencv/wiki/DNN-Efficiency
OS: Linux 4.8.0-34-generic x86_64
Compiler: gcc 5.4.0
CPU: Intel® Core™ i7-6700K CPU @ 4.00GHz x 8
GPU: Intel® HD Graphics 530 (Skylake GT2)
机器学习
opencv在之前就已经支持了机器学习,这次好像没提到做了什么改进