Учебники

Java DIP — Преобразование GrayScale

Чтобы преобразовать цветное изображение в изображение в градациях серого, необходимо прочитать пиксели или данные изображения, используя объекты 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 доступны и другие методы, которые кратко описаны ниже.

Sr.No. Метод и описание
1

ярче ()

Это создает новый Цвет, который является более яркой версией этого Цвета.

2

темнее ()

Он создает новый цвет, который является более темной версией этого цвета.

3

getAlpha ()

Возвращает альфа-компонент в диапазоне 0-255.

4

getHSBColor (float h, float s, float b)

Он создает объект Color на основе указанных значений для цветовой модели HSB.

5

HSBtoRGB (цвет поплавка, насыщенность поплавка, яркость поплавка)

Он преобразует компоненты цвета, как определено моделью HSB, в эквивалентный набор значений для модели RGB по умолчанию.

6

нанизывать()

Возвращает строковое представление этого цвета.

ярче ()

Это создает новый Цвет, который является более яркой версией этого Цвета.

темнее ()

Он создает новый цвет, который является более темной версией этого цвета.

getAlpha ()

Возвращает альфа-компонент в диапазоне 0-255.

getHSBColor (float h, float s, float b)

Он создает объект Color на основе указанных значений для цветовой модели HSB.

HSBtoRGB (цвет поплавка, насыщенность поплавка, яркость поплавка)

Он преобразует компоненты цвета, как определено моделью HSB, в эквивалентный набор значений для модели RGB по умолчанию.

нанизывать()

Возвращает строковое представление этого цвета.

Последний шаг — добавить все эти три значения и снова установить для них значение соответствующего пикселя. Его синтаксис приведен ниже —

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 .