1. 程式人生 > >利用ENVI軟體計算NDVI常見錯誤經驗總結

利用ENVI軟體計算NDVI常見錯誤經驗總結

    本人初次學習ENVI軟體,就碰到了一個大的bug,實驗了一天終於搞定了!記錄如下微笑

    NDVI 的作用就不多說了,計算公式大家都知道是利用(近紅外波段-紅波段)/(近紅外波段+紅波段)的公式,在envi中使用transform下的NDVI公式時需要時組合波段(即多個波段組合一起的檔案,如果各個波段分開的則無法使用)。用此方法計算的NDVI沒問題。

     但是如果你要是使用basic tools下的bandmath的話就要注意了。

      錯誤一:書寫公式時如果用(b4-b3)/(b4+b3),那麼你會發現結果一片黑或一片白,主要是計算值均取了整數,例如(50-10)/(50+10)=40/60=0因為整數運算,結果ndvi值為0。

     錯誤二:查詢資料發現必須指定波段的取值為float,計算公式改為float(b4-b3)/float(b4+b3),結果發現NDVI對正值均計算正常,比如植被,裸地等。但是對於水體並不算大家所謂的小於0的值,而是全部大於0,而且是大於1的值。鬱悶之極,詢問了很多人,解釋說bandmath是針對反射率的,不能直接針對DN值計算,但是課本說用DN值後者反射率都可以啊。

      幾經嘗試,發現下面的公式時可行的:NDVI=(float(b4)-float(b3))/(float(b4)+float(b3))可行。

   以上是個人多次嘗試總結,如果有不對請指定出來。繼續改進。