1. 程式人生 > >MATLAB中imshow()顯示問題

MATLAB中imshow()顯示問題

MATLAB中imread(img),讀取儲存的資料是unit8型別的,如果需要運算,最好轉換成double型,直接im2double(img)就可以,然後這樣處理的資料全是[0,1]之間的。

當然imshow(img),img不管是double型還是unit8 型都可以顯示。

imshow(I,[]);       ----------- 自動調整資料的範圍以便於顯示

 imshow(I,[low high])用指定的灰度範圍 [low high]顯示灰度影象 I。顯示結果,影象中灰度值等於或低於low的都將用黑色顯示,而灰度值大於等於high的都顯示為白色,介於low和high之間的用其灰度級的預設值的中間色調顯示。
 如果你用了一個空矩陣 ([]) 來代替 [low high], imshow 函式將使用 [min(I(:))max(I(:))]作為第二個引數。

但是出現這麼一個問題,

I = imread('coins.png');
subplot(1,2,1); 
imshow(I);
title('fig 1');

Fa = -1;
Fb = 255;
O = Fa.*I + Fb;
subplot(1,2,2);
imshow(O);
title('fig 2');
 ![執行結果](https://img-blog.csdn.net/20170315210752244?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1a2NxdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
 錯誤應該是把它當做double型啦,所以大於1 的都是白色。

但是一直都是unit8 型別的呀。。。。搞不懂。。。