【问题标题】:Convert 24-bit image RGB to 3-bit 8-color将 24 位图像 RGB 转换为 3 位 8 色
【发布时间】:2012-07-17 20:53:17
【问题描述】:

我可以使用BufferedImage 获取 640x640 图像的每个像素的 RGB 值,输出如下所示:

[...]
Pixel :(640, 634) RGB: 166 94 82
Pixel :(640, 635) RGB: 166 94 80
Pixel :(640, 636) RGB: 163 91 77
Pixel :(640, 637) RGB: 157 88 73
Pixel :(640, 638) RGB: 157 88 73
Pixel :(640, 639) RGB: 159 90 74
Pixel :(640, 640) RGB: 158 89 73
This image has 69197 colors.

我需要将这种方式获得的每种 RGB 颜色分类为 3 位 RGB(8 种颜色),我需要知道如何做到这一点...如何知道每种颜色的 RGB 范围3 位 RGB 的 8 种颜色。谢谢!

【问题讨论】:

标签: java rgb bufferedimage color-palette


【解决方案1】:

您生成的图像对于每个颜色分量将有 1 位。

例如,对于红色,您应该这样做:

 red1Bit = redOriginal > 127 ? 1 : 0;

你也应该为蓝色和绿色做同样的事情。

【讨论】:

    【解决方案2】:

    24 位 RGB 调色板对红色、绿色和蓝色颜色分量各使用 8 位:

    RGB([0..255], [0..255], [0..255]).

    3 位 RGB 调色板对红色、绿色和蓝色分量各使用 1 位:

    RGB([0..1], [0..1], [0..1]).

    由于每个通道的范围只有两个值,因此需要将 8 位编码减少为 1 位编码。为此,除以八位编码中最大值的一半 (255 / 2 = 127)

    您可以使用整数除法来转换每个 RGB 分量:

    3 bit R : (8-bit Red Value) / 127
          G : (8-bit Green Value) / 127 
          B : (8-bit Blue Value) / 127 
    

    例子:

    3 bit R : (56) / 127 = 0
          G : (225) / 127 = 1
          B : (127) / 127 = 1
    

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多