%直方图均衡化
clear;
b = imread('C:\Users\Ryan\Documents\MATLAB\00101.bmp');
%I11 = imread('00101.bmp');
I1=imresize(b,[64 64]);
c=I1;
row=size(c,1);%读入图片,并对图片进行分块,采用4*4分块,每块进行LBP
col=size(c,1);
SP=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];
B=mat2cell(c,[row/8 row/8 row/8 row/8 row/8 row/8 row/8 row/8],[col/8 col/8 col/8 col/8 col/8 col/8 col/8 col/8]);
I=B{1};
[height,width] = size(I);
figure(1);
subplot(221)
imshow(I)%显示原始图像
title('原图图像8*8');
subplot(222)
imhist(I)%显示原始图像直方图
title('原图直方图8*8')
%进行像素灰度统计;
s = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
for j = 1: width
s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = s(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整,将其数值归一化为1~256
c = uint8(255 .* c + 0.5);
%对图像进行均衡化
for i = 1:height
for j = 1: width
F(i,j) = c(I(i,j)+1);
end
end
subplot(223) ;
imshow(F)%显示均衡化后的图像
title('均衡化后的图像8*8')
subplot(224)
imhist(F)%显显示均衡化后的图像的直方图
title('均衡化后的直方图8*8')