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