做圖像時候關於數據類型的採坑記錄

今天寫了個算法,遇到個很奇葩的BUG。就是由於數值矩陣的類型造成的!!!

opencv,scipy.misc讀取的圖像矩陣默認是uint8類型(plt默認是float32,0-1之間),該類型是無符號整數類型,一般方便計算,我會轉成float類型,問題來了,在轉換成float類型後經過算法層層計算,最後輸出的圖像矩陣有負數,這和講uint8類型的圖像輸入算法得出的結果有一定差距,我先將算法得出的兩個不同數據類型的圖像矩陣計算最大最小值,然後用uint8類型的圖像矩陣減float類型,可視化兩者之間差異性。可以看出,越白的地方差異越大!

今天這個BUG警示着我,類型不能隨便亂改,類型改變意味着數據的存儲方式也隨之改變!

這裏寫圖片描述

關於圖像類型的講解參考:http://blog.csdn.net/fx677588/article/details/53301740


2018.3.27更坑:
讀取的圖像默認是uint8類型,如果兩個uint8類型矩陣相減,那麼我一開始以爲負數自動變0但是隻有matlab纔會這樣啊,坑!numpy會自動將負數+256,得到最終結果!

matlab的操作
這裏寫圖片描述

numpy的操作
這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章