为什么我们总是将RGB值除以255?我知道范围是[0-1]。但为什么只除以255?有人能解释一下RGB值的概念吗?
为什么我们总是将RGB值除以255?我知道范围是[0-1]。但为什么只除以255?有人能解释一下RGB值的概念吗?
RGB(红色,绿色,蓝色)每个颜色都是8位。
每个单独颜色的范围为0-255(因为2^8 = 256种可能性)。
组合范围为256*256*256。
通过除以255,0-255范围可以用0.0-1.0范围描述,其中0.0表示0(0x00),1.0表示255(0xFF)。
这是一个比较通用的问题,因为它可能与平台和方法有关。实际上,它归结为数学和获得0-1之间的值。由于255是最大值,将其除以255可以表示为0-1。
每个通道(红色、绿色和蓝色分别是通道)都是8位,因此它们各自限制为256,在这种情况下是255,因为0也被包括在内。如参考所示,当使用浮点值时,系统通常使用0-1之间的值。
http://en.wikipedia.org/wiki/RGB_color_model
请参阅数字表示。
这些范围可以用几种不同的方式来量化:从0到1,任何分数值都可以。这种表现形式通常用于理论分析和使用浮点表示的系统中。每个颜色组件值也可以写成百分比,从0%到100%。在计算机中,组件值通常存储为整数,范围在0到255之间,即单个8位字节可以提供的范围。这些通常表示为十进制或十六进制数字。高端数字图像设备通常能够处理每个主要颜色的更大整数范围,例如0..1023(10位)、0..65535(16位)或甚至更大的范围,通过将24位(三个8位值)扩展为32位、48位或64位单位(与特定计算机的字大小基本独立)。
=10110101
=1*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1
=128 + 32 + 16 + 4 + 1
=181
使用向量操作可以使操作更简单... 想象一下,你有一张图片,想把它的颜色变成红色。使用向量,你只需要取出每个像素并将其乘以 (1.0, 0.0, 0.0) 即可。
P * (1.0, 0.0, 0.0)
P * (255, 0, 0) / 255
而且想象一下使用更复杂的过滤器,不必要的步骤会堆积起来...
鉴于现在每个字节(二进制数字)由8位组成
假设我们有一个像这样填充的字节:
1 0 1 0 0 1 0 1
对于每一位,你有两种可能性:0或1
2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 2^8 = 256
总数:256
And for hexadecimal colors :
given that you have 3 couples of characters, dash excluded => ex: #00ff00
0, 1, 2, 3, 4 , 5, 6, 7, 8, 9, a, b, c, d, e, f = 16 possibilities
16 x 16 = 256
R V B = color
256 x 256 x 256 = 16 777 216 colors)