gpt4 book ai didi

floating-point - 为什么从 0.0-1.0 区间转换时需要将 RGB 值乘以 256 而不是 255?

转载 作者:行者123 更新时间:2023-12-05 00:50:20 25 4
gpt4 key购买 nike

我在这个问题上读到了一种舍入技术。 Converting color value from float 0..1 to byte 0..255

您有一个介于 0 到 1 之间的 float ,并且您希望将其映射到 0-255 的字节整数范围。因此,您将 0-1 数字乘以 255f,然后将该数字转换为一个字节。因为所有转换都只是 float 的小数部分,所以您需要一种方法来实现它,因此当它被限制时,它将获得所需的舍入结果。

我的想法是在转换为字节之前添加 0.5f。

但是,我在链接的那个页面上发现了一些我不理解的新内容。他将 0-1 映射到 256,而这会以某种方式实现四舍五入的结果。

我测试了值以查看它是否有效,并且看起来确实有效。我只是不明白为什么。谁能给我一个证明?

最佳答案

它是 Fencepost error 的一个特例.在您只有两种颜色(黑色和白色)的情况下,您可以看到最简单的解释。因此很容易看出,您必须将区间 0-1 除以 2

这可以通过将间隔乘以稍小的除法数字并截断结果来轻松实现。这也是随机数生成器返回值 >= 0 和 < 1.0 以轻松获得等概率值的原因。

所以在这个例子中你得到了正确的结果,value = floorf(1.9999*x)。

问题在于,虽然颜色索引以数字 1 结尾,但实际上有两种颜色(0 和 1),因此必须将间隔除以 2。因此,对于 256 种颜色 (0-255),您需要除以数字 256。人们可能会注意到 0 也是一个有效值,并且必须正确映射。

关于floating-point - 为什么从 0.0-1.0 区间转换时需要将 RGB 值乘以 256 而不是 255?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020482/

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