Java DIP - 灰度转换


为了将彩色图像转换为灰度图像,您需要使用FileImageIO对象读取图像的像素或数据,并将图像存储在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写入硬盘。

原始图像

灰度转换教程

灰度图像

Java 图像处理教程