如何绘制图像的色调分量

时间:2018-03-08 10:10:40

标签: image-processing hsl

我提取了图像的色调组件,我需要渲染它。色调是角度值范围[0° - 360°],使用最小 - 最大标准化将其标准化为[0 - 255]是不合理的,如下所示: value =(hue - 0)* 255 /(360 - 0)

知道如何将色调值标准化为[0 - 255]吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

在给定输入范围[inp_min - inp_max]和输出范围[out_min - out_max]的情况下,从一个范围标准化到另一个范围的常用方法是使用 out =(inp - inp_min)/(inp_max - inp_min)*(out_max - out_min)+ out_min

所以,使用: value =(hue-0)/(360-0)*(255-0)+ 0

或更简单: value = hue * 255/360

修改

所以从下面的评论中,我现在明白了这个问题。真正被问到的是如何将色调值转换为RGB三元组。使用wikipedia page on HSL/HSV作为参考:

h'= hue / 60

x =(1 - |(h'mod 2) - 1 |)* 255

if(h'< = 1)RGB =(255,x,0)

否则if(h'< = 2)RGB =(x,255,0)

否则if(h'< = 3)RGB =(0,255,x)

否则if(h'< = 4)RGB =(0,x,255)

否则if(h'< = 5)RGB =(x,0,255)

否则RGB =(255,0,x)

本质上,这是HSL计算,S = 100%,L = 50%

当然,最简单的方法是,如果您不需要自己进行计算,只需使用类似this website的内容。

答案 1 :(得分:0)

我假设您从RGB开始,并转换为HSV以获得H值。

显示此H值的最简单方法是为S(最大饱和度)分配一个较大的值,为V(不是最大强度,因为它导致白色)分配一个中间值,并应用逆变换(HSV到RGB) )。这产生具有H的颜色表示的RGB图像。

通过使用逆变换(我假设它来自用于RGB到HSV变换的相同库),确保使用相同的H定义。我已经看到了很多不同的HSV定义(以及HSI,HSL,ISH等等) - 似乎每个人都使用自己的定义。