GrayScale(每像素8位)Java中的Image Pixel Manipulation

时间:2011-04-18 16:57:03

标签: java image-manipulation pixel pixel-manipulation

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

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

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

更新1

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

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

1 个答案:

答案 0 :(得分:0)

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

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

编辑:如果灰度等级为128(或0x80),我预计RGB为128,128,128或0x808080。