濾鏡初探-BeautifyFaceDemo-濾鏡類介紹

最近需要給直播項目中添加美顏的功能,調(diào)研了很多SDK和開源代碼(視決,涂圖,七牛,金山云,videoCore等),綜合成本/效果/對項目侵入性,最后決定使用一款基于GPUImage實現(xiàn)的 BeautifyFaceDemo美顏濾鏡。

temperature-----選擇色溫,以開爾文為單位 10000->0.3(暖色調(diào))  5000->0.0  4000->-0.4(冷色調(diào))
tint-----調(diào)整顏色補(bǔ)償
必須理解的概念:白平衡(白色永遠(yuǎn)是白色,不會變色)
“K”代表“開爾文”(Kelvin),即色溫的單位。“K”設(shè)置可以讓你設(shè)定具體的色溫值,這一數(shù)值越低,色彩就越偏暖。蠟燭光線的色溫約為1000K,藍(lán)天的色溫約為10000K。日光和閃光燈的色溫則位于中間段(日光大約5200K,閃光燈5900K)

// Base classes

import "GPUImageOpenGLESContext.h"

import "GPUImageOutput.h"

import "GPUImageView.h"

import "GPUImageVideoCamera.h"

import "GPUImageStillCamera.h"

import "GPUImageMovie.h"

import "GPUImagePicture.h"

import "GPUImageRawDataInput.h"

import "GPUImageRawDataOutput.h"

import "GPUImageMovieWriter.h"

import "GPUImageFilterPipeline.h"

import "GPUImageTextureOutput.h"

import "GPUImageFilterGroup.h"

import "GPUImageTextureInput.h"

import "GPUImageUIElement.h"

import "GPUImageBuffer.h"

// Filters

import "GPUImageFilter.h"

import "GPUImageTwoInputFilter.h"

顏色調(diào)整###

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

    • 亮度:調(diào)節(jié)亮度(-1.0 - 1.0,默認(rèn)值為0.0)
  • ** GPUImageExposureFilter **:調(diào)整圖像的曝光

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

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

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

      • gamma *:要應(yīng)用的gamma調(diào)整(0.0 - 3.0,默認(rèn)值為1.0)
  • ** GPUImageLevelsFilter **:色階(色階是表示圖像亮度強(qiáng)弱的指數(shù)標(biāo)準(zhǔn),也就是我們說的色彩指數(shù),在數(shù)字圖像處理教程中,指的是灰度分辨率(又稱為灰度級分辨率或者幅度分辨率)。圖像的色彩豐滿度和精細(xì)度是由色階決定的。色階指亮度,和顏色無關(guān),但最亮的只有白色,最不亮的只有黑色。)。 min,max,minOut和maxOut參數(shù)是[0,1]范圍內(nèi)的浮點數(shù)。如果您在[0,255]范圍內(nèi)的Photoshop中有參數(shù),則必須先將其轉(zhuǎn)換為[0,1]。 gamma / mid參數(shù)是float> = 0.這與Photoshop中的值相匹配。如果您要將級別應(yīng)用于RGB以及各個通道,則需要使用此過濾器兩??次 - 首先是單個通道,然后是所有通道。

  • ** GPUImageColorMatrixFilter **:通過對它們應(yīng)用矩陣來轉(zhuǎn)換圖像的顏色

      • colorMatrix *:用于轉(zhuǎn)換圖像中每種顏色的4x4矩陣
      • intensity *:新變換顏色取代每個像素的原始顏色的程度
  • ** GPUImageRGBFilter **:調(diào)整圖像的各個RGB通道

    • *:乘以每個顏色通道的歸一化值。范圍為0.0,默認(rèn)值為1.0。
    • 綠色
    • 藍(lán)色
  • ** GPUImageHueFilter **:調(diào)整圖像的色調(diào)

    • 色調(diào):色調(diào)角度,以度為單位。默認(rèn)為90度
  • ** GPUImageVibranceFilter **:調(diào)整圖像的氣泡

      • vibrance *:要應(yīng)用的振動調(diào)整,使用0.0作為默認(rèn)值,建議的最小/最大值分別為-1.2和1.2。
  • ** GPUImageWhiteBalanceFilter **:調(diào)整圖像的白平衡。

    • 溫度:以oK調(diào)整圖像的溫度。 4000的值非???,7000非常溫暖。默認(rèn)值為5000.請注意,4000和5000之間的刻度幾乎與5000到7000之間的視覺顯著性相當(dāng)。
    • 色調(diào):通過調(diào)整圖像的色調(diào)。值-200是非常綠色和200是非常粉紅色。默認(rèn)值為0。
  • ** GPUImageToneCurveFilter **:根據(jù)每個顏色通道的樣條曲線調(diào)整圖像的顏色。

      • redControlPoints *:
      • greenControlPoints *:
      • blueControlPoints *:
      • rgbCompositeControlPoints *:色調(diào)曲線采用一系列控制點,用于定義每個顏色分量的樣條曲線,或復(fù)合材料中的所有三個樣條曲線。這些存儲為NSArray中的NSValue包裝的CGPoint,標(biāo)準(zhǔn)化的X和Y坐標(biāo)為0 - 1。默認(rèn)值為(0,0),(0.5,0.5),(1,1)。
  • ** GPUImageHighlightShadowFilter **:調(diào)整圖像的陰影和高光

      • shadows *:增加減輕陰影,從0.0到1.0,默認(rèn)為0.0。
    • 亮點:降低亮度,從1.0到0.0,默認(rèn)值為1.0。
  • ** GPUImageHighlightShadowTintFilter **:允許您使用顏色和強(qiáng)度獨立地對圖像的陰影和高光進(jìn)行著色

      • 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 *:突出顯示色調(diào)強(qiáng)度,從0.0到1.0,默認(rèn)值為0.0。
  • ** GPUImageLookupFilter **:使用RGB顏色查找圖像重新映射圖像中的顏色。首先,使用您最喜歡的照片編輯應(yīng)用程序,從GPUImage / framework / Resources應(yīng)用一個過濾器到lookup.png。為了正常工作,每個像素顏色不能取決于其他像素(例如模糊不起作用)。如果您需要更復(fù)雜的過濾器,則可以根據(jù)需要創(chuàng)建任意數(shù)量的查找表。準(zhǔn)備完成后,使用新的lookup.png文件作為GPUImageLookupFilter的第二個輸入。

  • ** GPUImageAmatorkaFilter **:基于Amatorka的Photoshop動作的照片過濾器:http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631。如果要使用此效果,您必須將lookupImamApplication資源文件夾中的lookup_amatorka.png添加到應(yīng)用程序包中。

  • ** GPUImageMissEtikateFilter **:由Etikate小姐基于Photoshop動作的照片過濾器:http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961。如果要使用此效果,則必須將“GPUImage Resources”文件夾中的lookup_miss_etikate.png添加到應(yīng)用程序包中。

  • ** GPUImageSoftEleganceFilter **:另一種基于查找的顏色重映射過濾器。如果要使用此效果,您必須將lookup_soft_elegance_1.png和lookup_soft_elegance_2.png從GPUImage Resources文件夾添加到應(yīng)用程序包中。

  • ** GPUImageSkinToneFilter **:一種膚色調(diào)整過濾器,可以影響?yīng)毺氐臏\色調(diào)色調(diào)范圍,并相應(yīng)調(diào)整粉色/綠色或粉色/橙色范圍。默認(rèn)值是針對白at色皮膚,但可以根據(jù)需要進(jìn)行調(diào)整。

      • skinToneAdjust *:調(diào)整膚色的量。默認(rèn)值:0.0,建議最小/最大:分別為-0.3和0.3。
      • skinHue *:要檢測的皮膚色調(diào)。默認(rèn)值:0.05(純白色至紅色皮膚)。
      • skinHueThreshold *:皮膚色調(diào)的變化量。默認(rèn)值:40.0。
      • maxHueShift *:允許的最大色調(diào)偏移量。默認(rèn)值:0.25。
      • maxSaturationShift * =要移動的最大飽和度(使用橙色時)。默認(rèn)值:0.4。
      • upperSkinToneColor * =GPUImageSkinToneUpperColorGreenGPUImageSkinToneUpperColorOrange
  • ** GPUImageColorInvertFilter **:反轉(zhuǎn)圖像的顏色

  • ** GPUImageGrayscaleFilter **:將圖像轉(zhuǎn)換為灰度級(稍微更快的飽和度濾鏡實現(xiàn),無需更改顏色貢獻(xiàn))

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

      • intensity *:特定顏色取代正常圖像顏色的程度(0.0 - 1.0,默認(rèn)值為1.0)
    • 顏色:用作效果的基礎(chǔ)的顏色,默認(rèn)為(0.6,0.45,0.3,1.0)。
  • ** GPUImageFalseColorFilter **:使用圖像的亮度在兩個用戶指定的顏色之間進(jìn)行混合

      • firstColor *:第一和第二種顏色分別指定什么顏色代替圖像的暗部和淺色區(qū)域。默認(rèn)值為(0.0,0.0,0.5)amd(1.0,0.0,0.0)。
      • secondColor *:
  • ** GPUImageHazeFilter **:用于添加或刪除霧度(類似于UV過濾器)

    • 距離:施加的顏色的強(qiáng)度。默認(rèn)值0.-3和.3之間的值最好。
    • 斜率:顏色變化量。默認(rèn)值0.-3和.3之間的值最好。
  • ** GPUImageSepiaFilter **:簡單的棕褐色調(diào)濾鏡

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

      • opacity *:將每個像素的傳入Alpha通道乘以(0.0 - 1.0,默認(rèn)值為1.0)
  • ** GPUImageSolidColorGenerator **:這將輸出一個帶有純色的生成圖像。您需要使用-forceProcessingAtSize定義圖像大小:

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

      • threshold *:亮度閾值,從0.0到1.0,默認(rèn)值為0.5
  • ** GPUImageAdaptiveThresholdFilter **:確定像素周圍的本地亮度,然后將像素轉(zhuǎn)換為低于該局部亮度的黑色,如果上述則為白色。這可以用于在不同的照明條件下挑選文本。

      • blurRadiusInPixels *:用于背景平均模糊半徑(以像素為單位)的乘數(shù),默認(rèn)值為4。
  • ** GPUImageAverageLuminanceThresholdFilter **:這將應(yīng)用閾值操作,其中根據(jù)場景的平均亮度不斷調(diào)整閾值。

      • thresholdMultiplier *:這是為了達(dá)到最終使用閾值而將平均亮度乘以的因素。默認(rèn)情況下,這是1.0。
  • ** GPUImageHistogramFilter **:這將分析輸入圖像,并創(chuàng)建一個輸出直方圖,其中出現(xiàn)每個顏色值的頻率。該濾鏡的輸出是3像素高,256像素寬的圖像,中心(垂直)像素包含與各種顏色值發(fā)生頻率對應(yīng)的像素。每個顏色值占用256個寬度位置中的一個,從左側(cè)的0到右邊的255??梢詾閱蝹€顏色通道(kGPUImageHistogramRed,kGPUImageHistogramGreen,kGPUImageHistogramBlue),圖像的亮度(kGPUImageHistogramLuminance)或一次的所有三個顏色通道(kGPUImageHistogramRGB)生成此直方圖。

      • downsamplingFactor *:而不是對每個像素進(jìn)行采樣,這決定了圖像的幾個部分被采樣。默認(rèn)情況下,這是16,最小為1.這是需要保持飽和直方圖,每個顏色值只能在其過載之前記錄256個像素。
  • ** GPUImageHistogramGenerator **:這是一個特殊的過濾器,因為它主要是為了使用GPUImageHistogramFilter。它生成由GPUImageHistogramFilter生成的顏色直方圖的輸出表示,但它可以重新利用來顯示其他類型的值。它占據(jù)一個圖像并且看中心(垂直)像素。然后在輸出紋理中將RGB組件的數(shù)值繪制在單獨的彩色圖形中。您可能需要強(qiáng)制使用此過濾器的大小才能使其輸出可見。

  • ** GPUImageAverageColor **:通過對圖像中每個像素的RGBA分量進(jìn)行平均,處理輸入圖像并確定場景的平均顏色。使用縮減過程逐漸降低對GPU上的源圖像的采樣,然后在CPU上進(jìn)行簡單的平均計算。該過濾器的輸出是無意義的,但是您需要將colorAverageProcessingFinishedBlock屬性設(shè)置為一個塊,該塊具有四個顏色組件和一個幀時間,并與它們做一些事情。

  • ** GPUImageLuminosity **:像GPUImageAverageColor一樣,將圖像縮小到其平均亮度。您需要設(shè)置luminosityProcessingFinishedBlock來處理此過濾器的輸出,該輸出只返回亮度值和幀時間。

  • ** GPUImageChromaKeyFilter **:對于圖像中的給定顏色,將Alpha通道設(shè)置為0.這與GPUImageChromaKeyBlendFilter類似,僅代替在第二個圖像中混合匹配的顏色,這不會占用第二個圖像只是轉(zhuǎn)一個給定的顏色透明。

      • thresholdSensitivity *:顏色匹配需要與要替換的目標(biāo)顏色存在多少(默認(rèn)值為0.4)
    • 平滑:如何平穩(wěn)地混合顏色匹配(默認(rèn)為0.1)

圖像處理###

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

      • affineTransform *:這需要一個CGAffineTransform來調(diào)整2-D中的圖像
      • transform3D *:這需要一個CATransform3D來處理3-D中的圖像
      • ignoreAspectRatio *:默認(rèn)情況下,保存變換圖像的寬高比,但可以將其設(shè)置為“是”,使轉(zhuǎn)換與縱橫比無關(guān)
  • ** GPUImageCropFilter **:將圖像裁剪到特定區(qū)域,然后將該區(qū)域僅傳遞到過濾器的下一個階段

      • cropRegion *:裁剪出圖像的矩形區(qū)域,標(biāo)準(zhǔn)化為0.0 - 1.0的坐標(biāo)。 (0.0,0.0)位置在圖像的左上角。
  • ** GPUImageLanczosResamplingFilter **:這樣可以使用Lanczos重采樣來上下采樣圖像,這樣可以比標(biāo)準(zhǔn)線性或三線性插值顯著提高質(zhì)量。只需使用-forceProcessingAtSize:設(shè)置過濾器的目標(biāo)輸出分辨率,并為該大小重新采樣圖像。

  • ** GPUImageSharpenFilter **:銳化圖像

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

      • blurRadiusInPixels *:底層高斯模糊的模糊半徑。默認(rèn)值為4.0。
    • 強(qiáng)度:銳化的強(qiáng)度,從0.0開始,默認(rèn)值為1.0
  • ** GPUImageGaussianBlurFilter **:硬件優(yōu)化的可變半徑高斯模糊

      • texelSpacingMultiplier *:紋素之間的間距的乘數(shù),范圍從0.0開始,默認(rèn)值為1.0。調(diào)整這可能會稍微增加模糊強(qiáng)度,但會在結(jié)果中引入工件。在接觸這一個之前先強(qiáng)烈推薦使用其他參數(shù)。
      • blurRadiusInPixels *:用于模糊的半徑(以像素為單位),默認(rèn)值為2.0。這調(diào)整高斯分布函數(shù)中的sigma變量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:設(shè)置這些屬性將允許模糊半徑與圖像的大小縮放
      • blurPasses *:順序模糊傳入圖像的次數(shù)。越多越好,過濾器越慢。
  • ** GPUImageBoxBlurFilter **:硬件優(yōu)化,可變半徑框模糊

      • texelSpacingMultiplier *:紋素之間的間距的乘數(shù),范圍從0.0開始,默認(rèn)值為1.0。調(diào)整這可能會稍微增加模糊強(qiáng)度,但會在結(jié)果中引入工件。在接觸這一個之前先強(qiáng)烈推薦使用其他參數(shù)。
      • blurRadiusInPixels *:用于模糊的半徑(以像素為單位),默認(rèn)值為2.0。這調(diào)整高斯分布函數(shù)中的σ變量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:設(shè)置這些屬性將允許模糊半徑與圖像的大小縮放
      • blurPasses *:順序模糊傳入圖像的次數(shù)。越多越好,過濾器越慢。
  • ** GPUImageSingleComponentGaussianBlurFilter **:僅對紅色組件進(jìn)行操作的GPUImageGaussianBlurFilter的修改

      • texelSpacingMultiplier *:紋素之間的間距的乘數(shù),范圍從0.0開始,默認(rèn)值為1.0。調(diào)整這可能會稍微增加模糊強(qiáng)度,但會在結(jié)果中引入工件。在接觸這一個之前先強(qiáng)烈推薦使用其他參數(shù)。
      • blurRadiusInPixels *:用于模糊的半徑(以像素為單位),默認(rèn)值為2.0。這調(diào)整高斯分布函數(shù)中的σ變量。
      • blurRadiusAsFractionOfImageWidth *:
      • blurRadiusAsFractionOfImageHeight *:設(shè)置這些屬性將允許模糊半徑與圖像的大小縮放
      • blurPasses *:順序模糊傳入圖像的次數(shù)。越多越好,過濾器越慢。
  • ** GPUImageGaussianSelectiveBlurFilter **:保持圓形區(qū)域內(nèi)的焦點的高斯模糊

      • blurRadiusInPixels *:用于模糊的半徑(以像素為單位),默認(rèn)值為5.0。這調(diào)整高斯分布函數(shù)中的σ變量。
      • excludeCircleRadius *:從模糊中排除的圓形區(qū)域的半徑
      • excludeCirclePoint *:圓形區(qū)域的中心被排除在模糊之外
      • excludeBlurSize *:模糊部分和清晰圓之間的區(qū)域大小
      • aspectRatio *:圖像的寬高比,用于調(diào)整對焦區(qū)域的圓度。默認(rèn)情況下,這與圖像寬高比匹配,但您可以覆蓋此值。
  • ** GPUImageGaussianBlurPositionFilter **:GPUImageGaussianSelectiveBlurFilter的倒數(shù),僅在某個圈子內(nèi)應(yīng)用模糊

      • blurSize *:模糊大小的乘數(shù),范圍從0.0開始,默認(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ù)中的σ變量。
    • 飽和度:飽和度范圍從0.0(完全去飽和)到2.0(最大飽和度),0.8作為正常水平
    • 下采樣:下采樣的程度,然后對輸入圖像進(jìn)行上采樣以最小化高斯模糊中的計算,默認(rèn)值為4.0。
  • ** GPUImageMedianFilter **:獲取三個顏色分量的中值,超過3x3區(qū)域

  • ** GPUImageBilateralFilter **:雙邊模糊,嘗試在保留銳利邊緣的同時模糊相似的顏色值

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

      • blurRadiusInPixels *:底層模糊的半徑,以像素為單位。默認(rèn)情況下為7.0。
      • topFocusLevel *:圖像中對焦區(qū)域頂部的歸一化位置,此值應(yīng)低于bottomFocusLevel,默認(rèn)值為0.4
      • bottomFocusLevel *:圖像中對焦區(qū)域底部的歸一化位置,此值應(yīng)高于topFocusLevel,默認(rèn)為0.6
      • focusFallOffRate *:圖像從對焦區(qū)域模糊的速率,默認(rèn)為0.2
  • ** GPUImage3x3ConvolutionFilter **:針對圖像運(yùn)行3x3卷積內(nèi)核

      • convolutionKernel *:卷積內(nèi)核是要應(yīng)用于像素及其8個周圍像素的值的3x3矩陣。矩陣以行主順序指定,左上角的像素為one.one,右下方為three.three。如果矩陣中的值不加起來為1.0,則圖像可能變亮或變暗。
  • ** GPUImageSobelEdgeDetectionFilter **:Sobel邊緣檢測,邊緣以白色突出顯示

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • edgeStrength *:調(diào)整過濾器的動態(tài)范圍。更高的值導(dǎo)致更強(qiáng)的邊緣,但可以飽和強(qiáng)度的顏色空間。默認(rèn)值為1.0。
  • ** GPUImagePrewittEdgeDetectionFilter **:Prewitt邊緣檢測,邊緣以白色突出顯示

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • edgeStrength *:調(diào)整過濾器的動態(tài)范圍。更高的值導(dǎo)致更強(qiáng)的邊緣,但可以飽和強(qiáng)度的顏色空間。默認(rèn)值為1.0。
  • ** GPUImageThresholdEdgeDetectionFilter **:執(zhí)行Sobel邊緣檢測,但應(yīng)用閾值而不是賦予漸變強(qiáng)度值

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • edgeStrength *:調(diào)整過濾器的動態(tài)范圍。更高的值導(dǎo)致更強(qiáng)的邊緣,但可以飽和強(qiáng)度的顏色空間。默認(rèn)值為1.0。
    • 閾值:任何高于此閾值的邊將為黑色,任何低于白色的邊。范圍從0.0到1.0,默認(rèn)值為0.8
  • ** GPUImageCannyEdgeDetectionFilter **:這使用完整的Canny進(jìn)程來突出顯示單像素寬邊

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • blurRadiusInPixels *:高斯模糊的底層模糊半徑。默認(rèn)值為2.0。
      • blurTexelSpacingMultiplier *:底層的模糊紋理間距乘數(shù)。默認(rèn)值為1.0。
      • upperThreshold *:任何具有高于該閾值的梯度大小的邊將通過并顯示在最終結(jié)果中。默認(rèn)值為0.4。
      • lowerThreshold *:任何具有低于此閾值的梯度大小的邊將失敗,并從最終結(jié)果中移除。默認(rèn)值為0.1。
  • ** GPUImageHarrisCornerDetectionFilter **:在輸入圖像上運(yùn)行哈里斯角檢測算法,并生成具有這些角點的圖像作為白色像素,其他一切都是黑色的。 cornerDetectedBlock可以被設(shè)置,并且你將被提供一個列表的角(在歸一化的0..1 X,Y坐標(biāo))在回調(diào)任何額外的操作,你想執(zhí)行。

      • blurRadiusInPixels *:底層高斯模糊的半徑。默認(rèn)值為2.0。
    • 靈敏度:應(yīng)用內(nèi)部縮放因子來調(diào)整過濾器中生成的角度圖的動態(tài)范圍。默認(rèn)值為5.0。
      • threshold *:將點檢測為拐角的閾值。這可能會根據(jù)大小,照明條件和iOS設(shè)備攝像機(jī)類型而有很大差異,因此可能需要一些實驗來適應(yīng)您的情況。默認(rèn)值為0.20。
  • ** GPUImageNobleCornerDetectionFilter **:在哈里斯角檢測器上運(yùn)行Noble變體。它的行為如上所述對于Harris檢測器。

      • blurRadiusInPixels *:底層高斯模糊的半徑。默認(rèn)值為2.0。
    • 靈敏度:應(yīng)用內(nèi)部縮放因子來調(diào)整過濾器中生成的角度圖的動態(tài)范圍。默認(rèn)值為5.0。
      • threshold *:將點檢測為拐角的閾值。這可能會根據(jù)大小,照明條件和iOS設(shè)備攝像機(jī)類型而有很大差異,因此可能需要一些實驗來適應(yīng)您的情況。默認(rèn)值為0.2。
  • ** GPUImageShiTomasiCornerDetectionFilter **:運(yùn)行Shi-Tomasi特征檢測器。它的行為如上所述對于Harris檢測器。

      • blurRadiusInPixels *:底層高斯模糊的半徑。默認(rèn)值為2.0。
    • 靈敏度:應(yīng)用內(nèi)部縮放因子來調(diào)整過濾器中生成的角度圖的動態(tài)范圍。默認(rèn)值為1.5。
      • threshold *:將點檢測為拐角的閾值。這可能會根據(jù)大小,照明條件和iOS設(shè)備攝像機(jī)類型而有很大差異,因此可能需要一些實驗來適應(yīng)您的情況。默認(rèn)值為0.2。
  • ** GPUImageNonMaximumSuppressionFilter **:目前僅用作哈里斯角檢測濾鏡的一部分,這將對每個像素周圍的1像素框進(jìn)行采樣,并確定中心像素的紅色通道是否在該區(qū)域的最大值。如果是,它停留。如果不是,所有顏色分量都設(shè)置為0。

  • ** GPUImageXYDerivativeFilter **:Harris角檢測過濾器內(nèi)的一個內(nèi)部組件,它計算出這一點的左右像素之間的平方差,這個像素高于和低于該像素的平方差這兩個差異。

  • ** GPUImageCrosshairGenerator **:這在圖像上繪制了一系列十字準(zhǔn)線,最常用于識別機(jī)器視覺功能。它不會像其他過濾器那樣采用標(biāo)準(zhǔn)映像,而是在其-renderCrosshairsFromArray:count:method中執(zhí)行一系列的操作,它將實際繪制。您將需要強(qiáng)制此過濾器以您需要的特定輸出大小呈現(xiàn)。

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

  • ** GPUImageRGBDilationFilter **:這與GPUImageDilationFilter相同,除了它對所有顏色通道,而不僅僅是紅色通道。

  • ** GPUImageErosionFilter **:執(zhí)行圖像侵蝕操作,其中矩形鄰域中的紅色通道的最小強(qiáng)度用于該像素的強(qiáng)度。要采樣的矩形區(qū)域的半徑在初始化時指定,范圍為1-4像素。這是用于灰度圖像,并且它擴(kuò)展黑色區(qū)域。

  • ** GPUImageRGBErosionFilter **:這與GPUImageErosionFilter相同,除了它對所有顏色通道,而不僅僅是紅色通道。

  • ** GPUImageOpeningFilter **:這會對圖像的紅色通道進(jìn)行侵蝕,然后再擴(kuò)張相同的半徑。半徑在初始化時設(shè)置,范圍為1-4像素。這將過濾出較小的明亮區(qū)域。

  • ** GPUImageRGBOpeningFilter **:這與GPUImageOpeningFilter相同,除了它對所有顏色通道,而不僅僅是紅色通道。

  • ** GPUImageClosingFilter **:這會在圖像的紅色通道上進(jìn)行擴(kuò)展,然后是相同半徑的侵蝕。半徑在初始化時設(shè)置,范圍為1-4像素。這將過濾掉較小的黑暗區(qū)域。

  • ** GPUImageRGBClosingFilter **:這與GPUImageClosingFilter相同,除了它對所有顏色通道,而不僅僅是紅色通道。

  • ** GPUImageLocalBinaryPatternFilter **:這將比較8個周圍像素的紅色通道和中央的像素的強(qiáng)度,將比較結(jié)果編碼為成為該像素強(qiáng)度的位串。最不重要的位是右上角的比較,逆時針旋轉(zhuǎn),以正確的比較結(jié)束為最重要的位。

  • ** GPUImageLowPassFilter **:這適用于傳入視頻幀的低通濾波器。它基本上累積了當(dāng)前幀的加權(quán)滾動平均值,可以用于去除視頻,添加運(yùn)動模糊,或者用于創(chuàng)建高通濾波器。

      • filterStrength *:它控制先前累積的幀與當(dāng)前累積幀混合的程度。范圍從0.0到1.0,默認(rèn)值為0.5。
  • ** GPUImageHighPassFilter **:這適用于傳入視頻幀的高通濾波器。這是低通濾波器的倒數(shù),顯示了當(dāng)前幀與先前幀的加權(quán)滾動平均值之間的差異。這對于運(yùn)動檢測最有用。

      • filterStrength *:它控制先前累積的幀混合的程度,然后從當(dāng)前累加幀中減去。范圍從0.0到1.0,默認(rèn)值為0.5。
  • ** GPUImageMotionDetector **:這是基于高通濾波器的運(yùn)動檢測器。您可以設(shè)置motionDetectionBlock,并且在每個傳入的幀中,它將給出場景中任何檢測到的運(yùn)動的質(zhì)心(歸一化的X,Y坐標(biāo))以及場景的運(yùn)動強(qiáng)度。

      • lowPassFilterStrength *:這控制了幕后使用的低通濾波器的強(qiáng)度,以建立輸入幀與之進(jìn)行比較的基線。范圍從0.0到1.0,默認(rèn)值為0.5。
  • ** GPUImageHoughTransformLineDetector **:使用霍夫變換檢測圖像中的行到并行坐標(biāo)空間。這種方法完全基于由布爾諾技術(shù)大學(xué)的Graph @ FIT研究小組開發(fā)的PC線路過程,并在他們的出版物中描述:M.Dubská,J.Havel和A.Heout。使用平行坐標(biāo)和OpenGL實時檢測線。 Proceedings of SCCG 2011,Bratislava,SK,p。 7(http://medusa.fit.vutbr.cz/public/data/papers/2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf)和M.Dubská,J哈維爾和阿倫。 PClines - 使用平行坐標(biāo)的線檢測。 2011 IEEE計算機(jī)視覺與模式識別會議(CVPR),p。 1489- 1494(http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf)。

      • edgeThreshold *:檢測到一個點屬于用于確定行的邊的閾值。默認(rèn)值為0.9。
      • lineDetectionThreshold *:檢測到本地最大值屬于并行坐標(biāo)空間中的行的閾值。默認(rèn)值為0.20。
      • linesDetectedBlock *:通過在每個處理幀上檢測線路,調(diào)用此塊。傳送包含m,b對(y = mx + b)的歸一化斜率和截距的C數(shù)組以及檢測到的行數(shù)和視頻幀的當(dāng)前時間戳的計數(shù)。
  • ** GPUImageLineGenerator **:一個幫助類,可以生成可疊加場景的行。這些行的顏色可以使用-setLineColorRed進(jìn)行調(diào)整:green:blue:

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

      • blurSize *:模糊大小的乘數(shù),范圍從0.0開始,默認(rèn)值為1.0
      • blurAngle *:模糊的角度方向,以度為單位。默認(rèn)為0度。
  • ** GPUImageZoomBlurFilter **:對圖像應(yīng)用定向運(yùn)動模糊

      • blurSize *:模糊大小的乘數(shù),范圍從0.0開始,默認(rèn)值為1.0
      • blurCenter *:模糊的歸一化中心。 (0.5,0.5)

混合模式###

  • ** GPUImageChromaKeyBlendFilter **:用第二個圖像選擇性地替換第一個圖像中的一個顏色

      • thresholdSensitivity *:顏色匹配需要與要替換的目標(biāo)顏色存在多少(默認(rèn)值為0.4)
    • 平滑:如何平穩(wěn)地混合顏色匹配(默認(rèn)為0.1)
  • ** GPUImageDissolveBlendFilter **:應(yīng)用兩個圖像的混合

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

  • ** GPUImageAddBlendFilter **:應(yīng)用兩個圖像的添加混合

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

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

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

  • ** GPUImageDarkenBlendFilter **:通過拍攝圖像之間的每個顏色分量的最小值來混合兩個圖像

  • ** GPUImageLightenBlendFilter **:通過拍攝圖像之間的每個顏色分量的最大值來混合兩個圖像

  • ** GPUImageColorBurnBlendFilter **:應(yīng)用兩個圖像的顏色刻錄混合

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

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

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

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

  • ** GPUImageHardLightBlendFilter **:應(yīng)用兩個圖像的硬光混合

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

  • ** GPUImageAlphaBlendFilter **:根據(jù)第二個alpha通道將第二個圖像混合在第一個圖像上

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

  • ** GPUImageColorBurnBlendFilter **:應(yīng)用兩個圖像的顏色刻錄混合

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

  • ** GPUImageNormalBlendFilter **:應(yīng)用兩個圖像的正常混合

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

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

  • ** GPUImageSaturationBlendFilter **:應(yīng)用兩個圖像的飽和度混合

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

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

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

      • mix *:混合范圍從0.0(僅圖像1)到1.0(僅圖像2梯度),1.0作為正常水平
      • numIterations *:傳播梯度的次數(shù)。如果您想要在任何地方接近收斂,曲目可達(dá)100甚至1000。是的,這會很慢
  • ** GPUImageMaskFilter **:使用另一個屏蔽一個圖像

視覺效果###

  • ** GPUImagePixellateFilter **:在圖像或視頻上應(yīng)用像素圖效果

      • fractionalWidthOfAPixel *:像素的大小是圖像的寬度和高度的一部分(0.0 - 1.0,默認(rèn)為0.05)
  • ** GPUImagePolarPixellateFilter **:根據(jù)極坐標(biāo)代替笛卡兒坐標(biāo),對圖像或視頻應(yīng)用像素效應(yīng)

    • 中心:要應(yīng)用像素的中心,默認(rèn)為(0.5,0.5)
      • pixelSize *:分?jǐn)?shù)像素大小,分為寬和高分量。默認(rèn)值為(0.05,0.05)
  • ** GPUImagePolkaDotFilter **:將圖像分解為常規(guī)網(wǎng)格中的彩色點

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

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

      • crossHatchSpacing *:用作交叉影線間距的圖像的小數(shù)寬度。默認(rèn)值為0.03。
      • lineWidth *:交叉陰影線的相對寬度。默認(rèn)值為0.003。
  • ** GPUImageSketchFilter **:將視頻轉(zhuǎn)換為草圖。這只是Sobel邊緣檢測濾鏡,顏色反轉(zhuǎn)

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • edgeStrength *:調(diào)整過濾器的動態(tài)范圍。更高的值導(dǎo)致更強(qiáng)的邊緣,但可以飽和強(qiáng)度的顏色空間。默認(rèn)值為1.0。
  • ** GPUImageThresholdSketchFilter **:與草圖過濾器相同,只有邊緣被閾值化,而不是灰度

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • edgeStrength *:調(diào)整過濾器的動態(tài)范圍。更高的值導(dǎo)致更強(qiáng)的邊緣,但可以飽和強(qiáng)度的顏色空間。默認(rèn)值為1.0。
    • 閾值:任何高于此閾值的邊將為黑色,任何低于白色的邊。范圍從0.0到1.0,默認(rèn)值為0.8
  • ** GPUImageToonFilter **:這使用Sobel邊緣檢測在對象周圍放置黑色邊框,然后量化圖像中存在的顏色,從而為圖像提供類似卡通的質(zhì)量。

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • threshold *:邊緣檢測的靈敏度,較低的值更敏感。范圍從0.0到1.0,默認(rèn)值為0.2
      • quantizationLevels *:最終圖像中要表示的顏色級數(shù)。默認(rèn)值為10.0
  • ** GPUImageSmoothToonFilter **:它使用與GPUImageToonFilter類似的過程,只有它在具有高斯模糊的toon效果之前才能平滑噪聲。

      • texelWidth *:
      • texelHeight *:這些參數(shù)影響檢測到的邊緣的可見性
      • blurRadiusInPixels *:底層高斯模糊的半徑。默認(rèn)值為2.0。
      • threshold *:邊緣檢測的靈敏度,較低的值更敏感。范圍從0.0到1.0,默認(rèn)值為0.2
      • quantizationLevels *:最終圖像中要表示的顏色級數(shù)。默認(rèn)值為10.0
  • ** GPUImageEmbossFilter **:在圖像上應(yīng)用壓花效果

    • 強(qiáng)度:壓花的強(qiáng)度,從0.0到4.0,以1.0為正常水平
  • ** GPUImagePosterizeFilter **:這將顏色動態(tài)范圍減少到指定的步驟數(shù),從而導(dǎo)致類似卡通的簡單陰影圖像。

      • colorLevels *:減少圖像空間的顏色級別數(shù)。取值范圍為1?256,缺省值為10。
  • ** GPUImageSwirlFilter **:在圖像上創(chuàng)建漩渦失真

    • 半徑:中心的半徑應(yīng)用失真,默認(rèn)為0.5
    • 中心:要扭曲的圖像的中心(標(biāo)準(zhǔn)坐標(biāo)為0 - 1.0),默認(rèn)為(0.5,0.5)
      • angle *:應(yīng)用于圖像的扭曲量,默認(rèn)值為1.0
  • ** GPUImageBulgeDistortionFilter **:在圖像上創(chuàng)建隆隆失真

    • 半徑:中心的半徑應(yīng)用失真,默認(rèn)值為0.25
    • 中心:圖像中心(標(biāo)準(zhǔn)化坐標(biāo)為0 - 1.0),要扭曲,默認(rèn)值為(0.5,0.5)
      • scale *:應(yīng)用的失真量,從-1.0到1.0,默認(rèn)值為0.5
  • ** GPUImagePinchDistortionFilter **:創(chuàng)建圖像的捏合失真

    • 半徑:中心的半徑應(yīng)用失真,默認(rèn)值為1.0
    • 中心:圖像中心(標(biāo)準(zhǔn)化坐標(biāo)為0 - 1.0),要扭曲,默認(rèn)值為(0.5,0.5)
  • ** GPUImageStretchDistortionFilter **:創(chuàng)建圖像的拉伸失真

    • 中心:圖像中心(標(biāo)準(zhǔn)化坐標(biāo)為0 - 1.0),要扭曲,默認(rèn)值為(0.5,0.5)
  • ** GPUImageSphereRefractionFilter **:通過玻璃球模擬折射

    • 中心:應(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),玻璃邊緣有一點結(jié)霜

    • 中心:應(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 *:從暈影效果開始的中心的歸一化距離,默認(rèn)值為0.5
      • vignetteEnd *:與暈影效果結(jié)束的中心的歸一化距離,默認(rèn)值為0.75
  • ** GPUImageKuwaharaFilter **:Kuwahara圖像抽象,從Kyprianidis的工作,等。人。在他們的出版物“GPU中的各向異性Kuwahara過濾GPU”集合。這產(chǎn)生了油畫般的圖像,但它的計算量非常昂貴,因此在iPad 2上渲染框架可能需要幾秒鐘時間。這可能最適用于靜止圖像。

      • radius *:在整數(shù)中指定從中心像素出來的像素數(shù),以便在應(yīng)用過濾器時進(jìn)行測試,默認(rèn)值為4.一個較高的值會創(chuàng)建一個更抽象的圖像,但以犧牲更大的處理時間為代價。
  • ** GPUImageKuwaharaRadius3Filter **:修改版本的Kuwahara過濾器,經(jīng)過優(yōu)化,可以工作在三個像素的半徑

  • ** GPUImagePerlinNoiseFilter **:生成一張充滿Perlin噪音的圖像

      • colorStart *:
      • colorFinish *:產(chǎn)生噪聲的顏色范圍
      • scale *:正在生成噪聲的縮放
  • ** GPUImageCGAColorspaceFilter **:模擬CGA監(jiān)視器的色彩空間

  • ** GPUImageMosaicFilter **:此過濾器接收一個輸入圖塊集,圖塊必須以亮度上升。它查看輸入圖像,并根據(jù)該圖塊的亮度用輸入圖塊替換每個顯示圖塊。這個想法是復(fù)制其他應(yīng)用程序中看到的ASCII視頻過濾器,但是tileet可以是任何東西。

      • inputTileSize *:
      • numTiles *:
      • displayTileSize *:
      • colorOn *:
  • ** GPUImageJFAVoronoiFilter **:生成一個Voronoi地圖,用于后期階段。

      • sizeInPixels *:單個元素的大小
  • ** GPUImageVoronoiConsumerFilter **:進(jìn)行Voronoi映射,并使用它來過濾傳入的映像。

      • sizeInPixels *:單個元素的大小
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容