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 bawaan dari , serta class dasar yang telah disediakan oleh Java. Kalian akan bekerja dengan banyak class yang merupakan turunan class serta fokus pada tipe data 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
- Histogram Equalization
- Teknik Enhancement Normalisasi Citra
- Gray Level Coocurance Matrix
- Mengenai ImageJ
- Kasus
- Library Digital Image Processing dengan OpenCV
- Yup mencoba library OpenCV di Java Bagian 1
- Yup mencoba library OpenCV di Java Bagian 2
- Yup mencoba library OpenCV di Java untuk menghitung KMeans Clustering Bagian 3
- Yup mencoba library OpenCV di Java untuk menghitung Support Vector Machine Bagian 4
- Yup mencoba library OpenCV di Java untuk menghitung Histogram Bagian 5
- OCR di Java
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 )
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); } }