使用Matlab結合神經網路模型對多波段影像進行計算
阿新 • • 發佈:2019-02-10
前期做了一個構造神經網路模型預測葉綠素濃度的專案,主要內容是通過影像的反射率反演出葉綠素濃度。現在模型構建出來了,如何利用這個模型對研究區域的影像進行計算葉綠素濃度呢?接著需要利用Matlab來操作了。
(1)開啟Matlab,匯入影像。
I=imread('122_33_20140422.img');
im=imread('D:\test.tif');
兩種方式,第一種是該影像在當前工作目錄下,另一種就是通過碟符尋找。
然後在Workspace裡出現一個三維l*m*n矩陣,分別代表行數,列數和波段數。
(2)將三維矩陣拆成n個二維矩陣,n為波段數,即獲取每個波段的影像值矩陣。
A1= I ( : , : , 1) %
A2= I ( : , : , 2) %第二波段所有畫素點
A3= I ( : , : , 3) %第三波段所有畫素點
(3)我所使用的影像型別是int16型的,進行計算時候需要將其轉成double型的。
(4)進行到這裡,需要提一下,我設計的神經網路模型的輸入矩陣是n*a,a代表樣本數,n代表波段數,所以我需要將剛才分開的七個矩陣轉化成行向量,接著再組合成一個n*a型矩陣,這樣才能匯入到神經網路模型中。
(5)接著就可以將已建好的net匯入進來,然後對剛組合好的n*a矩陣(即a個樣本)進行反演運算。得到1*a葉綠素濃度矩陣,然後利用reshape 函式重新組合成l*m型二維矩陣(起名叫“Finish”)。
(6)然後利用下面的語句
imagesc(Finish);
即可檢視生成的葉綠素濃度圖。