图像处理中使用多线程及图像分块实现加速运算 1.实验背景
很多图像处理算法,编写完毕、调试正确后,就是漫长的算法优化。有些算法处理效果很棒,但是运算非常的耗时,还是无法集成产品给用户。本文介绍的基于多线程和图像分块实现加速运算,因为调用了opencv库,比较容易编写和实现。OpenCV全称是是Open Source Computer Vision Library,它是由Intel微处理器研究实验室的视觉交互组开发,是一种用于数字图像处理和计算机视觉的开源函数库,采用的开发语言是C++。
2.实验目的
对于一副图像,比如8000*5333分辨率,我们在处理时,通常思路是从第1个像素开始,一直计算到最后一个像素。其实,目前不论手机还是个人电脑,处理器都是多核。那么完全可以将整副图像分成若干块,比如cpu为4核处理器,那么可以分成4块,每块图像大小为2000*5333,这样程序可以创建4个线程,每个处理器执行一个线程,每个线程处理一个图像块。虽然这样操作后,运算速度不会显著提升4倍,因为线程创建、释放、上下文切换都要耗些时间。但运算速度还是将明显提升,一般4核 vs 1核,运算时间将降低一半。
3.代码分析 3.1转黑白图像
3.2计算线程
3.3输出结果
3.4分块计算
3.5等待分块计算完成
3.6主函数
相关推荐: