gpt4 book ai didi

java - 颜色量化稀释纯白色

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:30 26 4
gpt4 key购买 nike

我有一个简单的量化函数

public static int quantize(int oldpixel) {

int r = (oldpixel >> 16) & 0xff;
int g = (oldpixel >> 8) & 0xff;
int b = (oldpixel >> 0) & 0xff;

int color = 0xff << 24 | (((int) ((r) / 32) * 32) & 0xff) << 16 |
(((int) ((g) / 32) * 32) & 0xff) << 8 |
(((int) ((b) / 32) * 32)& 0xff) << 0;
return color;
}

它的作用是将颜色减少到较低细节的颜色,然后扩展它,这人为地限制了调色板,我将它用作抖动过滤器,通过该函数生成的图像

在: Unquantized hue wheel出去: Quantized hue wheel

结果几乎是完美的,除了白色减少为灰色,我知道原因是我在算法中划分颜色的地板,但我不知道如何解决这个问题,任何建议将不胜感激

enter image description here

enter image description here

最佳答案

将每个分量除以 32 后,得到一个 0 到 7 之间的整数。您尝试将其映射回 0 到 255 的范围,这样 0 就是 0,7 就是 255。

您可以通过将其乘以 255/7 来完成此操作,该值恰好约为 36.428。

您可以使用类似 (int)((r/32) * (255.0/7.0)) 的内容,但 Java 中的强制转换很丑陋。为了改进这一点,您可以将其包装在一个函数中,并使用 quantizeChannel(r)quantizeChannel(g)quantizeChannel(b)。或者您可以交换顺序并使用整数算术:r/32 * 255/7

关于java - 颜色量化稀释纯白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788846/

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