【MATLAB图像处理2】 直方图的均衡化(附源码)

直方图的均衡化,难点在于找到一个从原图像灰度值到输出图像灰度值的映射。

 

这里映射公式和推导过程如下:

 

 

 

这个没什么多说的 直接附源码

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数功能:图像直方图均衡化%%%%%
%作者:张小胖新欢是科研%%%%%%%%%
%时间:2013.9.27%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;close all;clc;

src=imread('D:\Documents\Desktop\lenna.JPG');         %%%%%%%读入原图像

[m,n,q]=size(src);                    %%%%%%%%%%%%%%%%%计算图像大小

dst1=zeros(m,n);                       %%%%%%%%%%%%%%%%%%%%%%%%%%%创建过渡矩阵         
dst=dst1;                              %%%%%%%%%%%%%%%%%%%%%%%%%%创建均衡化后的空图像
for i=1:m
    for j=1:n
            dst1(i,j)=0.299*src(i,j,1)+0.587*src(i,j,2)+0.114*src(i,j,3);         %%%%%%%%%%%%%%%%%%%%RGB转灰度图,常见有3种算法,用整型数字会更快
    end
end

p1=zeros(1,256);                                     %%%%%%%%%%%%%%%%%%创建空矩阵存储各像素值的频数
p2=zeros(1,256);
P=zeros(1,256);
dst1=uint8(dst1);                                       %%%%%%%%%%%%%%%%%%%%将浮点型灰度图转为整型
figure(1);
imshow(dst1);

%%%%%%%%%%%统计各像素值的频数,并存储在p1中%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:m                                                                 
    for j=1:n
           a=dst1(i,j);
           p1(a+1)=p1(a+1)+1;
    end
end
X=0:255;
figure(2)
subplot(1,2,1);plot(X,p1);            %%%%%%%%%%%%%%%%显示原图像灰度直方图

p=p1/(m*n);                              %%%%%%%%%%%%%%%计算原图像灰度概率密度


%%%%%%%%%%%%%计算原图像灰度值的分布函数%%%%%%%%%%%%%%%%%%%%%%
P(1)=p(1);                               
for b=2:256
    P(b)=P(b-1)+p(b);
end



%%%%%%%%%%%%%%%%%均衡化%%%%%%%%%%%%%%%%
    for i=1:m;
        for j=1:n
              c=dst1(i,j);
              dst(i,j)=230*P(c+1);
            end 
    end

dst=uint8(dst);
figure(3);
imshow(dst);
%%%%%%%%%%%%%%%%%%%%%计算均衡化后的直方图%%%%%%%%%%%%%%%%
for i=1:m                                                                 
    for j=1:n
           a=dst(i,j);
           p2(a+1)=p2(a+1)+1;
    end
end
Y=0:255;
figure(2)
subplot(1,2,2);plot(Y,p2);  


效果如下

原图

 

 

均衡化后

 

直方图对比

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值