获得直方图信息代码如下:
public int[] hist(){ toGray(); int[] hist = new int[256]; int len = h*w; for(int i=0;i<len;i++) hist[data[i]]++; return hist; }
然后我们要做的就是画出图像的统计直方图,代码如下:
public BufferedImage getHist(){ toGray(); int[] intensity = hist(); int size = 300; BufferedImage pic = new BufferedImage(size,size, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = pic.createGraphics(); g2d.setPaint(Color.BLACK); g2d.fillRect(0, 0, size, size); g2d.setPaint(Color.WHITE); g2d.drawLine(5, 250, 265, 250); g2d.drawLine(5, 250, 5, 5); g2d.setPaint(Color.GREEN); int max = math.findMaxValue(intensity); //找到直方图中最大的值 float rate = 200.0f/((float)max); int offset = 2; for(int i=0; i<intensity.length; i++) { int frequency = (int)(intensity[i] * rate); g2d.drawLine(5 + offset + i, 250, 5 + offset + i, 250-frequency); } g2d.setPaint(Color.RED); g2d.drawString("", 100, 270); return pic; }
以上代码参考了 图像分析之直方图分析
运行结果如下:
php入门到就业线上直播课:进入学习
以上就是java 图像灰度直方图的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!
前端(VUE)零基础到就业课程:点击学习
自己动手写 PHP MVC 框架:点击学习
![](http://m.sbmmt.com/img/upload/article/000/000/020/633501a29d313483.png)