【正文】
user_bm2, b1lut = 255 BINDGEN(256)b1 = BYTSCL(b1)b1 = lut(b1)RETURN, b1END要從 Band Math “Enter an expression:” 文本框中調(diào)用該函數(shù),使用語(yǔ)法:user_bm2(b1)波段運(yùn)算函數(shù) 3下面的實(shí)例是一個(gè)自定義的波段運(yùn)算函數(shù),當(dāng) b1非零時(shí),它用變量 b2 的值代替變量 b1。這一函數(shù)對(duì)分類圖象非常有用,它用于將另一幅圖象的像元代替分類的像元。下面的程序文本可以在一個(gè)文本編輯器中輸入,并用文件名 來(lái)保存:實(shí)例:FUNCTION user_bm3, b1, b2b1 = (b1 NE 0)*b2RETURN, b1END要從 Band Math “Enter an expression:” 文本框中調(diào)用該函數(shù),使用語(yǔ)法:user_bm3(b1,b2)通過(guò)。波段運(yùn)算函數(shù) 4下面的實(shí)例是一個(gè)自定義的波段運(yùn)算函數(shù),它計(jì)算歸一化差值植被指數(shù)(Normalized Difference Vegetation Index,NDVI),并把它縮放到字節(jié)數(shù)據(jù)范圍。注意,“min” 和 “max” 關(guān)鍵字在函數(shù)中是必需的,以確保同樣的最小和最大值被用于縮放一個(gè)tiled圖像中所有的tiles。對(duì)于變量 b1,應(yīng)該使用一個(gè) mm 附近的紅外圖像波段,而對(duì)于變量 b2,應(yīng)該使用一個(gè) mm 附近的“紅”波段。下面的程序文本可以在一個(gè)文本編輯器中輸入,并保存為 :實(shí)例:FUNCTION user_bm4, b1,b2b1=bytscl ((float(b1) b2) / (float(b1)+b2), min=,max=)RETURN, b1END要從 Band Math “Enter an expression:” 文本框中調(diào)用該函數(shù),使用語(yǔ)法:user_bm4(b1,b2)注意顯示技巧:顯示為RGB時(shí),將r、g、b分別賦予bandndvi、band3,效果明顯。實(shí)例5:作用:The following example creates a custom Band Math function to perform the following ratio and optionally check for dividebyzero.步驟:在記事本或IDL中編寫如下代碼——文件名為””——保存在ENVI中的“SAVE_ADD”目錄下.——重啟ENVI——調(diào)入含至少兩個(gè)波段的圖象——輸入變量b1,b2——在Enter Expression text box中輸入表達(dá)式bm_ratio(b1, b2)function bm_ratio, b1, b2, check=check den = float(b1) b2 if (keyword_set(check)) then ptr = where(den eq 0., count) $ else count = 0 if (count gt 0) then den[ptr] = result = (float(b1) + b2) / den if (count gt 0) then result[ptr] = return, resultend