博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别
阅读量:6237 次
发布时间:2019-06-22

本文共 1445 字,大约阅读时间需要 4 分钟。

1 扩展库简介

OpenCV(Open Source Computer Vision Library)是一个致力于实时处理计算机视觉问题的开源库。它最初由Intel公司开发,以GPL许可协议发布,后来由Willow Garage基金会负责开发和维护,以BSD许可协议发布,至今已有超过250万的用户。其用途非常广泛,涵盖从图像处理,计算机视觉到交互艺术,矿产勘探等领域。OpenCV最初以C语言编写,后来提供了C++和Python接口,在版本2.2中又加入了CUDA接口,目前的正式版本为2.4。
OpenCL(Open Computing Language)是一个在异构平台(例如:CPU和GPU,APU)上高效执行程序的开源计算框架,它由Khronos发布并维护,是一个IBM, Intel, AMD等业界公司普遍认可和支持的标准,目前版本为1.2。OpenCL包含一组用于定义和控制平台的API和一个基于C99标准的编写的可执行在并行设备上的kernel。它使应用程序能够在GPU上执行,使GPU可以不仅执行图形程序,而且可以执行通用计算程序(GPGPU)。
虽然OpenCV的目标是能够实时的处理计算机视觉问题,但是大多数计算机视觉的算法太过复杂,无法在CPU上实时执行。而计算机视觉的大多数算法具有天生的并行性,非常适合在GPU和APU上执行并获得可观的加速比。本工程使用和OpenCV兼容的C/C++编写,致力于为OpenCV添加OpenCL接口,使得OpenCV的函数能够在异构设备上高速运行。由于OpenCL是一个跨平台的开放标准,所有支持OpenCL的平台都将获益。
2 OpenCV的架构
OpenCV可以分成以下一些模块,以执行设备来分类的话有CPU和GPU之分,GPU中原有CUDA模块,现在我们加入OpenCL模块,OpenCL模块将在CPU上执行的算法在GPU上加速执行。
[align=center][/align]图1:OpenCV架构图
为了获得良好的性能而又不损失灵活性,我们将OpenCV中最重要的基础结构二维矩阵映射为GPU上的二维Buffer,没有使用OpenCL中得Image对象。这样做可以更有效率的处理单通道数据。
3 基于OpenCL加速的函数列表
OpenCV拥有四百多个函数,并且有些函数的算法十分复杂,由于时间和资源所限,目前的OpenCL并没有包含所有的函数,以下是目前已经经过加速的函数列表
4 性能测试结果
通过GPU的加速和对代码的优化,我们获得了可观的加速比,整体而言,我们对CUDA有1.2倍的加速,对CPU有平均60倍的加速(kernel时间vsCPU时间)。以下是我们的测试平台和测试结果。
表2:测试平台[align=center][/align]
图2:OpenCL vs. CUDA 纵坐标为加速比
图3:OpenCL vs. CPU纵坐标为加速比
5 资源获取
基于OpenCL的OpenCV扩展库已经进入官方的svn,可以在此下载最新代码,也可以在Google Code中下载。
OpenCV official svn: http://code.opencv.org/svn/opencv/branches/ocl
下载:http://code.opencv.org/svn/opencv/trunk

转载于:https://www.cnblogs.com/pengkunfan/p/3515522.html

你可能感兴趣的文章
java-----基本数据类型包装类
查看>>
MD5 SHA-1 示例
查看>>
【WPF】退出应用时的提示弹窗
查看>>
Node.js - 断言
查看>>
缓存穿透,缓存雪崩,热点key及解决办法
查看>>
Nginx配置直接php
查看>>
android样式开发
查看>>
radio选择事件 onchange事件 onclick事件
查看>>
很清晰的解读i2c协议【转】
查看>>
荆慕瑶
查看>>
密码需要带特殊字符(二)
查看>>
10 advanced LotusScript tips
查看>>
InstallShield 2012 Spring新功能试用(21): 安装过程中可以在目标系统中创建和配置任务计划...
查看>>
管道拥塞
查看>>
详解linux vi命令用法
查看>>
基于jQuery的下拉菜单插件,诸位上眼!!!
查看>>
JDBC for rdf3x
查看>>
C# 图像编程 (1) 准备工作; 你好,空姐; 为空姐照片添加特效
查看>>
Openvswitch手册(3): sFlow, netFlow
查看>>
Java垃圾回收精粹 — Part2
查看>>