2012-04-11 19 views
0

我使用java swing在netbeans平臺上製作應用程序。我創建了特定圖像的直方圖。但它不像ImageJ軟件中該圖像的直方圖那樣精確。所以,我怎樣才能得到正確的直方圖,或者任何人可以向我建議我使用哪種方法獲得圖像的確切像素並繪製直方圖?對於黑/白圖像如何使用現有的圖像像素製作正確的直方圖?

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import javax.media.jai.JAI; 
import javax.media.jai.PlanarImage; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class FinalHistogram extends JPanel { 

    int[] bins = new int[256]; 

    FinalHistogram(int[] pbins) { 
     bins = pbins; 
     repaint(); 
} 

@Override 
protected void paintComponent(Graphics g) { 

     for (int i = 0; i < 256; i++) { 

      System.out.println("bin[" + i + "]===" + bins[i]); 
      g.drawLine(200 + i, 300, 200 + i, 300 - (bins[i])/70); 
     } 

} 

public static void main(String[] args) throws IOException { 
     JFrame frame = new JFrame(); 
     frame.setSize(500, 500); 
     int[] pbins = new int[256]; 
     int[] sbins = new int[256]; 

     PlanarImage image = JAI.create("fileload", "C:\\aimages\\11309.jpg"); 

     BufferedImage bi = image.getAsBufferedImage(); 
     System.out.println("tipe is   " + bi.getType()); 
     int[] pixel = new int[3]; 

     int k = 0; 
     Color c = new Color(k); 
     Double d = 0.0; 
     Double d1; 
     for (int x = 0; x < bi.getWidth(); x++) { 
      for (int y = 0; y < bi.getHeight(); y++) { 
       pixel = bi.getRaster().getPixel(x, y, new int[3]); 
       k = (int) ((pixel[0]) + (pixel[1]) + (pixel[2])); 
       k=k/3; 
       sbins[k]++; 

      } 

     } 
     System.out.println("copleted" + d + "--" + k); 
     frame.add(new FinalHistogram(sbins)); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    } 
} 
+0

沒有人能夠幫助您在沒有看到的情況下修復您的代碼。 – Mat 2012-04-11 10:16:02

回答

0

僞代碼來創建直方圖:

lookup_table[256] //integers. 

for i in 256 do 
    lookup_table[i] = 0 

for i in image.size 
    lookup_table[ pixel.value ] = lookup_table[ pixel.value ] + 1; 

通常想象你必須使用一個名爲「合併」,因爲在大的圖像,你有技術的直方圖很多具有灰色陰影和1:1比例的像素都不適合您的屏幕。

+0

謝謝你對我的幫助。 – Jay 2012-04-11 11:12:31

相關問題