刚开始学matlab,昨天在看程序的忘记把彩色图像转换成灰度图像再提取图像。
clear all;
I = imread('D:\frame1.png');
I=rgb2gray(I); %灰度化
%绘制直方图
[m,n]=size(I);
GP=zeros(1,256);
for k=0:255
GP(k+1)=length(find(I==k))/(m*n); %计算每级灰度出现的概率,将其存入GP
end
%三,直方图均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i);
end
end
S2=round((S1*256)+0.5); %将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i)));%计算现有每个灰度级出现的概率
end
figure;
subplot(221);bar(0:255,GP,'b');
title('原图像直方图')
subplot(222);bar(0:255,GPeq,'b')
title('均衡化后的直方图')
X=I;
for i=0:255
X(find(I==i)) = S2(i+1);
end
subplot(223);imshow(I);
title('原图像') ;
subplot(224);imshow(X);
title('直方图均衡后的图像');