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);
นอกเหนือจากสามวิธีนี้แล้วยังมีวิธีการอื่น ๆ ในคลาสสีตามที่อธิบายไว้โดยย่อ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 | brighter() สร้างสีใหม่ซึ่งเป็นสีที่สว่างกว่านี้ |
2 | darker() สร้างสีใหม่ที่เป็นสีเข้มกว่าของสีนี้ |
3 | getAlpha() จะส่งคืนองค์ประกอบอัลฟาในช่วง 0-255 |
4 | getHSBColor(float h, float s, float b) สร้างวัตถุสีตามค่าที่ระบุสำหรับโมเดลสี HSB |
5 | HSBtoRGB(float hue, float saturation, float brightness) จะแปลงส่วนประกอบของสีตามที่ระบุโดยรุ่น HSB เป็นชุดค่าที่เทียบเท่าสำหรับรุ่น RGB เริ่มต้น |
6 | toString() ส่งคืนการแสดงสตริงของสีนี้ |
ขั้นตอนสุดท้ายคือการเพิ่มทั้งสามค่าและตั้งค่าอีกครั้งเป็นค่าพิกเซลที่เกี่ยวข้อง ไวยากรณ์ได้รับด้านล่าง -
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้คลาส Java BufferedImage ที่แปลงรูปภาพเป็น Grayscale -
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 และเขียนลงบนฮาร์ดดิสก์ด้วยชื่อ grayscale.jpg.