如何改变存储作为像素值的图像的对比度和亮度(How to change the contrast a

2019-06-23 13:36发布

我有存储作为像素值的阵列的图像。 我希望能够到一个亮度或对比度过滤器适用于这一形象。 有没有什么简单的办法,或者算法,我可以用它来实现这一目标。

这里是我的代码...

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

Answer 1:

我的建议是使用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



文章来源: How to change the contrast and brightness of an image stored as pixel values