为什么 Microsoft 将其 HSL 范围重新调整为 [0-240]?
Why Microsoft rescaled their HSL ranges to [0-240]?
我在大学学的是数字图像处理,现在在做一个工作,要把RGB值转换成HSL,而且要和Microsoft Paint一样。当我完成实现时,我看到它不等于 Paint,搜索我发现他们没有使用 [0-360] 范围,作为通常的实现方式,而是 [0-240] 范围。
但即使读了它我也不明白为什么要这样做。
有几个原因。
我们真的更喜欢只有 256 个值的范围。在这种情况下,我们可以将数据存储在一个字节中。我们可能会使用两个字节,但这样我们的内存使用量就会加倍。或者只是使用超过 8 位,但是我们必须在做任何有趣的事情之前对每个像素进行位操作,所以效率非常低。注意:对于两个字节,我们可以使用半浮点数,这在某些情况下非常有用,但浮点数在各种计算上也很低效(但你做过滤器和层组合)。
第二个原因在您包含在问题中的 link 中说明,但它可能需要更多信息:在许多格式(尤其是视频或电视)中,我们的范围有限(不是 0到 255,但 16 到 235 或 16 到 240)。原因很少:模拟信号可能有比黑色更多的黑色(这可能是不可能的)和更多的白色而不是白色(现实的)。我们刚刚校准了电视以定义白点和黑点(广播公司可能会过滤掉低于黑色的点。出于某些原因这很有用(转换模拟数据,白多于白是我们经常遇到的颜色)。随着数字化,电视需要模拟到数字转换器(和相反)。这些转换器成本(和更多位:更多成本),并且我们已经出于其他原因使用了“可见颜色”范围(模拟信号)之外的数据,外部颜色。因此,为了根据数据类型(或转换器上的更多位)进行不同的转换,我们只是保持有限的范围。
对于每一种颜色操作,都应该检查范围(以及颜色的定义space)。量化可能也是一个问题(许多专业软件使用浮点数,所以我们对范围的限制较少(但浮点数还有其他原因,例如线性工作时的精度和效率space [没有伽玛校正] )。注意:你应该只关心与最大值的比值。角度有不同的度量:360 度,400 度,或 2 Pi(最常见的,有时,特别是在过去,你可能会写成十进制度(或其他因素,例如 3600、36000 或 21600 [度数分钟])。用户界面可能只是显示不同的约定(对用户来说更方便)。
更复杂的是,HSL 转换不是那么精确,如果您想要精确的 H、S 和 L(在更严格的定义中),只需一个快速的快捷方式。
简答
色调为240的原因只是为了使用一个int(8位整数)作为值,这是过去时代的残余。
更长的答案
关于接受的答案:它与数字视频代码值完全无关,与 AtoD 转换器无关,也与视频范围的目的等其他评论无关
使用具有 240 个值而不是 360 个值的色调可以追溯到计算机没有数学协处理器的时候(即可能在 OP 出生之前,考虑到他现在在上大学,但我自己约会哈哈)。如果没有数学协处理器,用浮点数做任何事情都是一个严重的性能瓶颈。此外,低 CPU 速度、有限的 RAM 等……当时为提高效率所做的很多工作在今天可能毫无意义。
请记住,我们谈论的是 十年 之前,一台掌上电脑可以连接到世界上所有的知识,它也恰好兼作 phone 、相机、带有您当前位置的地图、音乐播放器、语音到文本翻译器、视频制作系统和亮度可调手电筒...
哈哈
回到 80 年代末/90 年代初,8 位整数数学几乎是所有事情的完成方式,而走出 8 位整数区域是......是上坡路...... . 双向!! ....
将 360 减少到 240 时,该值保持在 8 位,优点是正好是 360 的 2/3。
由于 RGB 显示器中有三个原色,因此 HSL 会相应地进行分解。如果你把 sRGB 看成一个“立方体”,一个角是黑色,一个角是白色,那么你有 6 个角作为完全饱和度的最大值,比如#f00 代表红色,#0ff 代表浅绿色。
HSL 不是一种感知上统一的颜色模型 — 它只是一种让用户“直观地”进行颜色调整的低技术含量方法。
旁注
颜色(色调)不作为“角度”存在。颜色实际上不是真实的,只是可见光的波长,从长于 700 纳米(红色)到短于 400 纳米(蓝色)。颜色的感觉只是一种知觉;你的神经系统的一个功能。
尽管如此,将它们编码为一个圆圈使其相当直观。因此,在任何将颜色值定义为角度的应用程序中,这纯粹是一种方便的构造。
说到方便,我连接到世界所有知识的手持电脑正在对我发出哔哔声,提醒我该喂猫了。 而且它甚至不像我们在 80 年代那样发出哔哔声。这是立体声竖琴声,背景中有一些管铃...
编辑添加:
“双向上坡”是一个在美国很常见的老人笑话,而且我发现自己越来越经常讲这个笑话,在我这个年纪,哈哈......我不老实说,我知道它对欧盟的翻译效果如何...
我在大学学的是数字图像处理,现在在做一个工作,要把RGB值转换成HSL,而且要和Microsoft Paint一样。当我完成实现时,我看到它不等于 Paint,搜索我发现他们没有使用 [0-360] 范围,作为通常的实现方式,而是 [0-240] 范围。
但即使读了它我也不明白为什么要这样做。
有几个原因。
我们真的更喜欢只有 256 个值的范围。在这种情况下,我们可以将数据存储在一个字节中。我们可能会使用两个字节,但这样我们的内存使用量就会加倍。或者只是使用超过 8 位,但是我们必须在做任何有趣的事情之前对每个像素进行位操作,所以效率非常低。注意:对于两个字节,我们可以使用半浮点数,这在某些情况下非常有用,但浮点数在各种计算上也很低效(但你做过滤器和层组合)。
第二个原因在您包含在问题中的 link 中说明,但它可能需要更多信息:在许多格式(尤其是视频或电视)中,我们的范围有限(不是 0到 255,但 16 到 235 或 16 到 240)。原因很少:模拟信号可能有比黑色更多的黑色(这可能是不可能的)和更多的白色而不是白色(现实的)。我们刚刚校准了电视以定义白点和黑点(广播公司可能会过滤掉低于黑色的点。出于某些原因这很有用(转换模拟数据,白多于白是我们经常遇到的颜色)。随着数字化,电视需要模拟到数字转换器(和相反)。这些转换器成本(和更多位:更多成本),并且我们已经出于其他原因使用了“可见颜色”范围(模拟信号)之外的数据,外部颜色。因此,为了根据数据类型(或转换器上的更多位)进行不同的转换,我们只是保持有限的范围。
对于每一种颜色操作,都应该检查范围(以及颜色的定义space)。量化可能也是一个问题(许多专业软件使用浮点数,所以我们对范围的限制较少(但浮点数还有其他原因,例如线性工作时的精度和效率space [没有伽玛校正] )。注意:你应该只关心与最大值的比值。角度有不同的度量:360 度,400 度,或 2 Pi(最常见的,有时,特别是在过去,你可能会写成十进制度(或其他因素,例如 3600、36000 或 21600 [度数分钟])。用户界面可能只是显示不同的约定(对用户来说更方便)。
更复杂的是,HSL 转换不是那么精确,如果您想要精确的 H、S 和 L(在更严格的定义中),只需一个快速的快捷方式。
简答
色调为240的原因只是为了使用一个int(8位整数)作为值,这是过去时代的残余。
更长的答案
关于接受的答案:它与数字视频代码值完全无关,与 AtoD 转换器无关,也与视频范围的目的等其他评论无关
使用具有 240 个值而不是 360 个值的色调可以追溯到计算机没有数学协处理器的时候(即可能在 OP 出生之前,考虑到他现在在上大学,但我自己约会哈哈)。如果没有数学协处理器,用浮点数做任何事情都是一个严重的性能瓶颈。此外,低 CPU 速度、有限的 RAM 等……当时为提高效率所做的很多工作在今天可能毫无意义。
请记住,我们谈论的是 十年 之前,一台掌上电脑可以连接到世界上所有的知识,它也恰好兼作 phone 、相机、带有您当前位置的地图、音乐播放器、语音到文本翻译器、视频制作系统和亮度可调手电筒...
哈哈
回到 80 年代末/90 年代初,8 位整数数学几乎是所有事情的完成方式,而走出 8 位整数区域是......是上坡路...... . 双向!! ....
将 360 减少到 240 时,该值保持在 8 位,优点是正好是 360 的 2/3。
由于 RGB 显示器中有三个原色,因此 HSL 会相应地进行分解。如果你把 sRGB 看成一个“立方体”,一个角是黑色,一个角是白色,那么你有 6 个角作为完全饱和度的最大值,比如#f00 代表红色,#0ff 代表浅绿色。
HSL 不是一种感知上统一的颜色模型 — 它只是一种让用户“直观地”进行颜色调整的低技术含量方法。
旁注
颜色(色调)不作为“角度”存在。颜色实际上不是真实的,只是可见光的波长,从长于 700 纳米(红色)到短于 400 纳米(蓝色)。颜色的感觉只是一种知觉;你的神经系统的一个功能。
尽管如此,将它们编码为一个圆圈使其相当直观。因此,在任何将颜色值定义为角度的应用程序中,这纯粹是一种方便的构造。
说到方便,我连接到世界所有知识的手持电脑正在对我发出哔哔声,提醒我该喂猫了。 而且它甚至不像我们在 80 年代那样发出哔哔声。这是立体声竖琴声,背景中有一些管铃...
编辑添加:
“双向上坡”是一个在美国很常见的老人笑话,而且我发现自己越来越经常讲这个笑话,在我这个年纪,哈哈......我不老实说,我知道它对欧盟的翻译效果如何...