請問求灰度圖的歸一化直方圖時灰度級為負數是怎麼解決,怎麼儲存...
- 2022-11-19
clear all
%一,影象的預處理,讀入彩色影象將其灰度化
PS=imread(‘s7。jpg’); %讀入JPG彩色影象檔案
figure(1);subplot(2,2,1);imshow(PS);title(‘原影象灰度圖’);
%二,繪製直方圖
[m,n]=size(PS); %測量影象尺寸引數
GP=zeros(1,256); %預建立存放灰度出現機率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %計算每級灰度出現的機率,將其存入GP中相應位置
end
figure(1);subplot(2,2,2);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(1);subplot(2,2,4);bar(0:255,GPeq,‘b’) %顯示均衡化後的直方圖
title(‘均衡化後的直方圖’)
xlabel(‘灰度值’)
ylabel(‘出現機率’)
%四,影象均衡化
PA=PS;
for i=0:255
PA(find(PS==i))=S2(i+1); %將各個畫素歸一化後的灰度值賦給這個畫素
end
figure(1);subplot(2,2,3);imshow(PA) %顯示均衡化後的影象
title(‘均衡化後圖像’)
imwrite(PA,‘PicEqual。bmp’);