OpenCV-CL: OpenCL加速计算机视觉技术
大家好!我借这篇文章,分享给大家今年计算机视觉领域里的一些令人兴奋不已的最新进展。特别是最新OpenCV(当前最流行的计算机视觉库)的发布,您的计算机视觉应用程序可以在现代异构计算平台上充分利用CPU和GPU的全部计算力。
从OpenCV 2.4.3开始,到作了重大改进后的OpenCV 2.4.4,至将来发布的各种新版本中,OpenCV都会得到了OpenCL的有力支持。 OpenCV-CL正逐渐地成为功能优异而性能高效的计算机视觉库,且在AMD的APU处理器和GPU显卡上表现出优异性能。
下面列举出了一些目前已经移植到OpenCL的OpenCV功能,包括即将发布的OpenCV2.4.6的一些功能:
• OpenCV-CL 二进制下载
• 初始化和信息
• 单个元操作
• 图像变换
• 还原
• 色彩转换
• 丰富的滤波引擎,包括有各种类型的图像滤波器,如高质量图像增强
• 图像的几何转换
• 基于均值漂移的变换,K-means,聚类
• 角特征检测器
• 模板匹配
• 描述符匹配
• 特征检测,Haar, 特征跟
• 特征描述符
• 加速的鲁棒特征(speeded-up robust features, SURF)
• 梯度方向直方图(HOG)
• 人脸识别 (Viola Jones)
• 光流,如LK, TV L1, Farneback
• 立体声对应:BM, BP, CSBP
• 基于TV L1光流的超分辨率
为有助于开发人员,最新发布的AMD APP SDK(2.8.1版)带有两个OpenCV- CL例子。例子程序“Hello World”验证OpenCV- CL可否在您的系统中工作;互操作示例程序演示在不需要OpenCL管道的情况下,如何利用程序开发人员用自己编写的OpenCL内核扩展OpenCV- CL!
下面简要地介绍这个实现过程:
OpenCV-CL是非常灵活的,可依照程序员的需要,尽可能多地或尽可能少地展现出OpenCL。即使具有很少或者根本没有OpenCL开发经验的程序员,也能简单地调用支持OpenCL功能的cv:: OCL模块,而无需了解或者编写一行OpenCL API或OpenCL内核代码。无论他使用的是APU中集成的GPU,还是独立显卡上的GPU,他的程序都能受益于GPU提供的优异的计算能力。事实上,你可以研究cv:: OCL模块中的OpenCL例子程序,去学习如何在计算机视觉应用问题中使用OpenCL。对于熟悉OpenCV并且具有丰富的开发经验的程序员,我们也给他们一个惊喜:他们可以利用OpenCV- CL的基础架构,获得免费的OpenCL支持轻松的使用OpenCL功能(仅仅只需要他们添加使用一行代码而已)。然后,程序员可将自己的内核程序插入OpenCV-CL框架,就可以扩展该框架,而无需重新做编译工作。 AMD特意在APP SDK2.8.1中引入这个互操作功能例子,就是为了说明这个过程是多么容易!
在AMD开发者网站内,您能找到自己所需的资源,包括利用网站内的社区论坛,帮助自己创建异构计算解决方案。在这个论坛上,您也能分享对OpenCV或AMD APP SDK的建议或意见。我们会倾听您的想法,让我们能够不断地改进异构计算的软件开发工具!
再者,请积极加入OpenCV论坛,为改进OpenCV做出贡献,或从github获取最新、最棒的源代码。请留意更新!我们的目标是借由异构计算使得计算机视觉更快、更方便集成!
请尽情享受异构计算带来的全新体验!
请在这里下载AMD APP SDK2.8.1。为了更好地使用APP SDK2.8.1,建议您升级驱动程序到AMD Catalyst 13.6 Beta2以上。
Harris Gasparakis博士是OpenCV-CL的项目经理,技术负责人和布道者。他的文章表达了他的个人意见,并不完全代表AMD的立场,策略或观点。第三方网站的链接和第三方商标引用仅供方便和说明之用。除非明确说明,AMD不负责这些链接内的内容,并且没有认可或暗示任何其产品。