標籤:

關於MATLAB圖像處理imshow函數涉及到的數據類型的思考

胖喵鎮樓~~~

今天在寫圖像濾波代碼時遇到了最後顯示圖像顯示不正常的問題,反覆修改半天才知道是數據類型的鍋,果斷決定寫筆記記下來~~~~~

%imshow函數是用來顯示圖像的

I=double(imread(lena.png));imshow(I);

然鵝出現的結果就會是醬,一篇雪白的。。。。流口水(ˉ﹃ˉ)

問度娘發現(敲黑板)是因為

imshow()顯示圖像時對double型是認為在0~1範圍內,

即大於1時都是顯示為白色,而imshow顯示uint8型時是0~255範圍。

而經過運算的範圍在0-255之間的double型數據就被不正常得顯示為白色圖像了

下面奉上解決辦法,

imshow(uint8(I));#方法一 將數據轉化到Uint8類型imshowI/255);#方法二 將數據值轉化到01之間imshow(I,[]);#方法三 []的目的是自動調整數據的範圍以便於顯示

其中,三種方法雖然都能正常顯示圖像,但圖像還是有差距的。

這是因為:

imshow(uint8(I))中按256級灰度值顯示圖像。0表示黑色,255表示白色。而大於255的值均變成255,即白色;

imshow(I,[]);中將最大值設為255,最小值設為零,故此種方法中圖像的對比度比較好。

推薦閱讀:

「MatLab 模擬結論在工業界認可度低」是否屬實?
學習 MATLAB 有哪些書籍是值得推薦的?
基於MATLAB/SIMULINK車載吸附儲氫系統的集總參數模型
如何實現多維數組的行 / 列按照 index 訪問都得到連續內存?

TAG:MATLAB |