Menampilkan Histogram Image dengan JFreeChart di Java


Latar Belakang

Informasi penting mengenai isi (content) citra digital dapat diketahui dengan membuat histogram citra. Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu atau bagian tertentu didalam citra. Dari sebuah histogram dapat diketahui frekuensi kemunculan nisbi(relative) dari intensitas pada citra tersebut. Histogram juga dapat menunjukan banyak hal tentang kecerahan (brightness) dan kontras (contrast) dari sebuah gambar.

Oleh karena itu saya mencoba untuk membuat sebuah aplikasi untuk menampilkan histogram warna dari citra yang kita pilih. Artikel ini masih ada hubunganya dengan artikel sebelumnya. artikel ini membahas tentang pembuatan histogram.

Alur Program

  1. User memilih gambar yang akan ditampilkan baik gambar maupun histogramnya.
  2. Menghitung lebar dan tinggi citra
  3. Meng conversi kedalam bentuk RGB
  4. Menampilkan hasil histogram dengan bantuan library JFreeChart
  5. Selesai

Potongan Script

public void cari_histogram(){
//untuk perhitungan histogram
BufferedImage test = null;
try {
test = ImageIO.read(new File(file));
} catch (IOException ex) {
Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex);
}
int width = test.getWidth();
int height = test.getHeight();
int count[][] = new int[3][0x100];
int RED = 0;
int BLUE = 1;
int GREEN = 2;
int total = width * height;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int color = test.getRGB(i, j);
int cred = (color & 0x00ff0000) >> 16;
int cgreen = (color & 0x0000ff00) >> 8;
int cblue = color & 0x000000ff;

count[RED][cred]++;
count[BLUE][cblue]++;
count[GREEN][cgreen]++;
}
}

//untuk tampil ke jfreechart
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int f = 0; f < 0x100; f++) {
//bisa digabung dengan jfreechart
// System.out.printf(“%03d %04d %04d %04dn”, f, count[RED][f], count[BLUE][f], count[GREEN][f]);
dataset.addValue(count[0][f], “Red”, new Integer(f));
dataset.addValue(count[2][f], “Blue”, new Integer(f));
dataset.addValue(count[1][f], “Green”, new Integer(f));
}

JFreeChart chart = ChartFactory.createLineChart(“Histogram RGB”, “Nilai”,”Frekuensi”, dataset,PlotOrientation.VERTICAL, false, true, false);
ChartFrame frame=new ChartFrame(“Lihat Histogram”,chart);
chart.setBackgroundPaint(Color.white);
final CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.WHITE);
plot.setRangeGridlinePaint(Color.white);

frame.setSize(500,350);
frame.setVisible(true);
frame.setLocation(380, 200);
frame.setTitle(“Alamat Citra : “+file);
String status=frame.getTitle();
System.out.print(status);
initComponents();
}

Download

http://www.4shared.com/file/mn-Xil0R/PilihGambar.html

 

Sekian artikel dari saya, semoga bermanfaat…aamiin

Karawang, 16-11-2010

noname

Advertisements

2 Responses

  1. ma kasih mas bro, artikel na bermanfaat bangetz… em.. oh ya mas bro, klu bisa posting tntang image processing mnggunakan java (netbeans) dunk… bosan kbnyakan pkai vb ma matlabs.. Ma kasih

    Like

  2. woww..mksh bgt nih..udh membantu tugas saya..

    Like

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

%d bloggers like this: