【问题标题】:How to make histogram using image? [ImageJ + Netbeans]如何使用图像制作直方图? [ImageJ + Netbeans]
【发布时间】:2015-04-13 17:34:46
【问题描述】:

我求你了。请告诉我如何使用 Java(Netbeans)从 ImageJ 中的黑白图像像素创建直方图?我应该使用什么代码或任何东西...... 我必须在等级上做一个项目。我只有几个小时。

【问题讨论】:

  • 请向我们展示您的尝试。

标签: java image-processing netbeans histogram imagej


【解决方案1】:

我已经尝试使用在互联网上某处找到的示例代码来实现。它用于 RGB,但无论如何,它看起来像这样:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;

public class HistogramRGB extends JFrame {

public HistogramRGB (BufferedImage newimg){

   setSize(500,500);
   setTitle("HistogramRGB");
   hist=newimg;
   setVisible(true);
}
public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2D=(Graphics2D)g;
    Rfreq=new int[256];
    Gfreq=new int[256];
    Bfreq=new int[256];
    int width = hist.getWidth();
    int height = hist.getHeight();
    for(int i=0;i<width;i++) {
        for(int j=0;j<height;j++) {

            rgb =hist.getRGB(i,j);
            rcolor = (rgb >> 16) & 0xff;
            gcolor = (rgb >> 8) & 0xff;
            bcolor = (rgb >> 0) & 0xff;
            Rfreq[rcolor]++;
            Gfreq[gcolor]++;
            Bfreq[bcolor]++;
        }
    }

    int iw=w/2;
    int ih=h/2;



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

        g2D.setColor(Color.RED);
g2D.drawLine(20+i,h-20,20+i,h-(Rfreq[i]/10)-20 );

         g2D.setColor(Color.GREEN);
        g2D.drawLine(20+i,h-20,20+i,h-(Gfreq[i]/10)-20);
        g2D.setColor(Color.BLUE);
        g2D.drawLine(20+i,h-20,20+i,h-(Bfreq[i]/10)-20);

        sumR+=Rfreq[i]*i;
        sumG+=Gfreq[i]*i;
        sumB+=Bfreq[i]*i;

    }
     g.setColor(Color.BLACK);
    g2D.drawLine(10,h-10,10,h-256);
    g2D.drawLine(10,h-10,256,h-10);
    g2D.drawString("0-->255",260,h-10);
    g2D.setFont(new Font("Aril",Font.BOLD,12));

    g2D.drawString("RGB Histogram",300,100);
    g2D.drawString("Red Mean :",300,120);
    g2D.drawString(Long.toString( sumR/(height*width)),400,120);
    g2D.drawString("Green Mean :",300,140);
    g2D.drawString(Long.toString(( sumG/(height*width))),400,140);
    g2D.drawString("Blue Mean :",300,160);
    g2D.drawString(Long.toString(( sumB/(height*width))),400,160);



}

BufferedImage hist ;
int w=500;
int h=500;
int[] Rfreq;
int[] Gfreq;
int[] Bfreq;
int rcolor;
int gcolor;
int bcolor;
int rgb;
long sumR;
long sumB;
long sumG;
}

【讨论】:

    猜你喜欢
    • 2015-12-05
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多