[英]Tinting Image Processing on Android
我嘗試遵循“ 圖像處理-色彩着色(又是另一種)”教程 ,但是我不理解其中的某些代碼。 我只知道程度會影響色調的數量。 你能給我解釋一下嗎?
以下是我不理解的代碼:
int index = y * width + x;
int r = ( pix[index] >> 16 ) & 0xff;
int g = ( pix[index] >> 8 ) & 0xff;
int b = pix[index] & 0xff;
RY = ( 70 * r - 59 * g - 11 * b ) / 100;
GY = (-30 * r + 41 * g - 11 * b ) / 100;
BY = (-30 * r - 59 * g + 89 * b ) / 100;
Y = ( 30 * r + 59 * g + 11 * b ) / 100;
RYY = ( S * BY + C * RY ) / 256;
BYY = ( C * BY - S * RY ) / 256;
GYY = (-51 * RYY - 19 * BYY ) / 100;
本質上,這段代碼正在改變圖像中每個RBG通道的顏色。 我將逐行細分。
int r = ( pix[index] >> 16 ) & 0xff;
int g = ( pix[index] >> 8 ) & 0xff;
int b = pix[index] & 0xff;
上面的代碼只是獲取原始的紅色,藍色和綠色值。
RY = ( 70 * r - 59 * g - 11 * b ) / 100;
GY = (-30 * r + 41 * g - 11 * b ) / 100;
BY = (-30 * r - 59 * g + 89 * b ) / 100;
這些將在以后反饋,但是請注意,RY將主要是紅色,BY將主要是藍色,而GY將是綠色和紅色的混合物。 一個關鍵功能是所有3個乘法器的總和為0,因此保留了校正的中立性(圖像不會變得更亮)。 GY實際上並不重要,因為它在代碼中的其他任何地方都沒有使用。
Y = ( 30 * r + 59 * g + 11 * b ) / 100;
RYY = ( S * BY + C * RY ) / 256;
BYY = ( C * BY - S * RY ) / 256;
GYY = (-51 * RYY - 19 * BYY ) / 100;
同樣,只需應用公式即可獲得所需的着色效果。 S和C是傳遞給函數調用的角度的Sin和Cos值。 色調是所通過角度的函數。 角度為0時,圖像將最接近正常顏色,隨着角度的改變,它將趨於將紅色變為藍色,藍色變為紅色,綠色將是兩者的某種組合,主要取決於紅色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.