2011-10-22 46 views
1

我想顯示圖像顏色通道的直方圖。 起初我像素的閱讀的樣子:JFreeChart生成的圖像直方圖

for(int i=0; i<width; i++) 
     for(int j=0; j<height; j++) { 
      data=writeableRaster.getDataElements(i, j, null); 
      red=colorModel.getRed(data); 
      green=colorModel.getGreen(data); 
      blue=colorModel.getBlue(data); 
      rgb=(red+green+blue)/3; 
      ++redL[red]; 
      ++greenL[green]; 
      ++blueL[blue]; 
      ++rgbL[rgb]; 
     } 
    } 

我也有與給定信道的顏色表創建圖表的其他方法:

 int number = channelHistogram.length; 
     HistogramDataset dataset = new HistogramDataset(); 
     dataset.setType(HistogramType.RELATIVE_FREQUENCY); 
     dataset.addSeries("Hist",channelHistogram,number); 
     String plotTitle = "Hist"; 
     String xaxis = "number"; 
     String yaxis = "value"; 
     PlotOrientation orientation = PlotOrientation.VERTICAL; 
     boolean show = false; 
     boolean toolTips = false; 
     boolean urls = false; 
     JFreeChart chart = ChartFactory.createHistogram(plotTitle, xaxis, yaxis, 
       dataset, orientation, show, toolTips, urls); 

但圖表顯示錯誤。這意味着在Y軸上存在「低」值(從〜0 - 0.09),在X軸上沒有範圍爲0 - 255的值。 任何幫助?

回答

1
dataset.setType(HistogramType.RELATIVE_FREQUENCY); 

你可以嘗試在這裏設置不同的選項,看看它是否有幫助嗎?另外如果你可以顯示什麼channelHistogram字段包含可能有助於調試。

+0

檢查數組大小是否等於256的內部方法。值類似於:'7545.0 2939.0 3570.0 3266.0 2861.0 2525.0'。 我試過使用其他其他HistogramType選項,但也有類似的效果。 – bontade

+1

假設您提供雙數組爲{1,5,9,3,5}直方圖數據集將其解釋爲1-5頻率4 5-10頻率1,並且它會相應地顯示兩個具有相應高度的小節。如果您不想按照陣列繪製高度爲1,5,9 ...的酒吧,那麼使用每個點添加爲新系列的條形圖。 –

+0

謝謝@AKJ。現在我正在使用BarChart – bontade