2011-07-13 67 views
2

我一直在試驗HTML5 canvas api,並編寫了一個腳本,可以從彩色圖像中創建黑白圖像。RGB操作公式

爲RGB的公式爲灰度,我使用的是:r * 0.2989 + g * 0.5870 + b * 0.1140

我想知道是否有人通過RGB值操縱圖像的任何更多的公式知道。

+0

[RGB轉換爲灰度/強度]的可能重複(http://stackoverflow.com/questions/687261 /轉換-rgb-to-grayscale-intensity) –

+2

實際上這個問題比這個更廣泛。它一直在尋求改變圖像顏色的方法。 –

+0

謝謝彼得澄清 –

回答

5

這裏有一些

// ADD 
c = Math.min(255, Math.max(0, c0 + c1)) 
// SUBTRACT 
c = Math.max(0, c0 - c1) 
// MULTIPLY 
c = Math.floor((c1 * c0)/0xff) 
// SCREEN 
c = 255 - Math.floor((255 - c0) * (255 - c1)/255) 
// LIGHTEN 
c = c0 > c1 ? c0 : c1 
// DARKEN 
c = c0 < c1 ? c0 : c1 
// DIFFERENCE 
c = c0 > c1 ? c0 - c1 : c1 - c0 
// INVERT (no influence from c1) 
c = 255 - c0 
// OVERLAY 
c = c0 < 128 ? Math.floor((c1 * c0)/127) : 255 - Math.ceil((255 - c0) * (255 - c1)/127) 
// HARDLIGHT 
c = c1 < 128 ? Math.floor((c1 * c0)/127) : 255 - Math.ceil((255 - c0) * (255 - c1)/127) 

其中C0和C1是彩色的十進制值,c是輸出值

1

這裏是變暗的圖像的方式:

(r*0.5) + (g*0.5) + (b*0.5) 

還有其它幾種方法來操縱RGB的顏色,如閾值處理,交換顏色通道,僅示出紅,綠,或藍色通道,反轉色彩,以及對比度和亮度等等。使用這些關鍵字搜索Web可以揭示改變圖像顏色的其他方法。 This question解釋如何使現有色彩的色調或陰影。特別要注意關於線性RGB和伽馬校正的說法。