Java DIP - Conversione in scala di grigi
Per convertire un'immagine a colori in un'immagine in scala di grigi, è necessario leggere i pixel oi dati dell'immagine utilizzando File e ImageIO oggetti e memorizza l'immagine in formato BufferedImageoggetto. La sua sintassi è data di seguito:
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);Inoltre, ottieni il valore del pixel usando il metodo getRGB()ed eseguire il metodo GrayScale () su di esso. Il metodo getRGB () accetta l'indice di riga e colonna come parametro.
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);Oltre a questi tre metodi, ci sono altri metodi disponibili nella classe Color come descritto brevemente:
| Sr.No. | Metodo e descrizione | 
|---|---|
| 1 | brighter() Crea un nuovo colore che è una versione più brillante di questo colore. | 
| 2 | darker() Crea un nuovo colore che è una versione più scura di questo colore. | 
| 3 | getAlpha() Restituisce il componente alfa nell'intervallo 0-255. | 
| 4 | getHSBColor(float h, float s, float b) Crea un oggetto Color in base ai valori specificati per il modello di colore HSB. | 
| 5 | HSBtoRGB(float hue, float saturation, float brightness) Converte i componenti di un colore, come specificato dal modello HSB, in un insieme di valori equivalente per il modello RGB predefinito. | 
| 6 | toString() Restituisce una rappresentazione di stringa di questo colore. | 
L'ultimo passaggio consiste nell'aggiungere tutti questi tre valori e impostarli di nuovo sul valore del pixel corrispondente. La sua sintassi è data di seguito:
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());Esempio
L'esempio seguente mostra l'uso della classe Java BufferedImage che converte un'immagine in scala di grigi -
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();
   }
}Produzione
Quando esegui l'esempio fornito, converte l'immagine digital_image_processing.jpg alla sua immagine in scala di grigi equivalente e scriverla sul disco rigido con il nome grayscale.jpg.
Immagine originale
 
 
    Immagine in scala di grigi
 
                    