f=imread('spine.tif');
f=im2double(f);
1.设置数组
g=zeros(1,256); //1列,256行的0
2.根据灰度值对数组中的0加一
[M,N]=size(f); //读取图像大小
for i=1:M
for j=1:N
g(i,j)=0;
g(1,f(i,j)+1)=g(1,f(i,j)+1)+1; //对不同灰度的像素数进行统计
end
end
for k=1:256
p(i,j)=0;
p(1,k)=g(1,f(i,j)+1)/(M*N); //算概率
end
for q=2:256
p(1,q)=p(1,q-1)+P(1,q); //算转换函数
end
for i = 1 : 256 f(1, i) = f(1, i) * 255;end //映射
% 完成每个像素点的映射
I = double(I);
for i = 1 : R
for j = 1 : C
I(i, j) = f(1, I(i, j) + 1);
end
end% 输出
I = uint8(I);subplot(133);imshow(I);title('直方图均衡化');
% 完成每个像素点的映射
I = double(I);
for
i
=
1
: R
for
j
=
1
: C I(
i
,
j
) = f(
1
, I(
i
,
j
) +
1
);
end
end
% 输出
I = uint8(I);subplot(
133
);imshow(I);title(
'直方图均衡化'
);