Masih agak-agak terkait dengan 2 post sebelumnya, hasil perhitungan histogram dari sebuah gambar akan ditampilkan dengan menggunakan grafik. Untuk itu dibutuhkan sebuah pustaka grafik. Pustaka yang paling sering saya pakai adalah JFreeChart. Pustaka ini gratis dan sangat lengkap hanya saja untuk mendapatkan dokumentasi dan contoh-contoh penggunaannya yang lengkap kita harus membeli panduannya.
Cara mudah untuk membuat grafik adalah dengan menggunakan ChartFactory pada JFreeChart. Dari factory tersebut kita bebas memilih jenis grafik yang kita inginkan, dalam hal ini CategoryPlot di mana kita ingin menampilkan setiap warna dalam kategori yang berbeda. Untuk mengisi datanya kita hanya memasukkan data ke DataSet yang sesuai (untuk CategoryPlot menggunakan DefaultCategoryDataset atau extend dari CategoryDataset).
Contoh kodenya (digabung dengan penghitungan histogram)
imageColorCount = new int[3][0x100];
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int color = image.getRGB(x, y);
int cred = (color & 0x00ff0000) >> 16;
int cgreen = (color & 0x0000ff00) >> 8;
int cblue = color & 0x000000ff;
imageColorCount[RED][cred]++;
imageColorCount[GREEN][cgreen]++;
imageColorCount[BLUE][cblue]++;
}
}
//
DefaultCategoryDataset colorDataset = new DefaultCategoryDataset();
for (int j = 0; j < 0x100; j++) {
colorDataset.addValue(imageColorCount[0][j], "Red", new Integer(j));
colorDataset.addValue(imageColorCount[2][j], "Blue", new Integer(j));
colorDataset.addValue(imageColorCount[1][j], "Green", new Integer(j));
}
JFreeChart jfcolor = ChartFactory.createLineChart("Histogram", "Nilai", "Frekuensi", colorDataset, PlotOrientation.VERTICAL, true, true, true);
chartRGBPanel.removeAll();
ChartPanel jpchart = new ChartPanel(jfcolor);
chartRGBPanel.add(jpchart);
chartRGBPanel.repaint();
Voila. Di bawah adalah salah satu contoh aplikasi dari kode-kode yang sudah dimodifikasi.