两边对r进行积分,即可得出PDF的均衡化公式
累积分布函数(CDF-cumulative distribution function)
对于图像而言,我们需要使用离散形式的公式(Discrete Formulation)
某个灰度级像素出现的概率为Pr(rk)=nk/N
Pr(rk)是远原图像第K个灰度级像素出现的概率,rk是第k个灰度级,即当前色阶k,在[0,1]。
nk是rk像素数量,N是像素总数(图像大小)
图像的灰度直方图均衡化公式:
clear all close all clc I=imread('1.jpg'); I_gray=rgb2gray(I); graydis=zeros(1,256); new_graydis=zeros(1,256); [row col]=size(I_gray); new_img=zeros(row,col); for x=1:row for y=1:col graydis(1,I_gray(x,y))=graydis(1,I_gray(x,y))+1; end end %计算原始直方图 graydispro=graydis./sum(graydis); subplot(1,2,1); plot(graydispro); title('灰度直方图'); xlabel('灰度值');ylabel('像素的概率密度'); %计算原始累计直方图-CDF for i=2:256 graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1); end %计算和原始灰度对应的新的灰度T[],建立映射关系 for i=1:256 T(1,i)=floor(254*graydispro(1,i)+0.5); end %统计新直方图各灰度级像素个数 for i=1:256 new_graydis(1,T(1,i)+1)=new_graydis(1,T(1,i)+1)+graydis(1,i); end %计算新的灰度直方图 new_graydispro=new_graydis./sum(new_graydis); subplot(1,2,2); plot(new_graydispro); title('均衡化后的灰度直方图'); xlabel('灰度值');ylabel('像素的概率密度'); %计算直方图均衡后的图像 for x=1:row for y=1:col new_img(x,y)=T(1,I_gray(x,y)); end end figure,imshow(I_gray); title('原图'); figure,imshow(new_img,[]); title('直方图均衡化后的图');