java 图像灰度直方图

希望你了解下 <前言>

上一篇文章中,已经说过了图像的灰度化,灰度化之后,我们希望了解像素在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;
}

以上代码参考了 图像分析之直方图分析

运行结果如下:

                       

发布了53 篇原创文章 · 获赞 33 · 访问量 12万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览