2

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

我试图在整个光谱中获得平均 99 种颜色。(24bit / 99) = 167488.6363636364 ,所以我想以 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

我得到了我的颜色,但如果你愿意,这一步不会生成“缩放”颜色。

有任何想法吗?

4

1 回答 1

3

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

因此,要回答您的问题,您可以将 360/99 作为您的色调采样率,选择您想要的一致值和强度,然后将其转换为 RGB 空间以显示它。转换见: http ://web2.clarkson.edu/class/image_process/RGB_to_HSI.pdf

有关 HSL 颜色空间的信息,请参见: http ://en.wikipedia.org/wiki/HSL_and_HSV

于 2011-11-03T23:01:17.147 回答