Bermain dengan Pixel di Java


Saat ini saya sedang banayk bergelut dengan pengolahan citra digital. Mengambil nilai citra per pixel, konversi ke bentuk citra biner, identifikasi noise, visualisasi data menggunakan koordinat yang sederhana dll. Semua proses di atas akan saya coba selesaikan dengan Java. Sambil saya belajar, saya akan sedikit berbagi pengalaman tentang pengolahan citra digital dengan menggunakan java.

Pada tulisan awal ini saya akan sedikit menjelaskan tentang menggambarkan sebuah titik sebesar satu pixel. Program berikut ini menggambar 100 titik pada posisi sembarang. Koordinat titik digenerate dengan menggunakan fungsi random (Random()). Beberapa statement penting yang nantinya bisa dipelajari lebih jauh lagi oleh pembaca adalah:

1. Menentkan warna: g2d.setColor(Color.blue);

Dalam program yang saya buat ini, warna yang digunakan adalah warna biru. Pembaca dapat mengubah warna dengan warna yang lain dengan cara merubahnya menjadi g2d.setColor(Color.warnaAnda). Sebagai referensi, silahakan dibuka java documentation tentang Color.

2. Menggambar titik: g2d.drawLine(x, y, x, y);

Method ini sebenarnya digunakan untuk membuat garis dengan format methodnya drawLine(int x1, int y1, int x2, int y2); hasilnya adalah sebuah garis yang menghubungkan titik ke-1 (x1, y1) dengan titik ke-2 (x2, y2). Jika kita memberikan nilai x1=x2 dan y1=y2, maka yang terbentuk adalah sebuah titik. Untuk memahamai lebih jauh tentang drawLine, dan fungsi lainnya dalam paket graphics, silahkan kunjungi link ini Java Graphics.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;

import javax.swing.JPanel;
import javax.swing.JFrame;

import java.util.Random;

public class Points extends JPanel {

  public void paintComponent(Graphics g) {
      super.paintComponent(g);

      Graphics2D g2d = (Graphics2D) g;

      g2d.setColor(Color.blue);

      Dimension size = getSize();
      Insets insets = getInsets();

      int w =  size.width - insets.left - insets.right;
      int h =  size.height - insets.top - insets.bottom;

      Random r = new Random();

      for (int i=0; i<100; i++) {
          int x = Math.abs(r.nextInt()) % w;
          int y = Math.abs(r.nextInt()) % h;
          g2d.drawLine(x, y, x, y);
      }
  }

  public static void main(String[] args) {

      JFrame frame = new JFrame("Points");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(new Points());
      frame.setSize(250, 200);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
  }
}

Keterangan:

Program di atas bisa langsung dijalankan, copy dan paste programnya ke text editor apapun.
1. Nama file: Points.java
2. Compile: javac Points.java
3. Run: java Points

Selamat mencoba, selamat berkreasi….

About windupurnomo

I'm interested in programming. I am active with several programming such as Java, C #, C, JavaScript, HTML. I'm also develop desktop application (Java Swing), Mobile Application (Android), and Web programming (ASP MVC).
This entry was posted in Image Processing, Java and tagged , , , , . Bookmark the permalink.

9 Responses to Bermain dengan Pixel di Java

  1. Pingback: Bermain dengan Pixel di Java (Bentuk Geometri) « Windupurnomo’s Blog

  2. doris says:

    nice post…
    makasih atas infonya…

  3. mulkan says:

    meeemmm. bagus juga

  4. dhikahunt says:

    mas….. help me….
    mau tanya tentang object detection dengan java mas
    itu langkah”na apa aja yah mas….

  5. mawan says:

    mau nanya klau mencocokan gambar yang kita ingin input dengan gambar citra yang sudah ada d java’y itu bagaimana mas??

  6. doni fauzi says:

    tanks… sangat mas ……….
    soalnya saya btuh bngt ne program ,,,,

  7. tohir says:

    mas kalo untuk menghitung Region Of Interest (ROI) gimana mas terima kasih

  8. animous says:

    suwun mas

  9. alyamustofa@yahoo.com says:

    kak, boleh nanya ga, gimana caranya buat 50 image di jadiin 50 titik di Jpanel, trus nilai di satu titik itu bisa gak nilainya (Y, Cb, Cr)??
    makasi kak

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s