簡體   English   中英

在Android上為圖像處理着色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM