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
}
}
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 {
import javax.swing.*;
import java.awt.*;
public class RGBtoGrayscale extends JPanel {
Image image;
BufferedImage prosesimage;
Dimension size;
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);
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);
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
}
}
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);
}
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);
}
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:
+ komentar + 3 komentar
related post : http://cheeqajelasbanget.blogspot.com/2010/12/grafik-komputer-kelompok-4-nama-cikha.html
http://blog.uin-malang.ac.id/syauqi/2010/06/22/pengolahan-citra-digital/#more-270
nilai alfa itu apa ya mas?
Posting Komentar