Pengolahan Citra dengan Java

Tuesday, January 22, 2013

Pada postingan kali ini akan menshare tentang pengolahan citra menggunakan java. Citra terdiri dari RGB (Red, Green, Blue)  yang kemudian akan diolah untuk menghasilkan sebuah image yang mengandung RGB. Intinya adalah mengolah suatu citra untuk diambil warna RGBnya. Sehingga hasil dari citranya tersebut menjadi tidak berwarna (hitam/putih).

Berikut langkah-langkahnya :
1. Siapkan sebuah image/picture/gambar yang mengandung warna RGB.
2. Kemudian membuat classnya sebagai berikut:

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.ColorModel;
import java.awt.image.ImageProducer;
import java.awt.image.IndexColorModel;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
public class ProCitra {
    Image image;
    int widht=0;
    int height=0;
    int pixels [];
    byte R [];
    byte G [];
    byte B [];
    byte grey []=new byte[256];
    ColorModel greyModel;

    int getPixel(int x, int y){
        if( x > widht) x = 0;
        if (y > height) y = 0;
        return pixels[(widht*(x-1)+y)];
    }
    int getRed(int x, int y){
        if( x > widht) x = 0;
        if (y > height) y = 0;
        return R[(widht*(x-1)+y)];
    }
    int getGreen(int x, int y){
        if( x > widht) x = 0;
        if (y > height) y = 0;
        return G[(widht*(x-1)+y)];
    }
    int getBlue(int x, int y){
        if( x > widht) x = 0;
        if (y > height) y = 0;
        return B[(widht*(x-1)+y)];
    }
    
    void grabberImage(){
        PixelGrabber grabber=new PixelGrabber(image,0,0,-1,-1,true);
        try {
            if (grabber.grabPixels()) {
                widht = grabber.getWidth();
                height = grabber.getHeight();
                pixels = (int[]) grabber.getPixels();

                R=new byte[pixels.length];
                G=new byte[pixels.length];
                B=new byte[pixels.length];

                for(int i=0; i
                    B [i]=(byte) (pixels[i] & 0x0000FF);
                    G [i]=(byte) ((pixels[i] >> 8)& 0x0000FF);
                    R [i]=(byte) ((pixels[i] >> 16)& 0x0000FF);
                }
            }
        } catch (Exception ex) {
        }
    }
    ProCitra(){
        image=null;
        setGreyModel();
    }
     ProCitra(String s) {
        image=Toolkit.getDefaultToolkit().getImage(s);
        setGreyModel();
    }

    public void readImage(String file){
        image = Toolkit.getDefaultToolkit().getImage(file);
        setGreyModel();
    }
    public Image getImage(){
        return image;
    }
//mengambil warna RED
    public Image getRedImage(){
        ImageProducer ip=new MemoryImageSource(widht, height, greyModel, R, 0, widht);
        return Toolkit.getDefaultToolkit().createImage(ip);
    }
//mengambil warna GREEN
    public Image getGreenImage(){
        ImageProducer ip=new MemoryImageSource(widht, height, greyModel, G, 0, widht);
        return Toolkit.getDefaultToolkit().createImage(ip);
    }
//mengambil warna BLUE
    public Image getBlueImage(){
        ImageProducer ip=new MemoryImageSource(widht, height, greyModel, B, 0, widht);
        return Toolkit.getDefaultToolkit().createImage(ip);
    }
    final void setGreyModel(){
        for(int i=0;i<256 data-blogger-escaped-byte="" data-blogger-escaped-grey="" data-blogger-escaped-i="" data-blogger-escaped-span="">
        greyModel=new IndexColorModel(8, 256, grey, grey, grey);
    }
    //RGB dijumlah/3 dimasukkan ke pixels
    void RGB2Grey(){
        for(int i=0;i
            pixels[i]=(int) ((R[i]+G[i]+B[i])/3);
        }
        ImageProducer ip=new MemoryImageSource(widht, height, greyModel, pixels, 0, widht);
        image=Toolkit.getDefaultToolkit().createImage(ip);
    }
  
}

3. Desain sebuah Frame untuk menampilkan image yang telah diolah.


Tambahkan listing code pada masing-masing tombol :

private void RAWActionPerformed(java.awt.event.ActionEvent evt) {                                    
        // TODO add your handling code here:
        ProCitra img=new ProCitra("gambar.JPG");
        img.grabberImage();
        Image image=img.getImage();
        ImageIcon icon=new ImageIcon(image);
        jLabel1.setIcon(icon);
        repaint();
}                                   

private void BLUEActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        ProCitra img=new ProCitra("gambar.JPG");
        img.grabberImage();
        Image image=img.getBlueImage();

        ImageIcon icon=new ImageIcon(image);
        jLabel1.setIcon(icon);
        repaint();
}                                    

private void GREENActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
        ProCitra img=new ProCitra("gambar.JPG");
        img.grabberImage();
        Image image=img.getGreenImage();

        ImageIcon icon=new ImageIcon(image);
        jLabel1.setIcon(icon);
        repaint();
}                                     

private void REDActionPerformed(java.awt.event.ActionEvent evt) {                                    
        // TODO add your handling code here:
        ProCitra img=new ProCitra("gambar.JPG");
        img.grabberImage();
        Image image=img.getRedImage();

        ImageIcon icon=new ImageIcon(image);
        jLabel1.setIcon(icon);
        repaint();
}                                   

private void GREYActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
        ProCitra img=new ProCitra("gambar.JPG");
        img.grabberImage();
        img.RGB2Grey();
        Image image=img.getImage();
        ImageIcon icon=new ImageIcon(image);
        jLabel1.setIcon(icon);
        repaint();
    }


Hasilnya adalah sebagai berikut :


Share this :

Previous
Next Post »
4 Komentar
avatar

apik cak....
mohon share dan bimbingannya :D

Balas
This comment has been removed by the author. - Hapus
avatar

kak sya udh cba wktu d'run kluar tpi wktu diklik warnanya g ad prbhan, ap yg slah y ?

Balas
avatar

bro untuk statement yang for for itu kok error ya bro, tulisanya kaya gini bro ")" expected
empty statement after "for" harusnya diisi apa ya bro statementnya?

mohon bantuanya

Balas

Penulisan markup di komentar
  • Silakan tinggalkan komentar sesuai topik. Komentar yang menyertakan link aktif, iklan, atau sejenisnya akan dihapus.
  • Untuk menyisipkan kode gunakan <i rel="code"> kode yang akan disisipkan </i>
  • Untuk menyisipkan kode panjang gunakan <i rel="pre"> kode yang akan disisipkan </i>
  • Untuk menyisipkan quote gunakan <i rel="quote"> catatan anda </i>
  • Untuk menyisipkan gambar gunakan <i rel="image"> URL gambar </i>
  • Untuk menyisipkan video gunakan [iframe] URL embed video [/iframe]
  • Kemudian parse kode tersebut pada kotak di bawah ini
  • © 2015 Simple SEO ✔

Ads