how to plot histogram using RGB pixel value?

后端 未结 1 1751
栀梦
栀梦 2021-01-22 11:04

i m make App in netbeans platform. i want to draw hisrogram. i have Red, Green ,and Blue color\'s pixel of image. so, please any one suugest to me that how can i plot histogram

相关标签:
1条回答
  • 2021-01-22 11:44
    import java.awt.Color;
           import java.awt.Graphics;
          import java.awt.image.BufferedImage;
          import java.awt.image.RescaleOp;
         import java.io.IOException;
         import javax.media.jai.JAI;
         import javax.media.jai.PlanarImage;
            import javax.swing.*;
    
        public class FinalHistogram extends JPanel {
    
       int[] bins = new int[256];
      FinalHistogram(int[] pbins) {
        bins = pbins;
        repaint();
       }
    
     @Override
     protected void paintComponent(Graphics g) {
        //g.drawLine();
    
        for (int i = 0; i < 256; i++) {
    
            System.out.println("bin[" + i + "]===" + bins[i]);
            g.drawLine(200 + i, 300, 200 + i, 300 - (bins[i])/1000);
            //g.drawLine(200 + i, 200, 200 + i, 200-(bins[i])/1500);
    
            //  System.out.println("bin["+i+"]==="+bins[i]);
         }
    
       }
    
    
      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", "image12.tiff");
        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]);
              d=(0.2125*pixel[0])+(0.7154*pixel[1])+(0.072*pixel[2]);
                  k=(int) (d/256);
    
                sbins[k]++;
            }
    
         }
         System.out.println("copleted" + d + "--" + k);
         JTabbedPane jtp=new JTabbedPane();
         ImageIcon im= new ImageIcon(bi);
          //jtp.add("New image", new JLabel((im)));
            jtp.addTab("Histogram",new FinalHistogram(sbins));
            frame.add(jtp);
         frame.setVisible(true);
         frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       }
     }
    
    0 讨论(0)
提交回复
热议问题