直方图均衡化_基于matlab
话不多说,直接上代码
%直方图均衡化
clc,clear
%%
path = 'C:\Users\';%图像路径
name = 'duibi.jpg';%图像名称
I = imread([path,name]);%读取图像
I = rgb2gray(I);
N = 256;
figure,imshow(I),title('原图');%显示原图
%%
%第一步:计算直方图
figure;
Hist_1=histogram(I,0:N);
title("原图像直方图"); %显示原图像直方图
%%
%第二步:计算累计直方图(累计分布函数)
Hist_image_cumulation=cumsum(Hist_1.Values/sum(Hist_1.Values)); %累计直方图
%%
%第三步:利用累计直方图作变换函数进行灰度变换
S2 = Hist_image_cumulation.*(N-1);%变换后的灰度等级
%%
%第四步:将求出来的新灰度等级代替原来的灰度等级
P = double(I);
for i=0:N-1
P(I==i)= S2(i+1);
end
%显示均衡化直方图
P = uint8(P);
figure,histogram(P,0:N),title("均衡化直方图");
figure,imshow(P),title("转化后的图像");%显示均衡化的图像