1. 程式人生 > >影象顯示—關於MATLAB裡顯示.mat形式的影象

影象顯示—關於MATLAB裡顯示.mat形式的影象

直接貼程式碼

clc

close all

load('F:\遙感資料\Indian_pines_class.mat')

figure,imagesc(indian_pines_class)

colorbar,title('show by imagesc in figure')

這裡顯示用的imagesc()顯示彩色影象,出來的是如下彩色圖

點選figure圖中的編輯—顏色圖—工具—標準顏色圖,就可以可以改變顏色型別

另外,點選顏色圖中的顏色可以改成自己喜歡的顏色哦。

如果我們用imshow()來顯示的話,出來是黑白影象:

而用image()顯示出來的圖是這樣的:


至於為什麼是這樣的,答案在這裡:

imagedouble型資料取整(正數取整就是把小數部分舍掉)然後使用直接對映的方法按照顏色表顯示。

imagesc這個函式很好,會對資料進行縮放再顯示,也就是把顯示範圍自動設定成[min(I(:)) max(I(:))],也就是線性對映。

imshow這個函式呼叫方式不同,顯示效果也不同,如下:

imshow(I)直接呼叫,因為當影象為double型時imshow函式會把顯示範圍設定成[0 , 1],這樣小於0的就變成黑色了,大於1的就變成白色了,所以處理不當就會出現全白的情況。

imshow( I/(max(I(:)))針對直接呼叫imshow函數出現的問題,用max(I(:) ) 

對影象矩陣進行歸一化再顯示,這樣負數部分會變黑,正數部分還可以正常顯示,但有一部分資訊丟失了。

imshow(uint8(I))這種方式把I轉化成uint8,負數會被歸零,超過255的被置為255,而且小數也會被round(四捨五入),當引數為uint8型時,imshow函式把顯示範圍設定成[0,255],這樣影象雖然也能顯示出來,但與原始資料相比來說,丟掉很多資訊,但有時可能卻是想要的結果,這個要看具體情況。

imshow(I,[ ])這種方式就是把imshow的顯示範圍設定成[min(I(:)) max(I(:))],也就是線性對映,相當於imagesc(I),colormap(gray(256))

可以將整幅影象的資訊顯示出來。


以上內容為個人總結,歡迎批評指正