天天看點

MATLAB顯示圖像為什麼一片白imshow錯誤使用其他

MATLAB顯示圖像為什麼一片白

  • imshow
  • 錯誤使用
  • 其他

by HPC_ZY

經常有朋友問,為什麼我imshow出來的圖一片白,我這明明是灰階圖的。

這是因為沒弄好圖檔的類型。

imshow

這個函數能顯示兩大類型的圖像

  1. 整形,最常見 uint8
  2. 非整形,最常見double

當圖像為uint8類型時,其支援範圍 0~255

當圖像為double類型時,其支援範圍 0~1(大于1的為白色,小于0的為黑色)

錯誤使用

  1. 把uint8的圖像轉為double後直接顯示,問題代碼如下
%% 問題代碼
im = imread('*.*');
im = double(im);
imshow(im)
           

所有大于1的像素就都為白色了,這也是最最最常見的錯誤。

如果就想轉為double,同時還想顯示,解決方法如下

%% 解決方法
im = imread('*.*');
im = double(im)/255;
imshow(im)

或
im = imread('*.*');
im = im2double(im);
imshow(im)
           
  1. 把已經歸一化的圖像轉為uint8後直接顯示,問題代碼如下
%% 問題代碼
im = imread('*.*');
im = mat2gray(im); % 歸一化
im = uint8(im)
imshow(im)
           

最大的值才1,整個圖像都黑了,這也第二類的錯誤。

如果需要這麼轉,解決方法如下

%% 解決方法
im = imread('*.*');
im = mat2gray(im); % 歸一化
im = uint8(im*255)
imshow(im)
           

其他

  1. 是以使用imshow前,需要核對圖像的類型。有必要的時候還可以在工作區點開矩陣看看,裡面都是些什麼值。
  2. 有時不想去費心思,也可以使用imagesc()代替imshow()。

繼續閱讀