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]++;  
       }
 }
4

1 回答 1

1

RGB 图像的每个通道都是灰度的。事实上,如果您将单个通道(GIMP、photoshop)可视化,您只会看到灰色阴影。

通常要将 rgb 图像转换为灰色,您需要获取每个通道的三个值并进行算术平均值。或者干脆你采取一个单一的渠道。如果我误解了这个问题,请告诉我..

编辑:好的。如果您有 3 通道灰度图像,您可能有 3 个通道,每个通道具有相同的值。所以只需为每个像素取单个通道的值。如果您只有一个通道(16 位),请使用该像素。

于 2012-04-12T10:01:05.623 回答