灰度(每像素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。
我已更新我的问题。 – ehsun7b 2011-04-18 17:29:05
我已经更新了我的答案。那是你看到的吗? – 2011-04-19 08:31:13
我完全无法理解它!我怎样才能得到单个像素的字节值? – ehsun7b 2011-04-19 18:37:57