matlaba筆記 圖像數據類型

1圖像數據在進行計算前要轉化爲double類型的,這樣可以保證圖像數據運算的精

很多矩陣的很多矩陣數據也都是double的,要想顯示其,必須先轉換爲圖像的標準數據格式。

如果轉換前的數據符合圖像數據標準(比如如果是double則要位於0~1之間,這個是由Matlab中的規定),那麼可以直接使用im2uint8。 

  如果轉換前不滿足這個分佈規律,則使用uint8,將其自動切割至0~255(超過255的按255)最好使用mat2gray,這個函數可以把一個double類的任意數組轉換成取值範圍在[0,1]之間的,將一個矩陣轉化爲灰度圖像的數據格式(double)另外,可以用isgray判斷矩陣是否是一個圖像數據矩陣。   

 

 matlab中用imshow()顯示圖像與圖像矩陣的數據類型的關係   在matlab中,我們常使用imshow()函數來顯示圖像,而此時的圖像矩陣可能經過了某種運算。在matlab中,爲了保證精度,經過了運算的圖像矩陣I其數據類型會從unit8型變成double型。如果直接運行imshow(I),我們會發現顯示的是一個白色的圖像。這是因爲imshow()顯示圖像時對double型是認爲在0~1範圍內,即大於1時都是顯示爲白色,而imshow顯示uint8型時是0~255範圍。而經過運算的範圍在0-255之間的double型數據就被不正常得顯示爲白色圖像了。 那麼如何解決這個問題呢?筆者曾經用fix()函數把圖像矩陣由實數形式轉化成整數形式,但這樣仍無法改變圖像矩陣是double型的事實。 通過搜索,找到兩個解決方法: imshow(I/256); -----------將圖像矩陣轉化到0-1之間 imshow(I,[]); -----------自動調整數據的範圍以便於顯示 (不明白原理!%lwb 添加內容:此處用了圖像灰度拉伸方法,將圖像最小的像素值變爲0,最大的爲255%) 從實驗結果看兩種方法都解決了問題,但是從顯示的圖像看,第二種方法顯示的圖像明暗黑白對比的強烈些!不知什麼原理! 此外還找到一些方法,還沒有試過,記錄如下:  uint8和im2uint8的區別   圖像數據在計算前需要轉換爲double,以保證精度; 很多矩陣數據也都是double

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