图像处理学习——直方图均衡化

直方图均衡化概念
直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度。原始图像由于其灰度分布可能集中在较窄的区间,造成图像不够清晰。例如,过曝光图像的灰度级集中在高亮度范围内,而曝光不足将使图像灰度级集中在低亮度范围内。采用直方图均衡化,可以把原始图像的直方图变换为均匀分布(均衡)的形式,这样就增加了像素之间灰度值差别的动态范围,从而达到增强图像整体对比度的效果。

直方图均衡化流程

  1. 获取现有图形的灰度图像值
  2. 划分灰度等级fi,计算每个像素对应灰度等级出现的次数,绘制变化前的直方图
  3. 对直方图进行归一化处理,计算各个灰度等级出现的频率p=ni/n
  4. 计算累计分布函数c=fi*p,四舍五入取整获取新的分布的灰度等级gi
  5. 用映射关系修改原始灰度等级fi=gi,获得输出图像

直方图均衡化例题
在这里插入图片描述
直方图均衡化matlab代码

clc;
image=imread("sample2.jpeg");
f=hist_equal(image)
function f=hist_equal(image)
[m,n]=size(image);%获得图像数据尺寸
count=zeros(1,256);%均衡前每级灰度出现个数
countk=zeros(1,256);%均衡前每级灰度出现概率
gray=zeros(1,256);%均衡化灰度出现个数
grayk=zeros(1,256);%均衡化灰度出现概率
gpeq=zeros(1,256);%均衡化后灰度值统计
gpeqk=zeros(1,256);%均衡化后灰度出现概率
%初始图像数据
for k=0:255
    count(k+1)=length(find(image==k));%每级灰度出现个数
    countk(k+1)=count(k+1)/(m*n);%每级灰度出现概率
end
%直方图均衡化
grayk(1)=countk(1);
for i=2:256
    grayk(i)=grayk(i-1)+countk(i);
end
gray=round(grayk*256);
for i=1:256
gpeq(i)=sum(count(find(gray==i)));%计算每个灰度值出现的概率
gpeqk(i)=sum(countk(find(gray==i)));%计算每个灰度值出现的概率
end
%图像均衡化
image_new=image;
for i=0:255
    image_new(find(image==i))=gray(i+1);
end
%显示图像
figure(1);
subplot(231);
imshow(image);
title('原始图像')

subplot(234);
xlabel('灰度值')
ylabel('出现频率')
bar(0:255,count)
title('原图像直方图')

subplot(232)
imshow(image_new)
title('均衡化后图像')

subplot(235)
xlabel('灰度值')
ylabel('出现频率')
bar(0:255,gpeq)
title('均衡化后直方图')

j=histeq(image);
subplot(233)
imshow(j)
title('imsteq函数图像')

subplot(236)
imhist(j,64);
title('imsteq函数直方图')
end

结果
在这里插入图片描述
参考:
1.https://blog.csdn.net/qq_15971883/article/details/88699218
2.https://www.cnblogs.com/lyxyhhxbk/p/10492271.html

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值