上一篇文章中,已经说过了图像的灰度化,灰度化之后,我们希望了解像素在0-255的分布情况。这就是我们下面要说的图像的灰度直方图,这是最简单的一种。但是原理都是一样的。图像的直方图有大量的用处,它反应了图像的某些特征,以至于可以用来进行图像搜索。
获得直方图信息代码如下:
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;
}以上代码参考了 图像分析之直方图分析
运行结果如下:


本文档主要讲述的是Android游戏开发之旅;今天Android123开始新的Android游戏开发之旅系列,主要从控制方法(按键、轨迹球、触屏、重力感应、摄像头、话筒气流、光线亮度)、图形View(高效绘图技术如双缓冲)、音效(游戏音乐)以及最后的OpenGL ES(Java层)和NDK的OpenGL和J2ME游戏移植到Android方法,当然还有一些游戏实现惯用方法,比如地图编辑器,在Android OpenGL如何使用MD2文件,个部分讲述下Android游戏开发的过程最终实现一个比较完整的游戏引擎
0
立即学习“Java免费学习笔记(深入)”;
以上就是java 图像灰度直方图的内容,更多相关内容请关注PHP中文网(www.php.cn)!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号