数字图像处理——直方图均衡

直方图均衡

1.原理

一幅图像的灰度级可以看成是区间[0,L-1]内的随机变量,随机变量的一个最重要的基本描述是其概率密度函数(PDF),记pr(r )和ps(s )分别代表r和s的概率密度函数

由基本概率理论得到一个基本结果如果pr(r )和T(r )已知,且T(r )满足在区间0<r<L-1中为单值且单调递增,那么变换变量s的概率密度函数ps(s)可由以下简单公式得到:
在这里插入图片描述
因此,变换变量s的概率密度函数由输入图像的灰度级PDF和所选的变换函数决定。

图像处理中一个尤为重要的变换函数,即单值单调递增的灰度级变换函数的定义为:
在这里插入图片描述
因为概率密度函数永远为正,并且函数积分是一个函数曲线下的面积,所以它遵循该函数是单值单调增加的条件。
在这里插入图片描述
可见上式给出的ps(s)形式为均匀密度概率函数
在这里插入图片描述
对于离散值,我们处理其概率密度与和,而不是概率密度函数和积分

一副图像中灰度级rk出现的概率近似为:
在这里插入图片描述
其中MN是图像像素的总数,nk是灰度级为rk的像素个数,L为灰度级的数量

连续函数的变换函数:在这里插入图片描述
连续函数的变换函数的离散形式为:
在这里插入图片描述
因此,通过上式,将输入图像中灰度级为rk的各像素映射到输出图像中的灰度级为sk的对应像素得到
在这里插入图片描述称为直方图均衡

2.Matlab编程

%读取图像
I = imread('pict2.jpg'); 
%显示原图
figure;
imshow(I);
%获得输入图像尺寸M、N、C(size函数)
[height,width,d] = size(I);
%转换成灰度图像并显示
if( d > 1)
   I = rgb2gray(I);
   figure;
   imshow(I);
end
nbins = 256;
%计算原图像J的灰度直方图h
%或者通过两重循环遍历每个像素点从而得到每个灰度值的累计像素点个数)。
hist_0 = imhist(I,nbins);
%显示原图的灰度直方图
imhist(I);
%计算原图的灰度分布概率hs,  hs=h/(M*N)  (i=0,1,…,255)。
hist_1 = hist_0/(height*width);
%计算原图灰度的累计分布hp0(使用cumsum函数)
hp_0 = cumsum(hist_1);%cumsum默认按列累
%hp1=hp0*255 将hp1四舍五入
hp_1 = round(hp_0*255);
hp_1(1) = 0;
I0 = double(I);
%置两重循环遍历图像F中所有像素点,求出每一个像素点的灰度值F(i,j)
for i = 1:height
   for j = 1:width
        Old_Grayscale = I0(i,j);
        New_grayscale = hp_1(Old_Grayscale+1);
        J(i,j) =  New_grayscale;
   end
end
%显示直方图均衡后的图像
J = uint8(J);
figure;
imshow(J);
figure;
imhist(J);
%合并显示
subplot(2,2,1);  
imshow(I); title('原图的灰度图'); 
subplot(2,2,2);  
imhist(I); title('原图直方图'); 
subplot(2,2,3);  
imshow(J); title('均衡后的灰度图'); 
subplot(2,2,4);  
imhist(J); title('均衡后灰度图的直方图');
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值