直方图
灰度:对于通常所谓的黑白图像,把黑色和白色之间按对数关系分为若干等级称为灰度。灰度分为256阶,用灰度表示的图像称作灰度图.在图像中用0~255表示,0是全黑,255是全白
直方图:
上图表示一幅图像的灰度级数,共有1-6个灰度,并且每个灰度级数的个数可知,则根据概率可画出上图;(1对应的概率=5/36,)
由于实际图像的直方图每一个灰度级数概率不等,而我们目标是希望每一个灰度级概率相等,则可以使用直方图均衡化。
计算方法:
实际例子
64*64=4096;对于0灰度级,790/4096=0.19;则累计直方图sk=0.19;对于1灰度级;1023/4096=0.25;以次计算到7;则累计直方图sk可以求出。
对于累计直方图sk,将其与归一化rk对比,及0.19接近于1/7,0.44接近于3/7;以此类推得出新的灰度级,最后将新灰度级的个数加起来,从新计算概率,得到正方图均衡。
下面用matlab来实现一遍,代码如下:
clc;
clear all;
RGB=imread('04.jpg'); % 输入彩色图像,得到三维数组
R=RGB(:,:,1); % 分别取三维数组的一维,得到红绿蓝三个分量
G=RGB(:,:,2); % 为 R G B 。
B=RGB(:,:,3);
subplot( 4 , 2 ,1),imshow(RGB); % 绘制各分量的图像及其直方图
title(' 原始真彩色图像 '); %
subplot( 4 , 2 , 3 ),imshow(R);
title(' 真彩色图像的红色分量 ');
subplot( 4 , 2 , 4 ), imhist(R);
title(' 真彩色图像的红色分量 直方图 ') ;
subplot( 4 , 2 , 5 ),imshow(G);
title(' 真彩色图像的绿色分量 ');
subplot( 4 , 2 , 6 ), imhist(G);
title(' 真彩色图像的绿色分量 直方图 ');
subplot( 4 , 2 , 7 ),imshow(B);
title(' 真彩色图像的蓝色分量 ');
subplot( 4 ,2, 8 ), imhist(B);
title(' 真彩色图像的蓝色分量 直方图 ');
r=histeq(R); % 对个分量直方图均衡化,得到个分量均衡化图像
g=histeq(G);
b=histeq(B);
figure,
subplot( 3 , 2 , 1 ),imshow(r);
title(' 红 色分量 均衡化后图像 ');
subplot( 3 , 2 , 2 ), imhist( r );
title(' 红 色分量 均衡化后图像直方图 ');
subplot( 3 , 2 , 3 ),imshow(g);
title(' 绿 色分量 均衡化后图像 ');
subplot( 3 , 2 , 4 ), imhist( g );
title(' 绿 色分量 均衡化后图像直方图 ');
subplot( 3 , 2 , 5 ), imshow ( b );
title(' 蓝 色分量 均衡化后图像 ');
subplot( 3 , 2 , 6 ), imhist( b );
title(' 蓝 色分量 均衡化后图像直方图 ');
figure, % 通过均衡化后的图像还原输出原图像
newimg = cat(3,r,g,b); %
imshow(newimg,[]);
title(' 均衡化后 分量 图像还原输出原图 ');