[轉]ColorMatrixFilter--顏色矩陣濾鏡

ColorMatrixFilter--顏色矩陣濾鏡(flash.filters.ColorMatrixFilter) 在顆粒等級上提供給你更好的控制方法。ColorMatrixFilter爲 4行5列的多維矩陣(20個元素的數組)。圖1是與ColorMatrixFilter等同的矩陣:html

ColorMatrixFilter--顏色矩陣濾鏡

圖1. 與ColorMatrixFilter等同的矩陣數組

    紅,綠,藍通道的值由以下所示計算方法所決定:
    CODE:url

 

redResult   = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4]
greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9]
blueResult  = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14]
alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]spa

      能夠看出,第一行的值決定了紅色值,第二行決定綠色,第三行藍色,第四行是透明(Alpha)通道值。一樣能夠看出首四欄值是與紅,綠,藍,alpha通道值的乘積,而第五欄的值分別是和(偏移量)。注意每行的源值和結果值都是在0到255的區間內。所以即便各個通道的值小於0或大於255都會被強制到該區間內。我來舉些例子說明它的原理。
      若是你想在紅色通道加100(偏移量),將a[4]設置爲100,如圖2:3d

 

ColorMatrixFilter--顏色矩陣濾鏡

圖2. 紅色值增長100orm

    若是想使綠色通道加倍,將a[6]設爲2,如圖3:htm

ColorMatrixFilter--顏色矩陣濾鏡

圖3. 綠色加倍blog

    若是你要使結果圖像中的藍色與原圖的紅色數量相等,將a[10]設爲1, a[12]設爲0 ,如圖4:ip

ColorMatrixFilter--顏色矩陣濾鏡

圖4. 紅色決定藍色值ci

    改變圖像的亮度,你須要在每一個顏色通道的值改變一樣的數量。最簡單的途徑是在每一個通道都設置相同的偏移量。偏移量爲正時能夠增長亮度爲負時能夠減少亮度。圖5是一個增長亮度的例子:

ColorMatrixFilter--顏色矩陣濾鏡

圖5. 增長亮度

    你也能夠經過將每一個顏色通道與一個值相乘按比例的改變亮度,大於1的增長亮度小於1減少亮度。
按照原理,將圖像轉換爲灰度圖,你須要將每一個通道的部分設爲等值。由於有三個通道,你能夠將每一個通道乘以0.33並將它們相加獲得結果值。如圖6:

ColorMatrixFilter--顏色矩陣濾鏡

圖6.灰度圖矩陣

    因爲不一樣顏色通道的相對屏幕發光度,可是確實有特殊的提供更加真實的灰度圖的「亮度係數」值。例如在PS裏建立一個純綠色塊而後把它放在一個純藍色塊,而後將圖像灰度化,你會看到原來綠色的地方的灰色會比原來藍色的區域要亮。
    在Flash裏使用這些矩陣,建立一個ColorMatrixFilter的實例而後將它加入到一個影片剪輯(MovieClip)實例上。下面是一個使綠色加倍的例子:
    CODE:

 

import flash.filters.ColorMatrixFilter;
var mat:Array = [ 1,0,0,0,0,
                  0,2,0,0,0,
                  0,0,1,0,0,
                  0,0,0,1,0 ];
var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat);
mc.filters = [colorMat];

 

    ColorMatrixFilter與一個已知的矩陣使用,你能夠完成除了亮度和灰度以外複雜的顏色調整。調整對比度,飽和度和色相等。
    下面是Adobe官方提供的一個ColorMatrixFilter操做圖像的在線演示圖:

    ColorMatrixFilter 

下載地址:http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf

相關文章
相關標籤/搜索