Core Image编程指南翻译四(自动增强图像)

示例代码下载

自动增强图像

Core Image的自动增强功能可分析图像的直方图,面部区域内容和元数据属性。然后它返回一个CIFilter对象数组,其输入参数已经设置为可以改善分析图像的值。

iOS v5.0及更高版本以及OS X v10.8及更高版本中提供了自动增强功能。

自动增强滤镜
表3-1显示了Core Image用于自动增强图像的滤镜。这些滤镜可以解决照片中常见的一些问题。

表3-1 Core Image用于增强图像的滤镜

滤镜 作用
CIRedEyeCorrection 由于相机闪光灯修复红色/琥珀色/白色眼睛
CIFaceBalance 调整脸部的颜色,使肤色愉悦
CIVibrance 增加图像的饱和度而不会扭曲肤色
CIToneCurve 调整图像对比度
CIHighlightShadowAdjust 调整阴影细节

使用自动增强滤镜

自动增强API只有两种方法:autoAdjustmentFilters和autoAdjustmentFiltersWithOptions:。在大多数情况下,您将需要使用提供选项字典的方法。

您可以设置以下选项:

  • 图像方向,对CIRedEyeCorrection和CIFaceBalance滤镜很重要,因此Core Image可以准确地找到面部。
  • 是否只应用红眼校正。(设置kCIImageAutoAdjustEnhance为false。)
  • 是否应用除红眼校正以外的所有滤镜。(设置kCIImageAutoAdjustRedEye为false。)

autoAdjustmentFiltersWithOptions:方法返回一个选项滤镜数组,您可以将它们链接在一起并应用于分析的图像,如清单3-1所示。代码首先创建一个选项字典。然后它获取图像的方向并将其设置为键的值CIDetectorImageOrientation。

清单3-1 获取自动增强滤镜并将其应用于图像

NSDictionary *options = @{ CIDetectorImageOrientation :
                 [[image properties] valueForKey:kCGImagePropertyOrientation] };
NSArray *adjustments = [myImage autoAdjustmentFiltersWithOptions:options];
for (CIFilter *filter in adjustments) {
     [filter setValue:myImage forKey:kCIInputImageKey];
     myImage = filter.outputImage;
}

回想一下,Core Image已经设置了输入参数值以产生最佳结果。

您不必立即应用自动调整滤镜。您可以保存滤镜名称和参数值以供日后使用。保存它们可让您的应用程序稍后执行增强功能,而无需再次分析图像。

你可能感兴趣的:(Core Image编程指南翻译四(自动增强图像))