Ads 468x60px

Selasa, 04 September 2012

Konversi Citra RGB ke GrayScale

Merubah citra RGB menjadi citra grayscale adalah salah satu contoh proses pengolahan citra menggunakan operasi titik. Untuk mengubah citra RGB menjadi citra grayscale adalah dengan menghitung rata-rata nilai intensitas RGB dari setiap piksel penyusun citra tersebut. Rumus matematis yang digunakan adalah sebagai berikut:

Contoh penggunaan rumus di atas bisa dilihat pada potongan program berikut:
for(int x = 0; x <size.width; x ++) {
for(int y = 0; y < size.height; y++) {
int RGB = prosesimage.getRGB(x,y); // memperoleh nilai RGB setiap pexel citra
int alpha = (RGB << 24) & 0xFF; // memperoleh nilai alpha
int red = (RGB >> 16) >> 0xFF; // memperoleh nilai red
int green = (RGB >> 8 ) & 0xFF; // memperoleh nilai green
int blue = (RGB >> 0) & 0xFF; // memperoleh nilai blue
int avg = (red + green + blue) / 3; // menghting nilai rata-rata RGB
int gray = alpha | avg << 16 | avg << 8 | avg; // memperoleh nilai grayscale
prosesimage.setRGB(x, y, gray); // nilai grayscale untuk setiap piksel
}
}
Berikut adalah contoh program selengkapnya:
import java.awt.image.BufferedImage;
import javax.swing.*;
import java.awt.*;
public class RGBtoGrayscale extends JPanel {
Image image;
BufferedImage prosesimage;
Dimension size;
public RGBtoGrayscale() {
image = new ImageIcon(“/home/informatika/Documents/image.jpg”).getImage();
size = new Dimension();
size.width = image.getWidth(null);
size.height = image.getHeight(null) * 2;
setPreferredSize(size);
prosesimage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics g = prosesimage.getGraphics();
g.drawImage(image, 0, 0, null);
for(int x = 0; x <size.width; x ++) {
for(int y = 0; y < size.height; y++) {
int RGB = prosesimage.getRGB(x,y); // memperoleh nilai RGB setiap pexel citra
int alpha = (RGB << 24) & 0xFF; // memperoleh nilai alpha
int red = (RGB >> 16) >> 0xFF; // memperoleh nilai red
int green = (RGB >> 8 ) & 0xFF; // memperoleh nilai green
int blue = (RGB >> 0) & 0xFF; // memperoleh nilai blue
int avg = (red + green + blue) / 3; // menghting nilai rata-rata RGB
int gray = alpha | avg << 16 | avg << 8 | avg; // memperoleh nilai grayscale
prosesimage.setRGB(x, y, gray); // nilai grayscale untuk setiap piksel
}
}
g.dispose();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image, 0, 0, null);
g2d.drawImage(prosesimage, 0, 325, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame(“Operasi titik – RGB to GrayScale”);
frame.add(new RGBtoGrayscale());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

}

Output dari program di atas adalah sebagai berikut:

0 Komentar: