Colors 通过编程逐步通过24位颜色光谱,得到x个平均颜色量

Colors 通过编程逐步通过24位颜色光谱,得到x个平均颜色量,colors,rgb,palette,Colors,Rgb,Palette,是的,我正在尝试重新发明轮子。:-。我正在做自己的图像压缩(测试一些通过tcp传输部分图像的想法)。无论如何我试图逐步通过24位rgb颜色,得到一个完整的线性范围,并(逐步通过)在x间隔的范围 我试图得到整个光谱的平均99种颜色。(24bit/99)=167488.6364,因此我希望以16K的间隔为99调色板绘制一种颜色 我很难理解RGB是如何工作的。。。这似乎不是线性范围…,还是有 我目前正在做以下工作: var_interval = (255 * 255 * 255) / 99 For

是的,我正在尝试重新发明轮子。:-。我正在做自己的图像压缩(测试一些通过tcp传输部分图像的想法)。无论如何我试图逐步通过24位rgb颜色,得到一个完整的线性范围,并(逐步通过)在x间隔的范围

我试图得到整个光谱的平均99种颜色。(24bit/99)=167488.6364,因此我希望以16K的间隔为99调色板绘制一种颜色

我很难理解RGB是如何工作的。。。这似乎不是线性范围…,还是有

我目前正在做以下工作:

var_interval = (255 * 255 * 255) / 99

 For r = 0 To 255
     For g = 0 To 255
          For b = 0 To 255

                    If var_counter = var_interval Then
                    objWriter.Write(r & "," & g & "," & b)

                    End If

                    var_counter += 1
           Next
     Next
 Next
我正在获取我的颜色,但如果愿意,此步骤不会生成“缩放”颜色


有什么想法吗?

当然有一种方法可以在颜色光谱中进行迭代,但你是否采用这种方法是你自己的选择:)。您可以使用HSL颜色空间(色调、饱和度和亮度)而不是RGB(红、绿、蓝)。色调表示哪种颜色(范围从0到360),饱和度是您想要的颜色的多少(0到100),亮度是您想要的亮度

所以,为了回答您的问题,您可以从色调中选择360/99作为采样率,选择您想要的一致值和强度,然后将其转换为RGB空间以显示它。有关转换,请参见:

有关HSL颜色空间的信息,请参阅:

没有线性的颜色范围。既然有RGB组件,你需要考虑一种三维的方法,当你可以定义3D颜色空间的线性路径时,你会选择哪个方向?精确地……这就是我发现的。。。这只是一大堆颜色,没有真正的标准结构?所以在这样的情况下,我必须为调色板“选择”我自己的颜色吗?巧合的是,我目前正试图找出如何从1670万种颜色中选择100种不同的颜色,以便进行映射。我可能会把它变成一个问题,但我喜欢你的问题,如果我发现了什么,我会留下评论。酷,那么我们现在就把这个留在这里?