Mar*_*lon 37 iphone performance core-image ios
既然Apple已将Core Image框架移植到iOS 5.0,我想知道:Core Image是否足够快,可以对摄像机视频应用实时滤镜和效果?
另外,学习iOS 5.0的Core Image框架会是一个很好的起点吗?
Bra*_*son 55
既然Core Image已经在iOS上出现了一段时间,我们可以谈谈一些硬性能数据.我创建了一个基准测试应用程序作为我的GPUImage框架测试的一部分,并使用实时视频源分析了基于CPU的原始过滤器,Core Image过滤器和GPUImage过滤器的性能.以下是每个从iPhone相机在640x480视频帧上应用单个伽玛滤波器的时间(以毫秒为单位)(对于运行两个不同OS版本的两种不同硬件型号):
iPhone 4 (iOS 5) | iPhone 4S (iOS 6)
------------------------------------------------
CPU 458 ms (2.2 FPS) 183 ms (5.5 FPS)
Core Image 106 ms (6.7 FPS) 8.2 ms (122 FPS)
GPUImage 2.5 ms (400 FPS) 1.8 ms (555 FPS)
Run Code Online (Sandbox Code Playgroud)
对于Core Image,对于iPhone 4上的简单伽玛滤波器,这最多可转换为9.4 FPS,但在iPhone 4S上则相当于超过60 FPS.这是关于您可以设置的最简单的Core Image过滤器案例,因此性能肯定会随着更复杂的操作而变化.这似乎表明Core Image无法以足够快的速度进行实时处理以匹配运行iOS 5的iPhone 4上的iPhone相机速率,但从iOS 6开始,它处理视频的速度超过iPhone 4S及以上版本的实时过滤速度. .
如果你想看看我从哪里得到这些数字,可以在我的GitHub存储库中找到这些基准的来源.
我已经从原版中更新了这个答案,这对Core Image的性能过于挑剔.我用作比较基础的棕褐色调过滤器没有执行与我自己相同的操作,所以它是一个糟糕的基准.在iOS 6中,Core Image过滤器的性能也得到了显着提升,这使得它们的速度足以在iPhone 4S及更高版本上处理实时视频.此外,我已经发现了几个案例,比如大半径模糊,其中Core Image明显优于我的GPUImage框架.
以前的答案,为子孙后代:
与任何与性能相关的问题一样,答案取决于过滤器的复杂程度,过滤的图像大小以及您运行的设备的性能特征.
由于Core Image已经在Mac上推出了一段时间,我可以将您作为学习框架的资源指向核心图像编程指南.鉴于NDA,我无法评论特定于iOS的元素,但我强烈建议观看WWDC 2011 Session 422 的视频- 在iOS和Mac OS X上使用Core Image.
Core Image(大多数)使用GPU进行图像处理,因此您可以了解OpenGL ES 2.0着色器在现有设备上处理图像处理的速度.我最近在这个领域做了一些工作,发现iPhone 4可以使用一个简单的着色器在480 x 320上输入实时视频进行60 FPS处理.你可以在那里下载我的示例应用程序并尝试自定义着色器和/或视频输入大小,以确定您的特定设备是否能以合适的帧速率处理此处理.核心映像可能会增加一些开销,但它也可以对组织过滤器链的方式进行一些巧妙的优化.
最慢的兼容设备将是iPhone 3G S和第三代iPod touch,但它们并不比iPhone 4慢得多.iPad 2以其巨大的碎片处理能力将它们全部吹走.
恕我直言,Core Image始终是您自iOS6.0以来的首选.你会喜欢一些很好的功能,例如:
_CIglContext = [CIContext contextWithEAGLContext:_glContext options:opts]
;这些都在WWDC2012会话视频中提到,Core Image部分.看看,也许你会在那里找到你的解决方案.
归档时间: |
|
查看次数: |
18974 次 |
最近记录: |