1 简介现在,大部分智能手机已经配备了双摄像头,由此而带来的图像类应用越来越多,手机用户们已经非常习惯去拍摄,分享各种各样的图像数据。而且,随着摄像头的分辨率越来越高,数据量也越来越大。在现有的CPU计算能力和无线网络带宽下,用户又想使用丰富多彩的图像应用。因此,加速图像处理应用显得尤为重要。ARM NEONTM 技术采用SIMD(单指令,多数据)体系结构,可以有效提升多媒体和信号处理应用程序的性能,从而增强用户体验。同时,NEONTM技术与ARM处理器紧密结合,提供单指令流和内存的统一视图,从而能够提供一个具有更简单工具流的开发平台。
Ne10 是由ARM主导开发的一个开源软件库。该库旨在提供一系列通用的,基于ARM NEONTM架构并且经过深度优化的函数集合。通过调用该库函数可以让软件开发人员免于编写重复的底层汇编代码,同时也能充分利用ARM NEONTM SIMD指令的并行运算能力。
之前,我们已经发布了一篇博客(),介绍如何使用Ne10库。本文则着重介绍新增添的图像处理功能模块,该模块旨在加速图像处理相关应用。
2 概览您可以从这个地址()下载到最新的源代码。现在Ne10的目录结构如下图所示:
现在,Ne10主要包含math, dsp以及新添的imgproc三个功能模块:
- math 数学模块:主要包含矢量/矩阵数学运算。
- dsp 数字信号处理模块:主要包含FFT快速傅立叶变换,以及部分FIR/IIR滤波函数。
- imgproc 图像处理模块:主要包含图像缩放,旋转等图像后处理函数。
3 图像处理模块根据我们的调查及用户反馈,我们增添了图像处理模块。该模块旨在加速图像处理类应用。在该模块中,我们集成了一些非常基本的,通用的图像处理功能。用户可以直接调用这些NEONTM优化过的函数接口。
3.1 功能介绍目前,我们实现了下列功能的NEONTM优化:
1.图像缩放
该功能实现图像的缩小和放大,支持任意尺寸的缩放,属于图像处理的基础,可以应用到各种图像处理应用中。
2.图像旋转
该功能实现图像的任意角度旋转,是图像处理的基础算法,可以应用到诸如图片浏览等应用中。
我们后续还会增添更多的图像处理功能,欢迎您的建议。
3.2 性能评估现在我们已经在github上开放了图像缩放的源代码。美图网1也在他们的应用中集成测试了图像缩放函数,平均性能提升了2~3倍。
以上应用表明,使用Ne10能加速更多图像处理应用。
4 结论对移动应用开发者来说,Ne10是一个非常有用的函数库。您可以在ARM平台得到良好的性能,同时避免了底层汇编编程。现在,移动应用开发越来越火热,ARM公司也一直致力于帮助广大开发者得到更好的性能,希望Ne10能帮助到越来越多的应用开发者! |