获取灰度或黑白图像的每个像素的像素值?

时间:2012-04-12 09:49:42

标签: java image histogram pixels

任何人都可以建议我获取灰度图像的每个像素的实际像素值的方法吗?

我用这段代码来获取像素。但它只是给我一个像素的红色值?我不知道黑白或灰度图像是否包含RGB像素,所以请告诉我,我使用的方法是对还是错?而且当我为我的图像绘制直方图时,它与同一图像的imajeJ直方图完全相反。所以我想我的抓取灰度图像像素的方法是错误的

所以,如果错误是什么是获得像素的正确方法。 这是我的代码

 PlanarImage image = JAI.create("fileload", "C:\\16bit images\\alpXray.tiff");
 BufferedImage bi = image.getAsBufferedImage();
  int[] bins = new int[256];
 int b=0;
for (int x = 0; x < bi.getWidth(); x++) {

         for (int y = 0; y < bi.getHeight(); y++) {

             int p= bi.getRaster().getSample(x, y,b); // (1)  b=0 for red (2)b=1 for green(3) b=2 for bule

           p=p/256;

           bins[p]++;  
       }
 }

1 个答案:

答案 0 :(得分:1)

RGB图像的每个通道都是灰度级的。事实上,如果你想象一个单一的频道(GIMP,photoshop)你只能看到灰色阴影。

通常将rgb图像转换为灰色,您可以获取每个通道的三个值并执行算术平均值。 或者只是你采取一个渠道。 告诉我,如果我误解了这个问题..

编辑: 好。如果您有3通道灰度图像,可能每个通道上有3个通道具有相同的值。所以简单地为每个像素取单个通道的值。 如果你只有一个通道(16位)取这个像素。