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

版本记录

版本号 时间
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着色语言轻松编写自己的自定义过滤器,如上所述。

后记

未完,待续~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容