Java DIP - GrayScale-Konvertierung
Um ein Farbbild in ein Graustufenbild umzuwandeln, müssen Sie Pixel oder Daten des Bildes mit lesen File und ImageIO Objekte und speichern Sie das Bild in BufferedImageObjekt. Die Syntax ist unten angegeben -
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
Ermitteln Sie außerdem den Pixelwert mithilfe der Methode getRGB()und führen Sie die GrayScale () -Methode darauf aus. Die Methode getRGB () verwendet den Zeilen- und Spaltenindex als Parameter.
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);
Abgesehen von diesen drei Methoden stehen in der Farbklasse weitere Methoden zur Verfügung, die kurz beschrieben werden.
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | brighter() Es wird eine neue Farbe erstellt, die eine hellere Version dieser Farbe ist. |
2 | darker() Es wird eine neue Farbe erstellt, die eine dunklere Version dieser Farbe ist. |
3 | getAlpha() Es gibt die Alpha-Komponente im Bereich von 0 bis 255 zurück. |
4 | getHSBColor(float h, float s, float b) Es wird ein Farbobjekt basierend auf den angegebenen Werten für das HSB-Farbmodell erstellt. |
5 | HSBtoRGB(float hue, float saturation, float brightness) Es konvertiert die Komponenten einer Farbe, wie vom HSB-Modell angegeben, in einen äquivalenten Wertesatz für das Standard-RGB-Modell. |
6 | toString() Es wird eine Zeichenfolgendarstellung dieser Farbe zurückgegeben. |
Der letzte Schritt besteht darin, alle diese drei Werte zu addieren und erneut auf den entsprechenden Pixelwert zu setzen. Die Syntax ist unten angegeben -
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());
Beispiel
Das folgende Beispiel zeigt die Verwendung der Java BufferedImage-Klasse, die ein Bild in Graustufen konvertiert.
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();
}
}
Ausgabe
Wenn Sie das angegebene Beispiel ausführen, wird das Bild konvertiert digital_image_processing.jpg auf das entsprechende Graustufen-Image und schreiben Sie es mit dem Namen auf die Festplatte grayscale.jpg.