5

ピクセル値の配列として保存されている画像があります。この画像に明るさまたはコントラストのフィルターを適用できるようにしたいと考えています。これを達成するために使用できる簡単な方法またはアルゴリズムはありますか。

これが私のコードです...

   PlanarImage img=JAI.create("fileload","C:\\aimages\\blue_water.jpg");
   BufferedImage image = img.getAsBufferedImage();

   int w = image.getWidth();
   int h = image.getHeight();
   int k = 0;

   int[] sbins = new int[256];
   int[] pixel = new int[3];

   Double d = 0.0;
   Double d1;
   for (int x = 0; x < bi.getWidth(); x++) {
       for (int y = 0; y < bi.getHeight(); y++) {
           pixel = bi.getRaster().getPixel(x, y, new int[3]);
           k = (int) ((0.2125 * pixel[0]) + (0.7154 * pixel[1]) + (0.072 * pixel[2]));
           sbins[k]++;
       }
   }
4

1 に答える 1

7

私の提案は、ピクセル値を自分で調整しようとするのではなく、Java の組み込みメソッドを使用して明るさとコントラストを調整することです。このようなことを行うと、かなり簡単に思えます...

float brightenFactor = 1.2f

PlanarImage img=JAI.create("fileload","C:\\aimages\\blue_water.jpg");
BufferedImage image = img.getAsBufferedImage();

RescaleOp op = new RescaleOp(brightenFactor, 0, null);
image = op.filter(image, image);

浮動小数点数は明るさのパーセンテージです。私の例では、明るさを既存の値の 120% に増やします (つまり、元の画像よりも 20% 明るくなります)。

同様の質問については、このリンクを参照してください... JavaでBufferedImageの明るさとコントラストを調整する

アプリケーションの例については、このリンクを参照してください... http://www.java2s.com/Code/Java/Advanced-Graphics/BrightnessIncreaseDemo.htm

于 2012-04-11T13:20:48.897 に答える