GPUImage 基礎(chǔ)學(xué)習(xí)GPUImagePicture 圖片

附一張GPUImage的結(jié)構(gòu)圖:

GPUImage.png
GPUImage中的幾個(gè)概念

output為輸出源
input為輸入源
filter為濾鏡

GPUImage的四大輸入基礎(chǔ)類

GPUImageVideoCamera 攝像頭-視頻流
GPUImageStillCamera 攝像頭-照相
GPUImagePicture 圖片
GPUImageMovie 視頻

  #import "GPUImageBrightnessFilter.h"                //  亮度 
  #import "GPUImageExposureFilter.h"                  //曝光  
  #import "GPUImageContrastFilter.h"                  //對(duì)比度: 
  #import "GPUImageSaturationFilter.h"                //飽和度 
  #import "GPUImageGammaFilter.h"                     //gamma:要應(yīng)用的灰度調(diào)整(0.0 - 3.0敞咧,默認(rèn)為1.0)
  #import "GPUImageColorInvertFilter.h"               //反色
  #import "GPUImageSepiaFilter.h"                     //褐色(懷舊)
  #import "GPUImageLevelsFilter.h"                    //色階
  #import "GPUImageGrayscaleFilter.h"                 //灰度
  #import "GPUImageHistogramFilter.h"                 //色彩直方圖榔组,顯示在圖片上
  #import "GPUImageHistogramGenerator.h"              //色彩直方圖
  #import "GPUImageRGBFilter.h"                       //RGB
  #import "GPUImageToneCurveFilter.h"                 //色調(diào)曲線
  #import "GPUImageMonochromeFilter.h"                //單色
  #import "GPUImageOpacityFilter.h"                   //不透明度
  #import "GPUImageHighlightShadowFilter.h"           //提亮陰影
  #import "GPUImageFalseColorFilter.h"                //色彩替換(替換亮部和暗部色彩)
  #import "GPUImageHueFilter.h"                       //色度
  #import "GPUImageChromaKeyFilter.h"                 //色度鍵
  #import "GPUImageWhiteBalanceFilter.h"              //白平橫
  #import "GPUImageAverageColor.h"                    //像素平均色值
  #import "GPUImageSolidColorGenerator.h"             //純色
  #import "GPUImageLuminosity.h"                      //亮度平均
  #import "GPUImageAverageLuminanceThresholdFilter.h" //像素色值亮度平均请敦,圖像黑白(有類似漫畫(huà)效果) 
  #import "GPUImageLookupFilter.h"                    //lookup 色彩調(diào)整
  #import "GPUImageAmatorkaFilter.h"                  //Amatorka lookup
  #import "GPUImageMissEtikateFilter.h"               //MissEtikate lookup
  #import "GPUImageSoftEleganceFilter.h"              //SoftElegance lookup

  #pragma mark - 圖像處理 Handle Image
 
  #import "GPUImageCrosshairGenerator.h"              //十字
  #import "GPUImageLineGenerator.h"                   //線條
  #import "GPUImageTransformFilter.h"                 //形狀變化
  #import "GPUImageCropFilter.h"                      //剪裁
  #import "GPUImageSharpenFilter.h"                   //銳化
  #import "GPUImageUnsharpMaskFilter.h"               //反遮罩銳化 
 #import "GPUImageFastBlurFilter.h"                  //模糊
  #import "GPUImageGaussianBlurFilter.h"              //高斯模糊
  #import "GPUImageGaussianSelectiveBlurFilter.h"     //高斯模糊如暖,選擇部分清晰
  #import "GPUImageBoxBlurFilter.h"                   //盒狀模糊
  #import "GPUImageTiltShiftFilter.h"                 //條紋模糊铺根,中間清晰缀匕,上下兩端模糊
  #import "GPUImageMedianFilter.h"                    //中間值蔫缸,有種稍微模糊邊緣的效果
  #import "GPUImageBilateralFilter.h"                 //雙邊模糊
  #import "GPUImageErosionFilter.h"                   //侵蝕邊緣模糊猬腰,變黑白
  #import "GPUImageRGBErosionFilter.h"                //RGB侵蝕邊緣模糊,有色彩
  #import "GPUImageDilationFilter.h"                  //擴(kuò)展邊緣模糊悍缠,變黑白
  #import "GPUImageRGBDilationFilter.h"               //RGB擴(kuò)展邊緣模糊卦绣,有色彩
  #import "GPUImageOpeningFilter.h"                   //黑白色調(diào)模糊
  #import "GPUImageRGBOpeningFilter.h"                //彩色模糊
  #import "GPUImageClosingFilter.h"                   //黑白色調(diào)模糊,暗色會(huì)被提亮
  #import "GPUImageRGBClosingFilter.h"                //彩色模糊飞蚓,暗色會(huì)被提亮
  #import "GPUImageLanczosResamplingFilter.h"         //Lanczos重取樣滤港,模糊效果
  #import "GPUImageNonMaximumSuppressionFilter.h"     //非最大抑制,只顯示亮度最高的像素趴拧,其他為黑
  #import "GPUImageThresholdedNonMaximumSuppressionFilter.h" //與上相比溅漾,像素丟失更多 
  #import "GPUImageSobelEdgeDetectionFilter.h"        //Sobel邊緣檢測(cè)算法(白邊,黑內(nèi)容著榴,有點(diǎn)漫畫(huà)的反色效果)
  #import "GPUImageCannyEdgeDetectionFilter.h"        //Canny邊緣檢測(cè)算法(比上更強(qiáng)烈的黑白對(duì)比度)
  #import "GPUImageThresholdEdgeDetectionFilter.h"    //閾值邊緣檢測(cè)(效果與上差別不大)
  #import "GPUImagePrewittEdgeDetectionFilter.h"      //普瑞維特(Prewitt)邊緣檢測(cè)(效果與Sobel差不多添履,貌似更平滑)
  #import "GPUImageXYDerivativeFilter.h"              //XYDerivative邊緣檢測(cè),畫(huà)面以藍(lán)色為主脑又,綠色為邊緣缝龄,帶彩色
  #import "GPUImageHarrisCornerDetectionFilter.h"     //Harris角點(diǎn)檢測(cè),會(huì)有綠色小十字顯示在圖片角點(diǎn)處
  #import "GPUImageNobleCornerDetectionFilter.h"      //Noble角點(diǎn)檢測(cè)挂谍,檢測(cè)點(diǎn)更多
  #import "GPUImageShiTomasiFeatureDetectionFilter.h" //ShiTomasi角點(diǎn)檢測(cè)叔壤,與上差別不大
  #import "GPUImageMotionDetector.h"                  //動(dòng)作檢測(cè)
  #import "GPUImageHoughTransformLineDetector.h"      //線條檢測(cè)
 #import "GPUImageParallelCoordinateLineTransformFilter.h" //平行線檢測(cè) 
 #import "GPUImageLocalBinaryPatternFilter.h"        //圖像黑白化,并有大量噪點(diǎn) 
 #import "GPUImageLowPassFilter.h"                   //用于圖像加亮
 #import "GPUImageHighPassFilter.h"                  //圖像低于某值時(shí)顯示為黑
 #pragma mark - 視覺(jué)效果 Visual Effect
 #import "GPUImageSketchFilter.h"                    //素描
#import "GPUImageThresholdSketchFilter.h"           //閥值素描口叙,形成有噪點(diǎn)的素描
 #import "GPUImageToonFilter.h"                      //卡通效果(黑色粗線描邊)
 #import "GPUImageSmoothToonFilter.h"                //相比上面的效果更細(xì)膩炼绘,上面是粗曠的畫(huà)風(fēng)
 #import "GPUImageKuwaharaFilter.h"                  //桑原(Kuwahara)濾波,水粉畫(huà)的模糊效果;處理時(shí)間比較長(zhǎng)妄田,慎用 
 #import "GPUImageMosaicFilter.h"                    //黑白馬賽克
 #import "GPUImagePixellateFilter.h"                 //像素化
 #import "GPUImagePolarPixellateFilter.h"            //同心圓像素化
 #import "GPUImageCrosshatchFilter.h"                //交叉線陰影俺亮,形成黑白網(wǎng)狀畫(huà)面
 #import "GPUImageColorPackingFilter.h"              //色彩丟失,模糊(類似監(jiān)控?cái)z像效果) 
 #import "GPUImageVignetteFilter.h"                  //暈影疟呐,形成黑色圓形邊緣脚曾,突出中間圖像的效果
 #import "GPUImageSwirlFilter.h"                     //漩渦,中間形成卷曲的畫(huà)面
#import "GPUImageBulgeDistortionFilter.h"           //凸起失真启具,魚(yú)眼效果
 #import "GPUImagePinchDistortionFilter.h"           //收縮失真本讥,凹面鏡
#import "GPUImageStretchDistortionFilter.h"         //伸展失真,哈哈鏡
#import "GPUImageGlassSphereFilter.h"               //水晶球效果
#import "GPUImageSphereRefractionFilter.h"          //球形折射,圖形倒立     
 #import "GPUImagePosterizeFilter.h"                 //色調(diào)分離拷沸,形成噪點(diǎn)效果
 #import "GPUImageCGAColorspaceFilter.h"             //CGA色彩濾鏡色查,形成黑、淺藍(lán)撞芍、紫色塊的畫(huà)面
 #import "GPUImagePerlinNoiseFilter.h"               //柏林噪點(diǎn)秧了,花邊噪點(diǎn)
 #import "GPUImage3x3ConvolutionFilter.h"            //3x3卷積,高亮大色塊變黑序无,加亮邊緣验毡、線條等
 #import "GPUImageEmbossFilter.h"                    //浮雕效果,帶有點(diǎn)3d的感覺(jué)
 #import "GPUImagePolkaDotFilter.h"                  //像素圓點(diǎn)花樣
#import "GPUImageHalftoneFilter.h"                  //點(diǎn)染,圖像黑白化帝嗡,由黑點(diǎn)構(gòu)成原圖的大致圖形 
 
  #pragma mark - 混合模式 Blend
 
  #import "GPUImageMultiplyBlendFilter.h"             //通常用于創(chuàng)建陰影和深度效果
  #import "GPUImageNormalBlendFilter.h"               //正常
  #import "GPUImageAlphaBlendFilter.h"                //透明混合,通常用于在背景上應(yīng)用前景的透明度
  #import "GPUImageDissolveBlendFilter.h"             //溶解
  #import "GPUImageOverlayBlendFilter.h"              //疊加,通常用于創(chuàng)建陰影效果
  #import "GPUImageDarkenBlendFilter.h"               //加深混合,通常用于重疊類型
  #import "GPUImageLightenBlendFilter.h"              //減淡混合,通常用于重疊類型
  #import "GPUImageSourceOverBlendFilter.h"           //源混合
  #import "GPUImageColorBurnBlendFilter.h"            //色彩加深混合
  #import "GPUImageColorDodgeBlendFilter.h"           //色彩減淡混合
  #import "GPUImageScreenBlendFilter.h"               //屏幕包裹,通常用于創(chuàng)建亮點(diǎn)和鏡頭眩光
  #import "GPUImageExclusionBlendFilter.h"            //排除混合
  #import "GPUImageDifferenceBlendFilter.h"           //差異混合,通常用于創(chuàng)建更多變動(dòng)的顏色
  #import "GPUImageSubtractBlendFilter.h"             //差值混合,通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果
  #import "GPUImageHardLightBlendFilter.h"            //強(qiáng)光混合,通常用于創(chuàng)建陰影效果
  #import "GPUImageSoftLightBlendFilter.h"            //柔光混合
  #import "GPUImageChromaKeyBlendFilter.h"            //色度鍵混合
  #import "GPUImageMaskFilter.h"                      //遮罩混合
  #import "GPUImageHazeFilter.h"                      //朦朧加暗
  #import "GPUImageLuminanceThresholdFilter.h"        //亮度閾
  #import "GPUImageAdaptiveThresholdFilter.h"         //自適應(yīng)閾值
  #import "GPUImageAddBlendFilter.h"                  //通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變亮模糊效果
  #import "GPUImageDivideBlendFilter.h"               //通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果
顏色調(diào)整

GPUImageBrightnessFilter:調(diào)整圖像的亮度

亮度:調(diào)整亮度(-1.0 - 1.0米罚,默認(rèn)為0.0)
GPUImageExposureFilter:調(diào)整圖像的曝光

曝光:調(diào)整曝光(-10.0 - 10.0,默認(rèn)為0.0)
GPUImageContrastFilter:調(diào)整圖像的對(duì)比度

對(duì)比度:調(diào)整的對(duì)比度(0.0 - 4.0丈探,默認(rèn)為1.0)
GPUImageSaturationFilter:調(diào)整圖像的飽和度

飽和度:應(yīng)用于圖像的飽和度或去飽和度(0.0 - 2.0,默認(rèn)為1.0)
GPUImageGammaFilter:調(diào)整圖像的灰度系數(shù)

gamma:要應(yīng)用的灰度調(diào)整(0.0 - 3.0拔莱,默認(rèn)為1.0)
GPUImageLevelsFilter:Photoshop級(jí)別調(diào)整碗降。min ,max塘秦,minOut和maxOut參數(shù)是范圍[0,1]中的浮點(diǎn)數(shù)如果你有來(lái)自Photoshop的參數(shù)讼渊,范圍為[0,255],則必須首先將它們轉(zhuǎn)換為[0尊剔, 1] 爪幻。gamma / mid參數(shù)是一個(gè)float> = 0的值。這與Photoshop的值匹配如果要對(duì)RGB以及單個(gè)通道應(yīng)用級(jí)別须误,則需要使用此過(guò)濾器兩??次 - 首先用于單個(gè)通道挨稿,然后用于所有通道。

GPUImageColorMatrixFilter:通過(guò)向圖像應(yīng)用矩陣來(lái)轉(zhuǎn)換圖像的顏色

colorMatrix:一個(gè)4x4矩陣京痢,用于變換圖像中的每種顏色
intensity:新變換顏色的原始顏色的程度
GPUImageRGBFilter:調(diào)整圖像的每個(gè) RGB通道

紅色:每個(gè)顏色通道乘以的標(biāo)準(zhǔn)化值奶甘。范圍是從0.0開(kāi)始,默認(rèn)為1.0祭椰。
綠色:
藍(lán)色:
GPUImageHueFilter:調(diào)整圖像的色調(diào)

色相角:以度為單位臭家。默認(rèn)為90度
GPUImageVibranceFilter:調(diào)整圖像的動(dòng)態(tài)

光彩:在光彩調(diào)整申請(qǐng),使用0.0作為默認(rèn)設(shè)置方淤,分別為-1.2左右和1.2钉赁,建議最小/最大。
GPUImageWhiteBalanceFilter:調(diào)整圖像的白平衡携茂。

溫度:以oK單位為調(diào)整圖像的溫度值4000是非衬悴龋酷,7000非常溫暖。默認(rèn)值為5000姓蜂。請(qǐng)注意按厘,4000和5000之間的刻度與5000和7000之間的刻度幾乎相同。
色調(diào):圖像調(diào)整色調(diào)的值為-200 非常綠色钱慢,200 非常粉紅色逮京。默認(rèn)值為0。
GPUImageToneCurveFilter:根據(jù)每個(gè)顏色通道的樣條曲線調(diào)整圖像的顏色束莫。

redControlPoints:
greenControlPoints:
blueControlPoints:
rgbCompositeControlPoints:色調(diào)曲線采用一系列控制點(diǎn)懒棉,這些控制點(diǎn)為每個(gè)顏色分量或復(fù)合材料中的所有三個(gè)分量定義樣條曲線。這些作為NSValue封裝的CGPoints存儲(chǔ)在NSArray中览绿,標(biāo)準(zhǔn)化的X和Y坐標(biāo)0到1.默認(rèn)值為(0,0)策严,(0.5,0.5),(1,1)饿敲。
GPUImageHighlightShadowFilter:調(diào)整圖像的陰影和高光

陰影:增加到減弱陰影妻导,從0.0到1.0,默認(rèn)值為0.0怀各。
亮點(diǎn):減少高亮顯示倔韭,從1.0到0.0,默認(rèn)為1.0瓢对。
GPUImageHighlightShadowTintFilter:允許您使用顏色和強(qiáng)度獨(dú)立地著色圖像的陰影和高光

shadowTintColor:陰影色調(diào)RGB顏色(GPUVector4)寿酌。默認(rèn)值:( {1.0f, 0.0f, 0.0f, 1.0f}紅色)。
highlightTintColor:突出顯示色彩RGB顏色(GPUVector4)硕蛹。默認(rèn)值:( {0.0f, 0.0f, 1.0f, 1.0f}藍(lán)色)醇疼。
shadowTintIntensity:陰影色調(diào)強(qiáng)度,從0.0到1.0法焰。默認(rèn)值:0.0
highlightTintIntensity:突出顯示從0.0到1.0的色調(diào)強(qiáng)度秧荆,默認(rèn)值為0.0。
GPUImageLookupFilter:使用RGB顏色查找圖像重新映射圖像中的顏色埃仪。首先辰如,使用最最喜歡的照片編輯應(yīng)用程序?qū)⑦^(guò)濾器應(yīng)用于GPUImage / framework / Resources中的lookup.png。為了使其正常工作贵试,每個(gè)像素顏色不能依賴于其他像素(例如模糊不起作用)琉兜。如果您需要更復(fù)雜的過(guò)濾器,您可以根據(jù)需要?jiǎng)?chuàng)建任意數(shù)量的查找表毙玻。準(zhǔn)備好后豌蟋,使用您的新lookup.png文件作為GPUImageLookupFilter的第二個(gè)輸入。

GPUImageAmatorkaFilter:基于Amatorka的Photoshop操作的照片過(guò)濾器:http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631桑滩。如果要使用此效果梧疲,您必須從lookup_amatorka.png從GPUImage資源文件夾添加到應(yīng)用程序包。

GPUImageMissEtikateFilter:由Etikate小姐基于Photoshop操作的照片過(guò)濾器:http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961。如果要使用此效果幌氮,您必須將lookup_miss_etikate.png從GPUImage資源文件夾添加到應(yīng)用程序包缭受。

GPUImageSoftEleganceFilter:另一個(gè)基于查找的顏色重映射過(guò)濾器。如果要使用此效果该互,您必須將lookup_soft_elegance_1.png和lookup_soft_elegance_2.png從GPUImage資源文件夾添加到應(yīng)用程序包组砚。

GPUImageSkinToneFilter:一個(gè)膚色調(diào)整過(guò)濾器宝鼓,影響一個(gè)獨(dú)特范圍的輕膚色調(diào),并相應(yīng)地調(diào)整粉色/綠色或粉色/橙色的范圍。默認(rèn)值針對(duì)公平的白種人皮膚捎稚,但可以根據(jù)需要進(jìn)行調(diào)整妇押。

skinToneAdjust:調(diào)整膚色的量蕴坪。默認(rèn)值:0.0聚假,建議最小值/最大值:-0.3和0.3。
skinHue:皮膚色調(diào)被檢測(cè)到机蔗。默認(rèn)值:0.05(正常的白種人到微紅的皮膚)蒲祈。
skinHueThreshold:皮膚色調(diào)的方差量。
maxHueShift:允許的最大色差偏移量萝嘁。
maxSaturationShift =要移動(dòng)的最大飽和度(使用橙色時(shí))梆掸。
upperSkinToneColor = GPUImageSkinToneUpperColorGreen或GPUImageSkinToneUpperColorOrange
GPUImageColorInvertFilter:反轉(zhuǎn)圖像的顏色

GPUImageGrayscaleFilter:將圖像轉(zhuǎn)換為灰度(飽和度濾鏡的實(shí)現(xiàn)略快,但無(wú)法改變顏色貢獻(xiàn))

GPUImageMonochromeFilter:根據(jù)每個(gè)像素的亮度將圖像轉(zhuǎn)換為單色版本

intensity:特定顏色替換正常圖像顏色的程度(0.0 - 1.0酿愧,默認(rèn)為1.0)
color:用作效果基礎(chǔ)的顏色,以(0.6,0.45,0.3,1.0)作為默認(rèn)值邀泉。
GPUImageFalseColorFilter:使用圖像的亮度在兩個(gè)用戶指定的顏色之間混合

firstColor:狀語(yǔ)從句:第一第二顏色組分別指定什么顏色組替換圖像的暗區(qū)域亮狀語(yǔ)從句:區(qū)域默認(rèn)值為(0.0,0.0,0.5)AMD公司(1.0,0.0,0.0)嬉挡。
secondColor:
GPUImageHazeFilter:用于添加或刪除霧度(類似于UV過(guò)濾器)

distance:應(yīng)用的顏色的強(qiáng)度。-.3和.3之間的值最好汇恤。
斜率:顏色變化量庞钢。-.3和.3之間的值最好。
GPUImageSepiaFilter:簡(jiǎn)單的棕褐色調(diào)濾波器

intensity:棕黃色代替正常圖像顏色的程度(0.0 - 1.0因谎,默認(rèn)為1.0)
GPUImageOpacityFilter:調(diào)整傳入圖像的Alpha通道

opacity:將每個(gè)像素的傳入alpha通道乘以(0.0 - 1.0基括,默認(rèn)值為1.0)的值,
GPUImageSolidColorGenerator:這將輸出生成的圖像的純色财岔。您需要使用-forceProcessingAtSize定義圖像大蟹缑蟆:

color:以四分格式顯示的顏色,用于填充圖像匠璧。
GPUImageLuminanceThresholdFilter:亮度高于閾值的像素將顯示為白色桐款,下面的像素將為黑色

threshold:亮度閾值,從0.0到1.0夷恍,默認(rèn)值為0.5
GPUImageAdaptiveThresholdFilter:確定像素周邊的局部亮度魔眨,然后如果像素低于該局部亮度,則將像素變?yōu)楹谏绻陨蟿t為白色遏暴。這可以用于在不同的照明條件下挑選文本侄刽。

blurRadiusInPixels:背景平均模糊半徑(以像素為單位)的乘數(shù),默認(rèn)值為4朋凉。
GPUImageAverageLuminanceThresholdFilter:這個(gè)應(yīng)用閾值操作州丹,其中基于場(chǎng)景的平均亮度連續(xù)地調(diào)整閾值。

thresholdMultiplier:這是平均亮度將被乘以的因子侥啤,以便達(dá)到要使用的最下限閾值当叭。
GPUImageHistogramFilter:它分析傳入的圖像,并且創(chuàng)建一個(gè)輸出直方圖盖灸,其中出現(xiàn)每個(gè)顏色值的頻率蚁鳖。該濾波器的輸出是3像素高,256像素寬的圖像赁炎,其中發(fā)生各種顏色值的頻率的像素醉箕。每個(gè)顏色值占據(jù)256個(gè)寬度位置中的一個(gè),從左邊的0到右邊的255. 可以針對(duì)各個(gè)顏色通道(kGPUImageHistogramRed徙垫,kGPUImageHistogramGreen讥裤,kGPUImageHistogramBlue),圖像的亮度(kGPUImageHistogramLuminance )或者一次針對(duì)所有三個(gè)顏色通道(kGPUImageHistogramRGB)生成該直方圖姻报。

downsamplingFactor:這不是對(duì)每個(gè)像素進(jìn)行采樣己英,而是指示圖像的哪個(gè)部分被采樣。默認(rèn)情況下吴旋,這是16损肛,最小值為1.這是需要防止飽和直方圖,它只能記錄每個(gè)顏色值的256個(gè)像素荣瑟,在它變得重載之前治拿。
GPUImageHistogramGenerator:這是一個(gè)特殊的過(guò)濾器,因?yàn)樗饕蛩闶褂肎PUImageHistogramFilter笆焰。它生成由GPUImageHistogramFilter生成的顏色直方圖的輸出表示劫谅,但它可以重新用于顯示其他類型的值。它采取一個(gè)圖像嚷掠,看中心垂直)像素捏检。然后它在輸出紋理中的單獨(dú)的彩色圖表中繪制RGB分量的數(shù)值。您可能需要強(qiáng)制此過(guò)濾器的大小不皆,以其輸出可見(jiàn)未檩。

GPUImageAverageColor:通過(guò)對(duì)圖像中每個(gè)像素的RGBA分量進(jìn)行平均,處理輸入圖像并確定場(chǎng)景的平均顏色粟焊。使用縮小處理來(lái)逐步向下取樣GPU上的源圖像冤狡,接著在CPU進(jìn)行上短的平均計(jì)算此過(guò)濾器的輸出無(wú)意義孙蒙,但您需要將colorAverageProcessingFinishedBlock屬性設(shè)置為接收四個(gè)顏色分塊和一個(gè)幀時(shí)間的塊,并對(duì)它們執(zhí)行某些操作悲雳。

GPUImageLuminosity:像GPUImageAverageColor一樣挎峦,這會(huì)將圖像縮小到其平均亮度。你需要設(shè)置luminosityProcessingFinishedBlock來(lái)處理這個(gè)過(guò)濾器的輸出合瓢,它會(huì)返回一個(gè)光度值和一個(gè)幀時(shí)間坦胶。

GPUImageChromaKeyFilter:對(duì)于圖像中的給定顏色,將Alpha通道設(shè)置為0.這與GPUImageChromaKeyBlendFilter類似晴楔,只是不是在第二個(gè)圖像中混合匹配的顏色顿苇,這不在第二個(gè)圖像中,顏色透明税弃。

thresholdSensitivity:顏色匹配需要存在到要求的目標(biāo)顏色的接近程度(默認(rèn)值為0.4)
平滑:如何平滑地混合顏色匹配(默認(rèn)值為0.1)
圖像處理

GPUImageTransformFilter:這將對(duì)應(yīng)圖像應(yīng)用任意的2-D或3-D變換

affineTransform:這需要一個(gè)CGAffineTransform來(lái)調(diào)整2-D圖像
transform3D:這需要一個(gè)CATransform3D來(lái)操縱3-D中的圖像
ignoreAspectRatio:默認(rèn)情況下纪岁,保持變換圖像的寬高比,但可以將其設(shè)置為YES则果,use變換與寬高比無(wú)關(guān)
GPUImageCropFilter:將圖像裁剪到特定區(qū)域幔翰,然后只將該區(qū)域傳遞到過(guò)濾器的下一個(gè)階段

cropRegion:裁剪出圖像的矩形區(qū)域,標(biāo)準(zhǔn)化為0.0 - 1.0的坐標(biāo)西壮。(0.0,0.0)位置在圖像的左上角遗增。
GPUImageLanczosResamplingFilter:這使您可以使用Lanczos重采樣對(duì)圖像進(jìn)行上采樣或下采樣,這將產(chǎn)生比標(biāo)準(zhǔn)線性或三線性插值明顯更好的質(zhì)量款青。只需使用-forceProcessingAtSize:設(shè)置過(guò)濾器的目標(biāo)輸出分辨率做修,并且將為該新大小重新采樣圖像。

GPUImageSharpenFilter:銳化圖像

銳度:應(yīng)用的銳度調(diào)整(-4.0 - 4.0抡草,默認(rèn)值為0.0)
GPUImageUnsharpMaskFilter:應(yīng)用反銳化掩碼

blurRadiusInPixels:底層高斯模糊的模糊半徑饰及。
intensity:銳化的強(qiáng)度,從0.0開(kāi)始渠牲,默認(rèn)值為1.0
GPUImageGaussianBlurFilter:一種硬件優(yōu)化旋炒,可變半徑高斯模糊

texelSpacingMultiplier:范圍從0.0開(kāi)始步悠,默認(rèn)值為1.0签杈。調(diào)整這可能會(huì)稍微增加模糊強(qiáng)度,但會(huì)在結(jié)果中引入偽影鼎兽。強(qiáng)烈建議先使用其他參數(shù)答姥,然后觸摸此一個(gè)。
blurRadiusInPixels:用于模糊的半徑(以像素為單位)谚咬,默認(rèn)值為2.0鹦付。這調(diào)整了高斯分布函數(shù)中的σ變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設(shè)置這些屬性將允許模糊半徑隨圖像大小縮放
blurPasses:順序模糊輸入圖像的次數(shù)择卦。通過(guò)越多敲长,過(guò)濾器越慢郎嫁。
GPUImageBoxBlurFilter:一個(gè)硬件優(yōu)化,可變半徑框模糊

texelSpacingMultiplier:范圍從0.0開(kāi)始祈噪,默認(rèn)值為1.0泽铛。調(diào)整這可能會(huì)稍微增加模糊強(qiáng)度,但會(huì)在結(jié)果中引入偽影辑鲤。強(qiáng)烈建議先使用其他參數(shù)盔腔,然后觸摸此一個(gè)。
blurRadiusInPixels:用于模糊的半徑(以像素為單位)月褥,默認(rèn)值為2.0弛随。這調(diào)整了高斯分布函數(shù)中的σ變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設(shè)置這些屬性將允許模糊半徑隨圖像大小縮放
blurPasses:順序模糊輸入圖像的次數(shù)宁赤。通過(guò)越多舀透,過(guò)濾器越慢。
GPUImageSingleComponentGaussianBlurFilter:僅對(duì)紅色組件操作的GPUImageGaussianBlurFilter的修改

texelSpacingMultiplier:范圍從0.0開(kāi)始礁击,默認(rèn)值為1.0盐杂。調(diào)整這可能會(huì)稍微增加模糊強(qiáng)度,但會(huì)在結(jié)果中引入偽影哆窿。強(qiáng)烈建議先使用其他參數(shù)链烈,然后觸摸此一個(gè)。
blurRadiusInPixels:用于模糊的半徑(以像素為單位)挚躯,默認(rèn)值為2.0强衡。這調(diào)整了高斯分布函數(shù)中的σ變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設(shè)置這些屬性將允許模糊半徑隨圖像大小縮放
blurPasses:順序模糊輸入圖像的次數(shù)码荔。通過(guò)越多漩勤,過(guò)濾器越慢。
GPUImageGaussianSelectiveBlurFilter:保持圓形區(qū)域內(nèi)焦點(diǎn)的高斯模糊

blurRadiusInPixels:用于模糊的像素的半徑缩搅,默認(rèn)值為5.0越败。這調(diào)整了高斯分布函數(shù)中的σ變量。
excludeCircleRadius:從模糊中排除的圓形區(qū)域的半徑
excludeCirclePoint:從模糊中排除的圓形區(qū)域的中心
excludeBlurSize:模糊部分和清晰圓之間的區(qū)域的大小
aspect ratio:圖像的寬高比硼瓣,用于調(diào)整對(duì)焦區(qū)域的圓形度究飞。默認(rèn)情況下,這與圖像寬高比相匹配堂鲤,但您可以覆蓋此值亿傅。
GPUImageGaussianBlurPositionFilter:GPUImageGaussianSelectiveBlurFilter的逆,只在特定圓圈內(nèi)應(yīng)用模糊

blurSize:模糊大小的乘數(shù)瘟栖,范圍從0.0開(kāi)始葵擎,默認(rèn)值為1.0
blurCenter:模糊的中心,默認(rèn)為0.5,0.5
blurRadius:模糊的半徑半哟,默認(rèn)為1.0
GPUImageiOSBlurFilter:嘗試復(fù)制在圖片控制中心這樣的iOS 7上使用的背景模糊酬滤。

blurRadiusInPixels:用于模糊的半徑(以像素為單位)签餐,默認(rèn)值為12.0。這調(diào)整了高斯分布函數(shù)中的σ變量盯串。
“飽和度”英文“飽和度” 英文“飽和度”英文“飽和度”英文“飽和度
下采樣:下采樣贱田,然后上采樣輸入圖像以最小化高斯模糊內(nèi)的計(jì)算的程度,默認(rèn)為4.0嘴脾。
GPUImageMedianFilter:獲取三個(gè)顏色分量的中值男摧,超過(guò)3x3區(qū)域

GPUImageBilateralFilter:雙邊模糊,它試圖模糊相似的顏色值译打,同時(shí)保留銳利的邊緣

texelSpacingMultiplier:texel 讀取間距的乘數(shù)耗拓,范圍從0.0開(kāi)始,默認(rèn)值為4.0
distanceNormalizationFactor:中心顏色和樣本顏色之間的距離歸一化因子奏司,默認(rèn)值為8.0乔询。
GPUImageTiltShiftFilter:模擬傾斜移位鏡頭效果

blurRadiusInPixels:底層模糊的半徑,以像素為單位韵洋。
topFocusLevel:圖片中對(duì)焦區(qū)域頂部的標(biāo)準(zhǔn)化位置竿刁,此值應(yīng)低于bottomFocusLevel,默認(rèn)為0.4
bottomFocusLevel:圖片中對(duì)焦區(qū)域底部的歸一化位置搪缨,此值應(yīng)高于topFocusLevel食拜,默認(rèn)為0.6
focusFallOffRate:圖像變得離開(kāi)對(duì)焦區(qū)域的速率,默認(rèn)為0.2
GPUImage3x3ConvolutionFilter:針對(duì)映像運(yùn)行3x3卷積內(nèi)核

卷積核:卷積核是應(yīng)用于像素及其8個(gè)周圍像素的值的3×3矩陣副编。矩陣以行主要順序指定负甸,左上角的像素為one.one,右下角為三痹届。如果矩陣中的value不等于1.0呻待,則圖像可以變亮或變暗。
GPUImageSobelEdgeDetectionFilter:Sobel邊緣檢測(cè)队腐,邊緣以白色突出顯示

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
edgeStrength:調(diào)整濾波器的動(dòng)態(tài)范圍蚕捉。值越高,邊緣越強(qiáng)柴淘,但可以使強(qiáng)度色空間飽和迫淹。
GPUImagePrewittEdgeDetectionFilter:Prewitt邊緣檢測(cè),邊緣以白色突出顯示

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
edgeStrength:調(diào)整濾波器的動(dòng)態(tài)范圍悠就。值越高千绪,邊緣越強(qiáng)充易,但可以使強(qiáng)度色空間飽和梗脾。
GPUImageThresholdEdgeDetectionFilter:執(zhí)行Sobel邊緣檢測(cè),但應(yīng)用閾值盹靴,而不提供漸進(jìn)強(qiáng)度值

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
edgeStrength:調(diào)整濾波器的動(dòng)態(tài)范圍炸茧。值越高瑞妇,邊緣越強(qiáng),但可以使強(qiáng)度色空間飽和梭冠。
threshold:高于此閾值的任何邊將為黑色辕狰,任何低于白色的邊。范圍從0.0到1.0控漠,默認(rèn)為0.8
GPUImageCannyEdgeDetectionFilter:這使用完整的Canny過(guò)程來(lái)突出顯示一個(gè)像素寬的邊緣

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
blurRadiusInPixels:高斯模糊的基礎(chǔ)模糊半徑蔓倍。
blurTexelSpacingMultiplier:底層模糊紋理像素間距乘數(shù)。
upperThreshold:front threshold:任意邊緣盐捷,將默認(rèn)值設(shè)為0.4偶翅。
lowerThreshold:梯度幅度低于此閾值的任何邊將失敗,并從最終結(jié)果中刪除碉渡。
GPUImageHarrisCornerDetectionFilter:對(duì)輸入圖像運(yùn)行哈里斯角點(diǎn)檢測(cè)算法聚谁,并生成一個(gè)圖像,這些角點(diǎn)為白色像素滞诺,一切為黑色形导。可以設(shè)置cornersDetectedBlock习霹,并且您將獲得一個(gè)角度列表(在標(biāo)準(zhǔn)化的0..1 X朵耕, Y坐標(biāo)),在回調(diào)中你想要執(zhí)行的任何額外的操作淋叶。

blurRadiusInPixels:底層高斯模糊的半徑憔披。
靈敏度:應(yīng)用于調(diào)整過(guò)濾器中生成的角點(diǎn)的動(dòng)態(tài)范圍的內(nèi)部縮放因子。
門檻:將點(diǎn)檢測(cè)為角的閾值爸吮。這可以根據(jù)大小芬膝,照明條件和iOS的設(shè)備攝像頭類型顯著變化,因此可能需要一些實(shí)驗(yàn)來(lái)適當(dāng)?shù)那闆r形娇。默認(rèn)值為0.20锰霜。
GPUImageNobleCornerDetectionFilter:在哈里斯角點(diǎn)檢測(cè)器上運(yùn)行Noble變量。它的行為如上所述的哈里斯檢測(cè)器桐早。

blurRadiusInPixels:底層高斯模糊的半徑癣缅。
靈敏度:應(yīng)用于調(diào)整過(guò)濾器中生成的角點(diǎn)的動(dòng)態(tài)范圍的內(nèi)部縮放因子。
門檻:將點(diǎn)檢測(cè)為角的閾值哄酝。這可以根據(jù)大小友存,照明條件和iOS的設(shè)備攝像頭類型顯著變化,因此可能需要一些實(shí)驗(yàn)來(lái)適當(dāng)?shù)那闆r陶衅。默認(rèn)值為0.2屡立。
GPUImageShiTomasiCornerDetectionFilter:運(yùn)行Shi-Tomasi特征檢測(cè)器。它的行為如上所述的哈里斯檢測(cè)器搀军。

blurRadiusInPixels:底層高斯模糊的半徑膨俐。
靈敏度:應(yīng)用于調(diào)節(jié)過(guò)濾器中生成的角點(diǎn)的動(dòng)態(tài)范圍的內(nèi)部縮放因子勇皇。
門檻:將點(diǎn)檢測(cè)為角的閾值。這可以根據(jù)大小焚刺,照明條件和iOS的設(shè)備攝像頭類型顯著變化敛摘,因此可能需要一些實(shí)驗(yàn)來(lái)適當(dāng)?shù)那闆r。默認(rèn)值為0.2乳愉。
GPUImageNonMaximumSuppressionFilter:當(dāng)前僅用作哈里斯角點(diǎn)檢測(cè)濾波器的一部分兄淫,這將對(duì)每個(gè)像素周圍的1像素框進(jìn)行采樣,并中心確定的像素紅色通道是否的英文該區(qū)域中的最大值如果的英文蔓姚,它停留拖叙。如果不是,則對(duì)于所有顏色分量將其設(shè)置為0赂乐。

GPUImageXYDerivativeFilter:哈里斯角點(diǎn)檢測(cè)濾波器內(nèi)的一個(gè)內(nèi)部組件薯鳍,它計(jì)算這個(gè)點(diǎn)左右像素之間的平方差,這個(gè)點(diǎn)之上和之下的像素的平方差挨措,以及這兩個(gè)差值的乘積挖滤。

GPUImageCrosshairGenerator:它在圖像上繪制一系列十字線,最常用于識(shí)別機(jī)器視覺(jué)特征浅役。它不像其他過(guò)濾器那樣接受標(biāo)準(zhǔn)圖像斩松,而是在其–renderCrosshairsFromArray:count:方法中包含一系列點(diǎn),這是實(shí)際繪圖觉既。您將需要強(qiáng)制此過(guò)濾器以您需要的特定輸出大小進(jìn)行渲染惧盹。

crosshairWidth:要在屏幕上繪制的十字準(zhǔn)線的寬度(以像素為單位)。
GPUImageDilationFilter:這執(zhí)行圖像擴(kuò)張操作瞪讼,其中矩形鄰域的紅色通道的最強(qiáng)強(qiáng)度用于該像素的強(qiáng)度钧椰。初始化時(shí)指定采樣的矩形區(qū)域的半徑,范圍為1-4個(gè)像素符欠。這是為了用灰度圖像嫡霞,它擴(kuò)展明亮的區(qū)域。

GPUImageRGBDilationFilter:這與GPUImageDilationFilter相同希柿,只是它作用于所有顏色通道诊沪,而不只是紅色通道。

GPUImageErosionFilter:執(zhí)行圖像侵蝕操作曾撤,其中矩形鄰域中的紅色通道的最強(qiáng)度用于該像素的強(qiáng)度端姚。初始化時(shí)指定采樣的矩形區(qū)域的半徑,范圍為1-4個(gè)像素挤悉。這是用于灰度圖像渐裸,它擴(kuò)展黑暗區(qū)域。

GPUImageRGBErosionFilter:這與GPUImageErosionFilter相同,只是它在所有顏色通道上起作用橄仆,而不只是紅色通道。

GPUImageOpeningFilter:這對(duì)圖像的紅色通道執(zhí)行侵蝕衅斩,隨后是相同半徑的膨脹盆顾。初始化時(shí)間設(shè)置半徑,范圍為1-4個(gè)像素畏梆。

GPUImageRGBOpeningFilter:這與GPUImageOpeningFilter相同您宪,除了這個(gè)作用于所有顏色通道,而不只是紅色通道奠涌。

GPUImageClosingFilter:它對(duì)圖像的紅色通道執(zhí)行擴(kuò)展宪巨,然后是相同半徑的侵蝕。初始化時(shí)間設(shè)置半徑溜畅,范圍為1-4個(gè)像素捏卓。

GPUImageRGBClosingFilter:這與GPUImageClosingFilter相同,除了這個(gè)作用于所有顏色通道慈格,而不只是紅色通道怠晴。

GPUImageLocalBinaryPatternFilter:它執(zhí)行8個(gè)周圍像素和中心像素的紅色通道的強(qiáng)度的比較,將比較結(jié)果編碼成成為該像素強(qiáng)度的位串浴捆。最低有效位是右上角比較蒜田,逆時(shí)針轉(zhuǎn)向以正確的比較結(jié)束作為最高有效位。

GPUImageLowPassFilter:對(duì)于輸入的視頻幀應(yīng)用一個(gè)低通濾波器选泻。這基本上累積了當(dāng)前幀和當(dāng)前幀的加權(quán)滾動(dòng)平均值它可以用于去噪視頻冲粤,添加運(yùn)動(dòng)模糊或用于創(chuàng)建高通濾波器。

filterStrength:這控制了前一個(gè)累加幀與當(dāng)前幀的混合程度页眯。范圍從0.0到1.0梯捕,默認(rèn)值為0.5。
GPUImageHighPassFilter:對(duì)輸入的視頻幀應(yīng)用高通濾波器窝撵。這是低通濾波器的反相科阎,示出了當(dāng)前幀與前一幀的加權(quán)滾動(dòng)平均值之間的差。這對(duì)運(yùn)動(dòng)檢測(cè)最有用忿族。

filterStrength:this控制先前累加的幀被混合的程度锣笨,然后從當(dāng)前的累加幀中減去。范圍從0.0到1.0道批,默認(rèn)值為0.5错英。
GPUImageMotionDetector:這是一個(gè)基于高通濾波器的運(yùn)動(dòng)檢測(cè)器。您設(shè)置motionDetectionBlock隆豹,并且在每個(gè)傳入幀中椭岩,它將為您提供場(chǎng)景中任何檢測(cè)到的運(yùn)動(dòng)的質(zhì)心(以標(biāo)準(zhǔn)化的X,Y坐標(biāo))以及場(chǎng)景的運(yùn)動(dòng)強(qiáng)度。

lowPassFilterStrength:this控制了幕后使用的低通濾波器的強(qiáng)度判哥,以建立與輸入幀進(jìn)行比較的基線献雅。范圍從0.0到1.0,默認(rèn)值為0.5塌计。
GPUImageHoughTransformLineDetector:使用霍夫變換檢測(cè)圖像中的線到平行坐標(biāo)空間挺身。這種方法完全基于由布爾諾科技大學(xué)的Graph @ FIT研究小組開(kāi)發(fā)的PC線路過(guò)程,并在他們的出版物中描述:M.Dubská 锌仅,J.Havel章钾,and A.Helout。使用平行坐標(biāo)和OpenGL的線的實(shí)時(shí)檢測(cè)热芹。Proceedings of SCCG 2011贱傀,Bratislava,SK伊脓,第7 頁(yè)(http://medusa.fit.vutbr.cz/public/data/論文/ 2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf)和M.Dubská府寒,J.Havel,Herout报腔。PClines -使用平行坐標(biāo)的線檢測(cè)椰棘。2011年計(jì)算機(jī)視覺(jué)與模式識(shí)別(CVPR)IEEE刀豆ference,對(duì)1489年至1494年(http://medusa.fit.vutbr.cz/public/data/papers /2011-CVPR-Dubska-PClines.pdf)榄笙。

edgeThreshold:檢測(cè)到點(diǎn)屬于用于確定線的邊緣的閾值邪狞。
lineDetectionThreshold:檢測(cè)到局部最大值屬于平行坐標(biāo)空間中的線的閾值。
linesDetectedBlock:在檢測(cè)行時(shí)調(diào)用此塊茅撞,通常在每個(gè)處理的幀上帆卓。包含m,b對(duì)(y = mx + b)中的歸一化斜率和截距的AC陣列與所檢測(cè)的線的數(shù)目和視頻幀的當(dāng)前時(shí)間戳的計(jì)數(shù)一起被傳入米丘。
GPUImageLineGenerator:生成可以覆蓋場(chǎng)景的線的輔助類剑令。這些線的顏色可以使用-setLineColorRed:green:blue:

lineWidth:行的寬度(以像素為單位),默認(rèn)值為1.0拄查。
GPUImageMotionBlurFilter:對(duì)圖像應(yīng)用定向運(yùn)動(dòng)模糊

blurSize:模糊大小的乘數(shù)吁津,范圍從0.0開(kāi)始,默認(rèn)值為1.0
blurAngle:模糊的角度方向堕扶,以度為單位碍脏。
GPUImageZoomBlurFilter:對(duì)圖像應(yīng)用定向運(yùn)動(dòng)模糊

blurSize:模糊大小的乘數(shù),范圍從0.0開(kāi)始稍算,默認(rèn)值為1.0
blurCenter:模糊的標(biāo)準(zhǔn)化中心典尾。(0.5,0.5)
混合模式

GPUImageChromaKeyBlendFilter:use第二個(gè)圖像選擇性替換第一個(gè)圖像中的顏色

thresholdSensitivity:顏色匹配需要存在到要求的目標(biāo)顏色的接近程度(默認(rèn)值為0.4)
平滑:如何平滑地混合顏色匹配(默認(rèn)值為0.1)
GPUImageDissolveBlendFilter:應(yīng)用兩個(gè)圖像的溶解混合

mix:第二個(gè)圖像覆蓋第一個(gè)圖像的程度(0.0-1.0,默認(rèn)為0.5)
GPUImageMultiplyBlendFilter:應(yīng)用兩個(gè)圖像的乘法混合

GPUImageAddBlendFilter:應(yīng)用兩個(gè)圖像的加法混合

GPUImageSubtractBlendFilter:應(yīng)用兩個(gè)圖像的減法混合

GPUImageDivideBlendFilter:應(yīng)用兩個(gè)圖像的分割混合

GPUImageOverlayBlendFilter:應(yīng)用兩個(gè)圖像的疊加混合

GPUImageDarkenBlendFilter:通過(guò)獲取圖像之間每個(gè)顏色分量的最小值來(lái)混合兩個(gè)圖像

GPUImageLightenBlendFilter:通過(guò)獲取圖像之間每個(gè)顏色分量的最大值來(lái)混合兩個(gè)圖像

GPUImageColorBurnBlendFilter:應(yīng)用兩個(gè)圖像的顏色混合

GPUImageColorDodgeBlendFilter:應(yīng)用兩個(gè)圖像的顏色閃避混合

GPUImageScreenBlendFilter:應(yīng)用兩個(gè)圖像的屏幕混合

GPUImageExclusionBlendFilter:應(yīng)用兩個(gè)圖像的排除混合

GPUImageDifferenceBlendFilter:應(yīng)用兩個(gè)圖像的差異混合

GPUImageHardLightBlendFilter:應(yīng)用一個(gè)硬光混合的兩個(gè)圖像

GPUImageSoftLightBlendFilter:應(yīng)用兩個(gè)圖像的柔和光混合

GPUImageAlphaBlendFilter:根據(jù)第二個(gè)alpha通道糊探,將第二個(gè)圖像混合在第一個(gè)圖像上

mix:第二個(gè)圖像覆蓋第一個(gè)圖像的程度(0.0 - 1.0钾埂,默認(rèn)為1.0)
GPUImageSourceOverBlendFilter:在兩個(gè)圖像的混合上應(yīng)用源

GPUImageColorBurnBlendFilter:應(yīng)用兩個(gè)圖像的顏色混合

GPUImageColorDodgeBlendFilter:應(yīng)用兩個(gè)圖像的顏色閃避混合

GPUImageNormalBlendFilter:應(yīng)用兩個(gè)圖像的正澈尤颍混合

GPUImageColorBlendFilter:應(yīng)用兩個(gè)圖像的顏色混合

GPUImageHueBlendFilter:應(yīng)用兩個(gè)圖像的色調(diào)混合

GPUImageSaturationBlendFilter:應(yīng)用兩個(gè)圖像的飽和混合

GPUImageLuminosityBlendFilter:應(yīng)用兩個(gè)圖像的亮度混合

GPUImageLinearBurnBlendFilter:應(yīng)用兩個(gè)圖像的線性刻錄混合

GPUImagePoissonBlendFilter:應(yīng)用兩個(gè)圖像的泊松混合

混合:混合范圍從0.0(只有圖像1)到1.0(只有圖像2梯度),1.0為正常水平
numIterations:傳播梯度的次數(shù)如果你想獲得任何接近收斂褥紫,這個(gè)高達(dá)100或甚至1000 是的姜性,這會(huì)很慢。
GPUImageMaskFilter:使用另一個(gè)圖像掩蔽一個(gè)圖像

視覺(jué)效果

GPUImagePixellateFilter:對(duì)圖像或視頻應(yīng)用像素化效果

fractionalWidthOfAPixel:像素的大小髓考,作為圖像寬度和高度的一部分(0.0 - 1.0部念,默認(rèn)為0.05)
GPUImagePolarPixellateFilter:對(duì)圖片或視頻應(yīng)用像素化效果,基于極坐標(biāo)绳军,而不是笛卡爾坐標(biāo)

center:應(yīng)用像素的中心印机,默認(rèn)為(0.5,0.5)
pixelSize:分別像素大小矢腻,拆分為width和height組件门驾。默認(rèn)值為(0.05,0.05)
GPUImagePolkaDotFilter:將圖像分割成常規(guī)網(wǎng)格中的彩色點(diǎn)

fractionalWidthOfAPixel:點(diǎn)的大小,作為圖像寬度和高度的一部分(0.0 - 1.0多柑,默認(rèn)為0.05)
dotScaling:每個(gè)網(wǎng)格空間的小部分由一個(gè)點(diǎn)占據(jù)奶是,從0.0到1.0,默認(rèn)值為0.9竣灌。
GPUImageHalftoneFilter:對(duì)圖像應(yīng)用半色調(diào)效果聂沙,如新聞打印

fractionalWidthOfAPixel:半色調(diào)點(diǎn)的大小,作為圖像寬度和高度的一部分(0.0 - 1.0初嘹,默認(rèn)為0.05)
GPUImageCrosshatchFilter:將圖像轉(zhuǎn)換為黑白交叉陰影圖案

crossHatchSpacing:圖像的分?jǐn)?shù)寬度及汉,用作交叉影線的間距。
lineWidth:交叉線的相對(duì)寬度屯烦。默認(rèn)值為0.003坷随。
GPUImageSketchFilter:將視像轉(zhuǎn)換為外觀像草圖。這只是Sobel邊緣檢測(cè)濾鏡的顏色反轉(zhuǎn)

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
edgeStrength:調(diào)整濾波器的動(dòng)態(tài)范圍驻龟。值越高温眉,邊緣越強(qiáng),但可以使強(qiáng)度色空間飽和翁狐。
GPUImageThresholdSketchFilter:與草圖過(guò)濾器相同类溢,只有邊緣是閾值,而不是灰度

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
edgeStrength:調(diào)整濾波器的動(dòng)態(tài)范圍露懒。值越高闯冷,邊緣越強(qiáng),但可以使強(qiáng)度色空間飽和懈词。
threshold:高于此閾值的任何邊將為黑色窃躲,任何低于白色的邊。范圍從0.0到1.0钦睡,默認(rèn)為0.8
GPUImageToonFilter:這使用Sobel邊緣檢測(cè)在對(duì)象周圍放置一個(gè)黑色邊框蒂窒,然后它量化圖像中呈現(xiàn)的顏色躁倒,以給圖像一個(gè)卡通般的質(zhì)量。

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
threshold:邊緣檢測(cè)的靈敏度洒琢,較低的值更敏感秧秉。范圍從0.0到1.0,默認(rèn)為0.2
quantizationLevels:在最終圖像中表示的顏色級(jí)別的數(shù)量衰抑。默認(rèn)值為10.0
GPUImageSmoothToonFilter:這使用與GPUImageToonFilter類似的過(guò)程象迎,只有它之前的toon效果與高斯模糊,以平滑噪聲呛踊。

texelWidth:
texelHeight:這些參數(shù)影響檢測(cè)到的邊緣的可見(jiàn)性
blurRadiusInPixels:底層高斯模糊的半徑砾淌。
threshold:邊緣檢測(cè)的靈敏度,較低的值更敏感谭网。范圍從0.0到1.0汪厨,默認(rèn)為0.2
quantizationLevels:在最終圖像中表示的顏色級(jí)別的數(shù)量。默認(rèn)值為10.0
GPUImageEmbossFilter:在圖像上應(yīng)用浮雕效果

強(qiáng)度:壓花的強(qiáng)度愉择,從0.0到4.0劫乱,用1.0作為正常水平
GPUImagePosterizeFilter:這將顏色動(dòng)態(tài)范圍減少到指定的步驟數(shù),導(dǎo)致圖像的卡通式簡(jiǎn)單陰影锥涕。

colorLevels:將圖像空間縮小到的顏色級(jí)數(shù)猎提。取值范圍為1?256慰于,缺省值為10赠幕。
GPUImageSwirlFilter:在圖像上創(chuàng)建漩渦失真

radius:從中心到應(yīng)用失真的半徑买猖,默認(rèn)值為0.5
center:圖像的中心(從0 - 1.0的歸一化坐標(biāo)),默認(rèn)為(0.5,0.5)
angle:應(yīng)用于圖像的扭曲量破花,默認(rèn)值為1.0
GPUImageBulgeDistortionFilter:在圖像上創(chuàng)建凸起失真

radius:從中心到應(yīng)用失真的半徑谦趣,默認(rèn)值為0.25
center:圖像的中心(從0 - 1.0的歸一化坐標(biāo)),對(duì)于其將失真旧乞,默認(rèn)為(0.5,0.5)
scale:應(yīng)用的失真量蔚润,從-1.0到1.0,默認(rèn)值為0.5
GPUImagePinchDistortionFilter:創(chuàng)建圖像的混合失真

radius:從中心到應(yīng)用失真的半徑尺栖,默認(rèn)值為1.0
center:圖像的中心(從0 - 1.0的歸一化坐標(biāo))嫡纠,對(duì)于其將失真,默認(rèn)為(0.5,0.5)
scale:應(yīng)用的失真量延赌,從-2.0到2.0除盏,默認(rèn)值為1.0
GPUImageStretchDistortionFilter:創(chuàng)建圖像的拉伸失真

center:圖像的中心(從0 - 1.0的歸一化坐標(biāo)),對(duì)于其將失真挫以,默認(rèn)為(0.5,0.5)
GPUImageSphereRefractionFilter:模擬通過(guò)玻璃球的折射

center:應(yīng)用失真的中心者蠕,默認(rèn)為(0.5,0.5)
radius:失真的半徑,范圍從0.0到1.0掐松,默認(rèn)值為0.25
refractiveindex:球體的折射率踱侣,默認(rèn)值為0.71
GPUImageGlassSphereFilter:與GPUImageSphereRefractionFilter相同粪小,只有圖像不被反轉(zhuǎn),并且在玻璃的邊緣有一點(diǎn)點(diǎn)結(jié)霜

center:應(yīng)用失真的中心抡句,默認(rèn)為(0.5,0.5)
radius:失真的半徑探膊,范圍從0.0到1.0,默認(rèn)值為0.25
refractiveindex:球體的折射率待榔,默認(rèn)值為0.71
GPUImageVignetteFilter:執(zhí)行漸暈效果逞壁,在邊緣淡出圖像

vignetteCenter:tex coords中的小插曲的中心(CGPoint),默認(rèn)值為0.5,0.5
vignetteColor:用于小插曲(GPUVector3)的顏色锐锣,默認(rèn)為黑色
vignetteStart:從暈影效果開(kāi)始的中心的標(biāo)準(zhǔn)化距離腌闯,默認(rèn)值為0.5
vignetteEnd:從暈影效果結(jié)束的中心的標(biāo)準(zhǔn)化距離,默認(rèn)值為0.75
GPUImageKuwaharaFilter:Kuwahara圖像抽象雕憔,繪制自Kyprianidis等人的工作姿骏。et al。在他們的出版物“GPU中”英文相鄰詞匯熱門詞匯“GPU” 英文“昂貴的橘茉,因此它可能需要幾秒鐘來(lái)渲染在iPad 2上的框架工腋。這可能最適合用于靜態(tài)圖像姨丈。

radius:整數(shù)畅卓,指定應(yīng)用濾鏡時(shí)從中心像素向外測(cè)試的像素?cái)?shù),默認(rèn)值為4.較高的值會(huì)創(chuàng)建更抽象的圖像蟋恬,但代價(jià)是處理時(shí)間更長(zhǎng)翁潘。
GPUImageKuwaharaRadius3Filter:一個(gè)修改版本的Kuwahara過(guò)濾器,優(yōu)化工作超過(guò)三個(gè)像素的半徑

GPUImagePerlinNoiseFilter:生成一個(gè)充滿Perlin噪聲的圖像

colorStart:
colorFinish:生成噪聲的顏色范圍
scale:正在生成的噪聲的縮放
GPUImageCGAColorspaceFilter:模擬CGA顯示器的色彩空間

GPUImageMosaicFilter:此過(guò)濾器接受一個(gè)輸入的瓷磚集歼争,瓷磚必??須以亮度上升拜马。它查看輸入圖像并根據(jù)該瓦片的亮度用輸入瓦片替換每個(gè)顯示瓦片。這個(gè)想法是復(fù)制在其他應(yīng)用程序中看到的ASCII視頻過(guò)濾器沐绒,但是tileset可以是任何東西俩莽。

inputTileSize:
numTiles:
displayTileSize:
colorOn:
GPUImageJFAVoronoiFilter:生成Voronoi地圖,供以后階段使用乔遮。

sizeInPixels:?jiǎn)蝹€(gè)元素的大小
GPUImageVoronoiConsumerFilter:在Voronoi地圖中扮超,并使用它來(lái)過(guò)濾進(jìn)入的圖像。

sizeInPixels:?jiǎn)蝹€(gè)元素的大小

先來(lái)介紹幾個(gè)基礎(chǔ)概念

1蹋肮、GPUImageFilter

GPUImage的濾鏡的基類
作用:
1.都遵守GPUImageInput的協(xié)議
2.獲得響應(yīng)鏈上游的紋理出刷,經(jīng)過(guò)自己的處理,生成新的紋理坯辩,向響應(yīng)鏈的下一個(gè)對(duì)象傳遞

extern NSString *const kGPUImageVertexShaderString;//頂點(diǎn)著色器
extern NSString *const kGPUImagePassthroughFragmentShaderString;//片段著色器

struct GPUVector4 {//4維坐標(biāo)
    GLfloat one;
    GLfloat two;
    GLfloat three;
    GLfloat four;
};

typedef struct GPUVector4 GPUVector4;

struct GPUVector3 {//3維坐標(biāo)系
    GLfloat one;
    GLfloat two;
    GLfloat three;
};
typedef struct GPUVector3 GPUVector3;

struct GPUMatrix4x4 {//4x4矩陣
    GPUVector4 one;
    GPUVector4 two;
    GPUVector4 three;
    GPUVector4 four;
};
typedef struct GPUMatrix4x4 GPUMatrix4x4;

struct GPUMatrix3x3 {{//3x3矩陣
    GPUVector3 one;
    GPUVector3 two;
    GPUVector3 three;
};
typedef struct GPUMatrix3x3 GPUMatrix3x3;

/** GPUImage's base filter class
GPUImage的濾鏡的基類

 Filters and other subsequent elements in the chain conform to the GPUImageInput protocol, which lets them take in the supplied or processed texture from the previous link in the chain and do something with it. Objects one step further down the chain are considered targets, and processing can be branched by adding multiple targets to a single output or filter.
作用:
1.都遵守GPUImageInput的協(xié)議
2.獲得響應(yīng)鏈上游的紋理馁龟,經(jīng)過(guò)自己的處理,生成新的紋理漆魔,向響應(yīng)鏈的下一個(gè)對(duì)象傳遞
 */

@interface GPUImageFilter : GPUImageOutput <GPUImageInput>
{
    GPUImageFramebuffer *firstInputFramebuffer;//輸入幀緩存

    GLProgram *filterProgram;//openGL源程序
    GLint filterPositionAttribute, filterTextureCoordinateAttribute;//頂點(diǎn)屬性坷檩、紋理屬性
    GLint filterInputTextureUniform;//輸入紋理常量
    GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha;//r  g  b  a

    BOOL isEndProcessing;//是否處理完成

    CGSize currentFilterSize;//當(dāng)前濾鏡的尺寸
    GPUImageRotationMode inputRotation;//旋轉(zhuǎn)模式

    BOOL currentlyReceivingMonochromeInput;//是否接受黑白輸入

    NSMutableDictionary *uniformStateRestorationBlocks;//
    dispatch_semaphore_t imageCaptureSemaphore;//信號(hào)量
}

@property(readonly) CVPixelBufferRef renderTarget;//像素對(duì)象
@property(readwrite, nonatomic) BOOL preventRendering;//是否方式渲染
@property(readwrite, nonatomic) BOOL currentlyReceivingMonochromeInput;//是否接受黑白輸入

- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString;// init
- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString;// init
- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename;// init
- (void)initializeAttributes;// init屬性
- (void)setupFilterForSize:(CGSize)filterFrameSize;//設(shè)置濾鏡尺寸
- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex;//旋轉(zhuǎn)尺寸
- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation;//旋轉(zhuǎn)頂點(diǎn)
- (CGSize)sizeOfFBO;//幀緩存大小
+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode;//紋理旋轉(zhuǎn)
- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates;//根據(jù)頂點(diǎn)和紋理渲染
- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime;//通知響應(yīng)鏈下游的對(duì)象
- (CGSize)outputFrameSize;//輸出
/// 一些列set方法
- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent;
- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName;
- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName;
- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName;
- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName;
- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName;
- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName;
- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName;

- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;
- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram;

- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock;
- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex;

@end

2却音、GPUImageFramebuffer

GPUmageFramebuffer類用于管理幀緩沖對(duì)象,負(fù)責(zé)幀緩沖對(duì)象的創(chuàng)建和銷毀矢炼,讀取幀緩沖內(nèi)容僧家。

@property(readonly) CGSize size;//只讀屬性,在實(shí)現(xiàn)中裸删,設(shè)置緩沖區(qū)的size
@property(readonly) GPUTextureOptions textureOptions;//紋理的選項(xiàng)
@property(readonly) GLuint texture;//管理紋理
@property(readonly) BOOL missingFramebuffer;//指示是否丟失幀緩沖對(duì)象

// Initialization and teardown
/*
創(chuàng)建一個(gè)size為framebufferSize大小的幀緩沖對(duì)象
參數(shù) framebuffer的size八拱。
返回:創(chuàng)建成功的幀緩沖對(duì)象。
*/
- (id)initWithSize:(CGSize)framebufferSize;
/*
創(chuàng)建一個(gè)size為framebufferSize大小的幀緩沖對(duì)象
參數(shù):framebufferSize為framebuffer的size涯塔。fboTextureOptions是紋理的詳細(xì)配置肌稻。onlyGenerateTexture說(shuō)明是否只創(chuàng)建紋理而不創(chuàng)建陳幀緩沖對(duì)象。
返回:創(chuàng)建成功的幀緩沖對(duì)象匕荸。
*/
- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture;
/*
創(chuàng)建一個(gè)size為framebufferSize大小的幀緩沖對(duì)象
參數(shù):inputTexture為輸入的紋理爹谭,用于渲染圖片。
返回:創(chuàng)建成功的幀緩沖對(duì)象榛搔。
*/
- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture;

// Usage
- (void)activateFramebuffer;//激活剛創(chuàng)建的framebuffer對(duì)象诺凡。只有調(diào)用它后,才會(huì)起作用践惑。

// Reference counting
- (void)lock;//引用計(jì)數(shù)管理 +1
- (void)unlock;//引用計(jì)數(shù)管理 -1
- (void)clearAllLocks;//引用計(jì)數(shù)管理 設(shè)置為0
- (void)disableReferenceCounting;//引用計(jì)數(shù)管理 禁用引用計(jì)數(shù)
- (void)enableReferenceCounting;//引用計(jì)數(shù)管理 啟用引用計(jì)數(shù)

// Image capture
- (CGImageRef)newCGImageFromFramebufferContents;
- (void)restoreRenderTarget;//還原渲染目標(biāo)對(duì)象

// Raw data bytes
- (void)lockForReading;//[鎖](http://www.liuhaihua.cn/archives/tag/%e9%94%81)定PixelBuffer
- (void)unlockAfterReading;//解鎖PixelBuffer
- (NSUInteger)bytesPerRow;//獲取pixel buffer的行字節(jié)數(shù)
- (GLubyte *)byteBuffer;//獲取pixel buffer的基地址

參考

GPUImage詳細(xì)解析
GPUImage API文檔之GPUImageFramebuffer類

簡(jiǎn)單的使用一下GPUImage

導(dǎo)入頭文件

#import <GPUImageView.h>
#import <GPUImage/GPUImageSepiaFilter.h>//褐色懷舊

實(shí)現(xiàn)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIImageView* imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:imageView];
    
    GPUImageSepiaFilter* filter = [[GPUImageSepiaFilter alloc] init];
    UIImage* image = [UIImage imageNamed:@"timg.jpeg"];
     [imageView setImage:[filter imageByFilteringImage:image]];
}

效果圖

屏幕快照 2017-03-02 下午3.47.08.png
case 100:  
        {//            亮度  
            GPUImageBrightnessFilter *brightness = [[GPUImageBrightnessFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            brightness.brightness = vlaue;//設(shè)置亮度 -1.0 to 1.0 默認(rèn) 0.0  
            [brightness forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [brightness useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:brightness];//渲染圖片并顯示  
        }  
            break;  
              
        case 101:  
        {//            曝光度  
            GPUImageExposureFilter *exposure = [[GPUImageExposureFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            exposure.exposure = vlaue;//設(shè)置亮度 -10 to 10 默認(rèn) 0  
            [exposure forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [exposure useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:exposure];//渲染圖片并顯示  
        }  
            break;  
              
        case 102:  
        {//            對(duì)比度  
            GPUImageContrastFilter *contrast = [[GPUImageContrastFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            contrast.contrast = vlaue;//設(shè)置對(duì)比度 0 to 4 默認(rèn) 1  
            [contrast forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [contrast useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:contrast];//渲染圖片并顯示  
        }  
            break;  
             
        case 103:  
        {//            飽和度  
            GPUImageSaturationFilter *saturation = [[GPUImageSaturationFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            saturation.saturation = vlaue;//設(shè)置飽和度 0 to 2 默認(rèn) 1  
            [saturation forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [saturation useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:saturation];//渲染圖片并顯示  
        }  
            break;  
              
        case 104:  
        {//            銳化  
            GPUImageSharpenFilter *sharpen = [[GPUImageSharpenFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            sharpen.sharpness = vlaue;//設(shè)置飽和度 -4 to 4 默認(rèn) 0  
            [sharpen forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [sharpen useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:sharpen];//渲染圖片并顯示  
        }  
            break;  
              
        case 105:  
        {//            形變  
            GPUImageTransformFilter *transform = [[GPUImageTransformFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            transform.transform3D = CATransform3DMakeScale(vlaue, vlaue, vlaue);//設(shè)置屬性  
            [transform forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [transform useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:transform];//渲染圖片并顯示  
        }  
            break;  
              
        case 106:  
        {//            高斯模糊  
        GPUImageGaussianBlurFilter *gaussianBlur = [[GPUImageGaussianBlurFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            gaussianBlur.texelSpacingMultiplier = vlaue;  
            [gaussianBlur forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [gaussianBlur useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:gaussianBlur];//渲染圖片并顯示  
        }  
            break;  
              
        case 107:  
        {//            卡通效果  
             GPUImageToonFilter *sketch = [[GPUImageToonFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            sketch.quantizationLevels = 10;  
            [sketch forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [sketch useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:sketch];//渲染圖片并顯示  
        }  
            break;  
              
        case 108:  
        {//            球形倒立效果  
            GPUImageSphereRefractionFilter *glass = [[GPUImageSphereRefractionFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            glass.radius = vlaue; //設(shè)置球 半徑  
            [glass forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [glass useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:glass];//渲染圖片并顯示  
        }  
            break;  
              
        case 109:  
        {//            懷舊效果  
            GPUImageSepiaFilter *sepia = [[GPUImageSepiaFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
  
            [sepia forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [sepia useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:sepia];//渲染圖片并顯示  
        }  
            break;  
              
        case 110:  
        {//            反色效果  
            GPUImageColorInvertFilter *colorInvert = [[GPUImageColorInvertFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            [colorInvert forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [colorInvert useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:colorInvert];//渲染圖片并顯示  
        }  
            break;  
              
        case 111:  
        {//            色彩丟失效果  
        GPUImageColorPackingFilter *colorPacking = [[GPUImageColorPackingFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            [colorPacking forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [colorPacking useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:colorPacking];//渲染圖片并顯示  
        }  
            break;  
           
        case 112:  
        {//            暈影效果  
            GPUImageVignetteFilter *vigette = [[GPUImageVignetteFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            vigette.vignetteStart = 0;  
            [vigette forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [vigette useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:vigette];//渲染圖片并顯示  
        }  
            break;  
              
        case 113:  
        {//            交叉線效果  
            GPUImageCrosshatchFilter *crosshatch = [[GPUImageCrosshatchFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            crosshatch.crossHatchSpacing = vlaue;  
            [crosshatch forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [crosshatch useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:crosshatch];//渲染圖片并顯示  
        }  
            break;  
          
        case 114:  
        {//            哈哈鏡效果  
        GPUImageStretchDistortionFilter *stretch = [[GPUImageStretchDistortionFilter alloc] init];//創(chuàng)建濾鏡對(duì)象  
            stretch.center = CGPointMake(vlaue, vlaue);  
            [stretch forceProcessingAtSize:self.image.size];//設(shè)置要渲染的區(qū)域  
            [stretch useNextFrameForImageCapture];//捕獲圖片效果  
            [self filterWithObject:stretch];//渲染圖片并顯示  
        }  
            break;  
              
大概使用步驟是

1腹泌、創(chuàng)建亮度濾鏡對(duì)象
GPUImageBrightnessFilter *filter = [[GPUImageBrightnessFilter alloc] init];
2、設(shè)置亮度的值
filter.brightness = value;
3尔觉、設(shè)置紋理尺寸
[filter forceProcessingAtSize:image.size];
4凉袱、創(chuàng)建GPUImagePicture對(duì)象
GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];
5、向創(chuàng)建好的GPUImagePicture對(duì)象添加addTarget
[pic addTarget:filter];
6侦铜、處理圖像(需要注意 使用processImage這個(gè)方法盡量要調(diào)用useNextFrameForImageCapture)
[pic processImage]; [filter useNextFrameForImageCapture];
7专甩、獲取處理后的圖像
image = [filter imageFromCurrentFramebuffer];

3、GPUImagePicture 圖片處理類

GPUImagePicture是PGUImage的圖像處理類钉稍,繼承GPUImageOutput涤躲,一般作為響應(yīng)鏈的源頭。
GPUImagePicture類靜態(tài)圖像處理操作贡未,它可以是需要處理的靜態(tài)圖像种樱,也可以是一張作為紋理使用的圖片,調(diào)用向它發(fā)送processImage消息羞秤,進(jìn)行圖像濾鏡處理缸托。

屬性介紹
pixelSizeOfImage 圖像的像素大小。
hasProcessedImage 圖像是否已處理瘾蛋。
imageUpdateSemaphore 圖像處理的GCD信號(hào)量俐镐。


方法介紹


- (id)initWithURL:(NSURL *)url
說(shuō)明:使用指定url的圖片來(lái)初始化GPUImagePicture
- (id)initWithImage:(UIImage *)newImageSource
說(shuō)明:使用指定的UIImage對(duì)象來(lái)初始化GPUImagePicture
- (id)initWithCGImage:(CGImageRef)newImageSource
說(shuō)明:使用指定的CGImageRef對(duì)象來(lái)初始化GPUImagePicture
- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput
說(shuō)明:使用指定的UIImage對(duì)象來(lái)初始化GPUImagePicture,是否按比例調(diào)整輸入圖像的尺寸
- (void)processImage
說(shuō)明:進(jìn)行圖像處理實(shí)際操作哺哼。
- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion
說(shuō)明:進(jìn)行圖像處理實(shí)際的操作佩抹,completion為當(dāng)處理結(jié)束執(zhí)行的操作叼风。

4、GPUImageFilterGroup(組合濾鏡)

GPUImageFilterGroup是多個(gè)filter的集合棍苹,terminalFilter為最終的filter无宿,initialFilters為filter數(shù)組。GPUImageFilterGroup本身不繪制圖像枢里,對(duì)GPUImageFilterGroup添加刪除Target操作的操作都會(huì)轉(zhuǎn)為terminalFilter的操作孽鸡。

常用混合濾鏡
#import "GPUImageMultiplyBlendFilter.h"             //通常用于創(chuàng)建陰影和深度效果
  #import "GPUImageNormalBlendFilter.h"               //正常
  #import "GPUImageAlphaBlendFilter.h"                //透明混合,通常用于在背景上應(yīng)用前景的透明度
  #import "GPUImageDissolveBlendFilter.h"             //溶解
  #import "GPUImageOverlayBlendFilter.h"              //疊加,通常用于創(chuàng)建陰影效果
  #import "GPUImageDarkenBlendFilter.h"               //加深混合,通常用于重疊類型
  #import "GPUImageLightenBlendFilter.h"              //減淡混合,通常用于重疊類型
  #import "GPUImageSourceOverBlendFilter.h"           //源混合
  #import "GPUImageColorBurnBlendFilter.h"            //色彩加深混合
  #import "GPUImageColorDodgeBlendFilter.h"           //色彩減淡混合
  #import "GPUImageScreenBlendFilter.h"               //屏幕包裹,通常用于創(chuàng)建亮點(diǎn)和鏡頭眩光
  #import "GPUImageExclusionBlendFilter.h"            //排除混合
  #import "GPUImageDifferenceBlendFilter.h"           //差異混合,通常用于創(chuàng)建更多變動(dòng)的顏色
  #import "GPUImageSubtractBlendFilter.h"             //差值混合,通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果
  #import "GPUImageHardLightBlendFilter.h"            //強(qiáng)光混合,通常用于創(chuàng)建陰影效果
  #import "GPUImageSoftLightBlendFilter.h"            //柔光混合
  #import "GPUImageChromaKeyBlendFilter.h"            //色度鍵混合
  #import "GPUImageMaskFilter.h"                      //遮罩混合
  #import "GPUImageHazeFilter.h"                      //朦朧加暗
  #import "GPUImageLuminanceThresholdFilter.h"        //亮度閾
  #import "GPUImageAdaptiveThresholdFilter.h"         //自適應(yīng)閾值
  #import "GPUImageAddBlendFilter.h"                  //通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變亮模糊效果
  #import "GPUImageDivideBlendFilter.h"               //通常用于創(chuàng)建兩個(gè)圖像之間的動(dòng)畫(huà)變暗模糊效果

示例代碼

// 圖片輸入源
    _inputImage = [UIImage imageNamed:@"icon"];

    // 初始化 picture
    _picture    = [[GPUImagePicture alloc] initWithImage:_inputImage smoothlyScaleOutput:YES];

    // 初始化 imageView
    _imageView  = [[GPUImageView alloc] initWithFrame:self.iconImageView.bounds];
    [self.iconImageView addSubview:_imageView];

    // 初始化 filterGroup
    _filterGroup = [[GPUImageFilterGroup alloc] init];
    [_picture addTarget:_filterGroup];


    // 添加 filter
    /**
     原理:
     1. filterGroup(addFilter) 濾鏡組添加每個(gè)濾鏡
     2. 按添加順序(可自行調(diào)整)前一個(gè)filter(addTarget) 添加后一個(gè)filter
     3. filterGroup.initialFilters = @[第一個(gè)filter]];
     4. filterGroup.terminalFilter = 最后一個(gè)filter;

     */
    GPUImageRGBFilter *filter1         = [[GPUImageRGBFilter alloc] init];
    GPUImageToonFilter *filter2        = [[GPUImageToonFilter alloc] init];
    GPUImageColorInvertFilter *filter3 = [[GPUImageColorInvertFilter alloc] init];
    GPUImageSepiaFilter       *filter4 = [[GPUImageSepiaFilter alloc] init];
    [self addGPUImageFilter:filter1];
    [self addGPUImageFilter:filter2];
    [self addGPUImageFilter:filter3];
    [self addGPUImageFilter:filter4];

    // 處理圖片
    [_picture processImage];
    [_filterGroup useNextFrameForImageCapture];

    self.iconImageView.image = [_filterGroup imageFromCurrentFramebuffer];


大神深度解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栏豺,隨后出現(xiàn)的幾起案子彬碱,更是在濱河造成了極大的恐慌,老刑警劉巖奥洼,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巷疼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灵奖,警方通過(guò)查閱死者的電腦和手機(jī)嚼沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓷患,“玉大人骡尽,你說(shuō)我怎么就攤上這事∥疚玻” “怎么了爆阶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵燥透,是天一觀的道長(zhǎng)沙咏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)班套,這世上最難降的妖魔是什么肢藐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮吱韭,結(jié)果婚禮上吆豹,老公的妹妹穿的比我還像新娘。我一直安慰自己理盆,他們只是感情好痘煤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著猿规,像睡著了一般衷快。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姨俩,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天蘸拔,我揣著相機(jī)與錄音师郑,去河邊找鬼。 笑死调窍,一個(gè)胖子當(dāng)著我的面吹牛宝冕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邓萨,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼地梨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了缔恳?” 一聲冷哼從身側(cè)響起湿刽,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褐耳,沒(méi)想到半個(gè)月后诈闺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铃芦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年雅镊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刃滓。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仁烹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咧虎,到底是詐尸還是另有隱情卓缰,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布砰诵,位于F島的核電站征唬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茁彭。R本人自食惡果不足惜总寒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望理肺。 院中可真熱鬧摄闸,春花似錦、人聲如沸妹萨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乎完。三九已至熏兄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霍弹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工毫别, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人典格。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓岛宦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耍缴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砾肺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容