2012-04-12 188 views
2

任何人可以建议我得到一个灰度图像的每个像素的实际像素值的方法?获取灰度或黑白图像的每个像素的像素值?

我使用此代码来获取像素。但它只是给我一个像素的红色值?我不知道黑白或灰度图像是否包含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

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

通常要将rgb图像转换为灰色,您需要对每个通道的三个值进行算术平均。 或者你只需​​要一个频道。 告诉我,如果我误解了这个问题..

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