Flash中的顏色矩陣詳細說明

2021-08-25 03:14:11 字數 2457 閱讀 9165

flash中提供的顏色矩陣可以讓我們很容易的動態修改顏色的色相、透明度、飽和度、陰影等,正在慢慢研究中,這裡留個位址先

[url=

[color="#0099b3"]

[/url]

乙個翻譯文章

在flash中可以用矩陣方便的操作顏色。在flash8以前的版本,操作顏色的唯一途徑就是通過修改顏色物件中紅,綠,藍三個通道的值,在 flash8,"顏色矩陣濾鏡" colormatrixfilter (flash.filters.colormatrixfilter) 在顆粒等級上提供給你更好的控制方法。"顏色矩陣濾鏡"為 4行5列的多維矩陣(20個元素的陣列)。圖 4 是 與"顏色矩陣濾鏡"等同的矩陣。

flash中的顏色矩陣

r g b a off

r 1 0 0 0 0

g 0 1 0 0 0

b 0 0 1 0 0

a 0 0 0 1 0圖4. 與"顏色矩陣濾鏡"等同的矩陣

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

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]

可以看出,第一行的值決定了紅色值,第二行決定綠色,第三行藍色,第四行是透明(alpha)通道值。同樣可以看出首四欄值是與紅,綠,藍,alpha通道值的乘積,而第五欄的值分別是和(偏移量)。注意每行的源值和結果值都是在0到255的區間內。因此即使各個通道的值小於0或大於255都會被強制到該區間內。我來舉些例子說明它的原理。

果你想在紅色通道加100(偏移量),將a[4]設定為100,如(圖5) 。

flash中的顏色矩陣

r g b a off

r 1 0 0 0 100

g 0 1 0 0 0

b 0 0 1 0 0

a 0 0 0 1 0圖5. 紅色值增加100

如果想使綠色通道加倍,將a[6]設為2,如(圖6)

flash中的顏色矩陣

r g b a off

r 1 0 0 0 0

g 0 2 0 0 0

b 0 0 1 0 0

a 0 0 0 1 0圖6. 綠色加倍

如果你要使結果影象中的藍色與原圖的紅色數量相等,將a[10]設為1, a[12]設為0 ,如(圖7)

flash中的顏色矩陣

r g b a off

r 1 0 0 0 0

g 0 1 0 0 0

b 1 0 0 0 0

a 0 0 0 1 0圖7. 紅色決定藍色值

改變影象的亮度,你需要在每個顏色通道的值改變同樣的數量。最簡單的途徑是在每個通道都設定相同的偏移量。偏移量為正時可以增加亮度為負時可以減小亮度。(圖8) 是乙個增加亮度的例子。

flash中的顏色矩陣

r g b a off

r 1 0 0 0 50

g 0 1 0 0 50

b 0 0 1 0 50

a 0 0 0 1 0圖8. 增加亮度

你也可以通過將每個顏色通道與乙個值相乘按比例的改變亮度,大於1的增加亮度小於1減小亮度。

按照原理,將影象轉換為灰度圖,你需要將每個通道的部分設為等值。因為有三個通道,你可以將每個通道乘以0.33並將它們相加得到結果值。如(圖9)

flash中的顏色矩陣

r g b a off

r .33 .33 .33 0 0

g .33 .33 .33 0 0

b .33 .33 .33 0 0

a 0 0 0 1 0

圖9.灰度圖矩陣

由於不同顏色通道的相對螢幕發光度,但是 確實有特殊的提供更加真實的灰度圖的"亮度係數"值 。例如在ps裡建立乙個純綠色塊然後把它放在乙個純藍色塊 ,然後將影象灰度化,你會看到原來綠色的地方的灰色會比原來藍色的區域要亮。

在flash裡使用這些矩陣,建立乙個"顏色矩陣濾鏡"的例項然後將它加入到乙個影片剪輯(movieclip)例項上。下面是乙個使綠色加倍的例子:

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);

clip.filters = [colormat];

協方差矩陣的詳細說明

協方差矩陣的詳細說明 在做人臉識別的時候經常與協方差矩陣打交道,但一直也只是知道其形式,而對其意義卻比較模糊,現在我根據單變數的協方差給出協方差矩陣的詳細推導以及在不同應用背景下的不同形式。變數說明 設為一組隨機變數,這些隨機變數構成隨機向量 每個隨機變數有 m個樣本,則有樣本矩陣 其中 對應著每個...

協方差矩陣的詳細說明

在做人臉識別的時候經常與協方差矩陣打交道,但一直也只是知道其形式,而對其意義卻比較模糊,現在我根據單變數的協方差給出協方差矩陣的詳細推導以及在不同應用背景下的不同形式。變數說明 設為一組隨機變數,這些隨機變數構成隨機向量 每個隨機變數有 m個樣本,則有樣本矩陣 其中 對應著每個隨機向量 x的樣本向量...

協方差矩陣的詳細說明

協方差矩陣的詳細說明 在做人臉識別的時候經常與協方差矩陣打交道,但一直也只是知道其形式,而對其意義卻比較模糊,現在我根據單變數的協方差給出協方差矩陣的詳細推導以及在不同應用背景下的不同形式。變數說明 設其中 單隨機變數間的協方差 隨機變數 根據已知的樣本值可以得到協方差的估計值如下 可以進一步地簡化...