關于GPUImage簡單介紹:
作者:BradLarson,github:https://github.com/BradLarson/GPUImage
GPUImage是一個非常棒的圖像處理的開源庫,里面提供了125種濾鏡效果來加工圖像,并且支持照相機和攝像機的實時濾鏡,能夠滿足我們日常美顏/濾鏡開效果。通過這樣強大的開源框架,我們可以在其基礎上開發定制我們自己的美圖應用!
GPUImage主要類:
GPUImageStillCamera:用于實時拍攝照片
GPUImageView: 主要用于GPUImage的圖像
GPUImagePicture:用于處理拍攝好/選取的圖片
GPUimageFilter類或者子類,這個就是我們主要用于處理的濾鏡的核心,這個類繼承自GPUImageOutput,并且遵守GPUImageInput協議
?主要的濾鏡大致分為以下四類(摘錄自作者翻譯大概如下 )?
1.顏色調整:
GPUImageBrightnessFilter:調整圖像的亮度
brightness(亮度):調整后的亮度(-1.0 - 1.0,默認值為0.0)
GPUImageExposureFilter:調整圖像的曝光
exposure(曝光):調整曝光(-10.0 - 10.0,默認值為0.0)
GPUImageContrastFilter:調整圖像的對比度
contrast(對比度):調整后的對比度(0.0 - 4.0,默認值為1.0)
GPUImageSaturationFilter:調整圖像的飽和度
saturation(飽和度):應用于圖像的飽和度或去飽和度(0.0 - 2.0,默認值為1.0)
GPUImageGammaFilter:調整圖像的灰度系數
gamma:要應用的伽瑪調整(0.0 - 3.0,默認值為1.0)
GPUImageLevelsFilter:類似Photoshop的級別調整。min,max,minOut和maxOut參數是[0,1]范圍內的浮點數。如果Photoshop中的參數在[0,255]范圍內,則必須先將它們轉換為[0,1]。gamma / mid參數是float> = 0.這與Photoshop中的值匹配。如果要將電平應用于RGB以及各個通道,則需要使用此濾波器兩次 - 首先是單個通道,然后是所有通道。
GPUImageColorMatrixFilter:通過對圖像應用矩陣來變換圖像的顏色
colorMatrix:用于轉換圖像中每種顏色的4x4矩陣
intensity(強度):新變換顏色替換每個像素的原始顏色的程度
GPUImageRGBFilter:調整圖像的各個RGB通道
red:每個顏色通道乘以的標準化值。范圍從0.0開始,默認值為1.0。
green:
bule:
GPUImageHueFilter:調整圖像的色調
hue(色調):色調角度,以度為單位。默認為90度
GPUImageVibranceFilter:調整圖像的振動
vibrance:要應用的振動調整,使用0.0作為默認值,建議的最小值/最大值分別為-1.2和1.2左右。
GPUImageWhiteBalanceFilter:調整圖像的白平衡。
temperature(溫度):以oK為單位調整圖像的溫度。值4000非常酷,7000非常溫暖。默認值為5000.請注意,4000到5000之間的比例幾乎與5000和7000之間的比例一樣重要。
tint(色調):調整圖像的色調。值-200?非常綠,200?非常粉紅色。默認值為0。
GPUImageToneCurveFilter:根據每個顏色通道的樣條曲線調整圖像的顏色。
redControlPoints:
greenControlPoints:
blueControlPoints:
rgbCompositeControlPoints:色調曲線采用一系列控制點,這些控制點定義每個顏色分量的樣條曲線,或復合材料中的所有三個顏色分量。它們作為NSValue包裝的CGPoints存儲在NSArray中,標準化的X和Y坐標為0-1。默認值為(0,0),(0.5,0.5),(1,1)。
GPUImageHighlightShadowFilter:調整圖像的陰影和高光
shadows(陰影):增加以減輕陰影,從0.0到1.0,默認值為0.0。
highlights(高光):減少高亮變暗,從1.0到0.0,默認為1.0。
GPUImageHighlightShadowTintFilter:允許您使用顏色和強度獨立地著色圖像的陰影和高光
shadowTintColor:陰影色調RGB顏色(GPUVector4)。默認值:(?{1.0f, 0.0f, 0.0f, 1.0f}紅色)。
highlightTintColor:突出顯示色調RGB顏色(GPUVector4)。默認值:(?{0.0f, 0.0f, 1.0f, 1.0f}藍色)。
shadowTintIntensity:陰影色調強度,從0.0到1.0。默認值:0.0
highlightTintIntensity:突出顯示色調強度,從0.0到1.0,默認值為0.0。
GPUImageLookupFilter:使用RGB顏色查找圖像重新映射圖像中的顏色。首先,使用您最喜歡的照片編輯應用程序將過濾器應用于GPUImage / framework / Resources中的lookup.png。為了使其正常工作,每個像素顏色必須不依賴于其他像素(例如,模糊將不起作用)。如果需要更復雜的過濾器,可以根據需要創建任意數量的查找表。準備好后,使用新的lookup.png文件作為GPUImageLookupFilter的第二個輸入。
GPUImageAmatorkaFilter:基于Amatorka的Photoshop動作的照片濾鏡:http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631?。如果要使用此效果,則必須將“GPUImage資源”文件夾中的lookup_amatorka.png添加到應用程序包中。
GPUImageMissEtikateFilter:基于Miss Etikate的Photoshop動作的照片濾鏡:http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961?。如果要使用此效果,則必須將“GPUImage資源”文件夾中的lookup_miss_etikate.png添加到應用程序包中。
GPUImageSoftEleganceFilter:另一種基于查找的顏色重映射過濾器。如果要使用此效果,則必須將“GPUImage資源”文件夾中的lookup_soft_elegance_1.png和lookup_soft_elegance_2.png添加到應用程序包中。
GPUImageSkinToneFilter:膚色調整濾鏡,可影響獨特的淺色膚色,并相應調整粉色/綠色或粉色/橙色范圍。默認值以白種人皮膚為目標,但可根據需要進行調整。
skinToneAdjust:調整膚色的量。默認值:0.0,建議最小值/最大值:-0.3和0.3。
skinHue:檢測皮膚色調。默認值:0.05(白種人皮膚偏紅皮膚)。
skinHueThreshold:皮膚色調的變化量。默認值:40.0。
maxHueShift:允許的最大色調偏移量。默認值:0.25。
maxSaturationShift?=要移動的最大飽和度(使用橙色時)。默認值:0.4。
upperSkinToneColor?=?GPUImageSkinToneUpperColorGreen或GPUImageSkinToneUpperColorOrange
GPUImageColorInvertFilter:反轉圖像的顏色
GPUImageGrayscaleFilter:將圖像轉換為灰度(飽和度濾鏡的執行速度略快,無法改變顏色的貢獻)
GPUImageMonochromeFilter:根據每個像素的亮度將圖像轉換為單色版本
intensity(強度):特定顏色替換正常圖像顏色的程度(0.0 - 1.0,默認值為1.0)
color:用作效果基礎的顏色,默認值為(0.6,0.45,0.3,1.0)。
GPUImageFalseColorFilter:使用圖像的亮度在兩個用戶指定的顏色之間混合
firstColor:第一種和第二種顏色分別指定哪些顏色代替圖像的暗區和亮區。默認值為(0.0,0.0,0.5)amd(1.0,0.0,0.0)。
secondColor:
GPUImageHazeFilter:用于添加或刪除霧霾(類似于UV濾鏡)
distance(距離):應用的顏色強度。默認值為0.-和.3之間的值最好。
slope(斜率):顏色變化量。默認值為0.-和.3之間的值最好。
GPUImageSepiaFilter:簡單的棕褐色調濾波器
intensity(強度):棕褐色調替換正常圖像顏色的程度(0.0 - 1.0,默認值為1.0)
GPUImageOpacityFilter:調整傳入圖像的Alpha通道
opacity(不透明度):將每個像素的傳入Alpha通道乘以(0.0 - 1.0,默認值為1.0)的值
GPUImageSolidColorGenerator:輸出生成的純色圖像。您需要使用-forceProcessingAtSize定義圖像大小:
color:用于填充圖像的四分量格式的顏色。
GPUImageLuminanceThresholdFilter:亮度高于閾值的像素將顯示為白色,下面的像素將顯示為黑色
threshold(閾值):亮度threshold,從0.0到1.0,默認值為0.5
GPUImageAdaptiveThresholdFilter:確定像素周圍的局部亮度,如果低于該局部亮度則將像素變為黑色,如果高于該值則變為白色。這對于在不同光照條件下挑選文本非常有用。
blurRadiusInPixels:背景平均模糊半徑的乘數,以像素為單位,默認值為4。
GPUImageAverageLuminanceThresholdFilter:這應用閾值操作,其中閾值根據場景的平均亮度連續調整。
thresholdMultiplier:這是平均亮度乘以的一個因子,以達到要使用的最終threshold。默認情況下,這是1.0。
GPUImageHistogramFilter:分析輸入圖像并創建輸出直方圖,其中包含每個顏色值出現的頻率。該濾波器的輸出是3像素高,256像素寬的圖像,其中心(垂直)像素包含與發生各種顏色值的頻率相對應的像素。每個顏色值占據256個寬度位置中的一個,從左側的0到右側的255。可以為各個顏色通道(kGPUImageHistogramRed,kGPUImageHistogramGreen,kGPUImageHistogramBlue),圖像的亮度(kGPUImageHistogramLuminance)或一次所有三個顏色通道(kGPUImageHistogramRGB)生成此直方圖。
downsamplingFactor:不是對每個像素進行采樣,而是指示采樣的圖像的哪個部分。默認情況下,這是16,最小值為1.這是為了防止直方圖飽和,直方圖只能在每個顏色值過載之前記錄256個像素。
GPUImageHistogramGenerator:這是一個特殊的過濾器,因為它主要用于處理GPUImageHistogramFilter。它生成由GPUImageHistogramFilter生成的顏色直方圖的輸出表示,但它可以重新用于顯示其他類型的值。它接收圖像并查看中心(垂直)像素。然后,它在輸出紋理中的單獨彩色圖形中繪制RGB分量的數值。您可能需要強制此過濾器的大小才能使其輸出可見。
GPUImageAverageColor:處理輸入圖像并通過平均圖像中每個像素的RGBA分量來確定場景的平均顏色。縮減過程用于逐步下采樣GPU上的源圖像,然后在CPU上進行短平均計算。此過濾器的輸出沒有意義,但您需要將colorAverageProcessingFinishedBlock屬性設置為一個塊,該塊接受四個顏色分量和一個幀時間并對它們執行某些操作。
GPUImageLuminosity:與GPUImageAverageColor類似,這會將圖像縮小到平均亮度。您需要設置luminosityProcessingFinishedBlock來處理此過濾器的輸出,該輸出僅返回亮度值和幀時間。
GPUImageChromaKeyFilter:對于圖像中的給定顏色,將alpha通道設置為0.這類似于GPUImageChromaKeyBlendFilter,而不是在第二個圖像中混合匹配的顏色,這不會占用第二個圖像而只是轉動一個給定的顏色顏色透明。
thresholdSensitivity:要替換的目標顏色需要與顏色匹配的接近程度(默認值為0.4)
smoothing(平滑):混合顏色匹配的平滑程度(默認值為0.1)
2.圖像處理
GPUImageTransformFilter:這將對圖像應用任意2-D或3-D變換
affineTransform:這需要一個CGAffineTransform來調整二維圖像
transform3D:這需要一個CATransform3D來操縱三維圖像
ignoreAspectRatio:默認情況下,保留變換圖像的寬高比,但可以將其設置為YES以使變換獨立于寬高比
GPUImageCropFilter:將圖像裁剪到特定區域,然后僅將該區域傳遞到濾鏡中的下一個舞臺
cropRegion:從圖像中裁剪出來的矩形區域,標準化為0.0 - 1.0的坐標。(0.0,0.0)位置位于圖像的左上角。
GPUImageLanczosResamplingFilter:這使您可以使用Lanczos重采樣對圖像進行上采樣或下采樣,從而比標準線性或三線性插值產生明顯更好的質量。只需使用-forceProcessingAtSize:設置過濾器的目標輸出分辨率,然后對該新大小重新采樣圖像。
GPUImageSharpenFilter:銳化圖像
sharpness(銳度):應用的銳度調整(-4.0 - 4.0,默認值為0.0)
GPUImageUnsharpMaskFilter:應用非銳化蒙版
blurRadiusInPixels:基礎高斯模糊的模糊半徑。默認值為4.0。
intensity(強度):銳化的強度,從0.0開始,默認值為1.0
GPUImageGaussianBlurFilter:硬件優化的可變半徑高斯模糊
texelSpacingMultiplier:紋素之間間距的乘數,范圍從0.0開始,默認值為1.0。調整此項可能會略微增加模糊強度,但會在結果中引入偽影。強烈建議首先使用其他參數,然后再觸摸此參數。
blurRadiusInPixels:用于模糊的半徑(以像素為單位),默認值為2.0。這會調整高斯分布函數中的sigma變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設置這些屬性將允許模糊半徑隨圖像的大小縮放
blurPasses:順序模糊傳入圖像的次數。通過越多,過濾器越慢。
GPUImageBoxBlurFilter:硬件優化的可變半徑框模糊
texelSpacingMultiplier:紋素之間間距的乘數,范圍從0.0開始,默認值為1.0。調整此項可能會略微增加模糊強度,但會在結果中引入偽影。強烈建議首先使用其他參數,然后再觸摸此參數。
blurRadiusInPixels:用于模糊的半徑(以像素為單位),默認值為2.0。這會調整高斯分布函數中的sigma變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設置這些屬性將允許模糊半徑隨圖像的大小縮放
blurPasses:順序模糊傳入圖像的次數。通過越多,過濾器越慢。
GPUImageSingleComponentGaussianBlurFilter:GPUImageGaussianBlurFilter的修改,僅對紅色組件進行操作
texelSpacingMultiplier:紋素之間間距的乘數,范圍從0.0開始,默認值為1.0。調整此項可能會略微增加模糊強度,但會在結果中引入偽影。強烈建議首先使用其他參數,然后再觸摸此參數。
blurRadiusInPixels:用于模糊的半徑(以像素為單位),默認值為2.0。這會調整高斯分布函數中的sigma變量。
blurRadiusAsFractionOfImageWidth:
blurRadiusAsFractionOfImageHeight:設置這些屬性將允許模糊半徑隨圖像的大小縮放
blurPasses:順序模糊傳入圖像的次數。通過越多,過濾器越慢。
GPUImageGaussianSelectiveBlurFilter:保持焦點在圓形區域內的高斯模糊
blurRadiusInPixels:用于模糊的半徑(以像素為單位),默認值為5.0。這會調整高斯分布函數中的sigma變量。
excludeCircleRadius:從模糊中排除的圓形區域的半徑
excludeCirclePoint:從模糊中排除圓形區域的中心
excludeBlurSize:模糊部分和清晰圓之間區域的大小
aspectRatio:圖像的寬高比,用于調整對焦區域的圓度。默認情況下,這與圖像寬高比匹配,但您可以覆蓋此值。
GPUImageGaussianBlurPositionFilter:GPUImageGaussianSelectiveBlurFilter的反轉,僅在某個圓圈內應用模糊
blurSize:模糊大小的乘數,范圍從0.0開始,默認值為1.0
blurCenter:模糊的中心,默認為0.5,0.5
blurRadius:模糊的半徑,默認為1.0
GPUImageiOSBlurFilter:嘗試在控制中心等位置復制iOS 7上使用的背景模糊。
blurRadiusInPixels:用于模糊的半徑(以像素為單位),默認值為12.0。這會調整高斯分布函數中的sigma變量。
saturation(飽和度):飽和度范圍從0.0(完全去飽和)到2.0(最大飽和度),0.8為正常水平
downsampling(下采樣):下采樣的程度,然后對輸入圖像進行上采樣以最小化高斯模糊內的計算,默認值為4.0。
GPUImageMedianFilter:在3x3區域內獲取三種顏色分量的中值
GPUImageBilateralFilter:雙邊模糊,試圖模糊相似的顏色值,同時保留銳邊
texelSpacingMultiplier:紋素讀取之間間距的乘數,范圍從0.0開始,默認值為4.0
distanceNormalizationFactor:中心顏色與樣本顏色之間距離的歸一化因子,默認值為8.0。
GPUImageTiltShiftFilter:模擬傾斜移位鏡頭效果
blurRadiusInPixels:基礎模糊的半徑,以像素為單位。默認情況下為7.0。
topFocusLevel:圖像中對焦區域頂部的標準化位置,此值應低于bottomFocusLevel,默認值為0.4
bottomFocusLevel:圖像中對焦區域底部的標準化位置,此值應高于topFocusLevel,默認值為0.6
focusFallOffRate:圖像模糊遠離對焦區域的速率,默認為0.2
GPUImage3x3ConvolutionFilter:針對圖像運行3x3卷積內核
convolutionKernel:卷積核是一個3x3的值矩陣,用于應用于像素及其周圍8個像素。矩陣以行主順序指定,左上角像素為一個,右下角為三個。三個。如果矩陣中的值不等于1.0,則圖像可能會變亮或變暗。
GPUImageSobelEdgeDetectionFilter:Sobel邊緣檢測,邊緣以白色突出顯示
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
edgeStrength:調整過濾器的動態范圍。較高的值會導致較強的邊緣,但會使強度色彩空間飽和。默認值為1.0。
GPUImagePrewittEdgeDetectionFilter:Prewitt邊緣檢測,邊緣以白色突出顯示
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
edgeStrength:調整過濾器的動態范圍。較高的值會導致較強的邊緣,但會使強度色彩空間飽和。默認值為1.0。
GPUImageThresholdEdgeDetectionFilter:執行Sobel邊緣檢測,但應用閾值而不是給出漸進的強度值
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
edgeStrength:調整過濾器的動態范圍。較高的值會導致較強的邊緣,但會使強度色彩空間飽和。默認值為1.0。
threshold:高于此threshold的任何邊緣將為黑色,并且任何低于白色的邊緣。范圍從0.0到1.0,默認值為0.8
GPUImageCannyEdgeDetectionFilter:這使用完整的Canny過程突出顯示一個像素寬的邊緣
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
blurRadiusInPixels:高斯模糊的基礎模糊半徑。默認值為2.0。
blurTexelSpacingMultiplier:底層模糊紋理間距乘數。默認值為1.0。
upperThreshold:梯度大小超過此閾值的任何邊將通過并顯示在最終結果中。默認值為0.4。
lowerThreshold:梯度幅度低于此閾值的任何邊緣都將失敗并從最終結果中移除。默認值為0.1。
GPUImageHarrisCornerDetectionFilter:在輸入圖像上運行Harris角點檢測算法,并生成一個圖像,其中這些角點為白色像素,其他一切都為黑色。可以設置cornersDetectedBlock,并為您提供一個角落列表(在規范化的0..1 X,Y坐標中),用于您要執行的任何其他操作。
blurRadiusInPixels:基礎高斯模糊的半徑。默認值為2.0。
sensitivity(靈敏度):應用于調整濾波器中生成的角度圖的動態范圍的內部比例因子。默認值為5.0。
threshold(閾值):將點檢測為拐角的threshold。這可能會根據尺寸,照明條件和iOS設備相機類型而有很大差異,因此可能需要一些實驗才能適合您的情況。默認值為0.20。
GPUImageNobleCornerDetectionFilter:在Harris角點檢測器上運行Noble變量。其行為如上所述用于Harris檢測器。
blurRadiusInPixels:基礎高斯模糊的半徑。默認值為2.0。
sensitivity(靈敏度):應用于調整濾波器中生成的角度圖的動態范圍的內部比例因子。默認值為5.0。
threshold(閾值):將點檢測為拐角的threshold。這可能會根據尺寸,照明條件和iOS設備相機類型而有很大差異,因此可能需要一些實驗才能適合您的情況。默認值為0.2。
GPUImageShiTomasiCornerDetectionFilter:運行Shi-Tomasi特征檢測器。其行為如上所述用于Harris檢測器。
blurRadiusInPixels:基礎高斯模糊的半徑。默認值為2.0。
sensitivity(靈敏度):應用于調整濾波器中生成的角度圖的動態范圍的內部比例因子。默認值為1.5。
threshold(閾值):將點檢測為拐角的threshold。這可能會根據尺寸,照明條件和iOS設備相機類型而有很大差異,因此可能需要一些實驗才能適合您的情況。默認值為0.2。
GPUImageNonMaximumSuppressionFilter:目前僅用作Harris角點檢測濾波器的一部分,這將在每個像素周圍采樣1像素的盒子,并確定中心像素的紅色通道是否是該區域中的最大值。如果是,它就會停留。如果不是,則對所有顏色分量設置為0。
GPUImageXYDerivativeFilter:Harris角點檢測濾波器中的一個內部組件,它計算這一點左右像素之間的平方差,這個像素上下的像素的平方差,以及這兩個差異的乘積。
GPUImageCrosshairGenerator:它在圖像上繪制一系列十字準線,最常用于識別機器視覺特征。它不像其他濾鏡那樣采用標準圖像,而是采用其-renderCrosshairsFromArray:count:方法中的一系列點來完成實際繪制。您需要強制此過濾器以您需要的特定輸出大小進行渲染。
crosshairWidth:要在屏幕上繪制的十字準線的寬度(以像素為單位)。
GPUImageDilationFilter:執行圖像擴張操作,其中矩形鄰域中紅色通道的最大強度用于該像素的強度。要初始化的矩形區域的半徑在初始化時指定,范圍為1-4像素。這適用于灰度圖像,并可擴展明亮區域。
GPUImageRGBDilationFilter:這與GPUImageDilationFilter相同,只是它作用于所有顏色通道,而不僅僅是紅色通道。
GPUImageErosionFilter:執行圖像侵蝕操作,其中矩形鄰域中的紅色通道的最小強度用于該像素的強度。要初始化的矩形區域的半徑在初始化時指定,范圍為1-4像素。這適用于灰度圖像,并可擴展暗區。
GPUImageRGBErosionFilter:這與GPUImageErosionFilter相同,只是它作用于所有顏色通道,而不僅僅是紅色通道。
GPUImageOpeningFilter:這會對圖像的紅色通道進行侵蝕,然后進行相同半徑的擴張。半徑在初始化時設置,范圍為1-4像素。這會過濾掉較小的明亮區域。
GPUImageRGBOpeningFilter:這與GPUImageOpeningFilter相同,只是它作用于所有顏色通道,而不僅僅是紅色通道。
GPUImageClosingFilter:這會對圖像的紅色通道執行擴張,然后對同一半徑進行侵蝕。半徑在初始化時設置,范圍為1-4像素。這會濾除較小的暗區。
GPUImageRGBClosingFilter:這與GPUImageClosingFilter相同,只是它作用于所有顏色通道,而不僅僅是紅色通道。
GPUImageLocalBinaryPatternFilter:執行8個周圍像素的紅色通道的強度與中心像素的紅色通道的強度的比較,將比較結果編碼為變為該像素強度的位串。最低有效位是右上角比較,逆時針以正確比較結束為最高位。
GPUImageLowPassFilter:這會對傳入的視頻幀應用低通濾波器。這基本上累積了先前幀的加權滾動平均值和當前幀的加權滾動平均值。這可以用于去噪視頻,添加運動模糊或用于創建高通濾波器。
filterStrength:它控制先前累積的幀與當前累積的幀混合的程度。范圍從0.0到1.0,默認值為0.5。
GPUImageHighPassFilter:這會對傳入的視頻幀應用高通濾波器。這是低通濾波器的反函數,顯示當前幀與先前幀的加權滾動平均值之間的差異。這對于運動檢測最有用。
filterStrength:它控制先前累積幀的混合程度,然后從當前累計幀中減去。范圍從0.0到1.0,默認值為0.5。
GPUImageMotionDetector:這是一個基于高通濾波器的運動檢測器。您可以設置motionDetectionBlock,并且在每個輸入幀上,它將為您提供場景中任何檢測到的移動的質心(在標準化的X,Y坐標中)以及場景的運動強度。
lowPassFilterStrength:它控制幕后使用的低通濾波器的強度,以建立與傳入幀進行比較的基線。范圍從0.0到1.0,默認值為0.5。
GPUImageHoughTransformLineDetector:使用Hough變換檢測圖像中的線到并行坐標空間。這種方法完全基于布爾諾理工大學Graph @ FIT研究小組開發的PC線工藝,并在其出版物中描述:M.Dubská,J。Havel和A. Herout。使用平行坐標和OpenGL實時檢測線條。2011年SCCG會議記錄,布拉迪斯拉發,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哈維爾和A. Herout。PClines - 使用平行坐標的線檢測。2011年IEEE計算機視覺和模式識別會議(CVPR),p。1489-1494(http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf)。
edgeThreshold:檢測到一個點屬于用于確定線的邊的閾值。默認值為0.9。
lineDetectionThreshold:檢測到局部最大值屬于并行坐標空間中的線的閾值。默認值為0.20。
linesDetectedBlock:在檢測到行時調用此塊,通常在每個已處理的幀上。包含歸一化斜率和m,b對(y = mx + b)中的截距的AC陣列,以及檢測到的行數和視頻幀的當前時間戳的計數。
GPUImageLineGenerator:一個生成可以覆蓋場景的線的輔助類。可以使用-setLineColorRed調整這些線條的顏色:綠色:藍色:
lineWidth:行的寬度(以像素為單位),默認值為1.0。
GPUImageMotionBlurFilter:將定向運動模糊應用于圖像
blurSize:模糊大小的乘數,范圍從0.0開始,默認值為1.0
blurAngle:模糊的角度方向,以度為單位。默認為0度。
GPUImageZoomBlurFilter:將定向運動模糊應用于圖像
blurSize:模糊大小的乘數,范圍從0.0開始,默認值為1.0
blurCenter:模糊的標準化中心。(0.5,0.5)默認情況下
3.混合模式
GPUImageChromaKeyBlendFilter:用第二個圖像有選擇地替換第一個圖像中的顏色
thresholdSensitivity:要替換的目標顏色需要與顏色匹配的接近程度(默認值為0.4)
smoothing(平滑):混合顏色匹配的平滑程度(默認值為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:應用兩個圖像的泊松混合
mix:混合范圍從0.0(僅圖像1)到1.0(僅圖像2漸變),1.0為正常水平
numIterations:傳播漸變的次數。如果你想要達到接近收斂的程度,可以將它調高到100甚至1000。是的,這會很慢。
GPUImageMaskFilter:使用另一個圖像掩蓋一個圖像
4.視覺效果
GPUImagePixellateFilter:對圖像或視頻應用像素化效果
fractionalWidthOfAPixel:像素的大小,作為圖像寬度和高度的一小部分(0.0 - 1.0,默認值為0.05)
GPUImagePolarPixellateFilter:根據極坐標而不是笛卡爾坐標對圖像或視頻應用像素化效果
center:應用像素化的中心,默認為(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。
threshold(閾值):高于此閾值的任何邊緣將為黑色,并且任何低于白色的邊緣。范圍從0.0到1.0,默認值為0.8
GPUImageToonFilter:它使用Sobel邊緣檢測在物體周圍放置黑色邊框,然后量化圖像中的顏色,為圖像提供類似卡通的質量。
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
threshold(閾值):邊緣檢測的靈敏度,較低的值更敏感。范圍從0.0到1.0,默認值為0.2
quantizationLevels:要在最終圖像中表示的顏色級別數。默認值為10.0
GPUImageSmoothToonFilter:它使用與GPUImageToonFilter類似的過程,只有在使用高斯模糊的香椿效果之前才能消除噪音。
texelWidth:
texelHeight:這些參數會影響檢測到的邊緣的可見性
blurRadiusInPixels:基礎高斯模糊的半徑。默認值為2.0。
threshold(閾值):邊緣檢測的靈敏度,較低的值更敏感。范圍從0.0到1.0,默認值為0.2
quantizationLevels:要在最終圖像中表示的顏色級別數。默認值為10.0
GPUImageEmbossFilter:對圖像應用浮雕效果
intensity(強度):壓花的強度,從0.0到4.0,1.0為正常水平
GPUImagePosterizeFilter:這會將顏色動態范圍縮小為指定的步數,從而產生類似卡通的簡單著色圖像。
colorLevels:減少圖像空間的顏色級別數。范圍從1到256,默認值為10。
GPUImageSwirlFilter:在圖像上創建漩渦扭曲
radius:從中心開始應用失真的半徑,默認值為0.5
center:圖像的中心(在0 - 1.0的標準化坐標中)關于哪個扭曲,默認值為(0.5,0.5)
angle:應用于圖像的扭曲量,默認值為1.0
GPUImageBulgeDistortionFilter:在圖像上創建凸起失真
radius:從中心開始應用失真的半徑,默認值為0.25
center:圖像的中心(在0 - 1.0的標準化坐標中)有關其扭曲的內容,默認值為(0.5,0.5)
scale:要應用的失真量,從-1.0到1.0,默認值為0.5
GPUImagePinchDistortionFilter:創建圖像的捏合扭曲
radius:從中心開始應用失真的半徑,默認值為1.0
center:圖像的中心(在0 - 1.0的標準化坐標中)有關其扭曲的內容,默認值為(0.5,0.5)
scale:要應用的失真量,從-2.0到2.0,默認值為1.0
GPUImageStretchDistortionFilter:創建圖像的拉伸扭曲
center:圖像的中心(在0 - 1.0的標準化坐標中)有關其扭曲的內容,默認值為(0.5,0.5)
GPUImageSphereRefractionFilter:模擬玻璃球體的折射
center:應用失真的中心,默認值為(0.5,0.5)
radius:失真的半徑,范圍從0.0到1.0,默認值為0.25
refractiveIndex:球體的折射率,默認值為0.71
GPUImageGlassSphereFilter:與GPUImageSphereRefractionFilter相同,只是圖像沒有倒置,玻璃邊緣有一點點結霜
center:應用失真的中心,默認值為(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:與暈影效果開始的中心的標準化距離,默認值為0.5
vignetteEnd:與暈影效果結束的中心的標準化距離,默認值為0.75
GPUImageKuwaharaFilter:Kuwahara圖像抽象,來自Kyprianidis等的工作。人。在GPU Pro系列中的出版物“GPU上的各向異性Kuwahara過濾”中。這會產生類似油畫的圖像,但它的計算成本非常高,因此在iPad 2上渲染幀可能需要幾秒鐘。這可能最適合用于靜止圖像。
radius:整數,指定應用過濾器時要測試的中心像素外的像素數,默認值為4.較高的值會創建更抽象的圖像,但代價是處理時間要長得多。
GPUImageKuwaharaRadius3Filter:Kuwahara濾鏡的修改版本,經過優化,只能在三個像素的半徑上工作
GPUImagePerlinNoiseFilter:生成一個充滿Perlin噪聲的圖像
colorStart:
colorFinish:生成噪聲的顏色范圍
scale:生成的噪聲的縮放比例
GPUImageCGAColorspaceFilter:模擬CGA監視器的色彩空間
GPUImageMosaicFilter:此濾鏡采用輸入tileset,tile必須以亮度提升。它查看輸入圖像并根據該圖塊的亮度用輸入圖塊替換每個顯示圖塊。這個想法是復制其他應用程序中看到的ASCII視頻過濾器,但是tileset可以是任何東西。
inputTileSize:
numTiles:
displayTileSize:
colorOn:
GPUImageJFAVoronoiFilter:生成Voronoi映射,供以后使用。
sizeInPixels:各個元素的大小
GPUImageVoronoiConsumerFilter:接收Voronoi地圖,并使用它來過濾傳入的圖像。
sizeInPixels:各個元素的大小