灰度(每像素8位)在Java图像像素处理

问题描述:

听说在灰度图片包含有8位颜色深度被存储在每个像素的字节的第7位的数据和最后一点保持不变!所以我们可以使用所有像素的最后一位来存储一些信息,这是真的吗?灰度(每像素8位)在Java图像像素处理

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

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

更新1

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

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

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

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

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

+0

我已更新我的问题。 – ehsun7b 2011-04-18 17:29:05

+0

我已经更新了我的答案。那是你看到的吗? – 2011-04-19 08:31:13

+0

我完全无法理解它!我怎样才能得到单个像素的字节值? – ehsun7b 2011-04-19 18:37:57