Matlab中imshow()函數的使用


     imread() 返回的圖像類型是uint8類型, 這時用imshow顯示圖像的時候, imshow會認為輸入矩陣的范圍在0-255, 如果imshow的參數為double類型的,那么imshow認為輸入矩陣的值為0-1.

     很多時候需要將圖像轉換為double類型的, 但是轉換以后直接使用imshow顯示的是一片白色, 是因為當imshow顯示圖像的時候, 會認為double類型的圖像矩陣的范圍在0-1, 超過1的像素值當作1處理, 這樣就是幾乎所有的像素都是白色。

     通過搜索,找到兩個解決方法:
         imshow(I/256); -----------將圖像矩陣轉化到0-1之間
         imshow(I,[]);       -----------自動調整數據的范圍以便於顯示 (不明白原理!) 
         從實驗結果看兩種方法都解決了問題,但是從顯示的圖像看,第二種方法顯示的圖像明暗黑白對比的強烈些!不知什么原理!        
     此外還找到一些方法,還沒有試過,記錄如下: 
        uint8和im2uint8的區別 
       圖像數據在計算前需要轉換為double,以保證精度; 
       很多矩陣數據也都是double的,要想顯示,必須先轉換為圖像的標准數據格式。
       如果轉換前的數據符合圖像數據標准(比如如果是double則要位於0~1之間),那么可以直接使用im2uint8;如果轉換前的數據分布不合規律,則使用uint8,將其自動切割至0~255(超過255的按255)
        最好使用mat2gray,將一個矩陣轉化為灰度圖像的數據格式(double) 
        另外,可以用isgray判斷矩陣是否是一個圖像數據矩陣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM