Java DIP - Conversion GrayScale

Pour convertir une image couleur en image en niveaux de gris, vous devez lire les pixels ou les données de l'image en utilisant File et ImageIO objets et stockez l'image dans BufferedImageobjet. Sa syntaxe est donnée ci-dessous -

File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);

De plus, obtenez la valeur du pixel en utilisant la méthode getRGB()et exécutez la méthode GrayScale () dessus. La méthode getRGB () prend l'index de ligne et de colonne comme paramètre.

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);

En dehors de ces trois méthodes, il existe d'autres méthodes disponibles dans la classe Color comme décrit brièvement -

Sr.No. Méthode et description
1

brighter()

Cela crée une nouvelle couleur qui est une version plus lumineuse de cette couleur.

2

darker()

Cela crée une nouvelle couleur qui est une version plus sombre de cette couleur.

3

getAlpha()

Il renvoie la composante alpha comprise entre 0 et 255.

4

getHSBColor(float h, float s, float b)

Il crée un objet Color basé sur les valeurs spécifiées pour le modèle de couleur TSL.

5

HSBtoRGB(float hue, float saturation, float brightness)

Il convertit les composants d'une couleur, comme spécifié par le modèle TSL, en un ensemble équivalent de valeurs pour le modèle RVB par défaut.

6

toString()

Il renvoie une représentation sous forme de chaîne de cette couleur.

La dernière étape consiste à ajouter ces trois valeurs et à la redéfinir sur la valeur de pixel correspondante. Sa syntaxe est donnée ci-dessous -

int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());

Exemple

L'exemple suivant illustre l'utilisation de la classe Java BufferedImage qui convertit une image en niveaux de gris -

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();
   }
}

Production

Lorsque vous exécutez l'exemple donné, il convertit l'image digital_image_processing.jpg à son image équivalente en niveaux de gris et écrivez-la sur le disque dur avec le nom grayscale.jpg.

Image originale

Image en niveaux de gris