[英]GrayScale (8bit per pixel) Image Pixel Manipulation in Java
我听说,色深为8位的 灰度图像中的数据存储在每个像素字节的前7位中,最后一位保持不变! 这样我们就可以使用所有像素的最后一位来存储一些信息,这是真的吗?
如果是这样,如何在单个像素中解释数据? 我的意思是没有红色,蓝色和绿色! 那么这些位是什么意思?
以及如何计算图像所有像素的平均值? 我更喜欢使用纯Java类,而不是JAI或其他第三方。
更新1
BufferedImage image = ...; // loading image
image.getRGB(i, j);
getRGB方法始终返回一个大于一个字节的整数 !!! 我该怎么办?
我的理解是8位色深意味着每个像素有8位(即1个字节),而Red,Gren和Blue都是这个值。 例如,灰度= 192表示红色= 192,绿色= 192,蓝色= 192。 没有7位加另外1位。
AFAIK,您只能使用正常平均值。 但是,我将使用long
作为总和,并确保每个字节都是无符号的,即`b&0xff
编辑:如果灰度是说128(或0x80),我希望RGB是128,128,128或0x808080。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.