1

我听说8位色深的灰度图像中的数据存储在每个像素的一个字节的前7位中,最后一位保持不变!所以我们可以使用所有像素的最后一位来存储一些信息,是真的吗?

如果是这样,如何在单个像素中解释数据?我的意思是没有红色,蓝色和绿色!那么这些位是什么意思?

以及如何计算图像所有像素的平均值?我更喜欢使用纯 Java 类而不是JAI或其他第三方。

更新 1

BufferedImage image = ...; // loading image
image.getRGB(i, j);

getRGB 方法总是返回一个大于一个字节的int !!!我应该怎么办?

4

1 回答 1

0

我的理解是 8 位颜色深度意味着每个像素有 8 位(即一个字节),红色、绿色和蓝色都是这个值。例如,灰度=192 表示红色=192,绿色=192,蓝色=192。没有 7 位加上另外 1 位。

AFAIK,您可以使用正常平均值。但是我会使用long总和并确保每个字节都是无符号的,即 `b & 0xff

编辑:如果灰度是 128(或 0x80),我希望 RGB 为 128,128,128 或 0x808080。

于 2011-04-18T17:01:59.210 回答