2012-04-12 90 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)取這個像素。