滤镜初探-BeautifyFaceDemo-滤镜类介绍

字数 9355阅读 597

最近需要给直播项目中添加美颜的功能,调研了很多SDK和开源代码(视决,涂图,七牛,金山云,videoCore等),综合成本/效果/对项目侵入性,最后决定使用一款基于GPUImage实现的 BeautifyFaceDemo美颜滤镜。

temperature-----选择色温,以开尔文为单位 10000->0.3(暖色调)  5000->0.0  4000->-0.4(冷色调)
tint-----调整颜色补偿
必须理解的概念:白平衡(白色永远是白色,不会变色)
“K”代表“开尔文”(Kelvin),即色温的单位。“K”设置可以让你设定具体的色温值,这一数值越低,色彩就越偏暖。蜡烛光线的色温约为1000K,蓝天的色温约为10000K。日光和闪光灯的色温则位于中间段(日光大约5200K,闪光灯5900K)

// Base classes

import "GPUImageOpenGLESContext.h"

import "GPUImageOutput.h"

import "GPUImageView.h"

import "GPUImageVideoCamera.h"

import "GPUImageStillCamera.h"

import "GPUImageMovie.h"

import "GPUImagePicture.h"

import "GPUImageRawDataInput.h"

import "GPUImageRawDataOutput.h"

import "GPUImageMovieWriter.h"

import "GPUImageFilterPipeline.h"

import "GPUImageTextureOutput.h"

import "GPUImageFilterGroup.h"

import "GPUImageTextureInput.h"

import "GPUImageUIElement.h"

import "GPUImageBuffer.h"

// Filters

import "GPUImageFilter.h"

import "GPUImageTwoInputFilter.h"

颜色调整###

  • ** GPUImageBrightnessFilter **:调整图像的亮度

    • 亮度:调节亮度(-1.0 - 1.0,默认值为0.0)
  • ** GPUImageExposureFilter **:调整图像的曝光

    • 曝光:调整曝光(-10.0 - 10.0,默认为0.0)
  • ** GPUImageContrastFilter **:调整图像的对比度

    • 对比度:调整后的对比度(0.0 - 4.0,默认为1.0)
  • ** GPUImageSaturationFilter **:调整图像的饱和度

    • 饱和度:应用于图像的饱和度或去饱和度(0.0 - 2.0,默认值为1.0)
  • ** GPUImageGammaFilter **:调整图像的灰度

      • gamma *:要应用的gamma调整(0.0 - 3.0,默认值为1.0)
  • ** GPUImageLevelsFilter **:色阶(色阶是表示图像亮度强弱的指数标准,也就是我们说的色彩指数,在数字图像处理教程中,指的是灰度分辨率(又称为灰度级分辨率或者幅度分辨率)。图像的色彩丰满度和精细度是由色阶决定的。色阶指亮度,和颜色无关,但最亮的只有白色,最不亮的只有黑色。)。 min,max,minOut和maxOut参数是[0,1]范围内的浮点数。如果您在[0,255]范围内的Photoshop中有参数,则必须先将其转换为[0,1]。 gamma / mid参数是float> = 0.这与Photoshop中的值相匹配。如果您要将级别应用于RGB以及各个通道,则需要使用此过滤器两​​次 - 首先是单个通道,然后是所有通道。

  • ** GPUImageColorMatrixFilter **:通过对它们应用矩阵来转换图像的颜色

      • colorMatrix *:用于转换图像中每种颜色的4x4矩阵
      • intensity *:新变换颜色取代每个像素的原始颜色的程度
  • ** GPUImageRGBFilter **:调整图像的各个RGB通道

    • *:乘以每个颜色通道的归一化值。范围为0.0,默认值为1.0。
    • 绿色
    • 蓝色
  • ** GPUImageHueFilter **:调整图像的色调

    • 色调:色调角度,以度为单位。默认为90度
  • ** GPUImageVibranceFilter **:调整图像的气泡

      • vibrance *:要应用的振动调整,使用0.0作为默认值,建议的最小/最大值分别为-1.2和1.2。
  • ** GPUImageWhiteBalanceFilter **:调整图像的白平衡。

    • 温度:以ºK调整图像的温度。 4000的值非常酷,7000非常温暖。默认值为5000.请注意,4000和5000之间的刻度几乎与5000到7000之间的视觉显着性相当。
    • 色调:通过调整图像的色调。值-200是非常绿色和200是非常粉红色。默认值为0。
  • ** GPUImageToneCurveFilter **:根据每个颜色通道的样条曲线调整图像的颜色。

      • redControlPoints *:
      • greenControlPoints *:
      • blueControlPoints *:
      • rgbCompositeControlPoints *:色调曲线采用一系列控制点,用于定义每个颜色分量的样条曲线,或复合材料中的所有三个样条曲线。这些存储为NSArray中的NSValue包装的CGPoint,标准化的X和Y坐标为0 - 1。默认值为(0,0),(0.5,0.5),(1,1)。
  • ** GPUImageHighlightShadowFilter **:调整图像的阴影和高光

      • shadows *:增加减轻阴影,从0.0到1.0,默认为0.0。
    • 亮点:降低亮度,从1.0到0.0,默认值为1.0。
  • ** GPUImageHighlightShadowTintFilter **:允许您使用颜色和强度独立地对图像的阴影和高光进行着色

      • shadowTintColor *:阴影色调RGB颜色(GPUVector4)。默认值:{1.0f,0.0f,0.0f,1.0f}(红色)。
      • highlightTintColor *:突出显示色彩RGB颜色(GPUVector4)。默认值:{0.0f,0.0f,1.0f,1.0f}(蓝色)。
      • shadowTintIntensity *:阴影色调强度,从0.0到1.0。默认值:0.0
      • highlightTintIntensity *:突出显示色调强度,从0.0到1.0,默认值为0.0。
  • ** GPUImageLookupFilter **:使用RGB颜色查找图像重新映射图像中的颜色。首先,使用您最喜欢的照片编辑应用程序,从GPUImage / framework / Resources应用一个过滤器到lookup.png。为了正常工作,每个像素颜色不能取决于其他像素(例如模糊不起作用)。如果您需要更复杂的过滤器,则可以根据需要创建任意数量的查找表。准备完成后,使用新的lookup.png文件作为GPUImageLookupFilter的第二个输入。

  • ** GPUImageAmatorkaFilter **:基于Amatorka的Photoshop动作的照片过滤器:http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631。如果要使用此效果,您必须将lookupImamApplication资源文件夹中的lookup_amatorka.png添加到应用程序包中。

  • ** GPUImageMissEtikateFilter **:由Etikate小姐基于Photoshop动作的照片过滤器:http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961。如果要使用此效果,则必须将“GPUImage Resources”文件夹中的lookup_miss_etikate.png添加到应用程序包中。

  • ** GPUImageSoftEleganceFilter **:另一种基于查找的颜色重映射过滤器。如果要使用此效果,您必须将lookup_soft_elegance_1.png和lookup_soft_elegance_2.png从GPUImage Resources文件夹添加到应用程序包中。

  • ** GPUImageSkinToneFilter **:一种肤色调整过滤器,可以影响独特的浅色调色调范围,并相应调整粉色/绿色或粉色/橙色范围。默认值是针对白at色皮肤,但可以根据需要进行调整。

      • skinToneAdjust *:调整肤色的量。默认值:0.0,建议最小/最大:分别为-0.3和0.3。
      • skinHue *:要检测的皮肤色调。默认值:0.05(纯白色至红色皮肤)。
      • skinHueThreshold *:皮肤色调的变化量。默认值:40.0。
      • maxHueShift *:允许的最大色调偏移量。默认值:0.25。
      • maxSaturationShift * =要移动的最大饱和度(使用橙色时)。默认值:0.4。
      • upperSkinToneColor * =GPUImageSkinToneUpperColorGreenGPUImageSkinToneUpperColorOrange
  • ** GPUImageColorInvertFilter **:反转图像的颜色

  • ** GPUImageGrayscaleFilter **:将图像转换为灰度级(稍微更快的饱和度滤镜实现,无需更改颜色贡献)

  • ** GPUImageMonochromeFilter **:根据每个像素的亮度将图像转换为单色版本

      • intensity *:特定颜色取代正常图像颜色的程度(0.0 - 1.0,默认值为1.0)
    • 颜色:用作效果的基础的颜色,默认为(0.6,0.45,0.3,1.0)。
  • ** GPUImageFalseColorFilter **:使用图像的亮度在两个用户指定的颜色之间进行混合

      • firstColor *:第一和第二种颜色分别指定什么颜色代替图像的暗部和浅色区域。默认值为(0.0,0.0,0.5)amd(1.0,0.0,0.0)。
      • secondColor *:
  • ** GPUImageHazeFilter **:用于添加或删除雾度(类似于UV过滤器)

    • 距离:施加的颜色的强度。默认值0.-3和.3之间的值最好。
    • 斜率:颜色变化量。默认值0.-3和.3之间的值最好。
  • ** GPUImageSepiaFilter **:简单的棕褐色调滤镜

      • intensity *:深棕色色调代替正常图像颜色的程度(0.0 - 1.0,默认值为1.0)
  • ** GPUImageOpacityFilter **:调整传入图像的Alpha通道

      • opacity *:将每个像素的传入Alpha通道乘以(0.0 - 1.0,默认值为1.0)
  • ** GPUImageSolidColorGenerator **:这将输出一个带有纯色的生成图像。您需要使用-forceProcessingAtSize定义图像大小:

      • color *:用于填充图像的四分量格式的颜色。
  • ** GPUImageLuminanceThresholdFilter **:亮度高于阈值的像素将显示为白色,下面的像素将为黑色

      • threshold *:亮度阈值,从0.0到1.0,默认值为0.5
  • ** GPUImageAdaptiveThresholdFilter **:确定像素周围的本地亮度,然后将像素转换为低于该局部亮度的黑色,如果上述则为白色。这可以用于在不同的照明条件下挑选文本。

      • blurRadiusInPixels *:用于背景平均模糊半径(以像素为单位)的乘数,默认值为4。
  • ** GPUImageAverageLuminanceThresholdFilter **:这将应用阈值操作,其中根据场景的平均亮度不断调整阈值。

      • thresholdMultiplier *:这是为了达到最终使用阈值而将平均亮度乘以的因素。默认情况下,这是1.0。
  • ** GPUImageHistogramFilter **:这将分析输入图像,并创建一个输出直方图,其中出现每个颜色值的频率。该滤镜的输出是3像素高,256像素宽的图像,中心(垂直)像素包含与各种颜色值发生频率对应的像素。每个颜色值占用256个宽度位置中的一个,从左侧的0到右边的255。可以为单个颜色通道(kGPUImageHistogramRed,kGPUImageHistogramGreen,kGPUImageHistogramBlue),图像的亮度(kGPUImageHistogramLuminance)或一次的所有三个颜色通道(kGPUImageHistogramRGB)生成此直方图。

      • downsamplingFactor *:而不是对每个像素进行采样,这决定了图像的几个部分被采样。默认情况下,这是16,最小为1.这是需要保持饱和直方图,每个颜色值只能在其过载之前记录256个像素。
  • ** GPUImageHistogramGenerator **:这是一个特殊的过滤器,因为它主要是为了使用GPUImageHistogramFilter。它生成由GPUImageHistogramFilter生成的颜色直方图的输出表示,但它可以重新利用来显示其他类型的值。它占据一个图像并且看中心(垂直)像素。然后在输出纹理中将RGB组件的数值绘制在单独的彩色图形中。您可能需要强制使用此过滤器的大小才能使其输出可见。

  • ** GPUImageAverageColor **:通过对图像中每个像素的RGBA分量进行平均,处理输入图像并确定场景的平均颜色。使用缩减过程逐渐降低对GPU上的源图像的采样,然后在CPU上进行简单的平均计算。该过滤器的输出是无意义的,但是您需要将colorAverageProcessingFinishedBlock属性设置为一个块,该块具有四个颜色组件和一个帧时间,并与它们做一些事情。

  • ** GPUImageLuminosity **:像GPUImageAverageColor一样,将图像缩小到其平均亮度。您需要设置luminosityProcessingFinishedBlock来处理此过滤器的输出,该输出只返回亮度值和帧时间。

  • ** GPUImageChromaKeyFilter **:对于图像中的给定颜色,将Alpha通道设置为0.这与GPUImageChromaKeyBlendFilter类似,仅代替在第二个图像中混合匹配的颜色,这不会占用第二个图像只是转一个给定的颜色透明。

      • thresholdSensitivity *:颜色匹配需要与要替换的目标颜色存在多少(默认值为0.4)
    • 平滑:如何平稳地混合颜色匹配(默认为0.1)

图像处理###

  • ** GPUImageTransformFilter **:这将对图像应用任意的2-D或3-D变换

      • affineTransform *:这需要一个CGAffineTransform来调整2-D中的图像
      • transform3D *:这需要一个CATransform3D来处理3-D中的图像
      • ignoreAspectRatio *:默认情况下,保存变换图像的宽高比,但可以将其设置为“是”,使转换与纵横比无关
  • ** GPUImageCropFilter **:将图像裁剪到特定区域,然后将该区域仅传递到过滤器的下一个阶段

      • cropRegion *:裁剪出图像的矩形区域,标准化为0.0 - 1.0的坐标。 (0.0,0.0)位置在图像的左上角。
  • ** GPUImageLanczosResamplingFilter **:这样可以使用Lanczos重采样来上下采样图像,这样可以比标准线性或三线性插值显着提高质量。只需使用-forceProcessingAtSize:设置过滤器的目标输出分辨率,并为该大小重新采样图像。

  • ** GPUImageSharpenFilter **:锐化图像

    • 锐度:适用的锐度调整(-4.0 - 4.0,默认值为0.0)
  • ** GPUImageUnsharpMaskFilter **:应用反锐化掩码

      • blurRadiusInPixels *:底层高斯模糊的模糊半径。默认值为4.0。
    • 强度:锐化的强度,从0.0开始,默认值为1.0
  • ** GPUImageGaussianBlurFilter **:硬件优化的可变半径高斯模糊

      • texelSpacingMultiplier *:纹素之间的间距的乘数,范围从0.0开始,默认值为1.0。调整这可能会稍微增加模糊强度,但会在结果中引入工件。在接触这一个之前先强烈推荐使用其他参数。
      • blurRadiusInPixels *:用于模糊的半径(以像素为单位),默认值为2.0。这调整高斯分布函数中的sigma变量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:设置这些属性将允许模糊半径与图像的大小缩放
      • blurPasses *:顺序模糊传入图像的次数。越多越好,过滤器越慢。
  • ** GPUImageBoxBlurFilter **:硬件优化,可变半径框模糊

      • texelSpacingMultiplier *:纹素之间的间距的乘数,范围从0.0开始,默认值为1.0。调整这可能会稍微增加模糊强度,但会在结果中引入工件。在接触这一个之前先强烈推荐使用其他参数。
      • blurRadiusInPixels *:用于模糊的半径(以像素为单位),默认值为2.0。这调整高斯分布函数中的σ变量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:设置这些属性将允许模糊半径与图像的大小缩放
      • blurPasses *:顺序模糊传入图像的次数。越多越好,过滤器越慢。
  • ** GPUImageSingleComponentGaussianBlurFilter **:仅对红色组件进行操作的GPUImageGaussianBlurFilter的修改

      • texelSpacingMultiplier *:纹素之间的间距的乘数,范围从0.0开始,默认值为1.0。调整这可能会稍微增加模糊强度,但会在结果中引入工件。在接触这一个之前先强烈推荐使用其他参数。
      • blurRadiusInPixels *:用于模糊的半径(以像素为单位),默认值为2.0。这调整高斯分布函数中的σ变量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:设置这些属性将允许模糊半径与图像的大小缩放
      • blurPasses *:顺序模糊传入图像的次数。越多越好,过滤器越慢。
  • ** GPUImageGaussianSelectiveBlurFilter **:保持圆形区域内的焦点的高斯模糊

      • blurRadiusInPixels *:用于模糊的半径(以像素为单位),默认值为5.0。这调整高斯分布函数中的σ变量。
      • excludeCircleRadius *:从模糊中排除的圆形区域的半径
      • excludeCirclePoint *:圆形区域的中心被排除在模糊之外
      • excludeBlurSize *:模糊部分和清晰圆之间的区域大小
      • aspectRatio *:图像的宽高比,用于调整对焦区域的圆度。默认情况下,这与图像宽高比匹配,但您可以覆盖此值。
  • ** GPUImageGaussianBlurPositionFilter **:GPUImageGaussianSelectiveBlurFilter的倒数,仅在某个圈子内应用模糊

      • blurSize *:模糊大小的乘数,范围从0.0开始,默认值为1.0
      • blurCenter *:模糊中心,默认为0.5,0.5
      • blurRadius *:模糊的半径,默认为1.0
  • ** GPUImageiOSBlurFilter **:尝试在像控制中心这样的地方复制iOS 7上使用的背景模糊。

      • blurRadiusInPixels *:用于模糊的半径(以像素为单位),默认值为12.0。这调整高斯分布函数中的σ变量。
    • 饱和度:饱和度范围从0.0(完全去饱和)到2.0(最大饱和度),0.8作为正常水平
    • 下采样:下采样的程度,然后对输入图像进行上采样以最小化高斯模糊中的计算,默认值为4.0。
  • ** GPUImageMedianFilter **:获取三个颜色分量的中值,超过3x3区域

  • ** GPUImageBilateralFilter **:双边模糊,尝试在保留锐利边缘的同时模糊相似的颜色值

      • texelSpacingMultiplier *:Texel读取间距的乘数,范围从0.0开始,默认值为4.0
      • distanceNormalizationFactor *:中心颜色和样本颜色之间距离的归一化因子,默认值为8.0。
  • ** GPUImageTiltShiftFilter **:模拟倾斜移位镜头效果

      • blurRadiusInPixels *:底层模糊的半径,以像素为单位。默认情况下为7.0。
      • topFocusLevel *:图像中对焦区域顶部的归一化位置,此值应低于bottomFocusLevel,默认值为0.4
      • bottomFocusLevel *:图像中对焦区域底部的归一化位置,此值应高于topFocusLevel,默认为0.6
      • focusFallOffRate *:图像从对焦区域模糊的速率,默认为0.2
  • ** GPUImage3x3ConvolutionFilter **:针对图像运行3x3卷积内核

      • convolutionKernel *:卷积内核是要应用于像素及其8个周围像素的值的3x3矩阵。矩阵以行主顺序指定,左上角的像素为one.one,右下方为three.three。如果矩阵中的值不加起来为1.0,则图像可能变亮或变暗。
  • ** GPUImageSobelEdgeDetectionFilter **:Sobel边缘检测,边缘以白色突出显示

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • edgeStrength *:调整过滤器的动态范围。更高的值导致更强的边缘,但可以饱和强度的颜色空间。默认值为1.0。
  • ** GPUImagePrewittEdgeDetectionFilter **:Prewitt边缘检测,边缘以白色突出显示

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • edgeStrength *:调整过滤器的动态范围。更高的值导致更强的边缘,但可以饱和强度的颜色空间。默认值为1.0。
  • ** GPUImageThresholdEdgeDetectionFilter **:执行Sobel边缘检测,但应用阈值而不是赋予渐变强度值

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • edgeStrength *:调整过滤器的动态范围。更高的值导致更强的边缘,但可以饱和强度的颜色空间。默认值为1.0。
    • 阈值:任何高于此阈值的边将为黑色,任何低于白色的边。范围从0.0到1.0,默认值为0.8
  • ** GPUImageCannyEdgeDetectionFilter **:这使用完整的Canny进程来突出显示单像素宽边

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • blurRadiusInPixels *:高斯模糊的底层模糊半径。默认值为2.0。
      • blurTexelSpacingMultiplier *:底层的模糊纹理间距乘数。默认值为1.0。
      • upperThreshold *:任何具有高于该阈值的梯度大小的边将通过并显示在最终结果中。默认值为0.4。
      • lowerThreshold *:任何具有低于此阈值的梯度大小的边将失败,并从最终结果中移除。默认值为0.1。
  • ** GPUImageHarrisCornerDetectionFilter **:在输入图像上运行哈里斯角检测算法,并生成具有这些角点的图像作为白色像素,其他一切都是黑色的。 cornerDetectedBlock可以被设置,并且你将被提供一个列表的角(在归一化的0..1 X,Y坐标)在回调任何额外的操作,你想执行。

      • blurRadiusInPixels *:底层高斯模糊的半径。默认值为2.0。
    • 灵敏度:应用内部缩放因子来调整过滤器中生成的角度图的动态范围。默认值为5.0。
      • threshold *:将点检测为拐角的阈值。这可能会根据大小,照明条件和iOS设备摄像机类型而有很大差异,因此可能需要一些实验来适应您的情况。默认值为0.20。
  • ** GPUImageNobleCornerDetectionFilter **:在哈里斯角检测器上运行Noble变体。它的行为如上所述对于Harris检测器。

      • blurRadiusInPixels *:底层高斯模糊的半径。默认值为2.0。
    • 灵敏度:应用内部缩放因子来调整过滤器中生成的角度图的动态范围。默认值为5.0。
      • threshold *:将点检测为拐角的阈值。这可能会根据大小,照明条件和iOS设备摄像机类型而有很大差异,因此可能需要一些实验来适应您的情况。默认值为0.2。
  • ** GPUImageShiTomasiCornerDetectionFilter **:运行Shi-Tomasi特征检测器。它的行为如上所述对于Harris检测器。

      • blurRadiusInPixels *:底层高斯模糊的半径。默认值为2.0。
    • 灵敏度:应用内部缩放因子来调整过滤器中生成的角度图的动态范围。默认值为1.5。
      • threshold *:将点检测为拐角的阈值。这可能会根据大小,照明条件和iOS设备摄像机类型而有很大差异,因此可能需要一些实验来适应您的情况。默认值为0.2。
  • ** GPUImageNonMaximumSuppressionFilter **:目前仅用作哈里斯角检测滤镜的一部分,这将对每个像素周围的1像素框进行采样,并确定中心像素的红色通道是否在该区域的最大值。如果是,它停留。如果不是,所有颜色分量都设置为0。

  • ** GPUImageXYDerivativeFilter **:Harris角检测过滤器内的一个内部组件,它计算出这一点的左右像素之间的平方差,这个像素高于和低于该像素的平方差这两个差异。

  • ** GPUImageCrosshairGenerator **:这在图像上绘制了一系列十字准线,最常用于识别机器视觉功能。它不会像其他过滤器那样采用标准映像,而是在其-renderCrosshairsFromArray:count:method中执行一系列的操作,它将实际绘制。您将需要强制此过滤器以您需要的特定输出大小呈现。

      • crosshairWidth *:屏幕上绘制的十字准线的宽度(以像素为单位)。
  • ** GPUImageDilationFilter **:执行图像扩张操作,其中矩形邻域中的红色通道的最大强度用于该像素的强度。要采样的矩形区域的半径在初始化时指定,范围为1-4像素。这是为了与灰度图像一起使用,它扩展了明亮的区域。

  • ** GPUImageRGBDilationFilter **:这与GPUImageDilationFilter相同,除了它对所有颜色通道,而不仅仅是红色通道。

  • ** GPUImageErosionFilter **:执行图像侵蚀操作,其中矩形邻域中的红色通道的最小强度用于该像素的强度。要采样的矩形区域的半径在初始化时指定,范围为1-4像素。这是用于灰度图像,并且它扩展黑色区域。

  • ** GPUImageRGBErosionFilter **:这与GPUImageErosionFilter相同,除了它对所有颜色通道,而不仅仅是红色通道。

  • ** GPUImageOpeningFilter **:这会对图像的红色通道进行侵蚀,然后再扩张相同的半径。半径在初始化时设置,范围为1-4像素。这将过滤出较小的明亮区域。

  • ** GPUImageRGBOpeningFilter **:这与GPUImageOpeningFilter相同,除了它对所有颜色通道,而不仅仅是红色通道。

  • ** GPUImageClosingFilter **:这会在图像的红色通道上进行扩展,然后是相同半径的侵蚀。半径在初始化时设置,范围为1-4像素。这将过滤掉较小的黑暗区域。

  • ** GPUImageRGBClosingFilter **:这与GPUImageClosingFilter相同,除了它对所有颜色通道,而不仅仅是红色通道。

  • ** GPUImageLocalBinaryPatternFilter **:这将比较8个周围像素的红色通道和中央的像素的强度,将比较结果编码为成为该像素强度的位串。最不重要的位是右上角的比较,逆时针旋转,以正确的比较结束为最重要的位。

  • ** GPUImageLowPassFilter **:这适用于传入视频帧的低通滤波器。它基本上累积了当前帧的加权滚动平均值,可以用于去除视频,添加运动模糊,或者用于创建高通滤波器。

      • filterStrength *:它控制先前累积的帧与当前累积帧混合的程度。范围从0.0到1.0,默认值为0.5。
  • ** GPUImageHighPassFilter **:这适用于传入视频帧的高通滤波器。这是低通滤波器的倒数,显示了当前帧与先前帧的加权滚动平均值之间的差异。这对于运动检测最有用。

      • filterStrength *:它控制先前累积的帧混合的程度,然后从当前累加帧中减去。范围从0.0到1.0,默认值为0.5。
  • ** GPUImageMotionDetector **:这是基于高通滤波器的运动检测器。您可以设置motionDetectionBlock,并且在每个传入的帧中,它将给出场景中任何检测到的运动的质心(归一化的X,Y坐标)以及场景的运动强度。

      • lowPassFilterStrength *:这控制了幕后使用的低通滤波器的强度,以建立输入帧与之进行比较的基线。范围从0.0到1.0,默认值为0.5。
  • ** GPUImageHoughTransformLineDetector **:使用霍夫变换检测图像中的行到并行坐标空间。这种方法完全基于由布尔诺技术大学的Graph @ FIT研究小组开发的PC线路过程,并在他们的出版物中描述:M.Dubská,J.Havel和A.Heout。使用平行坐标和OpenGL实时检测线。 Proceedings of SCCG 2011,Bratislava,SK,p。 7(http://medusa.fit.vutbr.cz/public/data/papers/2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf)和M.Dubská,J哈维尔和阿伦。 PClines - 使用平行坐标的线检测。 2011 IEEE计算机视觉与模式识别会议(CVPR),p。 1489- 1494(http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf)。

      • edgeThreshold *:检测到一个点属于用于确定行的边的阈值。默认值为0.9。
      • lineDetectionThreshold *:检测到本地最大值属于并行坐标空间中的行的阈值。默认值为0.20。
      • linesDetectedBlock *:通过在每个处理帧上检测线路,调用此块。传送包含m,b对(y = mx + b)的归一化斜率和截距的C数组以及检测到的行数和视频帧的当前时间戳的计数。
  • ** GPUImageLineGenerator **:一个帮助类,可以生成可叠加场景的行。这些行的颜色可以使用-setLineColorRed进行调整:green:blue:

      • lineWidth *:行的宽度,以像素为单位,默认值为1.0。
  • ** GPUImageMotionBlurFilter **:对图像应用定向运动模糊

      • blurSize *:模糊大小的乘数,范围从0.0开始,默认值为1.0
      • blurAngle *:模糊的角度方向,以度为单位。默认为0度。
  • ** GPUImageZoomBlurFilter **:对图像应用定向运动模糊

      • blurSize *:模糊大小的乘数,范围从0.0开始,默认值为1.0
      • blurCenter *:模糊的归一化中心。 (0.5,0.5)

混合模式###

  • ** GPUImageChromaKeyBlendFilter **:用第二个图像选择性地替换第一个图像中的一个颜色

      • thresholdSensitivity *:颜色匹配需要与要替换的目标颜色存在多少(默认值为0.4)
    • 平滑:如何平稳地混合颜色匹配(默认为0.1)
  • ** GPUImageDissolveBlendFilter **:应用两个图像的混合

      • mix *:第二个图像覆盖第一个(0.0 - 1.0,默认值为0.5)的程度
  • ** GPUImageMultiplyBlendFilter **:应用两个图像的乘法混合

  • ** GPUImageAddBlendFilter **:应用两个图像的添加混合

  • ** GPUImageSubtractBlendFilter **:应用两个图像的减法混合

  • ** GPUImageDivideBlendFilter **:应用两个图像的分割混合

  • ** GPUImageOverlayBlendFilter **:应用两个图像的叠加混合

  • ** GPUImageDarkenBlendFilter **:通过拍摄图像之间的每个颜色分量的最小值来混合两个图像

  • ** GPUImageLightenBlendFilter **:通过拍摄图像之间的每个颜色分量的最大值来混合两个图像

  • ** GPUImageColorBurnBlendFilter **:应用两个图像的颜色刻录混合

  • ** GPUImageColorDodgeBlendFilter **:应用两个图像的颜色闪避混合

  • ** GPUImageScreenBlendFilter **:应用两个图像的屏幕混合

  • ** GPUImageExclusionBlendFilter **:应用两个图像的排除混合

  • ** GPUImageDifferenceBlendFilter **:应用两个图像的差异混合

  • ** GPUImageHardLightBlendFilter **:应用两个图像的硬光混合

  • ** GPUImageSoftLightBlendFilter **:应用两个图像的柔和光混合

  • ** GPUImageAlphaBlendFilter **:根据第二个alpha通道将第二个图像混合在第一个图像上

      • mix *:第二个图像覆盖第一个(0.0 - 1.0,默认值为1.0)的程度
  • ** GPUImageSourceOverBlendFilter **:应用源两个图像的混合

  • ** GPUImageColorBurnBlendFilter **:应用两个图像的颜色刻录混合

  • ** GPUImageColorDodgeBlendFilter **:应用两个图像的颜色闪避混合

  • ** GPUImageNormalBlendFilter **:应用两个图像的正常混合

  • ** GPUImageColorBlendFilter **:应用两个图像的颜色混合

  • ** GPUImageHueBlendFilter **:应用两个图像的色调混合

  • ** GPUImageSaturationBlendFilter **:应用两个图像的饱和度混合

  • ** GPUImageLuminosityBlendFilter **:应用两个图像的亮度混合

  • ** GPUImageLinearBurnBlendFilter **:应用两个图像的线性刻录混合

  • ** GPUImagePoissonBlendFilter **:应用两个图像的泊松混合

      • mix *:混合范围从0.0(仅图像1)到1.0(仅图像2梯度),1.0作为正常水平
      • numIterations *:传播梯度的次数。如果您想要在任何地方接近收敛,曲目可达100甚至1000。是的,这会很慢
  • ** GPUImageMaskFilter **:使用另一个屏蔽一个图像

视觉效果###

  • ** GPUImagePixellateFilter **:在图像或视频上应用像素图效果

      • fractionalWidthOfAPixel *:像素的大小是图像的宽度和高度的一部分(0.0 - 1.0,默认为0.05)
  • ** GPUImagePolarPixellateFilter **:根据极坐标代替笛卡儿坐标,对图像或视频应用像素效应

    • 中心:要应用像素的中心,默认为(0.5,0.5)
      • pixelSize *:分数像素大小,分为宽和高分量。默认值为(0.05,0.05)
  • ** GPUImagePolkaDotFilter **:将图像分解为常规网格中的彩色点

      • fractionalWidthOfAPixel *:点的大小是图像宽度和高度的一部分(0.0 - 1.0,默认为0.05)
      • dotScaling *:每个网格空间占据一个点的几分之一,从0.0到1.0,默认值为0.9。
  • ** GPUImageHalftoneFilter **:对图像应用半色调效果,如新闻打印

      • fractionalWidthOfAPixel *:半色调点的大小是图像宽度和高度的一部分(0.0 - 1.0,默认为0.05)
  • ** GPUImageCrosshatchFilter **:将图像转换为黑白交叉影线图案

      • crossHatchSpacing *:用作交叉影线间距的图像的小数宽度。默认值为0.03。
      • lineWidth *:交叉阴影线的相对宽度。默认值为0.003。
  • ** GPUImageSketchFilter **:将视频转换为草图。这只是Sobel边缘检测滤镜,颜色反转

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • edgeStrength *:调整过滤器的动态范围。更高的值导致更强的边缘,但可以饱和强度的颜色空间。默认值为1.0。
  • ** GPUImageThresholdSketchFilter **:与草图过滤器相同,只有边缘被阈值化,而不是灰度

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • edgeStrength *:调整过滤器的动态范围。更高的值导致更强的边缘,但可以饱和强度的颜色空间。默认值为1.0。
    • 阈值:任何高于此阈值的边将为黑色,任何低于白色的边。范围从0.0到1.0,默认值为0.8
  • ** GPUImageToonFilter **:这使用Sobel边缘检测在对象周围放置黑色边框,然后量化图像中存在的颜色,从而为图像提供类似卡通的质量。

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • threshold *:边缘检测的灵敏度,较低的值更敏感。范围从0.0到1.0,默认值为0.2
      • quantizationLevels *:最终图像中要表示的颜色级数。默认值为10.0
  • ** GPUImageSmoothToonFilter **:它使用与GPUImageToonFilter类似的过程,只有它在具有高斯模糊的toon效果之前才能平滑噪声。

      • texelWidth *:
      • texelHeight *:这些参数影响检测到的边缘的可见性
      • blurRadiusInPixels *:底层高斯模糊的半径。默认值为2.0。
      • threshold *:边缘检测的灵敏度,较低的值更敏感。范围从0.0到1.0,默认值为0.2
      • quantizationLevels *:最终图像中要表示的颜色级数。默认值为10.0
  • ** GPUImageEmbossFilter **:在图像上应用压花效果

    • 强度:压花的强度,从0.0到4.0,以1.0为正常水平
  • ** GPUImagePosterizeFilter **:这将颜色动态范围减少到指定的步骤数,从而导致类似卡通的简单阴影图像。

      • colorLevels *:减少图像空间的颜色级别数。取值范围为1〜256,缺省值为10。
  • ** GPUImageSwirlFilter **:在图像上创建漩涡失真

    • 半径:中心的半径应用失真,默认为0.5
    • 中心:要扭曲的图像的中心(标准坐标为0 - 1.0),默认为(0.5,0.5)
      • angle *:应用于图像的扭曲量,默认值为1.0
  • ** GPUImageBulgeDistortionFilter **:在图像上创建隆隆失真

    • 半径:中心的半径应用失真,默认值为0.25
    • 中心:图像中心(标准化坐标为0 - 1.0),要扭曲,默认值为(0.5,0.5)
      • scale *:应用的失真量,从-1.0到1.0,默认值为0.5
  • ** GPUImagePinchDistortionFilter **:创建图像的捏合失真

    • 半径:中心的半径应用失真,默认值为1.0
    • 中心:图像中心(标准化坐标为0 - 1.0),要扭曲,默认值为(0.5,0.5)
  • ** GPUImageStretchDistortionFilter **:创建图像的拉伸失真

    • 中心:图像中心(标准化坐标为0 - 1.0),要扭曲,默认值为(0.5,0.5)
  • ** GPUImageSphereRefractionFilter **:通过玻璃球模拟折射

    • 中心:应用失真的中心,默认为(0.5,0.5)
      • radius *:失真的半径,范围从0.0到1.0,默认值为0.25
      • refractiveIndex *:球体的折射率,默认值为0.71
  • ** GPUImageGlassSphereFilter **:与GPUImageSphereRefractionFilter相同,只有图像不反转,玻璃边缘有一点结霜

    • 中心:应用失真的中心,默认为(0.5,0.5)
      • radius *:失真的半径,范围从0.0到1.0,默认值为0.25
      • refractiveIndex *:球体的折射率,默认值为0.71
  • ** GPUImageVignetteFilter **:执行渐晕效果,在边缘淡出图像

      • vignetteCenter *:tex coords(CGPoint)中的小插件的中心,默认值为0.5,0.5
      • vignetteColor *:用于小插曲(GPUVector3)的颜色,默认为黑色
      • vignetteStart *:从晕影效果开始的中心的归一化距离,默认值为0.5
      • vignetteEnd *:与晕影效果结束的中心的归一化距离,默认值为0.75
  • ** GPUImageKuwaharaFilter **:Kuwahara图像抽象,从Kyprianidis的工作,等。人。在他们的出版物“GPU中的各向异性Kuwahara过滤GPU”集合。这产生了油画般的图像,但它的计算量非常昂贵,因此在iPad 2上渲染框架可能需要几秒钟时间。这可能最适用于静止图像。

      • radius *:在整数中指定从中心像素出来的像素数,以便在应用过滤器时进行测试,默认值为4.一个较高的值会创建一个更抽象的图像,但以牺牲更大的处理时间为代价。
  • ** GPUImageKuwaharaRadius3Filter **:修改版本的Kuwahara过滤器,经过优化,可以工作在三个像素的半径

  • ** GPUImagePerlinNoiseFilter **:生成一张充满Perlin噪音的图像

      • colorStart *:
      • colorFinish *:产生噪声的颜色范围
      • scale *:正在生成噪声的缩放
  • ** GPUImageCGAColorspaceFilter **:模拟CGA监视器的色彩空间

  • ** GPUImageMosaicFilter **:此过滤器接收一个输入图块集,图块必须以亮度上升。它查看输入图像,并根据该图块的亮度用输入图块替换每个显示图块。这个想法是复制其他应用程序中看到的ASCII视频过滤器,但是tileet可以是任何东西。

      • inputTileSize *:
      • numTiles *:
      • displayTileSize *:
      • colorOn *:
  • ** GPUImageJFAVoronoiFilter **:生成一个Voronoi地图,用于后期阶段。

      • sizeInPixels *:单个元素的大小
  • ** GPUImageVoronoiConsumerFilter **:进行Voronoi映射,并使用它来过滤传入的映像。

      • sizeInPixels *:单个元素的大小

推荐阅读更多精彩内容