- Java数字图像处理
- DIP - 主页
- DIP - 简介
- DIP - Java BufferedImage 类
- DIP - 图像下载和上传
- DIP - 图像像素
- DIP - 灰度转换
- DIP - 增强图像对比度
- DIP - 增强图像亮度
- DIP - 增强图像清晰度
- DIP - 图像压缩技术
- DIP - 添加图像边框
- DIP - 图像Pyramid
- DIP - 基本阈值
- DIP - 图像形状转换
- DIP - 高斯滤波器
- DIP - 箱式过滤器
- DIP - 腐蚀和膨胀
- DIP - 水印
- DIP - 理解卷积
- DIP - Prewitt 操作员
- DIP - 索贝尔操作员
- DIP - 基尔希运算符
- DIP - 罗宾逊操作员
- DIP - 拉普拉斯算子
- DIP - 加权平均滤波器
- DIP - 创建缩放效果
- DIP - 开源库
- DIP - OpenCV 简介
- DIP - 灰度转换 OpenCV
- DIP - 色彩空间转换
- DIP 有用资源
- DIP - 快速指南
- DIP - 有用的资源
- DIP - 讨论
Java DIP - 灰度转换
为了将彩色图像转换为灰度图像,您需要使用File和ImageIO对象读取图像的像素或数据,并将图像存储在BufferedImage对象中。其语法如下 -
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
此外,使用getRGB()方法获取像素值并对其执行 GrayScale() 方法。getRGB() 方法将行和列索引作为参数。
Color c = new Color(image.getRGB(j, i)); int red = (c.getRed() * 0.299); int green =(c.getGreen() * 0.587); int blue = (c.getBlue() *0.114);
除了这三种方法之外,Color 类中还有其他可用的方法,如简要所述 -
| 先生。 | 方法及说明 |
|---|---|
| 1 |
更亮() 它创建了一种新颜色,该颜色是该颜色的更亮版本。 |
| 2 |
较暗() 它创建了一种新颜色,该颜色是该颜色的较暗版本。 |
| 3 |
获取阿尔法() 它返回 0-255 范围内的 alpha 分量。 |
| 4 |
getHSBColor(浮点数 h, 浮点数 s, 浮点数 b) 它根据 HSB 颜色模型的指定值创建一个 Color 对象。 |
| 5 |
HSBtoRGB(浮动色调、浮动饱和度、浮动亮度) 它将 HSB 模型指定的颜色分量转换为默认 RGB 模型的等效值集。 |
| 6 |
toString() 它返回此颜色的字符串表示形式。 |
最后一步是将这三个值全部相加并再次设置为相应的像素值。其语法如下 -
int sum = red+green+blue; Color newColor = new Color(sum,sum,sum); image.setRGB(j,i,newColor.getRGB());
例子
以下示例演示了如何使用 Java BufferedImage 类将图像转换为灰度 -
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class GrayScale {
BufferedImage image;
int width;
int height;
public GrayScale() {
try {
File input = new File("digital_image_processing.jpg");
image = ImageIO.read(input);
width = image.getWidth();
height = image.getHeight();
for(int i=0; i<height; i++) {
for(int j=0; j<width; j++) {
Color c = new Color(image.getRGB(j, i));
int red = (int)(c.getRed() * 0.299);
int green = (int)(c.getGreen() * 0.587);
int blue = (int)(c.getBlue() *0.114);
Color newColor = new Color(red+green+blue,
red+green+blue,red+green+blue);
image.setRGB(j,i,newColor.getRGB());
}
}
File ouptut = new File("grayscale.jpg");
ImageIO.write(image, "jpg", ouptut);
} catch (Exception e) {}
}
static public void main(String args[]) throws Exception {
GrayScale obj = new GrayScale();
}
}
输出
当您执行给定的示例时,它将图像digital_image_processing.jpg转换为其等效的灰度图像,并将其以名称Grayscale.jpg写入硬盘。
原始图像
灰度图像
