美文网首页GPUImage资料收集666
GPUImage解析(三) —— 基本概览(三)

GPUImage解析(三) —— 基本概览(三)

作者: 刀客传奇 | 来源:发表于2017-09-02 00:28 被阅读134次

版本记录

版本号 时间
V1.0 2017.09.01

前言

GPUImage是直接利用显卡实现视频或者图像处理的技术。感兴趣可以看上面几篇文章。
1. GPUImage解析(一) —— 基本概览(一)
2. GPUImage解析(二) —— 基本概览(二)

内置滤镜

目前有125个内置过滤器,分为以下几类:

3. 混合模式

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

    • 阈值敏感度:要替换的目标颜色需要存在多少颜色匹配(默认值为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:应用两个图像的泊松混合

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

4. 视觉效果

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

    • texelWidth
    • texelHeight:这些参数影响检测到的边缘的可见性
    • blurRadiusInPixels:底层高斯模糊的半径。默认值为2.0。
    • 阈值:边缘检测的灵敏度,较低的值更敏感。范围从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)
    • scale:要应用的失真量,从-2.0到2.0,默认值为1.0
  • 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:从vignette效果开始的中心的标准化距离,默认为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:各个元素的大小

您也可以使用C语言的OpenGL着色语言轻松编写自己的自定义过滤器,如上所述。

后记

未完,待续~~~

相关文章

网友评论

    本文标题:GPUImage解析(三) —— 基本概览(三)

    本文链接:https://www.haomeiwen.com/subject/amrljxtx.html