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、フォトショップ)を視覚化すると、灰色の色合いしか表示されません。

通常、RGB画像をグレーに変換するには、すべてのチャネルの3つの値を取得し、算術平均を実行します。または単に単一のチャネルを取ります。質問を誤解したかどうか教えてください。

編集:わかりました。3チャンネルのグレースケール画像がある場合は、おそらく各チャンネルに同じ値の3チャンネルがあります。したがって、各ピクセルの単一チャネルの値を取得するだけです。(16ビットの)チャネルが1つしかない場合は、そのピクセルを使用します。

于 2012-04-12T10:01:05.623 に答える