OpenCV算法加速(2)MMX、SSE工业视觉算法优化

很多人觉得OpenCV速度比较慢,其实提升OpenCV运行速度,最常见的就是重新编译OpenCV,添加各种指令集优化支持。


在CMake阶段:


启用SSE指令集,SSE3/SSE4,AVX/AVX2


勾选支持 ENABLE_AVX ENABLE_AVX2 ENABLE_POPCNT


勾选 TBB支持


如果有英伟达显卡,勾选 CUDA相关选项


代码实现阶段:


1. 多用指针


2. 框架 parallel_for_ 编程,支持OpenMP、pthreads、C++11 threads、Intel TBB、Microsoft并发或GCD等在不同系统上。


3. 多看OpenCV源码,实现SSE编程重写


4. CUDA编程实现


===============================


上述主要针对传统的图像处理模块! 对深度神经网络-DNN模块,OpenCV支持OpenVINO加速执行 是一个很好的选择,另外一个好像10月份 DNN已经添加了CUDA支持,后续DNN模块将会支持CUDA加速,预期在OpenCV的下个release中将会发布。 =================================


总结,基本上OpenCV通过上述手段加速,特别是并行对卷积操作特别有效,常规的3D卷积加速可以达到300倍左右!CUDA对传统的图像处理可以达到30~100之间,可以说基本上让OpenCV性能速度可以达到工业级应用要求!


OpenCV加速与优化,让代码执行速度飞起来


SIMD指令集 SSE/AVX


https://blog.csdn.net/qq_32916805/article/details/117637192


MMX和SSE实现的opencv数据结构的图像反色算法优化


SSE图像算法优化系列一:一段BGR2Y的SIMD代码解析。


SSE图像算法优化系列七:基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。


上一篇:spring和mybatis整合及逆向工程


下一篇:Oracle分析函数一——函数列表