2007-04-15 20:15
clear all
%壹,圖像的預處理,讀入彩色圖像將其灰度化
PS=imread('1.jpg'); %讀入JPG彩色圖像文件
imshow(PS) %顯示出來
title('輸入的彩色JPG圖像')
imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %將彩色圖片灰度化並保存
PS=rgb2gray(PS); %灰度化後的數據存入數組
%二,繪制直方圖
[m,n]=size(PS); %測量圖像尺寸參數
GP=zeros(1,256); %預創建存放灰度出現概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %計算每級灰度出現的概率,將其存入GP中相應位置
end
figure,bar(0:255,GP,'g') %繪制直方圖
title('原圖像直方圖')
xlabel('灰度值')
ylabel('出現概率')
%三,直方圖均衡化
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i); %計算Sk
end
end
S2=round((S1*256)+0.5); %將Sk歸到相近級的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); %計算現有每個灰度級出現的概率
end
figure,bar(0:255,GPeq,'b') %顯示均衡化後的直方圖
title('均衡化後的直方圖')
xlabel('灰度值')
ylabel('出現概率')
%四,圖像均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %將各個像素歸壹化後的灰度值賦給這個像素
end
figure,imshow(PA) %顯示均衡化後的圖像
title('均衡化後圖像')
imwrite(PA,'PicEqual.bmp');