在RGB模型中,每个像素由3个字节定义,分别用于R,G和B. 这给出了一个总的2点24的颜色,包括256种色调的灰色.
用floats(非bytes)表示HSV/HSB/HSL模型是很常见的.大多数描述将色调描述为锥形中的"角度",因此将其视为实数是明智的.
但这与2 24种总颜色的实际限制有何关系?有多少种不同的色调?更重要的是,在我看来,这个数字应该取决于其他参数 - 例如饱和度.
在HSV中,色调定义为
H = atan2( sqrt(3)*(G-B), 2R-G-B )
Run Code Online (Sandbox Code Playgroud)
(链接).在六个部门(RY,YG ......)的每个部门中,都有相同的色调.此外,区域之间的边界有六种色调.所以,6 + 6 * huesRY.
在红黄色区域,R> G> B,因此atan2的两个参数都是正的.
count sqrt(3) * (G-B) / (2R-G-B)
=count (G-B) / (2R-G-B)
=count (G-B) / ((G-B) + (2R-2G))
Run Code Online (Sandbox Code Playgroud)
因为我们可以对[x,y]的集合应用任何线性变换而不改变其比率的计数, x / (x+2y) == x / y
=count (G-B) / (R-G)
Run Code Online (Sandbox Code Playgroud)
如果我们从所有R,G,B中减去相同的值,则该比率不会改变,因此假设B = 0
=count G / (R-G)
=count G / R
Run Code Online (Sandbox Code Playgroud)
因此,两个正整数之间的比率是低于2 ^ 8(假设每个通道为8位),还有六个以上的比例是六倍.存在与成对的互质正整数一样多的比率.下面正整数的数量n是互质与n被称为欧拉函数.OEIS 列出了 它的 部分金额.在256以下,正好有19948对互质正整数.
6*19948 + 6 = 119 694
HSV模型中恰好有119 694种不同的色调,对应于8位RGB模型中的颜色.请注意,它们的间距不均匀.
如果在HSV模型中使用每个通道8比特,那么颜色少于RGB模型中每个通道8比特的颜色,因为一些HSV三元组映射到相同的颜色,而每个RGB三元组定义不同的颜色.
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |