pic = imread('C:\Users\lenovo\Desktop\素材\test.jpg', 'jpg');
pic2 = rgb2gray(pic);
subplot(2,2,1);
imshow(pic2);
title('原画');
subplot(2,2,2);
imshow(histeq(pic2));
title('直方图均衡化');
subplot(2,2,3);
imhist(pic2, 64);
subplot(2,2,4);
imhist(histeq(pic2), 64);
当然啦,你也可以自己写一个直方图均衡化的函数
function newPic = equalise(pic)
range = 255;
[m n] = size(pic);
number = m * n;
pixel_at_level = zeros(256, 1);
for i = 1 : m
for j = 1 : n
pixel_at_level(pic(i,j)+1,1) = pixel_at_level(pic(i,j)+1,1) + 1;
end;
end;
sum = 0;
hist = zeros(256, 1);
for level = 0 : 255
sum = sum + pixel_at_level(level+1,1);
hist(level+1, 1) = floor(range*sum/number+0.00001);
end;
newPic = zeros(m, n);
whos('pic');
whos('newPic');
for X = 1 : m
for Y = 1 : n
newPic(X, Y) = hist(pic(X, Y)+1, 1);
%fprintf('%f %f\n', hist(pic(X, Y)+1, 1), newPic(X, Y));
end;
newPic = uint8(newPic);
%记得加这一句,否则newPic是double型的,其元素都在0-1的范围内,天坑
end;