四种基本直方图

直方图

性质

1.从直方图看图像的统计信息
2.图像信息量可根据直方图计算

用途

1.作为图像数字化的参数
2.作为分割图像的阈值选择
3.直方图均衡化
4.计算图像信息量
5.直方图规定化

使用图片:lena.ppm

lena.png

灰度统计直方图

描述:统计每一个灰度所出现的次数

性质

1.灰度直方图表述了图像的一维统计信息:不同灰度级的出现次数
2.灰度直方图与图像的对应关系:一对多
3.子图直方图之和 = 全图直方图

使用matlab实现代码

方法一:使用原生实现

clear all;
close all;
img=imread('../images/lena.ppm');
[sx sy] = size(img);
h(1:256)=0; %初始化
for x=1:sx
    for y=1:sy
        k = img(x,y) + 1; %0~255 记录是 1~256
        h(k) = h(k) + 1;
    end
end
figure; plot(h); title('Lena:hist1');

效果

灰度直方图.png

方法二:使用公式

imhist函数:计算图像直方图函数
具体使用
imhist( i ):直接显示图像i的灰度直方图(默认为255个灰度级);
imhist(i,n):n为指定灰度级显示直方图;

clear all;
close all;
img=imread('../images/lena.ppm');
[sx sy] = size(img);
h(1:256)=0; %初始化
h2 = imhist(img);
figure; plot(h2); title('Lena:hist2');

效果

灰度直方图.png

归一化直方图

描述:一个灰度所出现的比例(出现的概率)
计算公式:灰度直方图/图片大小

代码实现

clear all;
close all;
 
img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
h1 = h / (sx * sy);
figure; plot(h1); title('Lena:归一化直方图');

效果

归一化直方图.png

累积直方图

描述:离散的信号,灰度从0开始累加
计算公式:直方图从0开始加到当前灰度值

代码实现

clear all;
close all;
 
img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
    H(i) = H(i-1) + h(i); 
end;
figure; plot(H); title('Lena:累积直方图');

效果

累积直方图.png

归一累积直方图

计算公式:累积直方图/图片大小(像素个数)

代码实现

clear all;
close all;
 
img=imread('../images/lena.ppm');
[sx sy] = size(img);
h = imhist(img);
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
    H(i) = H(i-1) + h(i); 
end;
H1 = H/(sx*sy);
figure; plot(H1); title('Lena:归一累积直方图');

效果

归一累积直方图.png

你可能感兴趣的:(四种基本直方图)