数字图像处理之--灰度直方图均衡化

今天是我们上的第二次数字图像处理实验,第一次老师是讲的一些基础知识和matlab的用法,这节课老师讲了直方图的均衡化,详情注释见代码。
有什么问题欢迎交流,我的qq是908642712.请备注信息 博客。

clc;  //清空命令行
clear;  //清空工作区、
grayimage=imread('pout.tif');  //读取图像存到grayimage变量中
[m,n]=size(grayimage);  /*得到此图像的像素矩阵行和列。(这是灰度图像)*/
subplot(2,2,1);  //创建一个窗口,可以盛放四个照片。
imshow(grayimage); //第一个位置,也就是左上,放原图。
gp=zeros(1,256);  //设置一个矩阵,一行256列,用来存在概率。
for i=1:256  
   gp(i)=length(find(grayimage==(i-1)))/(m*n);   
end  //for循环,计算各个灰度值在图中出现的概率。
subplot(2,2,2);  //窗口第二个位置。
bar(0:255,gp);  /*建立一个直方图,gp(概率变量)是0到255递增出现,默认增加量为1.*/
xlabel('灰度值');  //横坐标标注  为  灰度值。
ylabel('概率');  //纵坐标 标注为 概率
//上面是输出灰度直方图。
//下面进行直方图的均衡化;
S1=zeros(1,256);  
S2=zeros(1,256);  //建立两个概率矩阵。
temp=0;  
for i=1:256  
    temp=temp+gp(i);  
    S1(i)=temp;  
end  //把概率都累加。类似字符串中的前缀和。此时中间还是0-1的概率
S2=round(S1*255);//  让概率变成了灰度值,代表灰度值的均值。
newgp=zeros(1,256);  
for i=1:256  
    newgp(i)=sum(gp(find(S2==(i-1))));  
end      /*咋均衡化后,肯定会出现原图中的多个灰度对应新图中的一个灰度,所以把他们累加。*/
subplot(2,2,3); ? 
bar(0:255,newgp);  
xlabel('灰度值');  
ylabel('概率');  
newgrayimage=grayimage;  
for i=1:256  
    newgrayimage(find(grayimage==(i-1)))=S2(i);  
end  //把原图中是的原像素的点  换成新像素(是一种映射)
subplot(2,2,4);  
imshow(newgrayimage);  
imwrite(newgrayimage,'newpout.tif');  //将文件保存。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值