1. 程式人生 > >matlab中的imshow函式的問題

matlab中的imshow函式的問題

matlab中的imshow函式,是一個經常使用又容易“犯錯”的函式,尤其是其引數中的[]讓人無語,找了一個不錯的答案記錄下來,摘抄自:

    在matlab中經常使用imshow函式來顯示影象,而此時的影象矩陣可能經過了某種運算。在matlab中為了保證精度,經過了運算的影象矩陣I其資料型別會從unit8變為double。如果直接執行imshow(I),我們會發現顯示的是一個白色的影象。這是因為imshow函式顯示影象時對double型會認為0~1範圍內,即大於1都顯示為白色,而imshow顯示unit8時是0~255範圍,而經過運算的範圍在0~255之間的double型資料就被不正常顯示為白色影象了。

    那麼如何解決這個問題呢?筆者曾經用fix函式把影象矩陣由實數形式轉化為整數形式,但這樣仍無法改變影象矩陣是double型的事實。通過搜尋,找到兩個辦法:

imshow(I/255).................................................將影象矩陣轉化到0-1之間

imshow(I,[])......................................................將影象矩陣I的最大值和最小值分別作為純白255和純黑0,之間的I值對映為0-255之間的標準灰度值

從實驗結果看,兩種方法都解決了問題,但從顯示的影象看,第二種方法的明暗黑白對比強烈些 (really?)