轉換為不同灰度級影象
阿新 • • 發佈:2019-02-19
將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])