Showing posts with label Pengolahan Citra Digital. Show all posts
Showing posts with label Pengolahan Citra Digital. Show all posts

Mengubah Gambar RGB menjadi Grayscale

Belang Telon | Di posting sebelumnya sudah ada penjelasan bagaimana cara Konversi atau Mengubah Gambar RGB menjadi Black and WhiteSelanjutnya akan saya berikan contoh source code untuk Konversi atau Mengubah Gambar RGB menjadi Grayscale. Untuk sementara masih menemukan 2 cara mendapatkan warna grayscale. Yang pertama yaitu dari class yang terdapat dalam paket Java, dan yang kedua kita buat sendiri dari hasil pengubahan warna per  pixel. Gak usah lama-lama cuap-cuapnya, langsung saja masuk ke codingnya.

class yang perlu kita import :
import java.awt.image.ColorConvertOp;
import java.awt.image.BufferedImage;
import java.awt.Toolkit;
import java.awt.Image;

       //Fungsi class Java
    ColorConvertOp colorConvert = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
    colorConvert.filter(bi, bi);
    
     
      //Fungsi buatan
     for(int i=0; i<displayImage.getWidth(this); i++){
           for(int j=0; j<displayImage.getHeight(this); j++){
               int warnaGambar =  bi.getRGB(i,j);
               int alpha = (warnaGambar << 24) & 0xFF;
               int r = (warnaGambar >> 16) & 0xFF;
               int g = (warnaGambar >> 8 ) & 0xFF;
               int b = (warnaGambar >> 0) & 0xFF;
               int nilai = (r + g + b) / 3;
               int gray = alpha | nilai << 16 | nilai << 8 | nilai;
               bi.setRGB(i, j, gray);
           }
     }

Yup, jika diperhatikan untuk merubah warna RGB menjadi grayscale cara yang digunakan sama seperti bagaimana cara merubahnya menjadi black nad white. Jika Warna Black and White merubah warna menjadi 2 macam warna (lihat kembali source code merubah warna Black and White), maka pada grayscale jumlah dari pixel RGB yang di dapat akan dibagi menjadi 3.

Sedikit penjelasan untuk Class ColorConvertOp.
Kelas ini digunakan dalam konversi warna pada gambar. Nilai skala warna yang dihasilkan disesuaikan dengan ketepatan tujuan. Color conversion, ColorSpace ICC_Profile atau dapat kita tentukan melalui array dari objek.
RenderingHints, Jika objek ditentukan dalam konstruktor, kita dapat mengontrol konversi warna menggunakan warna rendering hint dan dithering.
Source dan destination dapat menjadi obyek yang sama.

Kalo ada yang kurang jelas, jangan sungkan-sungkan berikan komentar.

Mengubah Gambar RGB menjadi Black and White.

Belang Telon | Sebenarnya sih gk ikut-ikutan kelas Pengolahan Citra Digital, tapi berhubung ada temen yang minta di jelasin. mau gk mau jadi ikut nimbrung ma tugasnya. Mengubah Gambar RGB menjadi Black and White.
Setelah tanya sana-sini dan googling. Akhirnya ketemu juga source codenya. Dari hasil tahan mata yang udah 5 watt. Gak sia-sia bisa juga baca codingnya.
Sebenernya cukup simpel juga sih. Pertama-tama kita deklarasikan variable-variable buat simpan nilai warna gambar dan mengambil sample gambar yang mau kita "Jadulkan" jadi Hitam-Putih. Dan pastinya tidak lupa kita Import dulu class-class java yang kita butuhkan.

Langkah selanjutnya buat agar gambar kita bisa memanipulasi dan modifikasi pixel dengan bantuan class yang sudah disediakan oleh java yaitu BufferedImage. Setelah itu, barulah kita bisa rubah nilai pixel menjadi yang kita inginkan. Dan jangan lupa simpan hasil olahan tadi, jika ingin melihat hasilnya.

Berikut source codenya dalam bahasa Java.

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public static void main(String[] args) throws IOEimageception{
    File file= new File("file.jpg");
    int NilaiFile, merah, hijau, biru;
    BufferedImage image = ImageIO.read(file);
    int width = image.getWidth();
    int height = image.getHeight();
    int gray = 0;


    BufferedImage im = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    WritableRaster raster = im.getRaster();


    for(int i=0; i<image.getWidth(); i++){
        for(int j=0; j<image.getHeight(); j++){
            NilaiFile =  image.getRGB(i,j);
            merah = (NilaiFile & 0image00ff0000) >> 16; //red   = -131072
            hijau = (NilaiFile & 0image0000ff00) >> 8; //green = -16711935
            biru = (NilaiFile & 0image000000ff); //blue  = -16776962
            double tot=merah+hijau+biru;
            if(tot <382){
             image.setRGB(i, j, 0);  //black = 0
            }else if(tot >=382){
             image.setRGB(i, j, -1);  //white = -1
            }
        }
    }
    ImageIO.write(image,"JPG",new File("file_new.jpg"));
}


Sumber :
www.pengolahancitra.com/
http://www.java2s.com