我听说 gray-scale 图像中带有 8-bits 颜色深度的数据存储在每个像素的一个字节的前7位中,最后一位保持不变!所以我们可以使用所有像素的最后一位存储一些信息,这是真的吗?
如果是这样,如何在单个像素中解释数据?我的意思是没有红色,蓝色和绿色!那些位是什么意思呢?
如何计算图像所有像素的平均值?我更喜欢使用纯java类而不是 JAI 或其他第三方 .
Update 1
BufferedImage image = ...; // loading image
image.getRGB(i, j);
getRGB方法总是返回一个大于一个字节的 int !我该怎么办?
1 回答
我的理解是8位颜色深度意味着每像素有8位(即一个字节),红色,Gren和蓝色都是这个值 . 例如greyscale = 192表示红色= 192,绿色= 192,蓝色= 192 . 没有7位加上另外1位 .
AFAIK,您可以使用正常平均值 . 但是我会使用
long
作为和,并确保每个字节都是无符号的,即`b&0xff编辑:如果灰度是128(或0x80),我希望RGB为128,128,128或0x808080 .