java实现图像对比度增强_java图片对比度调整示例代码
时间: 2023-11-12 20:15:00 浏览: 54
Java实现图像对比度增强的方法如下:
1. 首先读取原始图片,并将其转换为灰度图像。
2. 计算图像的平均灰度值。
3. 计算每个像素与平均灰度值的差值,并将其乘以一个系数k,得到新的像素值。
4. 将新的像素值限制在0~255之间。
5. 将处理后的像素值重新写入图片中。
下面是Java图片对比度调整的示例代码:
```java
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ContrastEnhancement {
public static void main(String[] args) throws IOException {
// 读取原始图片
File file = new File("original.jpg");
BufferedImage image = ImageIO.read(file);
// 将图片转换为灰度图像
BufferedImage grayImage = new BufferedImage(image.getWidth(), image.getHeight(),
BufferedImage.TYPE_BYTE_GRAY);
Graphics g = grayImage.getGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
// 计算图像的平均灰度值
int sum = 0;
int count = 0;
for (int i = 0; i < grayImage.getWidth(); i++) {
for (int j = 0; j < grayImage.getHeight(); j++) {
int gray = new Color(grayImage.getRGB(i, j)).getRed();
sum += gray;
count++;
}
}
int average = sum / count;
// 计算每个像素与平均灰度值的差值,并将其乘以一个系数k,得到新的像素值
double k = 1.5;
BufferedImage contrastImage = new BufferedImage(grayImage.getWidth(), grayImage.getHeight(),
BufferedImage.TYPE_BYTE_GRAY);
for (int i = 0; i < grayImage.getWidth(); i++) {
for (int j = 0; j < grayImage.getHeight(); j++) {
int gray = new Color(grayImage.getRGB(i, j)).getRed();
int newGray = (int) (k * (gray - average) + average);
// 将新的像素值限制在0~255之间
if (newGray < 0) {
newGray = 0;
} else if (newGray > 255) {
newGray = 255;
}
contrastImage.setRGB(i, j, new Color(newGray, newGray, newGray).getRGB());
}
}
// 写入处理后的图片
File contrastFile = new File("contrast.jpg");
ImageIO.write(contrastImage, "jpg", contrastFile);
}
}
```
本示例代码将原始图片转换为灰度图像,并计算出平均灰度值。然后使用一个系数k来计算新的像素值,最后将像素值限制在0~255之间。处理后的图片将被写入文件中。你可以根据自己的需求修改代码中的系数k来调整对比度。