gpt4 book ai didi

java - Android 上的着色图像处理

转载 作者:行者123 更新时间:2023-11-30 11:46:51 26 4
gpt4 key购买 nike

我试着关注 Image Processing – Tint Color (Yet Another) Tutorial ,但我不明白一些代码。我只知道一件事,即度数会影响音色的数量。你能给我解释一下吗?

以下是我看不懂的代码:

                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 channel 的颜色。我将逐行分解。

            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 时,图像将最接近正常颜色,随着角度的变化,它会倾向于将红色变为蓝色,将蓝色变为红色,而绿色将是两者的某种组合,主要取决于红色。

关于java - Android 上的着色图像处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com