MATLAB图像处理之直方图均衡原理及实现(图像增强)

%直方图均衡化
%直方图中可以看出像素在灰度等级下的分布
%有些图片的直方图分布集中某些灰度区间,导致视觉上图片的对比度不高
%可以通过直方图均衡技术,将灰度分布变得均匀,使的图像对比度增大。

%直方图均衡要经历下满四个步骤
% 遍历全图,先统计每个灰度级下的像素点个数(为此我们开辟了256大小的数组);
% 计算每个灰度级的像素点占总像素的点的比例;
% 按照第二步求出的比例重新计算每个灰度级下的新的灰度值,即均衡化;
% 依照新的灰度值表遍历更新图像的灰度值。

%例子
%假设64*64像素的3Bit图像灰度分布如下
%rk                 nk              pk=nk/n
%r0=0             790               0.19  
%r1=1             1023              0.25
%r2=2             850               0.21
%r3=3             656               0.16 
%r4=4             329               0.08
%r5=5             245               0.06
%r6=6             122               0.03
%r7=7             81                0.02
%sk=(L-1)*SUM(pk)直方图均衡化公式 得到映射的下表
%s0=1.33->1 s1=3.08->3 s2=4.55->5 s3=5.67->6
%s4=6.23->6 s5=6.65->7 s6=6.86->7 s7=7.00->7
%均衡化后有5个灰度级了
%r0的790个像素 映射成 s0 取1
%r1的1023个像素 映射成 s1 取3
%r2的850个像素 映射成 s2 取5
%r3的656个像素 映射成 s3 取6
%r4的656个像素 映射成 s4 取6
%r5的245个像素 映射成 s5 取7
%r6的122个像素 映射成 s6 取7
%r7的81个像素  映射成 s7 取7
%相当于r3 4 映射成一个等级的
%r5 6 7 映射成一个等级   
%MATLAB中用histeq实现
%g=histeq(f,nlev)
clc 
clear
f=imread('D:\MATLAB图像处理\亮度调节与空间滤波\6.jpg');
subplot(2,2,1)
imshow(f);
subplot(2,2,2)
imhist(f);
xlim('auto')
ylim('auto')
subplot(2,2,3)
g=histeq(f);%直方图均衡化
imshow(g)
subplot(2,2,4)
imhist(g)xlim('auto')%自动适应x轴的长度
ylim('auto')%自动适应y轴的长度

结果如下:

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值