核心图像和GPUImage之间的主要区别

核心图像和GPUImage框架(除了GPUImage是开源的)之间的主要区别是什么? 一目了然,他们的界面看起来非常相似…将一系列filter应用于input以创build输出。 我看到一些小的差异,例如GPUImage所具有的易于使用的LookupFilter。 我想弄清楚为什么有人会select一个照片过滤应用程序。

作为GPUImage的作者,你可能想要用一粒盐来说话。 我应该首先说我对Core Image团队有很大的尊重,他们是如何继续更新框架的。 在写GPUImage之前,我是一名沉重的Core Image用户,我根据Core Image在Mac上的工作原理devise了许多devise元素。

这两个框架都在不断发展,所以今天的比较可能不会在几个月内成立。 我可以指出目前的function和基准,但是我们不能保证在我们任何一个更新时都不会翻转。

我的GPUImage的理念是创build一个围绕着色器渲染的OpenGL(ES)四边形的轻量级包装,并尽可能使用简单的接口。 正如我前面所说的,我从Core Image的方面着手,但是​​我也改变了他们以前绊倒我的界面的一部分。 我也做了一些扩展,核心图像只处理image processing,而我挂钩电影回放,相机input,video录制和图像捕捉。

当我最初为这个想法踢的时候,Core Image还没有来到iOS。 当我发布它时,Core Image刚刚被添加到iOS。 然而,当时在iOS上支持的filter数量相当有限 (例如,没有模糊),iOS上的Core Image不允许像在Mac上那样创build自定义内核。

GPUImage提供了对iOS上的图像和video进行自定义GPU加速操作的方法,而Core Image则没有。 大多数开始使用它的人是这样做的,因为他们有一些效果,他们不能使用库存核心图像filter。

最初,GPUImage 在许多常见操作中也具有显着的性能优势 。 不过,Core Image团队已经在每个iOS版本的处理速度上有了显着的改进,现在情况非常接近。 对于某些操作,GPUImage速度更快,对于其他操作,Core Image更快。 他们希望对模糊的东西进行一些非常聪明的优化 ,我已经开始复制GPUImageiOSBlurFilter等东西。 他们还将智能化的多阶段操作结合在一起,将过滤步骤作为离散和单独的项目处理。 在iOS的某些情况下,这给了我一个优势,我试图减less最近这种内存的后果,但他们比我更好地处理多种types的filter链。

iOS 8在Mac上的Core Image上引入了自定义的内核支持。 这使得可以在iOS上的核心图像中编写自己的自定义filter和其他操作,这样GPUImage将不再是一个优势。 当然,任何想要定位iOS版本的人都会受到Core Image能在那里做什么的限制,GPUImage的目标可以回到iOS 4.0。

核心图像也有一些巧妙的function,可以在iOS应用程序在后台进行过滤(首先是基于CPU的,但是iOS 8现在增加了GPU端支持),GPUImage依赖于OpenGL ES来防止它在应用程序处于后台时运行。 在iOS 8中可能会遇到这种限制,但我还没有完成所有的文档。

我对GPUImage的兴趣是在机器视觉领域。 图像filter是一个有趣的分心,但我想用这个框架来探索GPU加速图像分析的可能性。 我正在研究任意对象识别和跟踪操作,这就是我将继续向框架发展的方向。 但是,你有框架的代码 ,所以你不必依靠我。

这是一个古老的线程,但我认为值得注意的是,GPUImage还具有一些Core Image中不存在的特性:特别是hough变换和多个边缘检测滤波器。

核心图像似乎全部都是关于应用filter和效果的 – 所以很高兴看到GPUImage在图像/video分析方面进行了更多的探索,更像是openCV,但是效率更高。