图像分析之强度直方图分析
直方图介绍
强度直方图图形化显示不同的像素值在不同的强度值上的出现频率,对于灰度图像来说强度
范围为[0~255]之间,对于RGB的彩色图像可以独立显示三种颜色的强度直方图。强度直方
图是用来寻找灰度图像二值化阈值常用而且是有效的手段之一,如果一幅灰度图像的直方图
显示为两个波峰,则二值化阈值应该是这两个波峰之间的某个灰度值。同时强度直方图是调
整图像对比度的重要依据
直方图实现方法:
对一幅灰度图像从上到下,从左到右扫描每个像素值,在每个灰度值上计算像素数目,以这
些数据为基础完成图像直方图的绘制。
运行效果如下:
程序实现:
1. 首先对一幅RGB图像完成灰度转换,转换代码如下:
2. 初始化直方图数据数组int[256] 因为灰度值的范围为0~255
3. 扫描灰度图像,完成强度数据计算。
4. 使用Java 2D绘制直方图
直方图实现源代码:
package com.gloomyfish.image.analysis;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
public class HistogramAnalysisAlg {
private BufferedImage srcImage;
private BufferedImage histogramImage;
private int size = 280;
public HistogramAnalysisAlg(BufferedImage srcImage){
histogramImage = new BufferedImage(size,size, BufferedImage.TYPE_4BYTE_ABGR);
this.srcImage = srcImage;
}
public BufferedImage getHistogram() {
int[] inPixels = new int[srcImage.getWidth()*srcImage.getHeight()];
int[] i