自带函数
I=imread('photo.jpeg');
J=rgb2gray(I);
H=histeq(J);%计算和显示灰度图像J的直方图
subplot(2,2,1),imshow(J);
title('原始图像');
subplot(2,2,2),imhist(J);
title('原始图像直方图');
subplot(2,2,3),imshow(H);
title('原始图像直方图均衡化后图像');
subplot(2,2,4),imhist(H)
title('图像直方图均衡化后直方图');
自己写的histepa函数
f=imread('photo灰度图.jpg');
[m,n,d]=size(f);%灰度图1维,彩色图3维
if d==1
f1=f;%复制后新的图片f1,作为改变后的图片
elseif d==3
f=rgb2gray(f);
f1=f;
end
subplot(221);
imshow(f);
title(‘原始图像’);
subplot(222);
imhist(f)
title(‘原始图像直方图’);
[count,x]=imhist(f);%count表示每个灰度级别有多少个像素,x表示有多少个灰度级别
PDF=count/(m*n);%PDF表示每个灰度级别出现的概率,一共有256行
CDF=cumsum(PDF);%CDF表示逐行相加的概率,也就是累加概率
for i=1:256
xiangsuxushu=find(f==i);%原本灰度级别为i的像素在第几位
changdu=length(xiangsuxushu);
for j=1:changdu
f1(xiangsuxushu(j))=round(CDF(i)*256-1);%每一个原本灰度级别为i的像素,
%灰度级别改为累加出现概率*256
%再取整
end
end
subplot(223);
imshow(f1)
title(‘原始图像直方图均衡化后图像’);
subplot(224);
imhist(f1)
title(‘原始图像直方图均衡化后直方图’);