1. 程式人生 > >轉換為不同灰度級影象

轉換為不同灰度級影象

將256級灰度影象轉換為64級灰度影象、32級灰度影象等。
matlab程式碼:

I = imread('cameraman.tif');
[m,n]=size(I);
J=zeros(m,n);
for i=1:m
    for j=1:n
        J(i,j)=floor(I(i,j)/32);
    end
end
K=uint8(J);
subplot(131)
imshow(I);title('原圖');colorbar
subplot(132)
imshow(K,[0,7]);title('8級灰度');colorbar
J=zeros(m,n);
for i=1:m
    for
j=1:n J(i,j)=floor(I(i,j)/8); end end K=uint8(J); subplot(133) imshow(K,[0,31]);title('32級灰度');colorbar

效果:
這裡寫圖片描述
注意:
使用imshow()顯示不同灰度級時,要使用imshow(I,[low,high])格式,否則無法正確顯示圖片內容。對於uint8型別影象預設顯示範圍取【0,255】,對於double型別影象預設顯示範圍【0,1】
測試:

clear;
I=zeros(256,1);%構造0-255個灰度帶的灰度漸變的方形圖
for i=1:255
  J=floor
(i.*ones(256,1)); I=cat(2,I,J); end Iint=uint8(I); subplot(131) imshow(Iint);title('imshow預設灰度範圍');colorbar subplot(132) imshow(Iint,[0,255]);title('imshow256級灰度範圍');colorbar subplot(133) imshow(Iint,[0,127]);title('imshow128級灰度範圍');colorbar

效果:
這裡寫圖片描述
可以看到,
設定了灰度範圍的影象,對於超出imshow規定範圍的畫素點,matlab將其設定為最高灰度值(對應顏色條的白色)。
imshow(I,[])表示自動選影象中min,max畫素值為界限。等同於imshow(I,[min,max])