直方图均衡化取整怎么计算_图像处理------直方图均衡化

本文详细介绍了直方图均衡化的数学推导,包括连续函数和离散函数的情况。直方图均衡化通过改变图像灰度级的分布,使输出图像的灰度级跨度更大,接近于均匀分布。文章还提供了MATLAB代码实现,展示直方图均衡化的过程及处理效果。
摘要由CSDN通过智能技术生成

一、直方图均衡化数学推导

直方图均衡化的总体思想:首先考虑连续函数并且让变量r代表待增强图像的灰度级,假设被归一化到区间[0,1],且r=0表示黑色及r=1表示白色。然后再考虑一个离散公式并允许像素值在区间[0,L-1]内。

对于连续函数而言,假设其变换函数为

s=T(r),  0=

在原始图像中,对于每一个像素值r产生一个灰度值s。其中,变换函数要满足以下条件:

(1)T(r)在区间中为单值且单调递增。这是为了保证其逆函数的存在,并且输出图像从黑到白顺序增加;

(2)当0=

把 s=T(r)的逆函数表示为

一幅图像的灰度级可被视为区间[0,1]的随机变量。随机变量的一个最重要的基本描述是其概率密度函数。令

分别代表随机变量r和s的概率密度函数。此处带有下标的

用于表示不同的函数。由基本概率理论得到一个基本结果:如果

已知,且

满足条件(1),那么变换变量s的概率密度函数

可由以下简单公式得到:

因此,变换变量s的概率密度函数由输人图像的灰度级概率密度函数和所选择的变换函数所决定。

在图像处理中一个尤为重要的变换函数:

该被积函数其值为正,并且函数积分是一个函数曲线下的面积,其内含为随机变量r的累积分布函数,所以它遵守该变换函数是单值单调增加的条件,因此满足条件(1)。同样地,区间[0,1]也满足条件(2)。其积分过程如下:

用这个结果代替dr/ds,代入上式,取概率为正,得到:

因为

是概率密度函数,在这里可以得出区间[0,1]以外它的值为0,可见上式中给出的

形式为均匀概率密度函数。换句话来说,上式给出的变换函数会得到一个随机变量,其特征为一个均匀概率密度函数,与

的函数形式是无关的。总述以上,可以看出

便是一个直方图均衡化的基本原理,该等式右边的意义就是随机变量r的累积分布函数。这样便转化为了求输入图像灰度级的累积分布函数。

下面开始讨论离散函数。对于离散值,处理的是它函数概率的和,而不是概率密度函数的积分。一幅图像中灰度级

出现的概率近似为:

其中,n 是图像中像素的总和,nk是灰度级

为的像素个数,L为图像中可能的灰度级总数。式4中变换函数的离散形式为:

因此,已处理的图像(即输出图像)由通过上式,将输入图像中灰度级为

的各像素映射到输出图像中灰度级为sk的对应像素得到。与连续形式不同,一般不能证明离散变换能产生均匀概率密度函数的离散值(为均匀直方图)。但是不论怎样,可以很容易地看出,上式的应用有展开输入图像直方图的一般趋势,以至于直方图均衡化过的图像灰度级能跨越更大的范围。至此,便给出了整个的证明过程。

二、直方图均衡化的一般实现过程:

(1)统计原始输入图像各灰度级的像素数目

,,其中L为灰度总级数;

(2)计算原始图像直方图,即各灰度级的概率密度,

,n为原始图像的总像素数目;

(3)计算累积分布函数

(4)计算最后的输出灰度级,

式中INT[]是取整算符。令gmin=0,gmax=L-1,则计算式简化为

(5)用fk(原图像的灰度级函数)和gk的映射关系,修改原图像的灰度级,获得输出图像,其直方图为近似均匀分布。

三、程序说明及代码

为验证对图片进行直方均衡化的处理效果,编写代码对以上推导进行验证。使用的软件是MATLAB,下面是代码:

clc;

clear all;

img=imread('lena.jpg');

subplot(2,2,1);

imshow(img);

title('原图);

gray_img=rgb2gray(img);

[m,n]=size(gray_img);

pr=zeros(1,256);

for i=1:256

pr(i)=length(find(gray_img==i-1))/(m*n);

end

subplot(2,2,2);

bar(pr) ;

title('原图的直方图')

S=zeros(1,256);

for i=1:256

for j=1:i

S(i)=pr(j)+S(i);

end

end

S1=round((S*255)+0.5);

for i=1:256

q(i)=sum(pr(find(S1==i)));

end

subplot(2,2,4);

bar(q)

title('处理后的直方图')

res_img=gray_img;

for i=1:256

res_img(find(gray_img==i-1))=S1(i);

end

subplot(2,2,3);imshow(res_img);

title('均衡化后的图效果');

下图1是lena.jpg的运行结果图,图2是另外的一副处理图片:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值