【iOS Document】Core Image指南之一 - 关于 Core Image(About Core Image)

关于Core Image

重要:这篇文档包括关于一系列API或技术在开发中的初步的信息,这些信息可能会变动,
     根据该文档的软件实现需要在最终的操作系统软件上测试。

Core Image是一种处理和分析图像的技术,被设计以提供接近实时的静态或视频图像的处理的功能。它运作在来自Core Graphics, Core Video, 和Image I/O frameworks的图像数据类型上。使用GPU或CPU两者之一的的渲染路径,Core Image通过提供一系列易于使用的API隐藏了低级图形处理细节。你无需知道OpenGL, OpenGL ES, or Metal是如何利用GPU能力,而且你也不需要知道任何关于Grand Central Dispatch (GCD)获得的多核处理的益处。

Figure I-1 Core Image in relation to the operating system

【iOS Document】Core Image指南之一 - 关于 Core Image(About Core Image)_第1张图片
architecture_2x.png

处理图片表示对其使用过滤器(CIFilter),一个过滤器是一段代码,这段代码对输入图片的像素逐个检查并且使用算法生成一些特定的效果,最后将处理后的图片输出。在Core Image中,图像处理依靠CIFilter和CIImage两个类,这两个类描述了过滤器(CIFilter)和它的输入与输出对象(CIImage)。想要使用过滤器显示或者输出处理结果,你可以混合使用Core Image或者其他的系统框架,或者使用CIContext类来创建你自己的渲染流程。这一章涵盖了使用这些类去应用滤镜和获取渲染结果的关键概念。

概述

Core Image框架提供了

  • 内建图像处理过滤器
  • 特征检测能力
  • 支持自动图像增强
  • 将多个过滤链接在一起创造自定义效果的能力
  • 支持创建在GPU上运行的过滤器
  • 基于回馈的图像处理能力

在macOS上,Core Image也提供了一个手段打包自定义过滤器给其他App使用。


Core Image是高效且易于使用的分析处理图像的框架

Core Image提供了数百个内建过滤器,你通过提供键值对作为一个过滤器的输入参数来配置过滤器。过滤器的输出可以是另外一个过滤器的输入,使它可以将多个过滤器链接在一起来创建令人惊奇的效果。如果你创建一个想要重用的复合效果,你可以子类化CIFilter捕获效果的"配方"。

有超过一打的滤镜种类。有的被设计用于实现精美的结果,例如stylizehalftone滤镜分类;有的最适合图像修补,例如color adjustment和** sharpen**滤镜。

Core Image能够分析一个图像的质量并提供一套最佳设置的调节滤镜,例如色彩色差色调,和修正闪光灯失真例如红眼。你只需要一个调用即可完成这些调节。

Core Image在静止的图像中能够发现人脸特征,在视频图像中能够随着时间跟踪它们。了解脸在哪儿能够帮助你确定在哪放置饰品或应用其他特殊的过滤器。

相关章节:Processing Images, Detecting Faces in an Image, Auto Enhancing Images, Subclassing CIFilter: Recipes for Custom Effects(处理图片,在图片中发现人脸,自动改善图像,子类化CIFilter:自定义效果)


向Core Image请求一个包含过滤器和它的属性的列表

Core Image有“内建”的过滤器的参考文档。你可以询问系统找出哪个过滤器可用,然后,对于每一个过滤器,你可以取回一个包含了它的属性的字典。例如它的输入参数、默认参数值、最小和最大值、显示名称等等。

相关章节:Querying the System for Filters(向系统查询过滤器)


Core Image能够达到实时视频性能

如果你的App需要实时处理视频,这里有很多优化性能的事情你可以做。

相关章节:Getting the Best Performance(获得最佳性能)


使用一个图像累加器以支持基于回馈的图像处理

CIImageAccumulator类被设计用于高效的基于回馈的图像处理,如果你的App需要图像动态系统的话你也许会发现非常有用的那个。

相关章节:Using Feedback to Process Images(使用反馈信息处理图像)


创建和发布自定义内核和过滤器

如果内建过滤器即使把它们链接起来也没有一个适合你的需要,考虑创建一个自定义过滤器。你将需要了解核心程序的像素级别的操作,因为它们是所有过滤器的核心。

在macOS中,你可以打包一个或多个自定义过滤器作为一个图像单元以便于其他App读取并使用它们。

相关章节:What You Need to Know Before Writing a Custom Filter, Creating Custom Filters, Packaging and Loading Image Units(在写一个自定义过滤器,创建自定义过滤器,打包和读取图像单元之前你需要了解的)


另请参阅

关于Core Image的其他的重要文档:

  • Core Image Reference Collection提供了一个在Core Image框架中可用的类的细节描述
  • Core Image Filter Reference描述了苹果提供的内建图像处理过滤器并展示了在使用过滤器处理图片之前和之后图片是如何出现的
  • Core Image Kernel Language Reference描述了创建自定义过滤器的核心程序语言。

你可能感兴趣的:(【iOS Document】Core Image指南之一 - 关于 Core Image(About Core Image))