核心映像用户指南

Core Image是一个用于图像处理和分析的库,里面封装了一个非常易用的API,比如大量常用的滤镜。因为是GPU或者CPU渲染,所以可以近乎实时的速度处理静止图片和视频图片,图片可以来自核心图形,核心视频,I/O框架。

Core Image提供的功能包括:

滤镜在语义上代表了某种能力,当它作用于一张图片时,可以通过变换得到另一张图片。

众所周知,图片是以像素为基本单位存储在电脑中的像素矩阵,只有通过图像处理单元GPU才能显示在屏幕上。数学上,滤镜其实就是一个矩阵,也叫卷积核,通常比一张图片的像素矩阵维数小很多。实际处理图片时,图片的像素矩阵和卷积核做卷积运算,最后输出一个“新”的图片。

顾名思义,滤波器链就是将多个滤波器链接在一起,上一个滤波器的输出作为下一个滤波器的输入。就像流水线一样,图片从第一个滤镜进入,经过处理后进入下一个滤镜,直到最后一个滤镜。这样,你就可以创造出要求更高的效果。

但实际上,岩心图像的处理逻辑略有不同。它不会让一张图片经历多个流程。出于性能考虑,Core Image会先将多个滤波器的卷积核合成一个,然后一次性得到最终结果。

简单来说,图像处理就是将某张图像应用到某个滤镜的过程。

在核心图像中,图片是CIImage,过滤器是CIFilter。滤波器的参数设置应通过KVC实现。同时,您还需要一个上下文对象CIContext,它保存所有相关的细节。因为有这么多细节,所以最好在合适的时候创建一个可重用的CIContext对象。

最基本的用法是只使用一个过滤器,如下所示。

CIImage只能用于CoreImage中的所有相关操作,而不能直接呈现给用户,因为CIImage只是一个用来制作图片的“菜谱”,实际上是一个操作流程,比如从URL读取图片文件,输出一个滤镜操作等。,只有在渲染或输出时才会执行。综上所述,CIImage可以通过以下方法创建:

Core Image中有大量的滤镜,随着系统的不断升级,新的滤镜也在不断加入。系统将其分为以下几类:

把这些功能结合在一起,基本就可以实现一个Photoshop了。

如前所述,当处理多个过滤器时,CoreImage会将多个过滤器合并为一个以提高性能,并在适当的时间完成处理。

例如,如果按部就班地处理,流程如下:

但如果将其合成为滤镜,其流程如下:

除了使用CFilter处理图片,Core Image还可以通过一些预定义的方法直接处理图片,会更加方便。例如:

在图像识别的过程中,如果要识别一个特定的物体,一般需要先检测轮廓,然后根据轮廓裁剪来识别物体,这样会更加高效和准确。如人脸、矩形等物体。在Core Image中,提供了开箱即用的轮廓检测功能,其中只能执行三种操作:人脸、矩形和文本。我们来看看人脸检测的用途:

使用后发现,只要图片包含的人少,结果就比较准确,图片清晰度降低,人多,结果就不一定准确。

为了提高应用程序的性能,使用核心映像时请注意以下细节: