Java DIP - Chuyển đổi GrayScale
Để chuyển đổi hình ảnh màu sang hình ảnh Thang độ xám, bạn cần đọc pixel hoặc dữ liệu của hình ảnh bằng cách sử dụng File và ImageIO các đối tượng và lưu trữ hình ảnh trong BufferedImagevật. Cú pháp của nó được đưa ra dưới đây:
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
Hơn nữa, lấy giá trị pixel bằng phương pháp getRGB()và thực hiện phương thức GrayScale () trên đó. Phương thức getRGB () nhận chỉ số hàng và cột làm tham số.
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);
Ngoài ba phương thức này, có những phương thức khác có sẵn trong lớp Màu như được mô tả ngắn gọn -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | brighter() Nó tạo ra một Màu mới là phiên bản sáng hơn của Màu này. |
2 | darker() Nó tạo ra một Màu mới là phiên bản tối hơn của Màu này. |
3 | getAlpha() Nó trả về thành phần alpha trong phạm vi 0-255. |
4 | getHSBColor(float h, float s, float b) Nó tạo đối tượng Màu dựa trên các giá trị được chỉ định cho mô hình màu HSB. |
5 | HSBtoRGB(float hue, float saturation, float brightness) Nó chuyển đổi các thành phần của màu, như được chỉ định bởi mô hình HSB, thành một bộ giá trị tương đương cho mô hình RGB mặc định. |
6 | toString() Nó trả về một biểu diễn chuỗi của Màu này. |
Bước cuối cùng là thêm tất cả ba giá trị này và đặt lại thành giá trị pixel tương ứng. Cú pháp của nó được đưa ra dưới đây:
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());
Thí dụ
Ví dụ sau minh họa việc sử dụng lớp Java BufferedImage để chuyển đổi một hình ảnh sang 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();
}
}
Đầu ra
Khi bạn thực hiện ví dụ đã cho, nó sẽ chuyển đổi hình ảnh digital_image_processing.jpg sang hình ảnh Grayscale tương đương của nó và ghi nó trên đĩa cứng với tên grayscale.jpg.