如果您的红色,绿色和蓝色值范围为0-255,那么获得仅仅色调值的最快计算是什么?该公式将用于每秒30fps(每秒920万次)的640×480图像的每个像素,因此每一点速度优化都有帮助.
我看过其他的公式,但我不满意他们涉及到多少步骤.我正在寻找一个实际的公式,而不是内置的库函数.
解决方法
>将RGB值转换到范围0-1,可以通过将值除以255来获得8位颜色深度(r,g,b – 是给定值):
R = r / 255 = 0.09 G = g / 255 = 0.38 B = b / 255 = 0.46
>查找R,G和B的最小值和最大值.
>根据RGB颜色通道是最大值.三种不同的公式是:
如果红色最大,则Hue =(G-B)/(max-min)
如果Green最大,则Hue = 2.0(B-R)/(max-min)
如果Blue最大,则Hue = 4.0(R-G)/(max-min)
您获得的色调值需要乘以60才能将其转换为色圈上的度数.如果色相为负,则需要添加360,因为圆有360度.
这是full article.