当前位置: 首页 > 编程日记 > 正文

HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别

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

相关文章:

一维码Code 128简介及其解码实现(zxing-cpp)

一维码Code 128:1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。Code 128特性&…

21个必须知道的机器学习开源工具!

作者 | SebastianScholl译者 | 刘静,责编 | 郭芮出品 | CSDN(ID:CSDNnews)本文将介绍21种用于机器学习的开源工具。以下为译文:你肯定已经了解流行的开源工具,如R、Python、Jupyter笔记本等。但是&#xff…

eclipse中egit插件使用

2019独角兽企业重金招聘Python工程师标准>>> 这篇文章当时制作有点粗糙,建议阅读升级版:eclipse中egit插件使用--升级版 使用git作为项目的代码管理工具现在是越来越火,网上有各种各样的文章、博客、讨论,其中以命令行…

一维码EAN 8简介及其解码实现(zxing-cpp)

一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码)。当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码。依结构的不同,EAN条码可区分为:1. EAN 1…

三年、四大顶会,深度推荐系统18篇论文只有7个可以复现

作者 | 深度传送门来源 | 深度传送门(ID:gh_5faae7b50fc5)导读:本文是“深度推荐系统”专栏的第十篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要根据RecSys 2019中论文…

PHP教程中验证正整数is_int($value+0),为什么要这样?

2019独角兽企业重金招聘Python工程师标准>>> 最近学习PHP应用,其中有一段是要验证变量是否为正整数,除了is_numeric($value)外,还要加上is_int($value0)且($value0) > 0,为什么还要 0呢?直接验证$value不…

[给12306支招]取消车票预订-采用全额预售(充值)

为什么80%的码农都做不了架构师?>>> 取消车票预订 预订给车票销售带来的负面效应: 产生"占座", 如果用户不付款就会造成席位在支付期内无法销售.回收成本, 超过支付期需要回收车票.恶意占座, 如果恶意占座会造成大量真正要买票的客户无法购票…

一维码ITF 25简介及其解码实现(zxing-cpp)

一维码ITF 25又称交插25条码,常用在序号,外箱编号等应用。交插25码是一种条和空都表示信息的条码,交插25码有两种单元宽度,每一个条码字符由五个单元组成,其中二个宽单元,三个窄单元。在一个交插25码符号中…

微软云计算业务增长,或成全球最具价值上市公司

近日,有消息指出,微软公司在云计算业务上的豪赌正在取得回报,目前微软已超越苹果公司,成为全球市值最高的上市公司。就在几年前,这家软件制造商的市场前景还不被人看好,随着个人电脑销量的大幅度下滑&#…

激光雷达,马斯克看不上,却又无可替代?

作者 | Xingwei来源 | 辣笔小星(ID:XingweiSteven)【导读】最近Velodyne挑起的激光雷达LiDAR专利之战成为了业界热点。可以说在严苛的自动驾驶系统中激光雷达成为一种不可替代的传感器。今天让我们详细聊聊激光雷达LIDAR是怎么回事。什么是激光雷达LIDAR…

解决CSV文件中长数字以科学记数格式保存问题

今天因为需要做数据导入到数据表中,用xlxs文件做好了转化为csv文件,结果一看,傻眼了,全部变为科学记数了,在xlxs设置好的单元格格式为文本,可是转化为csv之后就变为了常规,而且也改变了。源文件…

假设检验怎么做?这次把方法+Python代码一并教给你

(图片付费下载于视觉中国)作者 | Jose Garcia译者 | 张睿毅校对 | 张一豪、林亦霖编辑 | 于腾凯来源 | 数据派THU(ID:DatapiTHU)【导读】本文中,作者给出了假设检验的解读与Python实现的详细的假设检验中的…

C++实现tar包解析

tar(tape archive)是Unix和类Unix系统上文件打包工具,可以将多个文件合并为一个文件,使用tar工具打出来的包称为tar包。一般打包后的文件名后缀为”.tar”,也可以为其它。tar代表未被压缩的tar文件,已被压缩的tar文件则追加压缩文…

HTML5的学习,各个标签的尝试

style标签的使用可以更好的改变各个标题风格 基本标签<p>,标题<h>,这里br是换行。 超链接的使用&#xff0c;属性href。 表格的使用table。 最后就是图片 img&#xff0c;和音频audio插入地址即可。 今天的学习就分享这些&#xff0c;谢谢大家。转载于:https://www…

Android获取内部和SDCard的存储空间

有时我们开Android项目开发时会用到文件存储或上传文件的一些操作&#xff0c;那么我们前提是要获取到该存储设备的大小&#xff0c;以方便于与我们需要操作的文件的大小做比较&#xff0c;如果操作的文件大小小于存储空间&#xff0c;那么就可以继续操作&#xff0c;反之则不能…

排序算法 Java实现

选择排序 核心思想 选择最小元素&#xff0c;与第一个元素交换位置&#xff1b;剩下的元素中选择最小元素&#xff0c;与当前剩余元素的最前边的元素交换位置。 分析 选择排序的比较次数与序列的初始排序无关&#xff0c;比较次数都是N(N-1)/2。 移动次数最多只有n-1次。 因此&…

正则表达式简介及在C++11中的简单使用

正则表达式(regular expression)是计算机科学中的一个概念&#xff0c;又称规则表达式&#xff0c;通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身&#xff0c;加上如同一…

经典再读 | NASNet:神经架构搜索网络在图像分类中的表现

&#xff08;图片付费下载于视觉中国&#xff09;作者 | Sik-Ho Tsang译者 | Rachel编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】从 AutoML 到 NAS&#xff0c;都是企业和开发者的热门关注技术&#xff0c;以往我们也分享了很多相关…

javascript面向对象技术基础(二)

数组我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待(Throughout this book, objects and a…

MediaPipe:Google Research 开源的跨平台多媒体机器学习模型应用框架

作者 | MediaPipe 团队来源 | TensorFlow&#xff08;ID&#xff1a;tensorflowers&#xff09;【导读】我爱计算机视觉&#xff08;aicvml&#xff09;CV君推荐道&#xff1a;“虽然它是出自Google Research&#xff0c;但不是一个实验品&#xff0c;而是已经应用于谷歌多款产…

机器学习研究的七个迷思

作者 Oscar Chang 总结了机器学习研究中的七大迷思&#xff0c;每个问题都很有趣&#xff0c;也可能是你在研究机器学习的过程中曾经遇到过的“想当然”问题。AI 前线对这篇文章进行了编译&#xff0c;以飨读者。迷思之一&#xff1a;TensorFlow 是张量操作库 它实际上就是一个…

Caffe源码中common文件分析

Caffe源码(caffe version:09868ac , date: 2015.08.15)中的一些重要头文件如caffe.hpp、blob.hpp等或者外部调用Caffe库使用时&#xff0c;一般都会include<caffe/common.hpp>文件&#xff0c;下面分析此文件的内容&#xff1a;1. include的文件&#xff1a;boost中…

编程乐趣:C#彻底删除文件

经常用360的文件粉碎&#xff0c;删除隐私文件貌似还不错的。不过C#也可以实现彻底删除文件。试了下用360文件恢复恢复不了源文件了。代码如下&#xff1a;public class AbsoluteFile{public event EventHandler FinishDeleteFileEvent null;public event EventHandler Finish…

大数据工程师手册:全面系统的掌握必备知识与工具

作者 | Phoebe Wong译者 | 陆离编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;前言如何才能成为一名真正的“全栈&#xff08;full-stack&#xff09;”数据科学家&#xff1f;需要了解哪些知识&#xff1f;掌握哪些技能&#xff1f;概括来讲…

JSON.stringify()

写在前边 不言而喻&#xff0c;JSON.stringify() 是用来将合法的JSON数据字符串化的&#xff01;然而在正常的工作中我们用到的只是最基础的功能&#xff1b;今天我们就探索不一样的JSON.stringify()。 基础用法 基本数据类型 JSON.stringify(2) // "2" JSON.stringi…

C++中前置声明介绍

前置声明是指对类、函数、模板或者结构体进行声明&#xff0c;仅仅是声明&#xff0c;不包含相关具体的定义。在很多场合我们可以用前置声明来代替#include语句。类的前置声明只是告诉编译器这是一个类型&#xff0c;但无法告知类型的大小&#xff0c;成员等具体内容。在未提供…

在Java SE中使用Hibernate处理数据

如今&#xff0c;Hibernate正在迅速成为非常流行的&#xff08;如果不是最流行的&#xff09;J2EE O/R映射程序/数据集成框架。它为开发人员提供了处理企业中的关系数据库的整洁、简明且强大的工具。但如果外部需要访问这些已被包装在J2EE Web应用程序中的实体又该怎么办&#…

利用OpenCV、Python和Ubidots构建行人计数器程序(附完整代码)

作者 | Jose Garcia译者 | 吴振东校对 | 张一豪、林亦霖&#xff0c;编辑 | 于腾凯来源 | 数据派&#xff08;ID&#xff1a;datapi&#xff09;导读&#xff1a;本文将利用OpenCV&#xff0c;Python和Ubidots来编写一个行人计数器程序&#xff0c;并对代码进行了较为详细的讲解…

开源软件License汇总

开源软件英文为Open Source Software&#xff0c;简称OSS&#xff0c;又称开放源代码软件&#xff0c;是一种源代码可以任意获取的计算机软件&#xff0c;这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改以及以任何目的向任何人分发该软件。 某…

前深度学习时代CTR预估模型的演化之路:从LR到FFM\n

本文是王喆在 AI 前线 开设的原创技术专栏“深度学习 CTR 预估模型实践”的第二篇文章&#xff08;以下“深度学习 CTR 预估模型实践”简称“深度 CTR 模型”&#xff09;。专栏第一篇文章回顾&#xff1a;《深度学习CTR预估模型凭什么成为互联网增长的关键&#xff1f;》。重看…