Buku Pengolahan Citra Digital dengan Java

By | March 27, 2020
Print Friendly, PDF & Email

Sinopsis

Topik Pengolahan Citra Digital menggunakan Bahasa Pemrogaman Java masih sangat sedikit dipasaran karena Bahasa Java termasuk masih pemula / baru dalam bidang tersebut sehingga tidak terlalu banyak penggunaan bahasa Java digunakan untuk pengolahan citra digital. Namun demikian kalian bisa menggunakan Bahasa Java untuk keperluan tersebut dengan sedikit lebih repot daripada menggunakan Tools seperti Python, Octave, Scilab, dan Matlab karena harus banyak membuat function-function dasar tersendiri, tentu hal ini sangat membutuhkan banyak waktu dan pemahaman tingkat lanjut.

Bahasa java sudah lebih maju untuk pengembangan aplikasi berbasis GUI dengan adanya swing bawaan dari Netbeans, serta class dasar yang telah disediakan oleh Java. Kalian akan bekerja dengan banyak class Buffered Image yang merupakan turunan class Graphic serta fokus pada tipe data double sebagai tipe data berbentuk array untuk pengolahan citra lebih lanjut. Setiap operasi citra akan direpresentasikan oleh array  daripada class Buffered Image karena pendekatan operasi tersebut seperti di Matlab, OpenCV, serta Python.

Penulis telah membuat class – class dasar yang di extends dari Class bawaan Java sehingga tidak perlu banyak membuat class lagi dari awal, selain itu banyak class yang akan dibuat Static sehingga fokus pada operasi prosedural tapi ada juga yang dibuat class tersendiri karena operasi tersebut sangat rumit. Walaupun di Netbeans ada fitur pembuatan GUI secara drag and drop, pengalaman penulis ketika membuat aplikasi GUI yang bersifat Drag an Drop hal ini menjadi masalah karena terkadang proses developing menjadi sangat rumit apalagi dengan banyaknya libary-library yang digunakan secara bersama-sama sehingga proses update menjadi terkendala (no compliance) sehingga beberapa class akan dibuat by code secara manual.

Pustaka yang penulis buat diberi nama Java Image yang memang mempresentasikan kegunaan dari pustaka tersebut walaupun didalamnya berisi beberapa algoritma pendukung seperti clustering, texture analyst, statistika, serta melibatkan pustaka JAMA (java matrix) yang cukup ringan sebagai pendukung operasi array/matrix, tidak lupa juga menggunakan JfreeChart sebagai chart untuk visualisasi data.

Java Image sudah penulis gunakan di beberapa project yang berkaitan dengan pengolahan citra digital, machine learning dan optimasi untuk keperluan internal sehingga kalaupun ada bugs / kesalahan logika kalian bisa melakukan edit kode / logika tersebut sesuai keperluan kalian, ataupun meng copy paste kode tersebut kedalam bahasa lain seperti C#, Scala, C++.

Mengingat Java Image dibuat untuk core enginenya, maka kebanyakan yang akan dibahas dalam buku ini adalah cara memakai function/method/class tersebut secara dasar-dasarnya saja sedangkan untuk manual dokumentasi seperti algoritma/ persamaan matematika bisa kalian search di blog ini asal kalian sudah tahu cara kerja operasi array/matrix karena memang sedari awal hanya ditujukan untuk penggunaan sendiri sehingga kaidah penulisan/dokumentasi tidak dibuat dengan begitu rapi.  Selain Java Image ada yang sangat bagus sekali untuk kalian gunakan yaitu ImageJ (Image Java) silahkan saja kalian kombinasikan.

Download Java Image : https://sourceforge.net/projects/javajimage/files/

Daftar Isi

  1. Histogram Equalization
  2. Teknik Enhancement Normalisasi Citra
  3. Gray Level Coocurance Matrix
  4. Mengenai ImageJ

JDK dan Netbeans

Kode Java Image ditulis menggunakan Netbeans-8.1 dan JDK-1.8.0_241

Download Kode dan Binary

Silahkan kalian ke https://sourceforge.net/projects/javajimage

Ada 3 file yang bisa kalian download yaitu

Kalian download saja Jama-1.03.jar dan Binary Java Image 2020.jar

Project Pertama

Kalian buatlah project menggunakan Netbeans ataupun Eclipse, jangan lupa untuk add pathnya.

Berikut contoh penggunaanya untuk loading Image serta menampilkannya kedalam PictureBox (extend class dari JFrame)

import java.awt.image.BufferedImage;
import java.io.File;
import jimag.Image;
import jimag.ImageRead;
import jimag.ImageShow;

/**
 *
 * @author mulkan.ms@gmail.com
 */
public class Demo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        //loading file gambar
        BufferedImage image = ImageRead.read(new File("D:/panoramic.jpg"));        
          
        //convert ke gray
        double [][] gray = Image.rgb2gray(ImageRead.getMatrix(image));
        
        //operasi ekualisasi histogram
        double [][] gray_image_histeq = Image.histogramEqualization(gray);
        
        //mencari nilai T dengan teknik Otsu
        double T = Image.graythresh(gray);
        //operasi BW
        double [][] bw = Image.blackwhite(gray, false,T);
        
        //operasi filtering 
        double [][] filt = Image.convolution(gray,Image.KernelSharpening);
        new ImageShow(image,"original").setVisible(true);
        new ImageShow(Image.matrix2image(gray),"gray").setVisible(true);
        new ImageShow(Image.matrix2image(gray_image_histeq),"histeq").setVisible(true);
        new ImageShow(Image.matrix2image(bw),"Nilai T : "+String.valueOf(T)).setVisible(true);
        new ImageShow(Image.matrix2image(filt),"Filtering").setVisible(true);

    }
    
}

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *