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










网友评论