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



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

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

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

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

编辑:还行。如果您有 3 通道灰度缩放图像,则可能每个通道上有 3 个具有相同值的通道。因此,只需为每个像素取单个通道的值。如果您只有一个通道(16 位),请获取该像素。

最新更新