Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id
Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link
kalian bisa lanjut baca lagi di http://softscients.com/2020/03/27/buku-pengolahan-citra-digital-dengan-java/
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
- Histogram Equalization
- Teknik Enhancement Normalisasi Citra
- Gray Level Coocurance Matrix
- Mengenai ImageJ
JDK dan Netbeans
Kode Java Image ditulis menggunakan Netbeans-8.1 dan JDK-1.8.0_241Download Kode dan Binary
Silahkan kalian ke https://sourceforge.net/projects/javajimageAda 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 pathnyaBerikut 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);
}
}
No comments:
Post a Comment